Exemplo n.º 1
0
class DecimalFields(Model):
    id = fields.IntField(pk=True)
    decimal = fields.DecimalField(max_digits=18, decimal_places=4)
    decimal_nodec = fields.DecimalField(max_digits=18, decimal_places=0)
    decimal_null = fields.DecimalField(max_digits=18,
                                       decimal_places=4,
                                       null=True)
Exemplo n.º 2
0
class Participant(models.Model):
    ''' 
		This defines a Participant of a Match
	'''

    id = fields.IntField(pk=True)
    api_id = fields.CharField(max_length=255)
    player_name = fields.CharField(max_length=255)
    damage = fields.DecimalField(max_digits=10, decimal_places=2, null=True)
    kills = fields.IntField(null=True)
    knocks = fields.IntField(null=True)
    placement = fields.IntField(null=True)
    player = fields.ForeignKeyField('api.Player',
                                    on_delete=fields.CASCADE,
                                    null=True)
    is_ai = fields.BooleanField(default=False, null=True)

    swim_distance = fields.DecimalField(max_digits=10,
                                        decimal_places=2,
                                        null=True)
    ride_distance = fields.DecimalField(max_digits=10,
                                        decimal_places=2,
                                        null=True)
    walk_distance = fields.DecimalField(max_digits=10,
                                        decimal_places=2,
                                        null=True)

    def __str__(self) -> str:
        return "{} - {}".format(self.api_id, self.player_name)
Exemplo n.º 3
0
class Investment(SluggableModel):
    name = fields.CharField(max_length=50, unique=True)
    description = fields.TextField()
    min_amount = fields.DecimalField(max_digits=18, decimal_places=2)
    roi = fields.DecimalField(max_digits=4, decimal_places=1, null=True)
    duration = fields.IntField()
    image_url = fields.CharField(max_length=250)
Exemplo n.º 4
0
    class Journal(Model):
        timestamp = fields.DatetimeField(auto_now_add=True)
        level = fields.SmallIntField(index=True)
        text = fields.CharField(max_length=255, index=True)

        col_float1 = fields.FloatField(default=2.2)
        col_smallint1 = fields.SmallIntField(default=2)
        col_int1 = fields.IntField(default=2000000)
        col_bigint1 = fields.BigIntField(default=99999999)
        col_char1 = fields.CharField(max_length=255, default='value1')
        col_text1 = fields.TextField(
            default='Moo,Foo,Baa,Waa,Moo,Foo,Baa,Waa,Moo,Foo,Baa,Waa')
        col_decimal1 = fields.DecimalField(12, 8, default=Decimal('2.2'))
        col_json1 = fields.JSONField(default={
            'a': 1,
            'b': 'b',
            'c': [2],
            'd': {
                'e': 3
            },
            'f': True
        })

        col_float2 = fields.FloatField(null=True)
        col_smallint2 = fields.SmallIntField(null=True)
        col_int2 = fields.IntField(null=True)
        col_bigint2 = fields.BigIntField(null=True)
        col_char2 = fields.CharField(max_length=255, null=True)
        col_text2 = fields.TextField(null=True)
        col_decimal2 = fields.DecimalField(12, 8, null=True)
        col_json2 = fields.JSONField(null=True)

        col_float3 = fields.FloatField(default=2.2)
        col_smallint3 = fields.SmallIntField(default=2)
        col_int3 = fields.IntField(default=2000000)
        col_bigint3 = fields.BigIntField(default=99999999)
        col_char3 = fields.CharField(max_length=255, default='value1')
        col_text3 = fields.TextField(
            default='Moo,Foo,Baa,Waa,Moo,Foo,Baa,Waa,Moo,Foo,Baa,Waa')
        col_decimal3 = fields.DecimalField(12, 8, default=Decimal('2.2'))
        col_json3 = fields.JSONField(default={
            'a': 1,
            'b': 'b',
            'c': [2],
            'd': {
                'e': 3
            },
            'f': True
        })

        col_float4 = fields.FloatField(null=True)
        col_smallint4 = fields.SmallIntField(null=True)
        col_int4 = fields.IntField(null=True)
        col_bigint4 = fields.BigIntField(null=True)
        col_char4 = fields.CharField(max_length=255, null=True)
        col_text4 = fields.TextField(null=True)
        col_decimal4 = fields.DecimalField(12, 8, null=True)
        col_json4 = fields.JSONField(null=True)
