class StrategyPackage(Base): """套餐表""" product_id = fields.UUIDField(pk=True) name = fields.CharField(max_length=64, unique=True, index=True) market = fields.ForeignKeyField("market.StrategyMarket", "packages", on_delete=fields.SET_NULL, null=True) tags = fields.JSONField() desc = fields.TextField() status = fields.IntEnumField(ListStatus, default=1) # 套餐状态:1= 正常,2= 下架,3= 删除 limit_copy = fields.IntField() # 连续复制次数 limit_interval = fields.IntField() # 复制间隔 view_cnt = fields.IntField(default=0) # 浏览次数 collect_cnt = fields.IntField(default=0) # 收藏次数 share_cnt = fields.IntField(default=0) # 分享次数 buyout_price = fields.FloatField() # 买断价格 # 时段购买价格信息 [{"day": 20, "gift_day": 20, "price": 350}, ...] period_prices = fields.JSONField() enable_discount = fields.BooleanField(default=True) # 折扣信息 [{"start_dt": xxx, "end_dt": xxx, "day": 10, "gift_day": 10, "price": 200}, ...] discount_info = fields.JSONField() allow_coupon = fields.BooleanField() # 是否可使用优惠券 create_dt = fields.DatetimeField(auto_now_add=True) # 最初申请上架时间 update_dt = fields.DatetimeField(auto_now=True) online_dt = fields.DatetimeField(null=True) offline_dt = fields.DatetimeField(null=True) # reverse relations strategies: fields.ReverseRelation["market.models.QStrategy"]
class User(Model): username = fields.CharField(max_length=20, unique=True) password = fields.CharField(max_length=100) last_login = fields.DatetimeField(description="Last Login", default=datetime.datetime.now) is_active = fields.BooleanField(default=True, description="Is Active") is_superuser = fields.BooleanField(default=False, description="Is SuperUser") intro = fields.TextField(default="")
class Season(Base): season_combos: fields.ReverseRelation["SeasonCombo"] iracing_id = fields.CharField(max_length=30, unique=True) series = fields.ForeignKeyField('models.Series', related_name='seasons') cars: fields.ManyToManyRelation["Car"] = fields.ManyToManyField( "models.Car", related_name="seasons", through="season_cars") minimum_team_drivers = fields.IntField(default=1) start_time = fields.DatetimeField() end_time = fields.DatetimeField() season_quarter = fields.IntField(null=True) season_year = fields.IntField(null=True) is_fixed = fields.BooleanField(null=True) is_official = fields.BooleanField(null=True) active = fields.BooleanField(null=True) def current_week(self): current_datetime = datetime.now() utc_time = current_datetime.replace(tzinfo=timezone.utc) return (utc_time - self.start_time).days // 7 async def current_combo(self): return await SeasonCombo.get(season=self, race_week=self.current_week()) async def offset_combo(self, offset): """offset is how far off the current week we want a combo for. so 1 would be 1 week after current, -1 would be the week before current""" try: return await SeasonCombo.get(season=self, race_week=(self.current_week() + offset)) except: return None
class DiscordGuild(Model): id = fields.IntField(pk=True) discord_id = fields.BigIntField(index=True) name = fields.TextField() prefix = fields.CharField(20, null=True) permissions = fields.JSONField(default={}) language = fields.CharField(6, default="en") overtime_confirmed = fields.BooleanField(default=False) is_premium = fields.BooleanField(default=False) enable_tips = fields.BooleanField(default=True) disable_simulations = fields.BooleanField(default=False) used_updaters = fields.SmallIntField(default=0) total_updaters = fields.SmallIntField(default=1) minigame_enabled = fields.BooleanField(default=False) log_channel = fields.BigIntField(default=None, null=True) infected_role = fields.BigIntField(default=None, null=True) cured_role = fields.BigIntField(default=None, null=True) dead_role = fields.BigIntField(default=None, null=True) class Meta: table = "guilds" def __str__(self): return self.name def __repr__(self): return f"<Guild name={self.name}>"
class Build(Model): id = fields.BigIntField(pk=True) created_at = fields.DatetimeField(auto_now_add=True) updated_at = fields.DatetimeField(auto_add=True, null=True) package = fields.ForeignKeyField("distrobuild.Package", on_delete="RESTRICT", related_name="builds") status = fields.CharEnumField(BuildStatus) mbs = fields.BooleanField(default=False) signed = fields.BooleanField(default=False) scratch = fields.BooleanField(default=False) scratch_merged = fields.BooleanField(default=False) koji_id = fields.BigIntField(null=True) mbs_id = fields.BigIntField(null=True) import_commit = fields.ForeignKeyField("distrobuild.ImportCommit", on_delete="RESTRICT", related_name="builds") executor_username = fields.CharField(max_length=255) force_tag = fields.CharField(max_length=255, null=True) arch_override = fields.TextField(null=True) exclude_compose = fields.BooleanField(default=False) point_release = fields.CharField(max_length=255) class Meta: table = "builds" ordering = ["-created_at"] class PydanticMeta: exclude = ("batch_builds", )
class DiscordUser(Model): discord_id = fields.BigIntField(pk=True) first_seen = fields.DatetimeField(auto_now_add=True) name = fields.TextField() discriminator = fields.CharField(4) times_ran_example_command = fields.IntField(default=0) inventory = fields.JSONField(default=[]) trophys = fields.JSONField(default={}) ping_friendly = fields.BooleanField(default=True) language = fields.CharField(6, default="en") first_use = fields.BooleanField(default=True) access_level_override = fields.IntEnumField(enum_type=AccessLevel, default=AccessLevel.DEFAULT) class Meta: table = "users" def get_access_level(self): return self.access_level_override def __str__(self): return self.name def __repr__(self): return f"<User name={self.name}#{self.discriminator}>"
class FilterServer(Model): guild = fields.BigIntField(pk=True) image_filter = fields.BooleanField(default=False, null=True, blank=True) allow_nsfw_channels = fields.BooleanField(default=True, null=True, blank=True) allow_for_channels = fields.TextField(default='', null=True, blank=True) allow_for_roles = fields.TextField(default='', null=True, blank=True) allow_for_permissions = fields.TextField(default='', null=True, blank=True) allow_medical = fields.BooleanField(default=False) action = fields.TextField(default='', null=True, blank=True) # placeholder google_adult_threshold = fields.IntField(default=6, null=True, blank=True) google_racy_threshold = fields.IntField(default=6, null=True, blank=True) google_medical_threshold = fields.IntField(default=9, null=True, blank=True) google_spoofed_threshold = fields.IntField(default=10, null=True, blank=True) google_violence_threshold = fields.IntField(default=7, null=True, blank=True) azure_adult_threshold = fields.IntField(default=6, null=True, blank=True) azure_racy_threshold = fields.IntField(default=8, null=True, blank=True) image_algor_bias = fields.IntField(default=1, null=True, blank=True) text_filtering = fields.BooleanField(default=False, null=True, blank=True) text_threshold = fields.IntField(default=8, null=True, blank=True) facial_recognition = fields.BooleanField(default=False, null=True, blank=True) facial_threshold = fields.IntField(default=5, null=True, blank=True) event_channel = fields.BigIntField(default=0, null=True, blank=True)
class Auth_User(models.Model): """ The User model """ id = fields.IntField(pk=True) #: This is a username username = fields.CharField(max_length=150, unique=True) first_name = fields.CharField(max_length=50, null=True) last_name = fields.CharField(max_length=150, null=True) email = fields.CharField(max_length=30, null=True) password = fields.CharField(max_length=128, null=True) is_active = fields.BooleanField(default=True) is_staff = fields.BooleanField(default=False) is_superuser = fields.BooleanField(default=False) date_joined = fields.DatetimeField(auto_now_add=True) last_login = fields.DatetimeField(auto_now=True) def full_name(self) -> str: """ Returns the best name """ if self.first_name or self.last_name: return f"{self.first_name or ''} {self.last_name or ''}".strip() return self.username def date_joined_str(self) -> str: return str(self.date_joined) class PydanticMeta: computed = ["full_name", "date_joined_str"]
class Issue(models.Model): issue_uuid = fields.UUIDField(unique=True, default=uuid.uuid4) title = fields.CharField(max_length=255) description = fields.TextField() customer = fields.ForeignKeyField( "models.User", related_name="issues", on_delete=fields.CASCADE ) city = fields.CharEnumField(enum_type=City, max_length=400) sub_city = fields.CharEnumField(enum_type=SubCity, max_length=200) time_to_come_from = fields.DatetimeField() time_to_come_to = fields.DatetimeField() amount_from = fields.IntField(null=True) amount_to = fields.IntField(null=True) is_negotiable = fields.BooleanField(default=False) is_open = fields.BooleanField(default=True) created_at = fields.DatetimeField(auto_now_add=True) def __str__(self) -> str: return f"{self.title}"
class User(Model, UserMixin): id = fields.UUIDField(pk=True) password = fields.CharField(80) given_name = fields.CharField(24) middle_name = fields.CharField(64, null=True) family_name = fields.CharField(64) nickname = fields.CharField(16, null=True) preferred_username = fields.CharField(16, null=True) profile = fields.CharField(128, null=True) picture = fields.CharField(256, null=True) website = fields.CharField(128, null=True) email = fields.CharField(64) email_verified = fields.BooleanField(default=False) gender = fields.CharEnumField(Genders, max_length=6, null=True) birthdate = fields.DateField(null=True) zoneinfo = fields.CharField(32, null=True) locale = fields.CharField(16, null=True) phone_number = fields.CharField(32, null=True) phone_number_verified = fields.BooleanField(default=False) address = fields.JSONField(null=True) created_at = fields.DatetimeField(auto_now_add=True) updated_at = fields.DatetimeField(auto_now=True) class Meta: table = "users" def get_user_id(self) -> str: return str(self.id)
class Tournaments(Model): class Meta: table = 'tournaments' unique_together = ('schedule_type', 'slug') id = fields.IntField(pk=True) schedule_type = fields.CharField(45, null=True) slug = fields.CharField(45, null=True) guild_id = fields.BigIntField(null=True) helper_roles = fields.CharField(2000, null=True) audit_channel_id = fields.BigIntField(null=True) commentary_channel_id = fields.BigIntField(null=True) scheduling_needs_channel_id = fields.BigIntField(null=True) scheduling_needs_tracker = fields.SmallIntField(null=True) mod_channel_id = fields.BigIntField(null=True) tracker_roles = fields.CharField(2000, null=True) commentator_roles = fields.CharField(2000, null=True) mod_roles = fields.CharField(2000, null=True) admin_roles = fields.CharField(2000, null=True) category = fields.CharField(200, null=True) goal = fields.CharField(200, null=True) active = fields.SmallIntField(null=True) has_submission = fields.BooleanField(null=True) lang = fields.CharField(20, null=True) coop = fields.BooleanField(null=True)
class Player(Model): discord_id = fields.BigIntField(pk=True) discord_name = fields.CharField(max_length=200) percent_infected = fields.IntField(default=0) cured = fields.BooleanField(default=False) doctor = fields.BooleanField(default=False) immunodeficient = fields.BooleanField(default=False) total_infected_points = fields.IntField(default=0) total_cured_points = fields.IntField(default=0) maximum_infected_points = fields.IntField(default=0) isolation = fields.IntEnumField(Isolation, default=Isolation.normal_life) touched_last = fields.DatetimeField(auto_now_add=True) good = fields.IntEnumField(AlignmentGood) law = fields.IntEnumField(AlignmentLaw) charisma = fields.IntField() inventory: fields.ReverseRelation["Inventory"] achievements: fields.ReverseRelation["Achievements"] statistics: fields.ReverseRelation["Statistics"] def is_dead(self) -> bool: return self.percent_infected >= 100 def is_infected(self) -> bool: return self.percent_infected > 0 def can_be_touched(self) -> bool: if not self.is_dead(): return self.touched_last + datetime.timedelta( hours=3) < datetime.datetime.utcnow() return self.touched_last + datetime.timedelta( hours=1) < datetime.datetime.utcnow() def infect(self, add_infected: int = None) -> None: if add_infected is None: add_infected = random.randint(1, 8) if self.achievements.vaccinated: add_infected = min(0, add_infected) self.total_infected_points += max(0, add_infected) self.total_cured_points -= min(0, add_infected) self.percent_infected += add_infected self.percent_infected = max(self.percent_infected, 0) self.maximum_infected_points = max(self.maximum_infected_points, self.percent_infected) if self.total_infected_points >= 50 and self.percent_infected == 0: self.cured = True # Defining ``__str__`` is also optional, but gives you pretty # represent of model in debugger and interpreter def __str__(self): return self.discord_name
class AutoResponseModel(Model): id = fields.UUIDField(pk=True) trigger = fields.TextField(description="Trigger for the autoresponse") response = fields.TextField( default=None, null=True, description= "Response to be sent after being triggered from the trigger", ) enabled = fields.BooleanField( default=False, description="Boolean to show of the trigger is enabled") extra_arguements = fields.BooleanField( default=False, description= "If the autoresponse should be run even when extra arguements are passed", ) has_variables = fields.BooleanField( default=False, description="If the autoresponse output has variables") guild = fields.ForeignKeyField("main.GuildModel", related_name="Autoresponses") created_by = fields.ForeignKeyField("main.UserModel", related_name="Autoresponses", null=True) class Meta: table = "autoresponses" table_description = "Represents the autoresponses for each GuildModel"
class Admin(BaseModel): username = fields.CharField(max_length=20, unique=True) password = fields.CharField(max_length=200) mobile = fields.CharField(max_length=200, default="") avatar = fields.CharField(max_length=200, default="") last_login = fields.DatetimeField(description='上次登录') is_active = fields.BooleanField(default=True, description='是否激活') is_superuser = fields.BooleanField(default=False, description='超级管理员')
class UtilisateurDroits(models.Model): id = fields.IntField(pk=True) ademe_user_id = fields.CharField(max_length=300) epci_id = fields.CharField(max_length=36) ecriture = fields.BooleanField() created_at = fields.DatetimeField(auto_now_add=True) modified_at = fields.DatetimeField(auto_now=True) latest = fields.BooleanField()
class Users(Model): id = fields.IntField(pk=True) name = fields.TextField() username = fields.CharField(max_length=32) language_bot = fields.CharField(max_length=6, default="en") language_anime = fields.CharField(max_length=6, default="en") is_collaborator = fields.BooleanField(default=False) subtitled_anime = fields.BooleanField(default=True)
class User(Model): id = fields.IntField(pk=True, generated=True) name = fields.CharField(max_length=255) email = fields.CharField(max_length=255, unique=True) password_hash = fields.CharField(max_length=255) warp = fields.BooleanField(default=False) staff = fields.BooleanField(default=False) team_id = fields.CharField(max_length=255, default='')
class NewsChannel(Model): guild_id = fields.BigIntField(pk=True) channel_id = fields.BigIntField(null=False) news = fields.BooleanField(default=False) devblogs = fields.BooleanField(default=False) patchnotes = fields.BooleanField(default=False) def __str__(self): return f'News Channel for <{self.guild_id}>'
class AdminUser(User): is_active = fields.BooleanField(default=False, description="Is Active") is_superuser = fields.BooleanField(default=False, description="Is Superuser") created_at = fields.DatetimeField(auto_now_add=True) updated_at = fields.DatetimeField(auto_now=True) class Meta: table = "diff_models_user"
class Chat(Model): id = fields.IntField(pk=True) iris_id = fields.CharField(max_length=16, null=True) enable = fields.BooleanField(default=False) transcript = fields.BooleanField(default=False) duty = fields.ForeignKeyField('models.Duty', on_delete=fields.SET_NULL, related_name='chats', null=True)
class TriforceTexts(Model): id = fields.IntField(pk=True) pool_name = fields.CharField(45, null=False) text = fields.CharField(200, null=False) discord_user_id = fields.BigIntField(null=True) author = fields.CharField(200, null=True) approved = fields.BooleanField(default=False) broadcasted = fields.BooleanField(null=False, default=False) timestamp = fields.DatetimeField(auto_now=True)
class QStrategy(Base): """ 上架策略详细信息 The User model """ product_id = fields.UUIDField(pk=True) sim_id = fields.IntField(index=True) user_id = fields.IntField(index=True) author_name = fields.CharField(max_length=32) task_id = fields.CharField(max_length=32, index=True) # 模拟交易的 ID sim_start_cash = fields.FloatField(default=0) # 模拟交易的初始资金 sim_start_dt = fields.DatetimeField() # 模拟交易的开始时间 sim_name = fields.CharField(max_length=128) bt_task_id = fields.CharField(max_length=32, index=True) # 回测的 ID # 状态:1= 上架审核中,2= 上架审核未通过,3= 正常,4= 下架审核中,5= 下架,6= 删除 status = fields.IntEnumField(ListStatus, default=1) market = fields.ForeignKeyField("market.StrategyMarket", "strategies", on_delete=fields.SET_NULL, null=True) package = fields.ForeignKeyField("market.StrategyPackage", "strategies", on_delete=fields.SET_NULL, null=True) name = fields.CharField(max_length=128) # 策略名称 buyout_price = fields.FloatField() # 买断价格 total_cnt = fields.IntField() # 总份数 category = fields.IntEnumField(QStrategyType, default=1) # 策略类型,1= 股票,2= 期货 style = fields.CharField(max_length=32, default="") # 策略风格 tags = fields.JSONField(defalt=[]) # 标签数组 ideas = fields.TextField(default="") # 策略思路 desc = fields.TextField(default="") # 描述 suit_money = fields.FloatField(default=10000000) # 适合资金 # package_name = fields.CharField(max_length=50) # 所属套餐 limit_copy = fields.IntField(default=100000) # 连续复制次数 limit_interval = fields.IntField(default=10000000) # 复制间隔 sell_cnt = fields.IntField(default=0) # 已销售数量 sell_cnt_show = fields.IntField(default=0) # 虚假的销量 create_dt = fields.DatetimeField(auto_now_add=True) # 最初申请上架时间 update_dt = fields.DatetimeField(auto_now=True) online_dt = fields.DatetimeField(null=True) offline_dt = fields.DatetimeField(null=True) view_cnt = fields.IntField(default=0) # 浏览次数 collect_cnt = fields.IntField(default=0) # 收藏次数 share_cnt = fields.IntField(default=0) # 分享次数 # 时段购买价格信息 [{"day": 20, "gift_day": 20, "price": 350}, ...] period_prices = fields.JSONField(default=[]) enable_discount = fields.BooleanField(default=True) # 折扣信息 [{"start_dt": xxx, "end_dt": xxx, "day": 10, "gift_day": 10, "price": 200}, ...] discount_info = fields.JSONField(default=[]) allow_coupon = fields.BooleanField(default=True) # 是否可使用优惠券
class users(Model): user_id = fields.BigIntField(unique=True, pk=True, null=False) balance = fields.BigIntField(default=5000) premium = fields.BooleanField(default=False) created_at = fields.DateField() bot_banned = fields.BooleanField(default=False) trade_banned = fields.BooleanField(default=False) shadow_trade_banned = fields.BooleanField(default=False) starter_cases = fields.BigIntField(default=10) firefight_cases = fields.BigIntField(null=True, default=None)
class User(AdminUser): last_login = fields.DatetimeField(description='Last Login', default=datetime.datetime.now) is_active = fields.BooleanField(default=True, description='Is Active') is_superuser = fields.BooleanField(default=False, description='Is SuperUser') avatar = fields.CharField(max_length=200, default='') intro = fields.TextField(default='') created_at = fields.DatetimeField(auto_now_add=True) def __str__(self): return f'{self.pk}#{self.username}'
class Category(Model): id = fields.IntField(pk=True) name = fields.CharField(max_length=32, description='Category name') active = fields.BooleanField(default=True) hidden = fields.BooleanField(default=False) def __str__(self): return self.name
class AbstractUser(Model): username = fields.CharField(max_length=20, unique=True) password = fields.CharField( max_length=200, description="Will auto hash with raw password when change" ) is_active = fields.BooleanField(default=True,) is_superuser = fields.BooleanField(default=False) class Meta: abstract = True
class User(models.Model): id = fields.IntField(pk=True) full_name = fields.CharField(100, index=True, null=True) email = fields.CharField(100, unique=True, index=True, null=False) password_hash = fields.CharField(128, null=True) is_active = fields.BooleanField(default=True) is_superuser = fields.BooleanField(default=False) class PydanticMeta: exclude = ["password_hash"]
class ConfessChannel(Model): confess_id = fields.IntField(pk=True) enable = fields.BooleanField(default=False, null=True) guild = fields.BigIntField(default=0, null=True) confess_channel = fields.BigIntField(default=0) log_channel = fields.BigIntField(default=0, null=True) last_confess = fields.BigIntField(default=0, null=True) blocked_users = fields.TextField(default="", null=True) whitelist = fields.BooleanField(default=False, null=True) allowed_roles = fields.TextField(default="", null=True)
class User(models.Model): user_uuid = fields.UUIDField(unique=True, default=uuid.uuid4) username = fields.CharField(max_length=250, unique=True) email = fields.CharField(unique=True, max_length=400) password = fields.CharField(max_length=512) full_name = fields.TextField() phone_number = fields.CharField(max_length=10, unique=True) is_superuser = fields.BooleanField(default=False) is_staff = fields.BooleanField( default=False, description="Designates whether the user can log into this admin site.", ) is_active = fields.BooleanField( default=True, description=""""Designates whether this user should be treated as active. Unselect this instead of deleting accounts.""", ) career = fields.CharEnumField(enum_type=Career, max_length=200, null=True) is_worker = fields.BooleanField( default=False, description="Designates whether the user is worker.", null=True) is_customer = fields.BooleanField( default=False, description="Designates whether the user is customer.", null=True) date_joined = fields.DatetimeField(auto_now_add=True) def __str__(self) -> str: return f"{self.username}" class PydanticMeta: exclude = ( "password", "id", "date_joined", "user_uuid", "is_superuser", "is_staff", "is_active", )
class Call(Model): id: uuid4 = fields.UUIDField(pk=True) created_at: datetime = fields.DatetimeField(auto_now_add=True) updated_at: datetime = fields.DatetimeField(auto_now=True, null=True) company: fields.ForeignKeyRelation[Company] = fields.ForeignKeyField( model_name='models.Company', related_name='calls', on_delete=fields.CASCADE, ) operator: str = fields.CharField(max_length=15) operator_session_id: str = fields.CharField(max_length=50, default='', index=True) call_type: str = fields.CharField(max_length=15) state: str = fields.CharField(max_length=15) from_number: str = fields.CharField(max_length=256) from_user: str = fields.CharField(max_length=50, default='') from_pin: str = fields.CharField(max_length=15, default='') request_number: str = fields.CharField(max_length=256) request_user: str = fields.CharField(max_length=50, default='') request_pin: str = fields.CharField(max_length=50, default='') record_url: str = fields.CharField(max_length=250, default='') appeal_id: uuid4 = fields.UUIDField(null=True, default=None, index=True) has_appeal: bool = fields.BooleanField(null=True, default=None) appeal_number: int = fields.IntField(null=True, default=None) managed_by: int = fields.IntField(null=True) is_record: bool = fields.BooleanField(default=False) disconnect_reason: str = fields.CharField(max_length=150, default='') comment: str = fields.CharField(max_length=255, default='') managed_at: datetime = fields.DatetimeField(null=True) started_at: datetime = fields.DatetimeField(null=True) voice_started_at: datetime = fields.DatetimeField(null=True) voice_finished_at: datetime = fields.DatetimeField(null=True) finished_at: datetime = fields.DatetimeField(null=True) is_hidden: bool = fields.BooleanField(null=True, default=False) voximplant_session_id: str = fields.CharField(max_length=20, default=None, null=True) dialog: str = fields.TextField(default='') campaign_id: int = fields.IntField(null=True, default=None) campaign_contact_id: int = fields.IntField(null=True, default=None) duration_sec: int = fields.IntField(default=0) duration_min: int = fields.IntField(default=0) class Meta: table = 'calls' def create_record_filename(self): return str(self.id).replace('-', '') + '.mp3' @property def sign(self) -> str: call_str = f'{self.id}{self.call_type}{self.state}'.encode() return md5(call_str).hexdigest()