import datetime from re import T from bson.json_util import loads from mongoengine import * from paveit.helper import fetch_recursive, mongo_to_dict from .enumeration import AsphaltCategoryEnum, BitumenCategoryEnum from .norm_documents import ( NormDocumentAggregate, NormDocumentAsphalt, NormDocumentBitumen, ) from .norm_specification import DeliveryGrain, EnumerateBase, AdditiveEnum from .project import Project from .usermanagement import Organisation, User class Material(Document): date = DateTimeField(default=datetime.datetime.now, wtf_options={"render_kw": { "step": "60" }}) org_id = LazyReferenceField(Organisation, required=True, reverse_delete_rule=CASCADE) user_id = LazyReferenceField(User, required=True, reverse_delete_rule=DO_NOTHING) project_ids = ListField(LazyReferenceField(Project, reverse_delete_rule=CASCADE), required=False) archived = BooleanField(default=False) def to_dict(self): # convert data to dict data = fetch_recursive(self) data = mongo_to_dict(data) return data meta = { 'allow_inheritance': True, 'index_opts': {}, 'index_background': True, 'index_cls': False, 'auto_create_index': True, 'collection': 'materials', "db_alias": 'dblabtests', 'indexes': [ [("material_id", 1)], [("name", 1)], ] } class Asphalt(Material): pass #limits = LazyReferenceField(EnumerateBase) # Bitumen class Bitumen(Material): pass #norm = LazyReferenceField(NormDocumentBitumen, required=True) #limits = LazyReferenceField(EnumerateBase) #ce_marking = StringField(required=False) #CE Kennzeichen class Bitumenemulsion(Material): norm = StringField(required=False, default='TP Asphalt Teil 24') limits = LazyReferenceField(EnumerateBase) ce_marking = StringField(required=False) #CE Kennzeichen class Epoxy(Material): norm = StringField(required=False, default='TP Asphalt Teil 24') limits = LazyReferenceField(EnumerateBase) ce_marking = StringField(required=False) #CE Kennzeichen class Kompaktasphalt(Material): norm = StringField(required=False, default='TP Asphalt Teil 24') name = StringField() ce_marking = StringField(required=False) #CE Kennzeichen class Aggregate(Material): pass class Additive(Material): category = LazyReferenceField(AdditiveEnum, required=True) class Dummy(Material): name = StringField() material = StringField() young_modulus = DictField()