diff --git a/hiddifypanel/models/__init__.py b/hiddifypanel/models/__init__.py index 1028bee48..6d280546f 100644 --- a/hiddifypanel/models/__init__.py +++ b/hiddifypanel/models/__init__.py @@ -1,4 +1,4 @@ -from .config_enum import ConfigCategory, ConfigEnum +from .config_enum import ConfigCategory, ConfigEnum,Lang from .config import StrConfig, BoolConfig, get_hconfigs, hconfig, set_hconfig, add_or_update_config, bulk_register_configs from .parent_domain import ParentDomain, add_or_update_parent_domains, bulk_register_parent_domains diff --git a/hiddifypanel/models/config_enum.py b/hiddifypanel/models/config_enum.py index 1378cab79..f96f7a540 100644 --- a/hiddifypanel/models/config_enum.py +++ b/hiddifypanel/models/config_enum.py @@ -2,7 +2,13 @@ from strenum import StrEnum - +class Lang(StrEnum): + en = auto() + fa = auto() + ru = auto() + pt = auto() + zh = auto() + class ConfigCategory(StrEnum): admin = auto() branding = auto() diff --git a/hiddifypanel/models/user.py b/hiddifypanel/models/user.py index 31785907e..1d90d5246 100644 --- a/hiddifypanel/models/user.py +++ b/hiddifypanel/models/user.py @@ -7,6 +7,7 @@ from strenum import StrEnum from hiddifypanel.panel.database import db +from hiddifypanel.models import Lang ONE_GIG = 1024*1024*1024 @@ -24,12 +25,7 @@ class UserMode(StrEnum): daily = auto() # disable = auto() -class UserLang(StrEnum): - en = auto() - fa = auto() - ru = auto() - pt = auto() - zh = auto() + class UserDetail(db.Model, SerializerMixin): id = db.Column(db.Integer, primary_key=True, autoincrement=True) @@ -76,7 +72,7 @@ class User(db.Model, SerializerMixin): max_ips = db.Column(db.Integer, default=1000, nullable=False) details = db.relationship('UserDetail', cascade="all,delete", backref='user', lazy='dynamic',) enable = db.Column(db.Boolean, default=True, nullable=False) - lang = db.Column(db.Enum(UserLang),nullable=False, default='en') + lang = db.Column(db.Enum(Lang), default=None) ed25519_private_key = db.Column(db.String(500)) ed25519_public_key = db.Column(db.String(100)) diff --git a/hiddifypanel/panel/commercial/restapi/v2/user/DTO.py b/hiddifypanel/panel/commercial/restapi/v2/user/DTO.py index 7fc84ac39..870bf4432 100644 --- a/hiddifypanel/panel/commercial/restapi/v2/user/DTO.py +++ b/hiddifypanel/panel/commercial/restapi/v2/user/DTO.py @@ -3,13 +3,8 @@ from apiflask.validators import Length, OneOf from strenum import StrEnum from enum import auto +from hiddifypanel.models import Lang -class SupportedLanuges(StrEnum): - en = auto() - fa = auto() - ru = auto() - pt = auto() - zh = auto() class ProfileDTO(Schema): profile_title = String(required=True) @@ -25,7 +20,7 @@ class ProfileDTO(Schema): brand_title = String() brand_icon_url = URL() doh = URL() - lang = Enum(SupportedLanuges,required=True) + lang = Enum(Lang,required=True) class ConfigDTO(Schema): name = String(required=True) @@ -46,5 +41,5 @@ class ShortDTO(Schema): full_url = String(required=True) class UserInfoChangableDTO(Schema): - language = Enum(SupportedLanuges,required=False) + language = Enum(Lang,required=False) telegram_id = Integer(required=False) \ No newline at end of file diff --git a/hiddifypanel/panel/commercial/restapi/v2/user/user.py b/hiddifypanel/panel/commercial/restapi/v2/user/user.py index c2ca4adf0..17330b49f 100644 --- a/hiddifypanel/panel/commercial/restapi/v2/user/user.py +++ b/hiddifypanel/panel/commercial/restapi/v2/user/user.py @@ -46,7 +46,7 @@ def get(self): dto.brand_title = hconfig(ConfigEnum.branding_title) dto.brand_icon_url = "" dto.doh = f"https://{urlparse(request.base_url).hostname}/{g.proxy_path}/dns/dns-query" - dto.lang = c['user'].lang + dto.lang = c['user'].lang if c['user'].lang else hconfig(ConfigEnum.lang) return dto @app.input(UserInfoChangableDTO,arg_name='data') @@ -65,6 +65,8 @@ def patch(self,data): if data['language']: user = user_by_uuid(g.user_uuid) + if user.lang is None: + user.lang = hconfig(ConfigEnum.lang) if user.lang != data['language']: user.lang = data['language'] db.session.commit()