diff --git a/src/paveit/datamodels/material.py b/src/paveit/datamodels/material.py index 900de35..0e32c51 100755 --- a/src/paveit/datamodels/material.py +++ b/src/paveit/datamodels/material.py @@ -12,7 +12,7 @@ from .norm_documents import ( NormDocumentAsphalt, NormDocumentBitumen, ) -from .norm_specification import DeliveryGrain, EnumerateBase +from .norm_specification import DeliveryGrain, EnumerateBase, AdditiveEnum from .project import Project from .usermanagement import Organisation, User @@ -102,7 +102,7 @@ class Aggregate(Material): class Additive(Material): - typ = StringField(required=True) + category = LazyReferenceField(AdditiveEnum, required=True) diff --git a/src/paveit/datamodels/material_properties.py b/src/paveit/datamodels/material_properties.py index 8ec183f..ea6f4f1 100755 --- a/src/paveit/datamodels/material_properties.py +++ b/src/paveit/datamodels/material_properties.py @@ -6,7 +6,7 @@ from paveit.helper import fetch_recursive, mongo_to_dict from enum import Enum -from .material import Material, Additive +from .material import Material, Additive, Bitumen, Aggregate from .usermanagement import Organisation, User from .enumeration import AsphaltCategoryEnum, BitumenCategoryEnum @@ -17,10 +17,12 @@ from .norm_documents import ( ) from .norm_specification import ( AsphaltParameterLimitsBaseEnum, - BitumenParameterLimitsBaseEnum + BitumenParameterLimitsBaseEnum, + AdditiveEnum, + AdditiveSubEnum, + DeliveryGrain ) - class ProcessParameters(Enum): """ Typ der Wert: @@ -41,14 +43,6 @@ class Address(EmbeddedDocument): postal_code = IntField() country = StringField() -class Additive(EmbeddedDocument): - - additive_id = LazyReferenceField(Additive, required=True) - - quantity = IntField() - - - class Propertie(Document): @@ -63,6 +57,7 @@ class Propertie(Document): "step": "60" }}) + def to_dict(self): # convert data to dict data = fetch_recursive(self) @@ -86,10 +81,10 @@ class Propertie(Document): # Additives -class PropertieAdditives(Propertie): +class PropertieAdditive(Propertie): pass -class PropertieAdditivesMeta(PropertieAdditives): +class PropertieAdditiveMeta(PropertieAdditive): name = StringField() productnumber = StringField() @@ -99,7 +94,7 @@ class PropertieAdditivesMeta(PropertieAdditives): address = EmbeddedDocumentField(Address) - #category = LazyReferenceField(BitumenParameterLimitsBaseEnum, required=False) + subcategory = LazyReferenceField(AdditiveSubEnum, required=True) # Aggregates @@ -118,7 +113,7 @@ class PropertieAggregateMeta(PropertieAggregate): mine = StringField() address = EmbeddedDocumentField(Address) - category = LazyReferenceField(BitumenParameterLimitsBaseEnum, required=False) + category = LazyReferenceField(DeliveryGrain, required=False) # Bitumen @@ -151,22 +146,130 @@ class PropertieAsphaltMeta(PropertieAsphalt): certificate_number = StringField() certificate_date = IntField() - mixing_plant = StringField() + mixingplant = StringField() address = EmbeddedDocumentField(Address) category = LazyReferenceField(AsphaltParameterLimitsBaseEnum, required=True) -class PropertieAsphaltBitumenContent(PropertieAsphalt): +class Additive(EmbeddedDocument): - process_parameter = EnumField(ProcessParameters, required=True) # Ist- oder Sollwert + additive_id = LazyReferenceField(Additive, required=True) - quantity_bitumen = IntField() - quantity_additive_bitumen = IntField() - quantity_bitumen_total = IntField() - total_bituem_content = IntField() - elastic_recovery = IntField() - equistiffness_temperature = IntField() - phase_angle = IntField() + A = FloatField() + B = FloatField() + C = FloatField() + min = FloatField() + max = FloatField() +class BitumenInfo(EmbeddedDocument): + added_binder_A = FloatField(required=False) + added_binder_B = FloatField(required=False) + added_binder_C = FloatField(required=False) + added_binder_min = FloatField(required=False) + added_binder_max = FloatField(required=False) + + binder_from_additives_A = FloatField(required=False) + binder_from_additives_B = FloatField(required=False) + binder_from_additives_C = FloatField(required=False) + binder_from_additives_min = FloatField(required=False) + binder_from_additives_max = FloatField(required=False) + + total_binder_A = FloatField(required=False) + total_binder_B = FloatField(required=False) + total_binder_C = FloatField(required=False) + total_binder_min = FloatField(required=False) + total_binder_max = FloatField(required=False) + + total_binder_vol_A = FloatField(required=False) + total_binder_vol_B = FloatField(required=False) + total_binder_vol_C = FloatField(required=False) + total_binder_vol_min = FloatField(required=False) + total_binder_vol_max = FloatField(required=False) + + elastic_recovery_A = FloatField(required=False) + elastic_recovery_B = FloatField(required=False) + elastic_recovery_C = FloatField(required=False) + elastic_recovery_min = FloatField(required=False) + elastic_recovery_max = FloatField(required=False) + + equi_stiffness_A = FloatField(required=False) + equi_stiffness_B = FloatField(required=False) + equi_stiffness_C = FloatField(required=False) + equi_stiffness_min = FloatField(required=False) + equi_stiffness_max = FloatField(required=False) + + phase_angle_A = FloatField(required=False) + phase_angle_B = FloatField(required=False) + phase_angle_C = FloatField(required=False) + phase_angle_min = FloatField(required=False) + phase_angle_max = FloatField(required=False) + +class PropertieAsphaltBitumenParameters(PropertieAsphalt): + + bitumen_id = LazyReferenceField(Bitumen, required=True) + + bitumen = EmbeddedDocumentField(BitumenInfo) additives = ListField(EmbeddedDocumentField(Additive)) + +class AggregateInfo(EmbeddedDocument): + + id = LazyReferenceField(Aggregate, required=False) + size_45x0 = FloatField(required=False) + size_31x5 = FloatField(required=False) + size_22x4 = FloatField(required=False) + size_16x0 = FloatField(required=False) + size_11x2 = FloatField(required=False) + size_8x0 = FloatField(required=False) + size_5x6 = FloatField(required=False) + size_2x0 = FloatField(required=False) + size_1x0 = FloatField(required=False) + size_0x25 = FloatField(required=False) + size_0x125 = FloatField(required=False) + size_0x063 = FloatField(required=False) + size_less_0x063 = FloatField(required=False) + oversize = FloatField(required=False) + normal_grain = FloatField(required=False) + bulk_density = FloatField(required=False) + flow_coefficient = FloatField(required=False) + aggregates_bulk_density = FloatField(required=False) + +class PropertieAsphaltAggregates(PropertieAsphalt): + aggregates = ListField(EmbeddedDocumentField(AggregateInfo), required=True) +class MineralMixtureInfo(EmbeddedDocument): + + size_45x0 = FloatField(required=False) + size_31x5 = FloatField(required=False) + size_22x4 = FloatField(required=False) + size_16x0 = FloatField(required=False) + size_11x2 = FloatField(required=False) + size_8x0 = FloatField(required=False) + size_5x6 = FloatField(required=False) + size_2x0 = FloatField(required=False) + size_1x0 = FloatField(required=False) + size_0x25 = FloatField(required=False) + size_0x125 = FloatField(required=False) + size_0x063 = FloatField(required=False) + size_less_0x063 = FloatField(required=False) + +class PropertieAsphaltMineralMixture(PropertieAsphalt): + trailing = EmbeddedDocumentField(MineralMixtureInfo, required=False) + passage = EmbeddedDocumentField(MineralMixtureInfo, required=False) + +class PropertyMetrics(EmbeddedDocument): + A = FloatField(required=False) + B = FloatField(required=False) + C = FloatField(required=False) + min = FloatField(required=False) + max = FloatField(required=False) + +class PropertiesAsphaltMixingParameters(PropertieAsphalt): + bulk_density = EmbeddedDocumentField(PropertyMetrics) + asphalt_density = EmbeddedDocumentField(PropertyMetrics) + marshall_density = EmbeddedDocumentField(PropertyMetrics) + cavity_content = EmbeddedDocumentField(PropertyMetrics) + cavity_filling_level = EmbeddedDocumentField(PropertyMetrics) + marshall_compression_temperature = EmbeddedDocumentField(PropertyMetrics) + expired_binder_quantity = EmbeddedDocumentField(PropertyMetrics) + water_sensitivity_ITSR = EmbeddedDocumentField(PropertyMetrics) + swelling_DIN1996 = EmbeddedDocumentField(PropertyMetrics) \ No newline at end of file diff --git a/src/paveit/datamodels/norm_specification.py b/src/paveit/datamodels/norm_specification.py index 7db6c7c..4fe1f9b 100644 --- a/src/paveit/datamodels/norm_specification.py +++ b/src/paveit/datamodels/norm_specification.py @@ -29,6 +29,10 @@ class EnumerateBase(Document): class AdditiveEnum(EnumerateBase): name = StringField() +class AdditiveSubEnum(EnumerateBase): + categoryId = LazyReferenceField(AdditiveEnum, required=True) + name = StringField() + # Gesteine class DeliveryGrain(EnumerateBase): name = StringField()