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