Exemplo n.º 1
0
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"]
Exemplo n.º 2
0
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="")
Exemplo n.º 3
0
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
Exemplo n.º 4
0
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}>"
Exemplo n.º 5
0
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", )
Exemplo n.º 6
0
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}>"
Exemplo n.º 7
0
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)
Exemplo n.º 8
0
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"]
Exemplo n.º 9
0
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}"
Exemplo n.º 10
0
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)
Exemplo n.º 11
0
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)
Exemplo n.º 12
0
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
Exemplo n.º 13
0
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"
Exemplo n.º 14
0
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='超级管理员')
Exemplo n.º 15
0
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()
Exemplo n.º 16
0
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)
Exemplo n.º 17
0
Arquivo: pcapid.py Projeto: lxp/pcapid
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='')
Exemplo n.º 18
0
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}>'
Exemplo n.º 19
0
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"
Exemplo n.º 20
0
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)
Exemplo n.º 21
0
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)
Exemplo n.º 22
0
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)  # 是否可使用优惠券
Exemplo n.º 23
0
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)
Exemplo n.º 24
0
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}'
Exemplo n.º 25
0
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
Exemplo n.º 26
0
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
Exemplo n.º 27
0
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"]
Exemplo n.º 28
0
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)
Exemplo n.º 29
0
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",
        )
Exemplo n.º 30
0
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()