change Datamodels

This commit is contained in:
2023-05-17 08:18:55 +02:00
parent 471fa8dabf
commit fbff3734a2
12 changed files with 123 additions and 86 deletions

0
.gitignore vendored Normal file → Executable file
View File

41
src/paveit/datamodels/client.py Normal file → Executable file
View File

@@ -1,15 +1,48 @@
import datetime
from mongoengine import * from mongoengine import *
import datetime
from .usermanagement import Organisation, User from .usermanagement import Organisation, User
class Client(Document): class Client(Document):
date = DateTimeField(default=datetime.datetime.now,
wtf_options={"render_kw": {
"step": "60"
}})
org_id = LazyReferenceField(Organisation, required=True) org_id = LazyReferenceField(Organisation, required=True)
user_id = LazyReferenceField(User, user_id = LazyReferenceField(User,
required=True, required=True,
reverse_delete_rule=DO_NOTHING) reverse_delete_rule=DO_NOTHING)
clientid = StringField(max_length=100) name = StringField(max_length=100)
name_short = StringField(max_length=100)
customer_id = StringField(max_length=100)
address_country = StringField(max_length=100, default='Germany')
address_road = StringField(max_length=100)
address_plz = StringField(max_length=5)
address_city = StringField(max_length=100)
vat_id = StringField(max_length=100) #Umsatzsteuer
billing_country = StringField(max_length=100, default='Germany')
billing_road = StringField(max_length=100)
billing_plz = StringField(max_length=5)
billing_city = StringField(max_length=100)
billing_addition = StringField(max_length=100)
meta = {
'allow_inheritance': True,
'index_opts': {},
'index_background': True,
'index_cls': False,
'auto_create_index': True,
'collection': 'clients',
"db_alias": 'dblabtests',
}

20
src/paveit/datamodels/enumeration.py Normal file → Executable file
View File

@@ -4,3 +4,23 @@ from enum import Enum
class LabtestsEnum(Enum): class LabtestsEnum(Enum):
CITTStiffness = 'CITTStiffness' CITTStiffness = 'CITTStiffness'
SHEARStiffness = 'SheartestStiffness' SHEARStiffness = 'SheartestStiffness'
class ProcessStatusEnum(Enum):
"""Status eines Prozesses wie Projekt, Task
Ongoing: Ein fortlaufender Prozess, der noch nicht abgeschlossen ist.
In progress: Der Prozess ist aktiv und befindet sich in Arbeit.
Stalled: Der Prozess ist ins Stocken geraten oder vorübergehend gestoppt.
Completed: Der Prozess ist abgeschlossen oder beendet.
Pending: Der Prozess steht noch aus oder wurde noch nicht gestartet.
Suspended: Der Prozess wurde vorübergehend oder dauerhaft ausgesetzt.
Initiated: Der Prozess wurde gestartet oder eingeleitet.
Advanced: Der Prozess hat einen hohen Grad an Fortschritt oder Entwicklung erreicht.
Delayed: Der Prozess wurde verzögert und läuft hinter dem Zeitplan zurück.
Finalized: Der Prozess wurde abgeschlossen, und alle Details sind geklärt.
"""
INITIATED='initiated'
ONGOING = 'ongoing'
COMPLETED = 'completed'
ARCHIVE='archive'

0
src/paveit/datamodels/infrastructure.py Normal file → Executable file
View File

0
src/paveit/datamodels/metrics.py Normal file → Executable file
View File

View File

