From b30286387de0416035caf247f9e02ad49c2870b9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Markus=20Clau=C3=9F?= Date: Fri, 26 May 2023 08:26:00 +0200 Subject: [PATCH] add machine and calibration data --- src/paveit/datamodels/__init__.py | 3 + src/paveit/datamodels/calibration.py | 91 ++++++++++++++++++++++++++++ src/paveit/datamodels/components.py | 66 ++++++++++++++++++++ src/paveit/datamodels/enumeration.py | 70 +++++++++++++++++++-- src/paveit/datamodels/machines.py | 73 ++++++++++++++++++++++ src/paveit/datamodels/material.py | 54 ++++++----------- src/paveit/helper/mongo.py | 2 +- 7 files changed, 319 insertions(+), 40 deletions(-) create mode 100644 src/paveit/datamodels/calibration.py create mode 100755 src/paveit/datamodels/components.py create mode 100755 src/paveit/datamodels/machines.py diff --git a/src/paveit/datamodels/__init__.py b/src/paveit/datamodels/__init__.py index 7b50fe0..efeb6a7 100755 --- a/src/paveit/datamodels/__init__.py +++ b/src/paveit/datamodels/__init__.py @@ -1,7 +1,10 @@ +from .calibration import * from .citt import * +from .components import * from .data import * from .enumeration import * from .infrastructure import * +from .machines import * from .material import * from .metrics import * from .norm_documents import * diff --git a/src/paveit/datamodels/calibration.py b/src/paveit/datamodels/calibration.py new file mode 100644 index 0000000..487cd24 --- /dev/null +++ b/src/paveit/datamodels/calibration.py @@ -0,0 +1,91 @@ +import datetime + +from mongoengine import * + +from paveit.datamodels.components import Components +from paveit.helper import fetch_recursive, mongo_to_dict + +from .usermanagement import Organisation + + +class Calibrarion(Document): + """ Durchführung von Kalibrierungen der Prüfmittel, externer Dienst """ + + company = StringField(required=True) + name = StringField(required=True) + + department = StringField(required=False) + room = StringField(required=False) + serialnumber = StringField(required=False) + + extrainfo = StringField(required=False) + + component = LazyReferenceField(Components, required=True) + + date = DateTimeField(default=datetime.datetime.now, + wtf_options={"render_kw": { + "step": "60" + }}) + + org_id = LazyReferenceField(Organisation, + required=True, + reverse_delete_rule=CASCADE) + + tags = ListField(StringField()) + + 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': 'calibration', + "db_alias": 'dblabtests', + 'indexes': [ + [("name", 1)], + ] + } + +##################### +class Monitoring(Document): + """ Eigenüberwachung der Prüfmittel, interne Durchführung """ + + date = DateTimeField(default=datetime.datetime.now, + wtf_options={"render_kw": { + "step": "60" + }}) + + component = LazyReferenceField(Components, required=True) + + org_id = LazyReferenceField(Organisation, + required=True, + reverse_delete_rule=CASCADE) + + tags = ListField(StringField()) + + 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': 'calibration', + "db_alias": 'dblabtests', + 'indexes': [ + [("name", 1)], + ] + } \ No newline at end of file diff --git a/src/paveit/datamodels/components.py b/src/paveit/datamodels/components.py new file mode 100755 index 0000000..7b704c7 --- /dev/null +++ b/src/paveit/datamodels/components.py @@ -0,0 +1,66 @@ +import datetime + +from mongoengine import * + +from paveit.helper import fetch_recursive, mongo_to_dict + +from .usermanagement import Organisation + + +class Components(Document): + + company = StringField(required=True) + name = StringField(required=True) + + department = StringField(required=False) + room = StringField(required=False) + + serialnumber = StringField(required=True) # Seriennummer + internalnumber = StringField(required=False) # Interne Bezeichnung + + extrainfo = StringField(required=False) + + date = DateTimeField(default=datetime.datetime.now, + wtf_options={"render_kw": { + "step": "60" + }}) + + org_id = LazyReferenceField(Organisation, + required=True, + reverse_delete_rule=CASCADE) + + tags = ListField(StringField()) + + 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': 'components', + "db_alias": 'dblabtests', + 'indexes': [ + [("name", 1)], + ] + } + +# Servohydraulik +class ComponentsServoHydraulicMachineTemperatureControl(Components): + """ Kraftmessdosen """ + pass + +class ComponentsServoHydraulicMachineKMD(Components): + """ Kraftmessdosen """ + pass + +class ComponentsServoHydraulicMachineLVDT(Components): + """ Wegaufnehmer """ + pass + diff --git a/src/paveit/datamodels/enumeration.py b/src/paveit/datamodels/enumeration.py index 0119878..da7c438 100755 --- a/src/paveit/datamodels/enumeration.py +++ b/src/paveit/datamodels/enumeration.py @@ -1,11 +1,11 @@ +import datetime from enum import Enum +from mongoengine import * + +from .usermanagement import Organisation + -class LabtestsEnum(Enum): - CITTStiffness = 'CITTStiffness' - SHEARStiffness = 'SheartestStiffness' - - class ProcessStatusEnum(Enum): """Status eines Prozesses wie Projekt, Task @@ -37,3 +37,63 @@ class BitumenCategoryEnum(Enum): class AsphaltCategoryEnum(Enum): ATS = "Asphalttragschichtmischgut" + + +class LabtestsEnum(Enum): + # Performance + CITTStiffness = 'CITTStiffness' + SHEARStiffness = 'SheartestStiffness' + +class Config(Document): + + date = DateTimeField(default=datetime.datetime.now, + wtf_options={"render_kw": { + "step": "60" + }}) + + tags = ListField(StringField()) + + 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': 'enumeration', + "db_alias": 'dblabtests', + 'indexes': [ + [("material", 1)], + [("name", 1)], + ] + } + + +class Labtest(Config): + """ Speicherung der Zuordnung zwischen Firma und Labortest. Die hier + definierten Tests können die Kunden verwenden. Somit muss erstmal jeder + Einzeltest für jeden Kunden neu angelegt werden, jedoch ermöglicht dies auch + 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) + + enabled = BooleanField(required=True, default=False) + +class LabtestPerformAsphalt(Labtest): + """ Performanceprüfung Asphalt """ + pass + +class LabtestPerformBitumen(Labtest): + """ Performanceprüfung Bitumen """ + pass \ No newline at end of file diff --git a/src/paveit/datamodels/machines.py b/src/paveit/datamodels/machines.py new file mode 100755 index 0000000..7eaaf4a --- /dev/null +++ b/src/paveit/datamodels/machines.py @@ -0,0 +1,73 @@ +import datetime + +from mongoengine import * + +from paveit.datamodels import ( + ComponentsServoHydraulicMachineKMD, + ComponentsServoHydraulicMachineLVDT, + ComponentsServoHydraulicMachineTemperatureControl, + Labtest, +) +from paveit.helper import fetch_recursive, mongo_to_dict + +from .usermanagement import Organisation + + +# ??? Labtest: Ist das richtig hier? +class Experiment(EmbeddedDocument): + test = LazyReferenceField(Labtest, required=True) + config = ListField(StringField(), required=True) + + +class Machine(Document): + + company = StringField(required=True) + name = StringField(required=True) + + department = StringField(required=False) + room = StringField(required=False) + + serialnumber = StringField(required=True) + + extrainfo = StringField(required=False) + + tests = ListField(EmbeddedDocumentField(Experiment), required=True) + + # Standartkomponenten festlegen: wenn ortsveränderlich, dann leer lassen + component_temperature = LazyReferenceField(ComponentsServoHydraulicMachineTemperatureControl, required=True) + component_kmd = LazyReferenceField(ComponentsServoHydraulicMachineKMD, required=False) + component_lvdt = ListField(LazyReferenceField(ComponentsServoHydraulicMachineLVDT), required=False) + + date = DateTimeField(default=datetime.datetime.now, + wtf_options={"render_kw": { + "step": "60" + }}) + + org_id = LazyReferenceField(Organisation, + required=True, + reverse_delete_rule=CASCADE) + + tags = ListField(StringField()) + + 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': 'machines', + "db_alias": 'dblabtests', + 'indexes': [ + [("name", 1)], + ] + } + +class ServoHydraulicMachine(Machine): + pass diff --git a/src/paveit/datamodels/material.py b/src/paveit/datamodels/material.py index 839ca86..2ed94e8 100755 --- a/src/paveit/datamodels/material.py +++ b/src/paveit/datamodels/material.py @@ -18,6 +18,10 @@ 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": { @@ -63,66 +67,48 @@ class Material(Document): class Asphalt(Material): - name = StringField() - producer = StringField() - batch_number = StringField() - norm = LazyReferenceField(NormDocumentAsphalt, required=True) - limits = LazyReferenceField(EnumerateBase) + ce_marking = StringField(required=False) #CE Kennzeichen # 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) - + ce_marking = StringField(required=False) #CE Kennzeichen - - class Bitumenemulsion(Material): + norm = StringField(required=False, default='TP Asphalt Teil 24') - - name = StringField() - material = StringField() - - young_modulus = DictField() + limits = LazyReferenceField(EnumerateBase) + ce_marking = StringField(required=False) #CE Kennzeichen class Epoxy(Material): - norm = StringField(required=False, default='TP Asphalt Teil 24') - name = StringField() - - material = StringField() - young_modulus = DictField() + 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): 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, + limits = LazyReferenceField(DeliveryGrain, required=True, reverse_delete_rule=CASCADE) #Lieferkörnung + + ce_marking = StringField(required=False) #CE Kennzeichen + + diff --git a/src/paveit/helper/mongo.py b/src/paveit/helper/mongo.py index 3e0f0a0..6f461b3 100755 --- a/src/paveit/helper/mongo.py +++ b/src/paveit/helper/mongo.py @@ -70,7 +70,7 @@ def mongo_get_results(resultsmodel, results: DataFrame, datamodel, return True -def fetch_recursive(data, fetch_parameter=['norm']): +def fetch_recursive(data, fetch_parameter=['norm', 'limits']): fields = data._fields