restructure materials, add additives

This commit is contained in:
2023-09-06 14:50:40 +02:00
parent dd56a016c4
commit 4b263f461a
6 changed files with 211 additions and 38 deletions

View File

@@ -6,6 +6,7 @@ from .enumeration import *
from .labworks import *
from .machines import *
from .material import *
from .material_properties import *
from .messages import *
from .metrics import *
from .norm_documents import *

View File

@@ -5,9 +5,14 @@ from mongoengine import *
from paveit.helper import fetch_recursive, mongo_to_dict
from .usermanagement import Organisation
class ModelSelection(Enum):
"""
Welche Module sind in der App verfügbar
"""
BASE = 'base'
ADVANCED = 'advanced'
class ProcessStatusEnum(Enum):
"""Status eines Prozesses wie Projekt, Task
@@ -46,6 +51,10 @@ class AsphaltCategoryEnum(Enum):
PA = "Offenporiger Asphalt"
ACTD = 'Asphalttragdeckschichtmischgut'
class TaskType(Enum):
SINGLE = "single"
FLOW = "flow"
class LabtestsEnum(Enum):
# Performance
@@ -61,16 +70,11 @@ class Config(Document):
tags = ListField(StringField())
def to_dict(self, enabled=True):
def to_dict(self):
# convert data to dict
data = fetch_recursive(self)
data = mongo_to_dict(data)
if enabled:
if data['enabled']:
return data
else:
return []
return data
meta = {
@@ -95,13 +99,10 @@ class Labtest(Config):
eine Steuerung der verfügbaren Module. Die Versuche werden nachfolgend in
Klasse/Kategorien eingeteil, um eine Trennung in Module zu ermöglichen."""
org_id = LazyReferenceField(Organisation,
required=True,
reverse_delete_rule=CASCADE)
test = EnumField(LabtestsEnum, required=True)
modul = ListField(EnumField(ModelSelection, required=True, default=ModelSelection.BASE))
typ = EnumField(TaskType, required=True, default=TaskType.SINGLE)
test = EnumField(LabtestsEnum, required=True)
enabled = BooleanField(required=True, default=False)
class LabtestPerformAsphalt(Labtest):
""" Performanceprüfung Asphalt """

View File