@@ -4,13 +4,14 @@ from mongoengine import *
from .client import Client from .client import Client
from .usermanagement import Organisation, User from .usermanagement import Organisation, User
from .enumeration import ProcessStatusEnum
class Project(Document): class Project(Document):
project_id = StringField(required=True) project_number = StringField(required=False)
client = LazyReferenceField(Client, client_id = LazyReferenceField(Client,
required=True, required=True,
reverse_delete_rule=CASCADE) reverse_delete_rule=CASCADE)
@@ -19,20 +20,22 @@ class Project(Document):
"step": "60" "step": "60"
}}) }})
status = EnumField(ProcessStatusEnum, default=ProcessStatusEnum.ONGOING)
org_id = LazyReferenceField(Organisation, org_id = LazyReferenceField(Organisation,
required=True, required=True,
reverse_delete_rule=CASCADE) reverse_delete_rule=CASCADE)
user_id = LazyReferenceField(User, user_id = LazyReferenceField(User,
required=False, required=True,
reverse_delete_rule=DO_NOTHING) reverse_delete_rule=DO_NOTHING)
name = StringField(required=True) name = StringField(required=True)
name_short = StringField(required=False) name_short = StringField(required=False)
tags = ListField(StringField()) tags = ListField(StringField())
meta = { meta = {
'allow_inheritance': True, 'allow_inheritance': True,
'index_opts': {}, 'index_opts': {},
@@ -43,7 +46,8 @@ class Project(Document):
"db_alias": 'dblabtests', "db_alias": 'dblabtests',
'indexes': [ 'indexes': [
[("name_short", 1)], [("name_short", 1)],
[("client_id", 1)],
[("name", 1)], [("name", 1)],
[("project_id", 1)], [("project_number", 1)],
] ]
} }

View File

@@ -3,6 +3,7 @@ import datetime
from mongoengine import * from mongoengine import *
from .taskmanager import TaskManagerBase from .taskmanager import TaskManagerBase
from .usermanagement import User
class DynamicShearTest(Document): class DynamicShearTest(Document):
@@ -13,6 +14,7 @@ class DynamicShearTest(Document):
}}) }})
task_id = LazyReferenceField(TaskManagerBase, required=True) task_id = LazyReferenceField(TaskManagerBase, required=True)
user_id = LazyReferenceField(User, required=True)
gap_width = FloatField(default=1.0) gap_width = FloatField(default=1.0)
@@ -140,28 +142,28 @@ class DynamicShearTestExtension(DynamicShearTest):
s_vert_2_diff_std = FloatField() s_vert_2_diff_std = FloatField()
s_vert_2_diff_diff_rel = FloatField() s_vert_2_diff_diff_rel = FloatField()
## S-Sum ## S-Sum
s_vert_sum_amp = FloatField() s_vert_mean_amp = FloatField()
s_vert_sum_freq = FloatField() s_vert_mean_freq = FloatField()
s_vert_sum_phase = FloatField() s_vert_mean_phase = FloatField()
s_vert_sum_offset = FloatField() s_vert_mean_offset = FloatField()
s_vert_sum_slope = FloatField() s_vert_mean_slope = FloatField()
s_vert_sum_r2 = FloatField() s_vert_mean_r2 = FloatField()
s_vert_sum_cycle_min = ListField(FloatField()) s_vert_mean_cycle_min = ListField(FloatField())
s_vert_sum_min = FloatField() s_vert_mean_min = FloatField()
s_vert_sum_min_std = FloatField() s_vert_mean_min_std = FloatField()
s_vert_sum_min_diff_rel = FloatField() s_vert_mean_min_diff_rel = FloatField()
s_vert_sum_cycle_max = ListField(FloatField()) s_vert_mean_cycle_max = ListField(FloatField())
s_vert_sum_max = FloatField() s_vert_mean_max = FloatField()
s_vert_sum_max_std = FloatField() s_vert_mean_max_std = FloatField()
s_vert_sum_max_diff_rel = FloatField() s_vert_mean_max_diff_rel = FloatField()
s_vert_sum_cycle_mean = ListField(FloatField()) s_vert_mean_cycle_mean = ListField(FloatField())
s_vert_sum_mean = FloatField() s_vert_mean_mean = FloatField()
s_vert_sum_mean_std = FloatField() s_vert_mean_mean_std = FloatField()
s_vert_sum_mean_diff_rel = FloatField() s_vert_mean_mean_diff_rel = FloatField()
s_vert_sum_cycle_diff = ListField(FloatField()) s_vert_mean_cycle_diff = ListField(FloatField())
s_vert_sum_diff = FloatField() s_vert_mean_diff = FloatField()
s_vert_sum_diff_std = FloatField() s_vert_mean_diff_std = FloatField()
s_vert_sum_diff_diff_rel = FloatField() s_vert_mean_diff_diff_rel = FloatField()
## optional parameters ## optional parameters
## S1 ## S1

