93 lines
2.7 KiB
Python
Executable File
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 |