v1.4: group folder/photo limits and ad banners
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -133,6 +133,8 @@ class UserGroup(db.Model):
|
||||
name = db.Column(db.String(80), unique=True, nullable=False)
|
||||
slug = db.Column(db.String(80), unique=True, nullable=False, index=True)
|
||||
disk_quota_mb = db.Column(db.Integer, nullable=False, default=100)
|
||||
max_folders = db.Column(db.Integer, nullable=False, default=10)
|
||||
max_photos = db.Column(db.Integer, nullable=False, default=500)
|
||||
is_default = db.Column(db.Boolean, nullable=False, default=False)
|
||||
created_at = db.Column(
|
||||
db.DateTime,
|
||||
@@ -150,6 +152,47 @@ class UserGroup(db.Model):
|
||||
return "Без лимита"
|
||||
return f"{self.disk_quota_mb} МБ"
|
||||
|
||||
@property
|
||||
def folders_limit_label(self):
|
||||
if self.max_folders == 0:
|
||||
return "Без лимита"
|
||||
return str(self.max_folders)
|
||||
|
||||
@property
|
||||
def photos_limit_label(self):
|
||||
if self.max_photos == 0:
|
||||
return "Без лимита"
|
||||
return str(self.max_photos)
|
||||
|
||||
|
||||
class AdBanner(db.Model):
|
||||
__tablename__ = "ad_banners"
|
||||
|
||||
id = db.Column(db.Integer, primary_key=True)
|
||||
title = db.Column(db.String(120), nullable=False)
|
||||
image_url = db.Column(db.String(500), nullable=False)
|
||||
link_url = db.Column(db.String(500), nullable=True)
|
||||
alt_text = db.Column(db.String(200), nullable=True)
|
||||
position = db.Column(db.String(30), nullable=False, default="main", index=True)
|
||||
is_active = db.Column(db.Boolean, nullable=False, default=True)
|
||||
sort_order = db.Column(db.Integer, nullable=False, default=0)
|
||||
created_at = db.Column(
|
||||
db.DateTime,
|
||||
nullable=False,
|
||||
default=lambda: datetime.now(timezone.utc),
|
||||
)
|
||||
|
||||
POSITIONS = {
|
||||
"main": "Главная (под hero)",
|
||||
"cabinet": "Личный кабинет",
|
||||
"sidebar": "Боковая колонка",
|
||||
"footer": "Подвал",
|
||||
}
|
||||
|
||||
@property
|
||||
def position_label(self):
|
||||
return self.POSITIONS.get(self.position, self.position)
|
||||
|
||||
|
||||
class Folder(db.Model):
|
||||
__tablename__ = "folders"
|
||||
|
||||
Reference in New Issue
Block a user