badges
This commit is contained in:
parent
22586da782
commit
b06a4de85c
59 changed files with 234 additions and 208 deletions
|
@ -3,42 +3,11 @@ from sqlalchemy.orm import relationship
|
|||
from files.__main__ import Base, app
|
||||
from os import environ
|
||||
from files.helpers.lazy import lazy
|
||||
from files.helpers.const import BADGES
|
||||
from datetime import datetime
|
||||
|
||||
site_name = environ.get("SITE_NAME").strip()
|
||||
|
||||
class BadgeDef(Base):
|
||||
|
||||
__tablename__ = "badge_defs"
|
||||
|
||||
id = Column(BigInteger, primary_key=True)
|
||||
name = Column(String)
|
||||
description = Column(String)
|
||||
icon = Column(String)
|
||||
kind = Column(Integer, default=1)
|
||||
qualification_expr = Column(String)
|
||||
|
||||
def __repr__(self):
|
||||
|
||||
return f"<BadgeDef(badge_id={self.id})>"
|
||||
|
||||
@property
|
||||
@lazy
|
||||
def path(self):
|
||||
|
||||
return f"/assets/images/badges/{self.icon}.webp"
|
||||
|
||||
@property
|
||||
@lazy
|
||||
def json_core(self):
|
||||
return {
|
||||
"name": self.name,
|
||||
"description": self.description,
|
||||
"icon": self.icon
|
||||
}
|
||||
|
||||
|
||||
|
||||
class Badge(Base):
|
||||
|
||||
__tablename__ = "badges"
|
||||
|
@ -46,41 +15,37 @@ class Badge(Base):
|
|||
id = Column(Integer, primary_key=True)
|
||||
|
||||
user_id = Column(Integer, ForeignKey('users.id'))
|
||||
badge_id = Column(Integer, ForeignKey("badge_defs.id"))
|
||||
badge_id = Column(Integer)
|
||||
description = Column(String)
|
||||
url = Column(String)
|
||||
|
||||
badge = relationship("BadgeDef", viewonly=True)
|
||||
user = relationship("User", viewonly=True)
|
||||
|
||||
def __repr__(self):
|
||||
|
||||
return f"<Badge(user_id={self.user_id}, badge_id={self.badge_id})>"
|
||||
|
||||
@property
|
||||
@lazy
|
||||
def badge(self):
|
||||
return BADGES[self.badge_id]
|
||||
|
||||
@property
|
||||
@lazy
|
||||
def text(self):
|
||||
if self.name == "Agendaposter":
|
||||
ti = self.user.agendaposter_expires_utc
|
||||
if ti: return self.badge.description + " until " + datetime.utcfromtimestamp(ti).strftime('%Y-%m-%d %H:%M:%S')
|
||||
else: return self.badge.description + " permanently"
|
||||
if ti: return self.badge['description'] + " until " + datetime.utcfromtimestamp(ti).strftime('%Y-%m-%d %H:%M:%S')
|
||||
else: return self.badge['description'] + " permanently"
|
||||
elif self.description: return self.description
|
||||
else: return self.badge.description
|
||||
|
||||
@property
|
||||
@lazy
|
||||
def type(self):
|
||||
return self.badge.id
|
||||
else: return self.badge['description']
|
||||
|
||||
@property
|
||||
@lazy
|
||||
def name(self):
|
||||
return self.badge.name
|
||||
return self.badge['name']
|
||||
|
||||
@property
|
||||
@lazy
|
||||
def path(self):
|
||||
return self.badge.path
|
||||
return f"/assets/images/badges/{self.name}.webp"
|
||||
|
||||
@property
|
||||
@lazy
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue