Source code for models
from datetime import time
from enum import Enum
from dirty_models.fields import IntegerField, StringField, FloatField, StringIdField, BooleanField, TimeField, \
DateField, DateTimeField, TimedeltaField, HashMapField, ModelField, ArrayField, MultiTypeField, BlobField, EnumField
from dirty_models.models import BaseModel
from pytz import timezone
[docs]class TestEnum(Enum):
"""
Test enumeration
"""
#: Value 1
value_1 = 1
#: Value 2
value_2 = 2
[docs]class SimpleModel(BaseModel):
"""
Model with simple type fields
"""
[docs] class InnerTestEnum(Enum):
"""
Inner enumeration
"""
#: Value 1
value_1 = 1
#: Value 2
value_2 = 2
integer_field = IntegerField(read_only=True)
"""
Documented integer field
"""
float_field = FloatField(doc="Inner documented float field")
#: Prefix documented boolean field
bool_field = BooleanField()
string_field = StringField(default="default value")
string_id_field = StringIdField()
time_field = TimeField(parse_format="%H:%M:%S", default_timezone=timezone('Europe/Paris'))
date_field = DateField(parse_format={'parser': '%d/%m/%y'})
datetime_field = DateTimeField(parse_format={'parser': '"%d/%m/%y %H:%M:%S"',
'formatter': '%d/%m/%y %H:%M:%S'},
default_timezone=timezone('Europe/London'),
force_timezone=True)
timedelta_field = TimedeltaField()
blob_field = BlobField()
enum_field = EnumField(enum_class=TestEnum, default=TestEnum.value_2)
inner_enum_field = EnumField(enum_class=InnerTestEnum, default=TestEnum.value_1)
[docs]class ComposedModel(SimpleModel):
"""
Model with composed fields
"""
hashmap_int_field = HashMapField(field_type=IntegerField())
hashmap_str_field = HashMapField(field_type=StringField())
model_field = ModelField(model_class=SimpleModel)
array_int_field = ArrayField(field_type=IntegerField())
array_str_field = ArrayField(field_type=StringField())
multitype_field = MultiTypeField(field_types=[IntegerField(),
StringField()])
[docs]def hour_to_time(hour):
"""
Create time with hour.
:param hour: Hour
:type hour: int
:rtype: datetime.time
"""
return time(hour=hour, minute=0, second=0)
[docs]class AliasModel(BaseModel):
"""
Model alias fields
"""
CONSTANT_1 = 'constant1'
"""
Documented constant 1
"""
CONSTANT_2 = 'constant2'
"""
Documented constant 2
"""
_default_data = {'int_field': 3,
'boolean_field': False}
integer_field = IntegerField(name='int_field', alias=['number_field', 'scalar_field'])
string_field = StringField(alias=['text_field'])
bool_field = BooleanField(name='boolean_field')
time_field = TimeField(parse_format=hour_to_time)
[docs] def model_method(self):
"""
Model method
"""
pass
[docs] @classmethod
def model_class_method(cls):
"""
Model method
"""
pass
[docs]class TreeModel(BaseModel):
"""
Tree model.
"""
[docs] class InnerModel(BaseModel):
"""
Inner model.
"""
inner_int_field = IntegerField()
inner_str_field = StringField()
int_field = IntegerField()
str_field = StringField()