Files
lib-paveit-demo/src/paveit/datamodels/material.py

117 lines
2.9 KiB
Python
Executable File

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()