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

93 lines
2.7 KiB
Python
Executable File

import datetime
from bson import ObjectId
from mongoengine import *
from paveit.helper import fetch_recursive, mongo_to_dict
from .components import (
ComponentsServoHydraulicMachineKMD,
ComponentsServoHydraulicMachineLVDT,
ComponentsServoHydraulicMachineTemperatureControl,
)
from .enumeration import Labtest, LabtestsEnum
from .usermanagement import Organisation
# ??? Labtest: Ist das richtig hier?
class Experiment(EmbeddedDocument):
test = LazyReferenceField(Labtest, required=True)
config = ListField(StringField(), required=True)
class MachineBase(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)
year_manufacture = IntField(min=1900, max=2100, 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
def get_config(self, testname: LabtestsEnum):
test_id = Labtest.objects(org_id=self.org_id, test=testname).first()
if not test_id:
return []
test_id = test_id.id
config_array = []
for test in self.tests:
if test.test.id == test_id:
config_array = test.config
return config_array
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(MachineBase):
pass