@@ -19,10 +19,6 @@ from .usermanagement import Organisation, User
class Material(Document):
name = StringField(required=True)
producer = StringField(required=True)
date = DateTimeField(default=datetime.datetime.now,
wtf_options={"render_kw": {
"step": "60"
@@ -32,17 +28,15 @@ class Material(Document):
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,
required=True,
reverse_delete_rule=DO_NOTHING)
tags = ListField(StringField())
project_ids = ListField(LazyReferenceField(Project,
reverse_delete_rule=CASCADE),
required=False)
def to_dict(self):
# convert data to dict
data = fetch_recursive(self)
@@ -67,16 +61,17 @@ class Material(Document):
class Asphalt(Material):
norm = LazyReferenceField(NormDocumentAsphalt, required=True)
limits = LazyReferenceField(EnumerateBase)
ce_marking = StringField(required=False) #CE Kennzeichen
pass
#limits = LazyReferenceField(EnumerateBase)
# Bitumen
class Bitumen(Material):
norm = LazyReferenceField(NormDocumentBitumen, required=True)
limits = LazyReferenceField(EnumerateBase)
ce_marking = StringField(required=False) #CE Kennzeichen
pass
#norm = LazyReferenceField(NormDocumentBitumen, required=True)
#limits = LazyReferenceField(EnumerateBase)
#ce_marking = StringField(required=False) #CE Kennzeichen
class Bitumenemulsion(Material):
@@ -102,13 +97,12 @@ class Kompaktasphalt(Material):
class Aggregate(Material):
norm = LazyReferenceField(NormDocumentAggregate, required=True)
limits = LazyReferenceField(DeliveryGrain, required=True,
reverse_delete_rule=CASCADE) #Lieferkörnung
pass
ce_marking = StringField(required=False) #CE Kennzeichen
class Additive(Material):
typ = StringField(required=True)

View File

@@ -0,0 +1,172 @@
import datetime
from mongoengine import *
from paveit.helper import fetch_recursive, mongo_to_dict
from enum import Enum
from .material import Material, Additive
from .usermanagement import Organisation, User
from .enumeration import AsphaltCategoryEnum, BitumenCategoryEnum
from .norm_documents import (
NormDocumentAggregate,
NormDocumentAsphalt,
NormDocumentBitumen,
)
from .norm_specification import (
AsphaltParameterLimitsBaseEnum,
BitumenParameterLimitsBaseEnum
)
class ProcessParameters(Enum):
"""
Typ der Wert:
NOMINAL: Istwer
SET: Sollwert
"""
NOMINAL = 'nominal'
SET = 'set'
class Address(EmbeddedDocument):
company = StringField()
street = StringField()
number = IntField()
city = StringField()
postal_code = IntField()
country = StringField()
class Additive(EmbeddedDocument):
additive_id = LazyReferenceField(Additive, required=True)
quantity = IntField()
class Propertie(Document):
material_id = LazyReferenceField(Material,
required=True,
reverse_delete_rule=CASCADE)
date = DateTimeField(default=datetime.datetime.now,
wtf_options={"render_kw": {
"step": "60"
}})
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': 'materialproperties',
"db_alias": 'dblabtests',
'indexes': [
[("material", 1)],
[("name", 1)],
]
}
# Additives
class PropertieAdditives(Propertie):
pass
class PropertieAdditivesMeta(PropertieAdditives):
name = StringField()
productnumber = StringField()
certificate_number = StringField()
certificate_date = IntField()
address = EmbeddedDocumentField(Address)
#category = LazyReferenceField(BitumenParameterLimitsBaseEnum, required=False)
# Aggregates
class PropertieAggregate(Propertie):
pass
class PropertieAggregateMeta(PropertieAggregate):
name = StringField()
productnumber = StringField()
certificate_number = StringField()
certificate_date = IntField()
mine = StringField()
address = EmbeddedDocumentField(Address)
category = LazyReferenceField(BitumenParameterLimitsBaseEnum, required=False)
# Bitumen
class PropertieBitumen(Propertie):
pass
class PropertieBitumenMeta(PropertieBitumen):
name = StringField()
productnumber = StringField()
certificate_number = StringField()
certificate_date = IntField()
address = EmbeddedDocumentField(Address)
category = LazyReferenceField(BitumenParameterLimitsBaseEnum, required=True)
# Asphate
class PropertieAsphalt(Propertie):
pass
class PropertieAsphaltMeta(PropertieAsphalt):
name = StringField()
productnumber = StringField()
recipenumber = StringField()
certificate_number = StringField()
certificate_date = IntField()
mixing_plant = StringField()
address = EmbeddedDocumentField(Address)
category = LazyReferenceField(AsphaltParameterLimitsBaseEnum, required=True)
class PropertieAsphaltBitumenContent(PropertieAsphalt):
process_parameter = EnumField(ProcessParameters, required=True) # Ist- oder Sollwert
quantity_bitumen = IntField()
quantity_additive_bitumen = IntField()
quantity_bitumen_total = IntField()
total_bituem_content = IntField()
elastic_recovery = IntField()
equistiffness_temperature = IntField()
phase_angle = IntField()
additives = ListField(EmbeddedDocumentField(Additive))

View File

@@ -25,6 +25,9 @@ class EnumerateBase(Document):
}
# Addidive
class AdditiveEnum(EnumerateBase):
name = StringField()
# Gesteine
class DeliveryGrain(EnumerateBase):

View File

@@ -1,7 +1,7 @@
import datetime
from mongoengine import *
from .enumeration import ModelSelection
class Organisation(Document):
@@ -18,6 +18,8 @@ class Organisation(Document):
domain = StringField(required=True)
modul = EnumField(ModelSelection, required=True, default=ModelSelection.BASE)
meta = {
'allow_inheritance': True,