146 lines
3.7 KiB
Python
Executable File
146 lines
3.7 KiB
Python
Executable File
import datetime
|
|
from re import T
|
|
|
|
from bson.json_util import loads
|
|
from mongoengine import *
|
|
|
|
from .enumeration import BitumenCategoryEnum
|
|
from .norm_specification import DeliveryGrain, EnumerateBase
|
|
from .norm_documents import NormDocumentAggregate, NormDocumentBitumen, NormDocumentAsphalt
|
|
|
|
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)
|
|
|
|
project_id = ListField(LazyReferenceField(Project,
|
|
required=False,
|
|
reverse_delete_rule=CASCADE),
|
|
required=False)
|
|
|
|
user_id = LazyReferenceField(User,
|
|
required=False,
|
|
reverse_delete_rule=DO_NOTHING)
|
|
|
|
tags = ListField(StringField())
|
|
|
|
def to_dict(self):
|
|
# convert data to dict
|
|
data = self.to_mongo().to_dict()
|
|
|
|
# Laden und hinzufügen der referenzierten Daten
|
|
try:
|
|
data['parameter'] = self.parameter.to_mongo().to_dict()
|
|
except:
|
|
pass
|
|
|
|
try:
|
|
norm = self.norm.fetch() # Trigger the dereferencing
|
|
data['norm'] = norm.to_mongo().to_dict()
|
|
except:
|
|
raise
|
|
|
|
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", 1)],
|
|
[("name", 1)],
|
|
]
|
|
}
|
|
|
|
|
|
class Asphalt(Material):
|
|
norm = LazyReferenceField(NormDocumentAsphalt, required=True)
|
|
|
|
name = StringField()
|
|
material = StringField()
|
|
bitumen = StringField(required=False)
|
|
|
|
young_modulus = DictField()
|
|
fatigue = DictField()
|
|
|
|
# Bitumen
|
|
class Bitumen(Material):
|
|
|
|
name = StringField()
|
|
producer = StringField()
|
|
batch_number = StringField()
|
|
|
|
category = EnumField(BitumenCategoryEnum, required=True)
|
|
norm = LazyReferenceField(NormDocumentBitumen, required=True)
|
|
|
|
parameter = ReferenceField(Material)
|
|
limits = LazyReferenceField(EnumerateBase)
|
|
|
|
|
|
|
|
|
|
|
|
class Bitumenemulsion(Material):
|
|
norm = StringField(required=False, default='TP Asphalt Teil 24')
|
|
|
|
name = StringField()
|
|
material = StringField()
|
|
|
|
young_modulus = DictField()
|
|
|
|
|
|
class Epoxy(Material):
|
|
norm = StringField(required=False, default='TP Asphalt Teil 24')
|
|
name = StringField()
|
|
|
|
material = StringField()
|
|
|
|
young_modulus = DictField()
|
|
|
|
|
|
class Kompaktasphalt(Material):
|
|
norm = StringField(required=False, default='TP Asphalt Teil 24')
|
|
name = StringField()
|
|
|
|
class Aggregate(Material):
|
|
|
|
norm = LazyReferenceField(NormDocumentAggregate, required=True)
|
|
|
|
name = StringField(required=True)
|
|
producer = StringField(required=True)
|
|
supply_source = StringField(required=True) #Bezugsquelle
|
|
batch_number = StringField()
|
|
ce_marking = StringField(required=True) #CE Kennzeichen
|
|
|
|
delivery_grain = LazyReferenceField(DeliveryGrain,
|
|
required=True,
|
|
reverse_delete_rule=CASCADE) #Lieferkörnung
|
|
|
|
|
|
|
|
|
|
|
|
class Dummy(Material):
|
|
|
|
name = StringField()
|
|
material = StringField()
|
|
|
|
young_modulus = DictField()
|