Exemplo n.º 5
0
    class Journal(Model):
        timestamp = fields.DatetimeField(auto_now_add=True)
        level = fields.SmallIntField(index=True)
        text = fields.CharField(max_length=255, index=True)

        col_float1 = fields.FloatField(default=2.2)
        col_smallint1 = fields.SmallIntField(default=2)
        col_int1 = fields.IntField(default=2000000)
        col_bigint1 = fields.BigIntField(default=99999999)
        col_char1 = fields.CharField(max_length=255, default="value1")
        col_text1 = fields.TextField(
            default="Moo,Foo,Baa,Waa,Moo,Foo,Baa,Waa,Moo,Foo,Baa,Waa")
        col_decimal1 = fields.DecimalField(12, 8, default=Decimal("2.2"))
        col_json1 = fields.JSONField(default={
            "a": 1,
            "b": "b",
            "c": [2],
            "d": {
                "e": 3
            },
            "f": True
        })

        col_float2 = fields.FloatField(null=True)
        col_smallint2 = fields.SmallIntField(null=True)
        col_int2 = fields.IntField(null=True)
        col_bigint2 = fields.BigIntField(null=True)
        col_char2 = fields.CharField(max_length=255, null=True)
        col_text2 = fields.TextField(null=True)
        col_decimal2 = fields.DecimalField(12, 8, null=True)
        col_json2 = fields.JSONField(null=True)

        col_float3 = fields.FloatField(default=2.2)
        col_smallint3 = fields.SmallIntField(default=2)
        col_int3 = fields.IntField(default=2000000)
        col_bigint3 = fields.BigIntField(default=99999999)
        col_char3 = fields.CharField(max_length=255, default="value1")
        col_text3 = fields.TextField(
            default="Moo,Foo,Baa,Waa,Moo,Foo,Baa,Waa,Moo,Foo,Baa,Waa")
        col_decimal3 = fields.DecimalField(12, 8, default=Decimal("2.2"))
        col_json3 = fields.JSONField(default={
            "a": 1,
            "b": "b",
            "c": [2],
            "d": {
                "e": 3
            },
            "f": True
        })

        col_float4 = fields.FloatField(null=True)
        col_smallint4 = fields.SmallIntField(null=True)
        col_int4 = fields.IntField(null=True)
        col_bigint4 = fields.BigIntField(null=True)
        col_char4 = fields.CharField(max_length=255, null=True)
        col_text4 = fields.TextField(null=True)
        col_decimal4 = fields.DecimalField(12, 8, null=True)
        col_json4 = fields.JSONField(null=True)
Exemplo n.º 6
0
class Trade(Model):
    id = fields.IntField(pk=True)
    symbol = fields.CharField(max_length=5)
    trader = fields.CharField(36)
    side = fields.IntEnumField(enum_type=TradeSide)
    quantity = fields.DecimalField(decimal_places=6, max_digits=20)
    price = fields.DecimalField(decimal_places=6, max_digits=20)
    slippage = fields.DecimalField(decimal_places=6, max_digits=20)
    level = fields.BigIntField()
    timestamp = fields.DatetimeField()
Exemplo n.º 7
0
class Position(Model):
    id = fields.IntField(pk=True)
    symbol = fields.CharField(max_length=5)
    trader = fields.CharField(36)
    shares_qty = fields.BigIntField(default=0)
    avg_share_px = fields.DecimalField(decimal_places=6,
                                       max_digits=20,
                                       default=0)
    realized_pl = fields.DecimalField(decimal_places=6,
                                      max_digits=20,
                                      default=0)
Exemplo n.º 8
0
class Offer(BaseModel):
    value = fields.DecimalField(14, 2)
    installments = fields.SmallIntField()
    tax_rate_percent_monthly = fields.DecimalField(3, 2)
    total_value = fields.DecimalField(14, 2)
    offer_package = fields.ForeignKeyField("models.OfferPackage",
                                           related_name="offers")
    partner = fields.ForeignKeyField("models.Partner",
                                     related_name="offers_partner")
    customer = fields.ForeignKeyField("models.Customer",
                                      related_name="offers_customer")
Exemplo n.º 9
0
class DecimalFields(Model):
    class Meta:
        ordering = [
            'id',
        ]

    id = fields.IntegerField(primary_key=True)
    decimal = fields.DecimalField(max_digits=18, decimal_places=4)
    decimal_nodec = fields.DecimalField(max_digits=18, decimal_places=0)
    decimal_null = fields.DecimalField(max_digits=18,
                                       decimal_places=4,
                                       null=True)
Exemplo n.º 10
0
class Property(SluggableModel):
    name = fields.CharField(max_length=50, unique=True)
    location = fields.CharField(max_length=50)
    description = fields.TextField()
    plot_price = fields.DecimalField(max_digits=18,
                                     decimal_places=2,
                                     null=True)
    half_plot_price = fields.DecimalField(max_digits=18,
                                          decimal_places=2,
                                          null=True)
    promo_price = fields.DecimalField(max_digits=5,
                                      decimal_places=2,
                                      null=True)
    is_promo = fields.BooleanField(default=False)
    image_url = fields.CharField(max_length=250)
