mirror of
https://github.com/Gozargah/Marzban.git
synced 2026-05-17 08:35:56 +03:00
* chore: update pydantic to version 2.10.2 and refactor model validators * refactor: simplify field validators by removing unnecessary pre and always flags * remove typing_extensions==4.9.0 from requirements.txt * refactor: remove allow_reuse flag from status field validator * refactor: simplify field validators by removing pre and always flags * refactor: update user model imports and enhance account class with abstract method * refactor: update model_config to use dictionary format in Admin and SubscriptionUserResponse classes * fix typo in UserDataResetByNext * change pre=True to mode="before" * refactor: update validation methods and model configuration in User and Proxy classes * change pre=False with mode="after" * Migrated to Pydantic V2 * fix: custom subscriptions not workong * some small changes * add missing properties to example schema * replace from_orm with model_validate --------- Co-authored-by: MahdiButcher <madibutchercoding@gmail.com> Co-authored-by: Mahdi Butcher <MahdiButcherCoding@gmail.com>
24 lines
662 B
Python
24 lines
662 B
Python
from datetime import datetime as dt
|
|
import json
|
|
from uuid import UUID
|
|
|
|
|
|
def calculate_usage_percent(used_traffic: int, data_limit: int) -> float:
|
|
return (used_traffic * 100) / data_limit
|
|
|
|
|
|
def calculate_expiration_days(expire: int) -> int:
|
|
return (dt.fromtimestamp(expire) - dt.utcnow()).days
|
|
|
|
|
|
def yml_uuid_representer(dumper, data):
|
|
return dumper.represent_scalar('tag:yaml.org,2002:str', str(data))
|
|
|
|
|
|
class UUIDEncoder(json.JSONEncoder):
|
|
def default(self, obj):
|
|
if isinstance(obj, UUID):
|
|
# if the obj is uuid, we simply return the value of uuid
|
|
return obj.hex
|
|
return json.JSONEncoder.default(self, obj)
|