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 *
import datetime
from .usermanagement import Organisation, User
class Client(Document):
date = DateTimeField(default=datetime.datetime.now,
wtf_options={"render_kw": {
"step": "60"
}})
org_id = LazyReferenceField(Organisation, required=True)
user_id = LazyReferenceField(User,
required=True,
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',
}

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

@@ -3,4 +3,24 @@ from enum import Enum
class LabtestsEnum(Enum):
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 .usermanagement import Organisation, User
from .enumeration import ProcessStatusEnum
class Project(Document):
project_id = StringField(required=True)
project_number = StringField(required=False)
client = LazyReferenceField(Client,
client_id = LazyReferenceField(Client,
required=True,
reverse_delete_rule=CASCADE)
@@ -18,21 +19,23 @@ class Project(Document):
wtf_options={"render_kw": {
"step": "60"
}})
status = EnumField(ProcessStatusEnum, default=ProcessStatusEnum.ONGOING)
org_id = LazyReferenceField(Organisation,
required=True,
reverse_delete_rule=CASCADE)
user_id = LazyReferenceField(User,
required=False,
required=True,
reverse_delete_rule=DO_NOTHING)
name = StringField(required=True)
name_short = StringField(required=False)
tags = ListField(StringField())
meta = {
'allow_inheritance': True,
'index_opts': {},
@@ -43,7 +46,8 @@ class Project(Document):
"db_alias": 'dblabtests',
'indexes': [
[("name_short", 1)],
[("client_id", 1)],
[("name", 1)],
[("project_id", 1)],
[("project_number", 1)],
]
}

View File

@@ -3,6 +3,7 @@ import datetime
from mongoengine import *
from .taskmanager import TaskManagerBase
from .usermanagement import User
class DynamicShearTest(Document):
@@ -13,6 +14,7 @@ class DynamicShearTest(Document):
}})
task_id = LazyReferenceField(TaskManagerBase, required=True)
user_id = LazyReferenceField(User, required=True)
gap_width = FloatField(default=1.0)
@@ -140,28 +142,28 @@ class DynamicShearTestExtension(DynamicShearTest):
s_vert_2_diff_std = FloatField()
s_vert_2_diff_diff_rel = FloatField()
## S-Sum
s_vert_sum_amp = FloatField()
s_vert_sum_freq = FloatField()
s_vert_sum_phase = FloatField()
s_vert_sum_offset = FloatField()
s_vert_sum_slope = FloatField()
s_vert_sum_r2 = FloatField()
s_vert_sum_cycle_min = ListField(FloatField())
s_vert_sum_min = FloatField()
s_vert_sum_min_std = FloatField()
s_vert_sum_min_diff_rel = FloatField()
s_vert_sum_cycle_max = ListField(FloatField())
s_vert_sum_max = FloatField()
s_vert_sum_max_std = FloatField()
s_vert_sum_max_diff_rel = FloatField()
s_vert_sum_cycle_mean = ListField(FloatField())
s_vert_sum_mean = FloatField()
s_vert_sum_mean_std = FloatField()
s_vert_sum_mean_diff_rel = FloatField()
s_vert_sum_cycle_diff = ListField(FloatField())
s_vert_sum_diff = FloatField()
s_vert_sum_diff_std = FloatField()
s_vert_sum_diff_diff_rel = FloatField()
s_vert_mean_amp = FloatField()
s_vert_mean_freq = FloatField()
s_vert_mean_phase = FloatField()
s_vert_mean_offset = FloatField()
s_vert_mean_slope = FloatField()
s_vert_mean_r2 = FloatField()
s_vert_mean_cycle_min = ListField(FloatField())
s_vert_mean_min = FloatField()
s_vert_mean_min_std = FloatField()
s_vert_mean_min_diff_rel = FloatField()
s_vert_mean_cycle_max = ListField(FloatField())
s_vert_mean_max = FloatField()
s_vert_mean_max_std = FloatField()
s_vert_mean_max_diff_rel = FloatField()
s_vert_mean_cycle_mean = ListField(FloatField())
s_vert_mean_mean = FloatField()
s_vert_mean_mean_std = FloatField()
s_vert_mean_mean_diff_rel = FloatField()
s_vert_mean_cycle_diff = ListField(FloatField())
s_vert_mean_diff = FloatField()
s_vert_mean_diff_std = FloatField()
s_vert_mean_diff_diff_rel = FloatField()
## optional parameters
## 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 .usermanagement import Organisation, User
from .workpackage import Workpackage
from .enumeration import ProcessStatusEnum
class TaskManagerBase(Document):
@@ -17,7 +18,7 @@ class TaskManagerBase(Document):
project_id = LazyReferenceField(Project, required=True)
wp_id = LazyReferenceField(Workpackage, required=False)
finieshed = BooleanField(default=False)
status = EnumField(ProcessStatusEnum, default=ProcessStatusEnum.ONGOING)
task_added = DateTimeField(default=datetime.datetime.now,
wtf_options={"r ender_kw": {

View File

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

View File

@@ -1,10 +1,10 @@
from .filehandling import read_file_to_bytesio
from .filehasher import calc_hash_of_bytes
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__ = [
'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',
'calc_hash_of_bytes'
]

View File

@@ -1,50 +1,21 @@
from bson import ObjectId
from mongoengine import connect as mongo_connect
from pandas import DataFrame
import os
def connect_mongo_db_labtests(username='admin',
password='admin',
host='mongo',
authentication_source='admin'):
mongo_connect('labtests',
def connect_mongo_db(username=os.environ['MONGO_USER'] ,
password=os.environ['MONGO_PASSWD'] ,
host=os.environ['MONGO_URI'],
dbname=os.environ['MONGO_DB'] ):
c = mongo_connect(dbname,
username=username,
password=password,
host=host,
authentication_source=authentication_source,
authentication_source='admin',
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,
data: DataFrame, filehash: str, org_id: ObjectId,
project_id: ObjectId, material_id: ObjectId,

View File

@@ -88,7 +88,7 @@ class ShearTest(DataSineLoad):
('extension', 6)]
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'
]
@@ -106,6 +106,15 @@ class ShearTest(DataSineLoad):
'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):
@@ -116,7 +125,6 @@ class ShearTestExtension(ShearTest):
def save(
self,
org_id: ObjectId,
user_id: ObjectId,
task_id: ObjectId,
broken: bool,
@@ -136,7 +144,8 @@ class ShearTestExtension(ShearTest):
for idx_fit, fit in self.fit.iterrows():
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['filehash'] = self.filehash
meta['speciment_name'] = self.filename
@@ -303,17 +312,17 @@ class ShearTestExtension(ShearTest):
## Schersteifigkeit berechnen
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
tau = deltaF / A
gamma = deltaS / self.gap_width
tau = deltaF / A #MPa
gamma = deltaS / self.gap_width # mm/mm
res_temp['G'] = tau / gamma
res_temp['G'] = tau / gamma #MPa
# TODO: Überarbeiten und erweitern (ISSUE #2)
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)