Exemplo n.º 11
0
 def test_max_digits_empty(self):
     with self.assertRaisesRegex(
             TypeError,
             "missing 2 required positional arguments: 'max_digits' and"
             " 'decimal_places'",
     ):
         fields.DecimalField()  # pylint: disable=E1120
Exemplo n.º 12
0
class Payment(models.Model):
    id = fields.BigIntField(pk=True)
    payment_status = fields.CharField(max_length=50)
    paid = fields.BooleanField(default=False)
    amount = fields.DecimalField(max_digits=7, decimal_places=2)
    booking: fields.ForeignKeyRelation[Booking] = fields.ForeignKeyField(
        "models.Booking", related_name="payment")
Exemplo n.º 13
0
class Event(Model):
    id = fields.BigIntField(pk=True, description="Event ID")
    name = fields.TextField()
    tournament: fields.ForeignKeyRelation[Tournament] = fields.ForeignKeyField(
        "models.Tournament",
        db_constraint=False,
        related_name="events",
        description="FK to tournament",
    )
    participants: fields.ManyToManyRelation["Team"] = fields.ManyToManyField(
        "models.Team",
        db_constraint=False,
        related_name="events",
        through="teamevents",
        description="How participants relate",
    )
    modified = fields.DatetimeField(auto_now=True)
    prize = fields.DecimalField(max_digits=10, decimal_places=2, null=True)
    token = fields.CharField(max_length=100,
                             description="Unique token",
                             unique=True)
    key = fields.CharField(max_length=100)

    class Meta:
        table_description = "This table contains a list of all the events"
        unique_together = [("name", "prize"), ["tournament", "key"]]
Exemplo n.º 14
0
class Quantity(Model):
    id = fields.IntField(pk=True)
    amount = fields.DecimalField(max_digits=38, decimal_places=12)
    unit = fields.ForeignKeyField('models.Unit', related_name='units')

    def __str__(self):
        return f'{self.name}({self.amount};{self.unit})'
Exemplo n.º 15
0
class DefaultModel(Model):
    int_default = fields.IntField(default=1)
    float_default = fields.FloatField(default=1.5)
    decimal_default = fields.DecimalField(max_digits=8, decimal_places=2, default=Decimal(1))
    bool_default = fields.BooleanField(default=True)
    char_default = fields.CharField(max_length=20, default="tortoise")
    date_default = fields.DateField(default=datetime.date.fromisoformat("2020-05-20"))
    datetime_default = fields.DatetimeField(default=datetime.datetime(year=2020, month=5, day=20))
class Item(Model):
    id = fields.IntField(pk=True)
    name = fields.CharField(10, null=False)
    price = fields.DecimalField(20, 10, null=True)
    created_at = TimestampField(null=False, auto_now_add=True)
    updated_at = TimestampField(null=False, auto_now=True)

    class Meta:
        table = 'items'
Exemplo n.º 17
0
class ThorPoolModel(Model):
    id = fields.BigIntField(pk=True)
    block_height = fields.BigIntField(index=True)
    network = fields.CharField(80, default='testnet', index=True)
    pool = fields.CharField(128, index=True)

    balance_asset = fields.DecimalField(30, 0)
    balance_rune = fields.DecimalField(30, 0)
    pool_units = fields.DecimalField(30, 0)
    status = fields.CharField(32, index=True)

    def __str__(self) -> str:
        return f'ThorPoolModel(#{self.block_height}, ' \
               f'{int(self.balance_asset) / 1e8} {self.pool} vs {int(self.balance_rune) / 1e8} R, ' \
               f'{self.status})'

    @classmethod
    def from_thor_pool(cls, p: ThorPool, network_id, block_height):
        return ThorPoolModel(
            block_height=block_height,
            network=network_id,
            pool=p.asset,
            balance_asset=p.balance_asset_int,
            balance_rune=p.balance_rune_int,
            pool_units=p.pool_units_int,
            status=p.status
        )

    @classmethod
    async def find_one(cls, network_id: str, block_height: int, pool: str):
        return await cls.filter(network=network_id, block_height=block_height, pool=pool).first()

    @classmethod
    async def find_pools(cls, network_id: str, block_height: int):
        return await cls.filter(network=network_id, block_height=block_height)

    @property
    def assets_per_rune(self):
        return int(self.balance_asset) / int(self.balance_rune)

    @property
    def runes_per_asset(self):
        return int(self.balance_rune) / int(self.balance_asset)
Exemplo n.º 18
0
class User(Model):
    user_id = fields.IntField(unique=True)
    username = fields.CharField(max_length=255, null=True)
    full_name = fields.CharField(max_length=255)
    balance = fields.DecimalField(max_digits=32, decimal_places=2, default=0)

    class Meta:
        table = "users"

    def __str__(self):
        return f"[{self.user_id}] {self.full_name}"
