diff --git a/api/core/eea/eea_utils.py b/api/core/eea/eea_utils.py index 3d7be0f8224b3d9da5aa4b75b8668ff8a6d19fdc..5d66c7d227c878fb02d0783ebb4dae376ece1911 100644 --- a/api/core/eea/eea_utils.py +++ b/api/core/eea/eea_utils.py @@ -6,4 +6,7 @@ class EeaUtils: @staticmethod def local_datetime(): now = datetime.now(tz=tzlocal()) # current date and time - return now.strftime("%Y-%m-%dT%H:%M:%S%z") + now_str = now.strftime("%Y-%m-%dT%H:%M:%S%z") + # Correction needed because "%z" gives you timezone offset without colon. + now_str_corr = "{0}:{1}".format(now_str[:-2], now_str[-2:]) + return now_str_corr diff --git a/api/core/eea/exceedance_description.py b/api/core/eea/exceedance_description.py index e7cb6ce71af74d97db23b61c2ab70740f684c880..1d1fc5725b0672cbed8aafa95a4f8d0c6a6bd659 100644 --- a/api/core/eea/exceedance_description.py +++ b/api/core/eea/exceedance_description.py @@ -37,7 +37,7 @@ class Exceedancedescription: # Exceedances (ET.SubElement(exceedanceDescription_subelm, "{" + Namespaces.aqd + "}exceedance")).text = str(self.exceedances).lower() - (ET.SubElement(exceedanceDescription_subelm, "{" + Namespaces.aqd + "}" + self.excedance_type)).text = str(self.max_value) + (ET.SubElement(exceedanceDescription_subelm, "{" + Namespaces.aqd + "}" + self.excedance_type)).text = str(int(self.max_value)) if self.excedance_type == 'numberExceedances' else str(self.max_value) if self.exceedancedescription_element == "Adjustment": deductionAssessmentMethod_elm = ET.SubElement(exceedanceDescription_subelm, "{" + Namespaces.aqd + "}deductionAssessmentMethod") diff --git a/api/endpoints/management/assessmentregimes/models.py b/api/endpoints/management/assessmentregimes/models.py index 7680bbf5754fae5a93ee9f4dc1a8f7db8ac06c9b..1e2e3d22d0eb64a376948fb05528dbdb4cff13ca 100644 --- a/api/endpoints/management/assessmentregimes/models.py +++ b/api/endpoints/management/assessmentregimes/models.py @@ -1,5 +1,6 @@ from pydantic import BaseModel from typing import List +from typing import Optional class AssessmentRegimeDataModel(BaseModel): @@ -21,7 +22,7 @@ class AssessmentRegimeModel(BaseModel): include: bool year: int report: str - zone_id: str + zone_id: Optional[str] = None pollutant_id: str exceedance_id: str data: List[AssessmentRegimeDataModel] diff --git a/api/endpoints/version/routes.py b/api/endpoints/version/routes.py index cfbce6b546f19b24495e979a72f3890c6d988e7a..4a55dd64f9a481a9390667375e7d3197d86606d7 100644 --- a/api/endpoints/version/routes.py +++ b/api/endpoints/version/routes.py @@ -3,7 +3,7 @@ from flask_jwt_extended import create_access_token import requests version_endpoint = Blueprint('version', __name__) -current_version = "3.0.11" +current_version = "3.0.15" @version_endpoint.route('/api/version', methods=['GET']) diff --git a/api/requirements.txt b/api/requirements.txt index 91b02277ed9acde72d22077b671adb448f526e9b..03d501098ac8b070033a21aa48af7247f0e0f2d5 100644 --- a/api/requirements.txt +++ b/api/requirements.txt @@ -14,3 +14,4 @@ python-simplexml==0.1.5 pandas==1.5.2 pytz==2022.6 requests==2.31.0 +Werkzeug==2.3.6 diff --git a/client/src/views/management/assessmentregimes/Crud.vue b/client/src/views/management/assessmentregimes/Crud.vue index b50214e8fc8aab8c9f7446cf80e97f8271d1f9ec..77d2ffe799c40df22c8f592930755e1f6ddcfe9e 100644 --- a/client/src/views/management/assessmentregimes/Crud.vue +++ b/client/src/views/management/assessmentregimes/Crud.vue @@ -86,6 +86,7 @@ const onDataClick = () => {}; <div v-else-if="p.type == 'lookup'"> <div class="font-bold">{{ p.label }}:</div> <n-select v-model="obj[p.prop_id]" class="!w-[40rem]" @change="onPollutantChange"> + <n-option v-if="p.prop_id == 'zone_id'" value="" label="No zone" /> <n-option v-for="p in options.lookups[p.lookup]" :key="p.value" :value="p.value" :label="p.label" /> </n-select> </div> diff --git a/client/src/views/management/exceedances/pageOptions.js b/client/src/views/management/exceedances/pageOptions.js index dd9c473d3dd7b57d69df3b9724ad044f7d6855c6..b4d0755a5ab675d6e8ec597ca2ea9b8a5ddb2481 100644 --- a/client/src/views/management/exceedances/pageOptions.js +++ b/client/src/views/management/exceedances/pageOptions.js @@ -11,7 +11,7 @@ const pageOptions = (lookups) => ({ { type: "lookup", label: "Adjustment type", prop_id: "adjustment_type_id", prop: "adjustment_type", required: true, lookup: "adjustment_types", default: null, enableInEdit: true, showInGrid: true }, { type: "lookup", label: "Reason", prop_id: "reason_id", prop: "reason", required: true, lookup: "reasons", default: null, enableInEdit: true, showInGrid: true }, - { type: "number", label: "Value", prop: "exceedance_value", placeholder: "float: The highest exceedance", required: true, default: null, enableInEdit: true, showInGrid: true }, + { type: "number", label: "Value", prop: "exceedance_value", placeholder: "int if type numberExceednace else float", required: true, default: null, enableInEdit: true, showInGrid: true }, { type: "checkbox", label: "Has exceedance", prop: "has_exceedance", required: true, default: false, enableInEdit: true, showInGrid: true },