change Datamodels
This commit is contained in:
41
src/paveit/datamodels/client.py
Normal file → Executable file
41
src/paveit/datamodels/client.py
Normal file → Executable 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
22
src/paveit/datamodels/enumeration.py
Normal file → Executable 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
0
src/paveit/datamodels/infrastructure.py
Normal file → Executable file
0
src/paveit/datamodels/metrics.py
Normal file → Executable file
0
src/paveit/datamodels/metrics.py
Normal file → Executable 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)],
|
||||
]
|
||||
}
|
||||
|
||||
@@ -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
3
src/paveit/datamodels/taskmanager.py
Normal file → Executable 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": {
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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'
|
||||
]
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user