Exemplo n.º 19
0
class User(BaseModel):
    app = fields.ManyToManyField("diff_models.App", related_name="users")
    token = fields.CharField(max_length=20, unique=True, description="认证token")
    password = fields.CharField(max_length=200)
    name = fields.CharField(max_length=50, description="姓名")
    phone = fields.CharField(max_length=20, description="电话号码")
    email = fields.CharField(max_length=50, description="邮箱地址")
    balance = fields.DecimalField(max_digits=10,
                                  decimal_places=4,
                                  default=0,
                                  description="账户余额")
Exemplo n.º 20
0
class Transaction(Model):
    id = fields.UUIDField(pk=True)
    amount = fields.DecimalField(max_digits=19, decimal_places=4)
    description = fields.TextField(null=True)
    status: TransactionStatus = fields.CharEnumField(
        TransactionStatus, default=TransactionStatus.PENDING
    )
    error = fields.TextField(null=True)
    created_at = fields.DatetimeField(auto_now_add=True)

    class Meta:
        abstract = True
Exemplo n.º 21
0
class Event(Model):
    id = fields.IntField(pk=True)
    name = fields.TextField(unique=True)
    tournament = fields.ForeignKeyField('models.Tournament', related_name='events')
    participants = fields.ManyToManyField(
        'models.Team', related_name='events', through='event_team'
    )
    modified = fields.DatetimeField(auto_now=True)
    prize = fields.DecimalField(max_digits=10, decimal_places=2, null=True)
    token = fields.TextField(default=generate_token)

    def __str__(self):
        return self.name
Exemplo n.º 22
0
class SomeModel(Model):
    id = fields.IntField(pk=True)
    string = fields.CharField(255, null=True)
    decimal = fields.DecimalField(20, 10, null=True)
    enum = fields.CharEnumField(SomeEnum, null=True)
    reversed_enum = ReversedCharEnumField(SomeReversedEnum, null=True)
    date = fields.DateField(null=True)
    datetime = fields.DatetimeField(null=True)
    timedelta = fields.TimeDeltaField(null=True)
    bool = fields.BooleanField(null=True)
    relation = fields.ForeignKeyField('models.SomeModel', 'id', null=True)

    class Meta:  # pylint: disable=too-few-public-methods)
        table = 'test_models'
Exemplo n.º 23
0
class Wallet(Model):
    id = fields.UUIDField(pk=True)  # token
    # To simplify, we assume that we only use one currency.
    balance = fields.DecimalField(max_digits=19, decimal_places=4, default=0)
    created_at = fields.DatetimeField(auto_now_add=True)
    modified_at = fields.DatetimeField(auto_now=True)

    class Meta:
        abstract = True

    async def deposit_money(self, amount: Decimal, connection):
        if not amount or amount < 0:
            raise AmountMustBeAPositiveNumber(
                "The entered amount must be a positive number"
            )
        self.balance += Decimal(amount)
        await self.save(using_db=connection)
Exemplo n.º 24
0
class Event(Model):
    id = fields.IntField(pk=True, description="Event ID")
    name = fields.CharField(max_length=255, unique=True)
    tournament = fields.ForeignKeyField(
        "models.Tournament", related_name="events", description="FK to tournament"
    )
    participants = fields.ManyToManyField(
        "models.Team",
        related_name="events",
        through="event_team",
        description="How participants relate",
    )
    modified = fields.DatetimeField(auto_now=True)
    prize = fields.DecimalField(max_digits=10, decimal_places=2, null=True)
    token = fields.CharField(max_length=100, description="Unique token", unique=True)

    class Meta:
        table_description = "This table contains a list of all the events"
Exemplo n.º 25
0
class Event(Model):
    id = fields.IntField(pk=True)
    name = fields.CharField(max_length=64)
    # References to other models are defined in format
    # "{app_name}.{model_name}" - where {app_name} is defined in tortoise config
    tournament = fields.ForeignKeyField("models.Tournament",
                                        related_name='events')
    participants = fields.ManyToManyField("models.Team",
                                          related_name='events',
                                          through='event_team')
    prize = fields.DecimalField(max_digits=10, decimal_places=2, null=True)
    created_at = fields.DatetimeField(auto_now=True, description="创建时间")
    updated_at = fields.DatetimeField(auto_now_add=True, description="修改时间")

    class Meta:
        table = "event"
        table_description = "Event"

    def __str__(self):
        return self.name
Exemplo n.º 26
0
 def test_decimal_places_bad(self):
     with self.assertRaisesRegex(ConfigurationError, "'decimal_places' must be >= 0"):
         fields.DecimalField(max_digits=2, decimal_places=-1)
Exemplo n.º 27
0
 def test_max_fields_bad(self):
     with self.assertRaisesRegex(ConfigurationError, "'max_digits' must be >= 1"):
         fields.DecimalField(max_digits=0, decimal_places=2)