3
src/paveit/datamodels/taskmanager.py Normal file → Executable file
View File

@@ -8,6 +8,7 @@ from .material import Material
from .project import Project from .project import Project
from .usermanagement import Organisation, User from .usermanagement import Organisation, User
from .workpackage import Workpackage from .workpackage import Workpackage
from .enumeration import ProcessStatusEnum
class TaskManagerBase(Document): class TaskManagerBase(Document):
@@ -17,7 +18,7 @@ class TaskManagerBase(Document):
project_id = LazyReferenceField(Project, required=True) project_id = LazyReferenceField(Project, required=True)
wp_id = LazyReferenceField(Workpackage, required=False) wp_id = LazyReferenceField(Workpackage, required=False)
finieshed = BooleanField(default=False) status = EnumField(ProcessStatusEnum, default=ProcessStatusEnum.ONGOING)
task_added = DateTimeField(default=datetime.datetime.now, task_added = DateTimeField(default=datetime.datetime.now,
wtf_options={"r ender_kw": { wtf_options={"r ender_kw": {

View File

@@ -16,6 +16,9 @@ class Organisation(Document):
labtest_citt = StringField(required=False) labtest_citt = StringField(required=False)
labtest_shear_extension = StringField(required=False) labtest_shear_extension = StringField(required=False)
domain = StringField(required=True)
meta = { meta = {
'allow_inheritance': True, 'allow_inheritance': True,
'index_opts': {}, 'index_opts': {},
@@ -29,8 +32,6 @@ class Organisation(Document):
class User(Document): class User(Document):
active = BooleanField(required=True, default=True)
org_id = LazyReferenceField(Organisation, org_id = LazyReferenceField(Organisation,
required=True, required=True,
reverse_delete_rule=CASCADE) reverse_delete_rule=CASCADE)
@@ -40,12 +41,8 @@ class User(Document):
"step": "60" "step": "60"
}}) }})
name = StringField(required=False)
email = EmailField(required=True) email = EmailField(required=True)
password = StringField(required=True)
meta = { meta = {
'allow_inheritance': True, 'allow_inheritance': True,
'index_opts': {}, 'index_opts': {},

View File

@@ -1,10 +1,10 @@
from .filehandling import read_file_to_bytesio from .filehandling import read_file_to_bytesio
from .filehasher import calc_hash_of_bytes from .filehasher import calc_hash_of_bytes
from .minio import get_minio_client_archive, get_minio_client_processing from .minio import get_minio_client_archive, get_minio_client_processing
from .mongo import connect_mongo_dbs, mongo_get_results from .mongo import connect_mongo_db, mongo_get_results
__all__ = [ __all__ = [
'read_file_to_bytesio', 'connect_mongo_dbs', 'mongo_get_results', 'read_file_to_bytesio', 'connect_mongo_db', 'mongo_get_results',
'get_minio_client_processing', 'get_minio_client_archive', 'get_minio_client_processing', 'get_minio_client_archive',
'calc_hash_of_bytes' 'calc_hash_of_bytes'
] ]

View File

@@ -1,50 +1,21 @@
from bson import ObjectId from bson import ObjectId
from mongoengine import connect as mongo_connect from mongoengine import connect as mongo_connect
from pandas import DataFrame from pandas import DataFrame
import os
def connect_mongo_db(username=os.environ['MONGO_USER'] ,
password=os.environ['MONGO_PASSWD'] ,
host=os.environ['MONGO_URI'],
dbname=os.environ['MONGO_DB'] ):
def connect_mongo_db_labtests(username='admin', c = mongo_connect(dbname,
password='admin',
host='mongo',
authentication_source='admin'):
mongo_connect('labtests',
username=username, username=username,
password=password, password=password,
host=host, host=host,
authentication_source=authentication_source, authentication_source='admin',
alias='dblabtests') alias='dblabtests')
def connect_mongo_db_usser(username='admin',
password='admin',
host='mongo',
authentication_source='admin'):
mongo_connect('users',
username=username,
password=password,
host=host,
authentication_source=authentication_source,
alias='dbusers')
def connect_mongo_dbs(username='admin',
password='admin',
host='mongo',
authentication_source='admin'):
connect_mongo_db_labtests(username=username,
password=password,
host=host,
authentication_source=authentication_source)
connect_mongo_db_usser(username=username,
password=password,
host=host,
authentication_source=authentication_source)
def mongo_upload_results(resultsmodel, results: DataFrame, datamodel, def mongo_upload_results(resultsmodel, results: DataFrame, datamodel,
data: DataFrame, filehash: str, org_id: ObjectId, data: DataFrame, filehash: str, org_id: ObjectId,
project_id: ObjectId, material_id: ObjectId, project_id: ObjectId, material_id: ObjectId,

View File

@@ -88,7 +88,7 @@ class ShearTest(DataSineLoad):
('extension', 6)] ('extension', 6)]
self.columns_analyse = [ self.columns_analyse = [
'F', 's_vert_sum', 's_vert_1', 's_vert_2', 's_hor_1', 's_hor_2', 'F', 's_vert_mean', 's_vert_1', 's_vert_2', 's_hor_1', 's_hor_2',
's_hor_sum', 's_piston' 's_hor_sum', 's_piston'
] ]
@@ -106,6 +106,15 @@ class ShearTest(DataSineLoad):
's_hor_2': ['LVDT2 Series'], 's_hor_2': ['LVDT2 Series'],
} }
def _post_calc_missiong_values(self):
cols = self.data.columns
if not 's_vert_mean' in cols:
if ('s_vert_1' in self.data.columns) & ('s_vert_2'
in self.data.columns):
self.data['s_vert_mean'] = self.data[['s_vert_1',
's_vert_2']].mean(axis=1)
class ShearTestExtension(ShearTest): class ShearTestExtension(ShearTest):
@@ -116,7 +125,6 @@ class ShearTestExtension(ShearTest):
def save( def save(
self, self,
org_id: ObjectId,
user_id: ObjectId, user_id: ObjectId,
task_id: ObjectId, task_id: ObjectId,
broken: bool, broken: bool,
@@ -136,7 +144,8 @@ class ShearTestExtension(ShearTest):
for idx_fit, fit in self.fit.iterrows(): for idx_fit, fit in self.fit.iterrows():
data = self.data[idx_fit] data = self.data[idx_fit]
meta['task_id'] = org_id meta['task_id'] = task_id
meta['user_id'] = user_id
meta['gap_width'] = gap_width meta['gap_width'] = gap_width
meta['filehash'] = self.filehash meta['filehash'] = self.filehash
meta['speciment_name'] = self.filename meta['speciment_name'] = self.filename
@@ -303,17 +312,17 @@ class ShearTestExtension(ShearTest):
## Schersteifigkeit berechnen ## Schersteifigkeit berechnen
deltaF = res_temp['fit_F_amp'] deltaF = res_temp['fit_F_amp']
deltaS = res_temp['fit_s_vert_sum_amp'] deltaS = res_temp['fit_s_vert_mean_amp']
A = np.pi * self.metadata['speciment_diameter']**2 / 4 A = np.pi * self.metadata['speciment_diameter']**2 / 4
tau = deltaF / A tau = deltaF / A #MPa
gamma = deltaS / self.gap_width gamma = deltaS / self.gap_width # mm/mm
res_temp['G'] = tau / gamma res_temp['G'] = tau / gamma #MPa
# TODO: Überarbeiten und erweitern (ISSUE #2) # TODO: Überarbeiten und erweitern (ISSUE #2)
res_temp['phase'] = res_temp['fit_F_phase'] - res_temp[ res_temp['phase'] = res_temp['fit_F_phase'] - res_temp[
'fit_s_vert_sum_phase'] 'fit_s_vert_mean_phase']
self.fit.append(res_temp) self.fit.append(res_temp)