Exemplo n.º 28
0
 def test_decimal_places_empty(self):
     with self.assertRaisesRegex(TypeError,
                                 "missing 1 required positional argument: 'decimal_places'"):
         fields.DecimalField(max_digits=1)  # pylint: disable=E1120
Exemplo n.º 29
0
class CODPlayerMatch(models.Model):

    player = fields.ForeignKeyField('api.CODPlayer', on_delete=fields.CASCADE)
    title = fields.ForeignKeyField('api.CODTitle', on_delete=fields.CASCADE)
    item_type = fields.ForeignKeyField('api.CODItemType',
                                       on_delete=fields.CASCADE)
    mode_type = fields.ForeignKeyField('api.CODModeType',
                                       on_delete=fields.CASCADE)

    match_id = fields.CharField(max_length=255, null=True)
    kills = fields.DecimalField(max_digits=16, decimal_places=2, null=True)
    gulag_kills = fields.DecimalField(max_digits=16,
                                      decimal_places=2,
                                      null=True)
    objective_teams_wiped = fields.DecimalField(max_digits=16,
                                                decimal_places=2,
                                                null=True)
    objective_last_stand_kill = fields.DecimalField(max_digits=16,
                                                    decimal_places=2,
                                                    null=True)
    wall_bangs = fields.DecimalField(max_digits=16,
                                     decimal_places=2,
                                     null=True)
    avg_life_time = fields.DecimalField(max_digits=16,
                                        decimal_places=2,
                                        null=True)
    score = fields.DecimalField(max_digits=16, decimal_places=2, null=True)
    objective_destroyed_vehicle_light = fields.DecimalField(max_digits=16,
                                                            decimal_places=2,
                                                            null=True)
    kills_per_game = fields.DecimalField(max_digits=16,
                                         decimal_places=2,
                                         null=True)
    distance_travelled = fields.DecimalField(max_digits=16,
                                             decimal_places=2,
                                             null=True)
    objective_munitions_box_teammate_used = fields.DecimalField(
        max_digits=16, decimal_places=2, null=True)
    objective_br_down_enemy_circle_1 = fields.DecimalField(max_digits=16,
                                                           decimal_places=2,
                                                           null=True)
    objective_br_down_enemy_circle_2 = fields.DecimalField(max_digits=16,
                                                           decimal_places=2,
                                                           null=True)
    objective_br_down_enemy_circle_3 = fields.DecimalField(max_digits=16,
                                                           decimal_places=2,
                                                           null=True)
    objective_br_down_enemy_circle_4 = fields.DecimalField(max_digits=16,
                                                           decimal_places=2,
                                                           null=True)
    objective_br_down_enemy_circle_5 = fields.DecimalField(max_digits=16,
                                                           decimal_places=2,
                                                           null=True)
    objective_br_down_enemy_circle_6 = fields.DecimalField(max_digits=16,
                                                           decimal_places=2,
                                                           null=True)
    objective_br_mission_pickup_tablet = fields.DecimalField(max_digits=16,
                                                             decimal_places=2,
                                                             null=True)
    objective_reviver = fields.DecimalField(max_digits=16,
                                            decimal_places=2,
                                            null=True)
    objective_br_kiosk_buy = fields.DecimalField(max_digits=16,
                                                 decimal_places=2,
                                                 null=True)
    time_played = fields.DecimalField(max_digits=16,
                                      decimal_places=2,
                                      null=True)
    headshot_percentage = fields.DecimalField(max_digits=16,
                                              decimal_places=2,
                                              null=True)
    executions = fields.DecimalField(max_digits=16,
                                     decimal_places=2,
                                     null=True)
    matches_played = fields.DecimalField(max_digits=16,
                                         decimal_places=2,
                                         null=True)
    gulag_deaths = fields.DecimalField(max_digits=16,
                                       decimal_places=2,
                                       null=True)
    nearmisses = fields.DecimalField(max_digits=16,
                                     decimal_places=2,
                                     null=True)
    objective_br_cache_open = fields.DecimalField(max_digits=16,
                                                  decimal_places=2,
                                                  null=True)
    damage_done = fields.DecimalField(max_digits=16,
                                      decimal_places=2,
                                      null=True)
    damage_taken = fields.DecimalField(max_digits=16,
                                       decimal_places=2,
                                       null=True)
    team_placement = fields.DecimalField(max_digits=16,
                                         decimal_places=2,
                                         null=True)
    team_survival_time = fields.DecimalField(max_digits=16,
                                             decimal_places=2,
                                             null=True)
    utc_start_seconds = fields.IntField(null=True)
    utc_end_seconds = fields.IntField(null=True)
    rank = fields.DecimalField(max_digits=16, decimal_places=2, null=True)
    player_count = fields.DecimalField(max_digits=16,
                                       decimal_places=2,
                                       null=True)
    headshots = fields.DecimalField(max_digits=16, decimal_places=2, null=True)
    assists = fields.DecimalField(max_digits=16, decimal_places=2, null=True)
    deaths = fields.DecimalField(max_digits=16, decimal_places=2, null=True)
    score_per_minute = fields.DecimalField(max_digits=16,
                                           decimal_places=2,
                                           null=True)
    kd_ratio = fields.DecimalField(max_digits=16, decimal_places=2, null=True)

    def __str__(self) -> str:
        return f"{self.__class__.__name__} {self.id}"
Exemplo n.º 30
0
class CODPlayerTitleStats(models.Model):

    id = fields.IntField(pk=True)
    player = fields.ForeignKeyField('api.CODPlayer', on_delete=fields.CASCADE)
    title = fields.ForeignKeyField('api.CODTitle', on_delete=fields.CASCADE)
    item_type = fields.ForeignKeyField('api.CODItemType',
                                       on_delete=fields.CASCADE)
    mode_type = fields.ForeignKeyField('api.CODModeType',
                                       on_delete=fields.CASCADE,
                                       null=True)

    level = fields.DecimalField(max_digits=16, decimal_places=2, null=True)
    level_xp_remainder = fields.DecimalField(max_digits=16,
                                             decimal_places=2,
                                             null=True)
    level_xp_gained = fields.DecimalField(max_digits=16,
                                          decimal_places=2,
                                          null=True)
    prestige = fields.DecimalField(max_digits=16, decimal_places=2, null=True)
    prestige_id = fields.DecimalField(max_digits=16,
                                      decimal_places=2,
                                      null=True)

    total_xp = fields.DecimalField(max_digits=16, decimal_places=2, null=True)
    paragon_rank = fields.DecimalField(max_digits=16,
                                       decimal_places=2,
                                       null=True)
    paragon_id = fields.DecimalField(max_digits=16,
                                     decimal_places=2,
                                     null=True)

    match_id = fields.CharField(max_length=255, null=True)
    gulag_kills = fields.DecimalField(max_digits=16,
                                      decimal_places=2,
                                      null=True)
    objective_teams_wiped = fields.DecimalField(max_digits=16,
                                                decimal_places=2,
                                                null=True)
    objective_last_stand_kill = fields.DecimalField(max_digits=16,
                                                    decimal_places=2,
                                                    null=True)
    wall_bangs = fields.DecimalField(max_digits=16,
                                     decimal_places=2,
                                     null=True)
    avg_life_time = fields.DecimalField(max_digits=16,
                                        decimal_places=2,
                                        null=True)
    score = fields.DecimalField(max_digits=16, decimal_places=2, null=True)
    objective_destroyed_vehicle_light = fields.DecimalField(max_digits=16,
                                                            decimal_places=2,
                                                            null=True)
    kills_per_game = fields.DecimalField(max_digits=16,
                                         decimal_places=2,
                                         null=True)
    distance_travelled = fields.DecimalField(max_digits=16,
                                             decimal_places=2,
                                             null=True)
    objective_munitions_box_teammate_used = fields.DecimalField(
        max_digits=16, decimal_places=2, null=True)
    objective_br_down_enemy_circle_1 = fields.DecimalField(max_digits=16,
                                                           decimal_places=2,
                                                           null=True)
    objective_br_down_enemy_circle_2 = fields.DecimalField(max_digits=16,
                                                           decimal_places=2,
                                                           null=True)
    objective_br_down_enemy_circle_3 = fields.DecimalField(max_digits=16,
                                                           decimal_places=2,
                                                           null=True)
    objective_br_down_enemy_circle_4 = fields.DecimalField(max_digits=16,
                                                           decimal_places=2,
                                                           null=True)
    objective_br_down_enemy_circle_5 = fields.DecimalField(max_digits=16,
                                                           decimal_places=2,
                                                           null=True)
    objective_br_down_enemy_circle_6 = fields.DecimalField(max_digits=16,
                                                           decimal_places=2,
                                                           null=True)
    objective_br_mission_pickup_tablet = fields.DecimalField(max_digits=16,
                                                             decimal_places=2,
                                                             null=True)
    objective_reviver = fields.DecimalField(max_digits=16,
                                            decimal_places=2,
                                            null=True)
    objective_br_kiosk_buy = fields.DecimalField(max_digits=16,
                                                 decimal_places=2,
                                                 null=True)
    time_played = fields.DecimalField(max_digits=16,
                                      decimal_places=2,
                                      null=True)
    headshot_percentage = fields.DecimalField(max_digits=16,
                                              decimal_places=2,
                                              null=True)
    executions = fields.DecimalField(max_digits=16,
                                     decimal_places=2,
                                     null=True)
    matches_played = fields.DecimalField(max_digits=16,
                                         decimal_places=2,
                                         null=True)
    gulag_deaths = fields.DecimalField(max_digits=16,
                                       decimal_places=2,
                                       null=True)
    nearmisses = fields.DecimalField(max_digits=16,
                                     decimal_places=2,
                                     null=True)
    objective_br_cache_open = fields.DecimalField(max_digits=16,
                                                  decimal_places=2,
                                                  null=True)
    damage_done = fields.DecimalField(max_digits=16,
                                      decimal_places=2,
                                      null=True)
    damage_taken = fields.DecimalField(max_digits=16,
                                       decimal_places=2,
                                       null=True)
    team_placement = fields.DecimalField(max_digits=16,
                                         decimal_places=2,
                                         null=True)
    team_survival_time = fields.DecimalField(max_digits=16,
                                             decimal_places=2,
                                             null=True)
    utc_start_seconds = fields.IntField(null=True)
    utc_end_seconds = fields.IntField(null=True)
    player_count = fields.IntField(null=True)
    rank = fields.DecimalField(max_digits=16, decimal_places=2, null=True)
    player_count = fields.DecimalField(max_digits=16,
                                       decimal_places=2,
                                       null=True)

    record_longest_win_streak = fields.DecimalField(max_digits=16,
                                                    decimal_places=2,
                                                    null=True)
    record_xp_in_a_match = fields.DecimalField(max_digits=16,
                                               decimal_places=2,
                                               null=True)
    accuracy = fields.DecimalField(max_digits=16, decimal_places=2, null=True)
    last_updated = fields.DecimalField(max_digits=16,
                                       decimal_places=2,
                                       null=True)
    losses = fields.DecimalField(max_digits=16, decimal_places=2, null=True)
    total_games_played = fields.DecimalField(max_digits=16,
                                             decimal_places=2,
                                             null=True)
    score = fields.DecimalField(max_digits=16, decimal_places=2, null=True)
    win_loss_ratio = fields.DecimalField(max_digits=16,
                                         decimal_places=2,
                                         null=True)  # winLossRatio or wlRatio
    total_shots = fields.DecimalField(max_digits=16,
                                      decimal_places=2,
                                      null=True)
    best_score_xp = fields.DecimalField(max_digits=16,
                                        decimal_places=2,
                                        null=True)
    games_played = fields.DecimalField(max_digits=16,
                                       decimal_places=2,
                                       null=True)
    best_sguard_wave = fields.DecimalField(max_digits=16,
                                           decimal_places=2,
                                           null=True)
    best_sguard_weapon_level = fields.DecimalField(max_digits=16,
                                                   decimal_places=2,
                                                   null=True)
    best_squad_kills = fields.DecimalField(max_digits=16,
                                           decimal_places=2,
                                           null=True)
    best_squad_wave = fields.DecimalField(max_digits=16,
                                          decimal_places=2,
                                          null=True)
    best_confirmed = fields.DecimalField(max_digits=16,
                                         decimal_places=2,
                                         null=True)
    deaths = fields.DecimalField(max_digits=16, decimal_places=2, null=True)
    wins = fields.DecimalField(max_digits=16, decimal_places=2, null=True)
    best_squard_crates = fields.DecimalField(max_digits=16,
                                             decimal_places=2,
                                             null=True)
    kd_ratio = fields.DecimalField(max_digits=16, decimal_places=2, null=True)
    best_assists = fields.DecimalField(max_digits=16,
                                       decimal_places=2,
                                       null=True)
    best_field_goals = fields.DecimalField(max_digits=16,
                                           decimal_places=2,
                                           null=True)
    best_score = fields.DecimalField(max_digits=16,
                                     decimal_places=2,
                                     null=True)
    record_deaths_in_a_match = fields.DecimalField(max_digits=16,
                                                   decimal_places=2,
                                                   null=True)
    score_per_game = fields.DecimalField(max_digits=16,
                                         decimal_places=2,
                                         null=True)
    best_spm = fields.DecimalField(max_digits=16, decimal_places=2, null=True)
    best_kill_chains = fields.DecimalField(max_digits=16,
                                           decimal_places=2,
                                           null=True)
    record_kills_in_a_match = fields.DecimalField(max_digits=16,
                                                  decimal_places=2,
                                                  null=True)
    suicides = fields.DecimalField(max_digits=16, decimal_places=2, null=True)
    current_win_streak = fields.DecimalField(max_digits=16,
                                             decimal_places=2,
                                             null=True)
    best_match_bonus_xp = fields.DecimalField(max_digits=16,
                                              decimal_places=2,
                                              null=True)
    best_match_xp = fields.DecimalField(max_digits=16,
                                        decimal_places=2,
                                        null=True)
    best_s_guard_weapon_level = fields.DecimalField(max_digits=16,
                                                    decimal_places=2,
                                                    null=True)
    best_kd = fields.DecimalField(max_digits=16, decimal_places=2, null=True)
    kills = fields.DecimalField(max_digits=16, decimal_places=2, null=True)
    best_kills_as_infected = fields.DecimalField(max_digits=16,
                                                 decimal_places=2,
                                                 null=True)
    best_returns = fields.DecimalField(max_digits=16,
                                       decimal_places=2,
                                       null=True)
    best_stabs = fields.DecimalField(max_digits=16,
                                     decimal_places=2,
                                     null=True)
    best_kills_as_survivor = fields.DecimalField(max_digits=16,
                                                 decimal_places=2,
                                                 null=True)
    time_played_total = fields.DecimalField(max_digits=16,
                                            decimal_places=2,
                                            null=True)
    best_destructions = fields.DecimalField(max_digits=16,
                                            decimal_places=2,
                                            null=True)
    headshots = fields.DecimalField(max_digits=16, decimal_places=2, null=True)
    best_rescues = fields.DecimalField(max_digits=16,
                                       decimal_places=2,
                                       null=True)
    assists = fields.DecimalField(max_digits=16, decimal_places=2, null=True)
    ties = fields.DecimalField(max_digits=16, decimal_places=2, null=True)
    record_killstreak = fields.DecimalField(max_digits=16,
                                            decimal_places=2,
                                            null=True)
    best_plants = fields.DecimalField(max_digits=16,
                                      decimal_places=2,
                                      null=True)
    misses = fields.DecimalField(max_digits=16, decimal_places=2, null=True)
    best_damage = fields.DecimalField(max_digits=16,
                                      decimal_places=2,
                                      null=True)
    best_setbacks = fields.DecimalField(max_digits=16,
                                        decimal_places=2,
                                        null=True)
    best_touchdowns = fields.DecimalField(max_digits=16,
                                          decimal_places=2,
                                          null=True)
    score_per_minute = fields.DecimalField(max_digits=16,
                                           decimal_places=2,
                                           null=True)
    best_deaths = fields.DecimalField(max_digits=16,
                                      decimal_places=2,
                                      null=True)
    best_medal_xp = fields.DecimalField(max_digits=16,
                                        decimal_places=2,
                                        null=True)
    best_defends = fields.DecimalField(max_digits=16,
                                       decimal_places=2,
                                       null=True)
    best_squad_revives = fields.DecimalField(max_digits=16,
                                             decimal_places=2,
                                             null=True)
    best_kills = fields.DecimalField(max_digits=16,
                                     decimal_places=2,
                                     null=True)
    best_defuses = fields.DecimalField(max_digits=16,
                                       decimal_places=2,
                                       null=True)
    best_captures = fields.DecimalField(max_digits=16,
                                        decimal_places=2,
                                        null=True)
    hits = fields.DecimalField(max_digits=16, decimal_places=2, null=True)
    best_kill_streak = fields.DecimalField(max_digits=16,
                                           decimal_places=2,
                                           null=True)
    best_denied = fields.DecimalField(max_digits=16,
                                      decimal_places=2,
                                      null=True)
    time_played = fields.DecimalField(max_digits=16,
                                      decimal_places=2,
                                      null=True)
    time = fields.DecimalField(max_digits=16, decimal_places=2, null=True)
    infected = fields.DecimalField(max_digits=16, decimal_places=2, null=True)
    defuses = fields.DecimalField(max_digits=16, decimal_places=2, null=True)
    plants = fields.DecimalField(max_digits=16, decimal_places=2, null=True)
    defends = fields.DecimalField(max_digits=16, decimal_places=2, null=True)
    top_twenty_five = fields.DecimalField(max_digits=16,
                                          decimal_places=2,
                                          null=True)
    downs = fields.DecimalField(max_digits=16, decimal_places=2, null=True)
    top_ten = fields.DecimalField(max_digits=16, decimal_places=2, null=True)
    contracts = fields.DecimalField(max_digits=16, decimal_places=2, null=True)
    cash = fields.DecimalField(max_digits=16, decimal_places=2, null=True)
    revives = fields.DecimalField(max_digits=16, decimal_places=2, null=True)
    obj_time = fields.DecimalField(max_digits=16, decimal_places=2, null=True)
    set_backs = fields.DecimalField(max_digits=16, decimal_places=2, null=True)
    shots = fields.DecimalField(max_digits=16, decimal_places=2, null=True)
    uses = fields.DecimalField(max_digits=16, decimal_places=2, null=True)
    awarded_count = fields.DecimalField(max_digits=16,
                                        decimal_places=2,
                                        null=True)
    max_level = fields.DecimalField(max_digits=16, decimal_places=2, null=True)

    def __str__(self) -> str:
        return f"{self.__class__.__name__} {self.id}"