From c6cf3ab870563b0d9452ac847d87d91c8213f2e0 Mon Sep 17 00:00:00 2001 From: VineetBala-AOT Date: Tue, 6 Jun 2023 15:35:24 -0700 Subject: [PATCH 01/16] updates on engagement publish --- met-api/templates/publish_engagement.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/met-api/templates/publish_engagement.html b/met-api/templates/publish_engagement.html index ac5e504aa..e41503d33 100644 --- a/met-api/templates/publish_engagement.html +++ b/met-api/templates/publish_engagement.html @@ -8,4 +8,4 @@

Thank you for subscribing to our feedback tool.


Thank you,


-

The Team at the Environmental Assessment Office

\ No newline at end of file +

The Team at the Environmental Assessment Office

From a6005d1b85de26c0cf2f69e71b4ef5431d5e41d2 Mon Sep 17 00:00:00 2001 From: VineetBala-AOT Date: Wed, 7 Jun 2023 10:48:18 -0700 Subject: [PATCH 02/16] update email template --- met-api/templates/publish_engagement.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/met-api/templates/publish_engagement.html b/met-api/templates/publish_engagement.html index e41503d33..ac5e504aa 100644 --- a/met-api/templates/publish_engagement.html +++ b/met-api/templates/publish_engagement.html @@ -8,4 +8,4 @@

Thank you for subscribing to our feedback tool.


Thank you,


-

The Team at the Environmental Assessment Office

+

The Team at the Environmental Assessment Office

\ No newline at end of file From a9303ec8ee83bb53b85f2c280332dcf44b943057 Mon Sep 17 00:00:00 2001 From: VineetBala-AOT Date: Mon, 12 Jun 2023 14:06:00 -0700 Subject: [PATCH 03/16] adding action drop down --- .../components/userManagement/listing/AssignRoleModal.tsx | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/met-web/src/components/userManagement/listing/AssignRoleModal.tsx b/met-web/src/components/userManagement/listing/AssignRoleModal.tsx index 41bf82bbb..6923601c2 100644 --- a/met-web/src/components/userManagement/listing/AssignRoleModal.tsx +++ b/met-web/src/components/userManagement/listing/AssignRoleModal.tsx @@ -1,8 +1,6 @@ -import React, { useContext, useEffect, useRef, useState } from 'react'; +import React, { useContext, useEffect, useState } from 'react'; import Modal from '@mui/material/Modal'; import { - Autocomplete, - CircularProgress, FormControl, FormControlLabel, FormHelperText, @@ -11,14 +9,13 @@ import { Paper, Radio, Stack, - TextField, useTheme, } from '@mui/material'; import { MetHeader3, MetLabel, MetSmallText, modalStyle, PrimaryButton, SecondaryButton } from 'components/common'; import { USER_GROUP } from 'models/user'; import { UserManagementContext } from './UserManagementContext'; import { Palette } from 'styles/Theme'; -import { useForm, FormProvider, SubmitHandler, Controller } from 'react-hook-form'; +import { useForm, FormProvider, SubmitHandler } from 'react-hook-form'; import { yupResolver } from '@hookform/resolvers/yup'; import * as yup from 'yup'; import ControlledRadioGroup from 'components/common/ControlledInputComponents/ControlledRadioGroup'; @@ -63,7 +60,6 @@ export const AssignRoleModal = () => { const { handleSubmit, - control, reset, formState: { errors }, watch, From 82061bd9c8fc16d6035c5b1cd493d3ee1c227318 Mon Sep 17 00:00:00 2001 From: VineetBala-AOT Date: Tue, 13 Jun 2023 09:18:44 -0700 Subject: [PATCH 04/16] updated changes for User Management --- .../components/userManagement/listing/AssignRoleModal.tsx | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/met-web/src/components/userManagement/listing/AssignRoleModal.tsx b/met-web/src/components/userManagement/listing/AssignRoleModal.tsx index 6923601c2..41bf82bbb 100644 --- a/met-web/src/components/userManagement/listing/AssignRoleModal.tsx +++ b/met-web/src/components/userManagement/listing/AssignRoleModal.tsx @@ -1,6 +1,8 @@ -import React, { useContext, useEffect, useState } from 'react'; +import React, { useContext, useEffect, useRef, useState } from 'react'; import Modal from '@mui/material/Modal'; import { + Autocomplete, + CircularProgress, FormControl, FormControlLabel, FormHelperText, @@ -9,13 +11,14 @@ import { Paper, Radio, Stack, + TextField, useTheme, } from '@mui/material'; import { MetHeader3, MetLabel, MetSmallText, modalStyle, PrimaryButton, SecondaryButton } from 'components/common'; import { USER_GROUP } from 'models/user'; import { UserManagementContext } from './UserManagementContext'; import { Palette } from 'styles/Theme'; -import { useForm, FormProvider, SubmitHandler } from 'react-hook-form'; +import { useForm, FormProvider, SubmitHandler, Controller } from 'react-hook-form'; import { yupResolver } from '@hookform/resolvers/yup'; import * as yup from 'yup'; import ControlledRadioGroup from 'components/common/ControlledInputComponents/ControlledRadioGroup'; @@ -60,6 +63,7 @@ export const AssignRoleModal = () => { const { handleSubmit, + control, reset, formState: { errors }, watch, From 84cfd9e94c72299c0dd96f1e4772283b8b3e182c Mon Sep 17 00:00:00 2001 From: VineetBala-AOT Date: Wed, 14 Jun 2023 12:40:10 -0700 Subject: [PATCH 05/16] access user details page for users without a role --- .../components/userManagement/userDetails/AddToEngagement.tsx | 1 + 1 file changed, 1 insertion(+) diff --git a/met-web/src/components/userManagement/userDetails/AddToEngagement.tsx b/met-web/src/components/userManagement/userDetails/AddToEngagement.tsx index 58dbf7041..050a994ae 100644 --- a/met-web/src/components/userManagement/userDetails/AddToEngagement.tsx +++ b/met-web/src/components/userManagement/userDetails/AddToEngagement.tsx @@ -55,6 +55,7 @@ export const AddToEngagementModal = () => { const [engagements, setEngagements] = useState([]); const [engagementsLoading, setEngagementsLoading] = useState(false); const [backendError, setBackendError] = useState(''); + const userHasRole = savedUser?.groups && savedUser?.groups.length > 0; const theme = useTheme(); From 15c868aedeca34f7b56ce49c8c3727907e643f03 Mon Sep 17 00:00:00 2001 From: VineetBala-AOT Date: Wed, 14 Jun 2023 12:47:32 -0700 Subject: [PATCH 06/16] updating variable name --- .../components/userManagement/userDetails/AddToEngagement.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/met-web/src/components/userManagement/userDetails/AddToEngagement.tsx b/met-web/src/components/userManagement/userDetails/AddToEngagement.tsx index 050a994ae..2dae41931 100644 --- a/met-web/src/components/userManagement/userDetails/AddToEngagement.tsx +++ b/met-web/src/components/userManagement/userDetails/AddToEngagement.tsx @@ -55,7 +55,7 @@ export const AddToEngagementModal = () => { const [engagements, setEngagements] = useState([]); const [engagementsLoading, setEngagementsLoading] = useState(false); const [backendError, setBackendError] = useState(''); - const userHasRole = savedUser?.groups && savedUser?.groups.length > 0; + const userHasGroup = savedUser?.groups && savedUser?.groups.length > 0; const theme = useTheme(); From a23bffedcf5a2b05e41848feec7019b6b1ffae6a Mon Sep 17 00:00:00 2001 From: VineetBala-AOT Date: Wed, 14 Jun 2023 13:49:06 -0700 Subject: [PATCH 07/16] updating the schema --- .../components/userManagement/userDetails/AddToEngagement.tsx | 1 - 1 file changed, 1 deletion(-) diff --git a/met-web/src/components/userManagement/userDetails/AddToEngagement.tsx b/met-web/src/components/userManagement/userDetails/AddToEngagement.tsx index 2dae41931..58dbf7041 100644 --- a/met-web/src/components/userManagement/userDetails/AddToEngagement.tsx +++ b/met-web/src/components/userManagement/userDetails/AddToEngagement.tsx @@ -55,7 +55,6 @@ export const AddToEngagementModal = () => { const [engagements, setEngagements] = useState([]); const [engagementsLoading, setEngagementsLoading] = useState(false); const [backendError, setBackendError] = useState(''); - const userHasGroup = savedUser?.groups && savedUser?.groups.length > 0; const theme = useTheme(); From 20c5b80d905473e7348c4e018ef55f55fe9cee3f Mon Sep 17 00:00:00 2001 From: VineetBala-AOT Date: Fri, 30 Jun 2023 13:33:29 -0700 Subject: [PATCH 08/16] updating as per review comments --- met-api/src/met_api/schemas/report_setting.py | 24 ++++++------------- 1 file changed, 7 insertions(+), 17 deletions(-) diff --git a/met-api/src/met_api/schemas/report_setting.py b/met-api/src/met_api/schemas/report_setting.py index b06616570..1ef0028ca 100644 --- a/met-api/src/met_api/schemas/report_setting.py +++ b/met-api/src/met_api/schemas/report_setting.py @@ -3,25 +3,15 @@ Manages the report setting """ -from marshmallow import EXCLUDE, Schema, fields +from met_api.models import ReportSetting as ReportSettingModel +from .base_schema import BaseSchema -class ReportSettingSchema(Schema): - """Schema for report setting.""" - class Meta: # pylint: disable=too-few-public-methods - """Exclude unknown fields in the deserialized output.""" +class ReportSettingSchema(BaseSchema): # pylint: disable=too-many-ancestors, too-few-public-methods + """This is the schema for the report setting model.""" - unknown = EXCLUDE + class Meta(BaseSchema.Meta): # pylint: disable=too-few-public-methods + """Maps all of the report setting fields to a default schema.""" - id = fields.Int(data_key='id') - survey_id = fields.Int(data_key='survey_id') - question_id = fields.Str(data_key='question_id') - question_key = fields.Str(data_key='question_key') - question_type = fields.Str(data_key='question_type') - question = fields.Str(data_key='question') - display = fields.Bool(data_key='display') - created_by = fields.Str(data_key='created_by') - created_date = fields.Str(data_key='created_date') - updated_by = fields.Str(data_key='updated_by') - updated_date = fields.Str(data_key='updated_date') + model = ReportSettingModel From a10c44c0456f2a65c30665b2527023d81efde259 Mon Sep 17 00:00:00 2001 From: VineetBala-AOT Date: Fri, 30 Jun 2023 14:06:39 -0700 Subject: [PATCH 09/16] updating schema --- met-api/src/met_api/schemas/report_setting.py | 24 +++++++++++++------ 1 file changed, 17 insertions(+), 7 deletions(-) diff --git a/met-api/src/met_api/schemas/report_setting.py b/met-api/src/met_api/schemas/report_setting.py index 1ef0028ca..b06616570 100644 --- a/met-api/src/met_api/schemas/report_setting.py +++ b/met-api/src/met_api/schemas/report_setting.py @@ -3,15 +3,25 @@ Manages the report setting """ -from met_api.models import ReportSetting as ReportSettingModel +from marshmallow import EXCLUDE, Schema, fields -from .base_schema import BaseSchema +class ReportSettingSchema(Schema): + """Schema for report setting.""" -class ReportSettingSchema(BaseSchema): # pylint: disable=too-many-ancestors, too-few-public-methods - """This is the schema for the report setting model.""" + class Meta: # pylint: disable=too-few-public-methods + """Exclude unknown fields in the deserialized output.""" - class Meta(BaseSchema.Meta): # pylint: disable=too-few-public-methods - """Maps all of the report setting fields to a default schema.""" + unknown = EXCLUDE - model = ReportSettingModel + id = fields.Int(data_key='id') + survey_id = fields.Int(data_key='survey_id') + question_id = fields.Str(data_key='question_id') + question_key = fields.Str(data_key='question_key') + question_type = fields.Str(data_key='question_type') + question = fields.Str(data_key='question') + display = fields.Bool(data_key='display') + created_by = fields.Str(data_key='created_by') + created_date = fields.Str(data_key='created_date') + updated_by = fields.Str(data_key='updated_by') + updated_date = fields.Str(data_key='updated_date') From c621d6c3c78cc54fce15a39fa18a096d340dc0bc Mon Sep 17 00:00:00 2001 From: VineetBala-AOT Date: Tue, 4 Jul 2023 08:48:24 -0700 Subject: [PATCH 10/16] ETL and analytics changes for report setting --- .../src/analytics_api/models/request_type_option.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/analytics-api/src/analytics_api/models/request_type_option.py b/analytics-api/src/analytics_api/models/request_type_option.py index 4a723c708..5a7cb62dd 100644 --- a/analytics-api/src/analytics_api/models/request_type_option.py +++ b/analytics-api/src/analytics_api/models/request_type_option.py @@ -23,8 +23,8 @@ def get_survey_result( ): """Get the analytics survey id for an engagement id.""" analytics_survey_id = (db.session.query(SurveyModel.id) - .filter(SurveyModel.engagement_id == engagement_id) - .filter(SurveyModel.is_active == true()) + .filter_by(SurveyModel.engagement_id == engagement_id, + SurveyModel.is_active == true()) .subquery()) # Get all the survey questions specific to a survey id which are in active status. @@ -41,8 +41,8 @@ def get_survey_result( # are in active status. survey_response = (db.session.query(ResponseTypeOptionModel.request_id, ResponseTypeOptionModel.value, func.count(ResponseTypeOptionModel.request_id).label('response')) - .filter(ResponseTypeOptionModel.survey_id.in_(analytics_survey_id)) - .filter(ResponseTypeOptionModel.is_active == true()) + .filter_by(ResponseTypeOptionModel.survey_id.in_(analytics_survey_id), + ResponseTypeOptionModel.is_active == true()) .group_by(ResponseTypeOptionModel.request_id, ResponseTypeOptionModel.value) .subquery()) From f67bcae3be493fa72d52d9847800aa8e9d9f2d8a Mon Sep 17 00:00:00 2001 From: VineetBala-AOT Date: Tue, 4 Jul 2023 14:48:34 -0700 Subject: [PATCH 11/16] adding changes for clone and delete --- met-api/src/met_api/models/report_setting.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/met-api/src/met_api/models/report_setting.py b/met-api/src/met_api/models/report_setting.py index 220aa14d0..891f46cd6 100644 --- a/met-api/src/met_api/models/report_setting.py +++ b/met-api/src/met_api/models/report_setting.py @@ -5,6 +5,8 @@ """ from __future__ import annotations +from met_api.schemas.report_setting import ReportSettingSchema + from sqlalchemy import ForeignKey from met_api.schemas.report_setting import ReportSettingSchema From 8ff8855683e8736c7c1988b069fe0ae44d48224f Mon Sep 17 00:00:00 2001 From: VineetBala-AOT Date: Tue, 4 Jul 2023 15:26:19 -0700 Subject: [PATCH 12/16] fixing linting --- met-api/src/met_api/models/report_setting.py | 1 + 1 file changed, 1 insertion(+) diff --git a/met-api/src/met_api/models/report_setting.py b/met-api/src/met_api/models/report_setting.py index 891f46cd6..02d9e52ec 100644 --- a/met-api/src/met_api/models/report_setting.py +++ b/met-api/src/met_api/models/report_setting.py @@ -5,6 +5,7 @@ """ from __future__ import annotations +from sqlalchemy import ForeignKey from met_api.schemas.report_setting import ReportSettingSchema from sqlalchemy import ForeignKey From 17901535d6ae63e90a47e32923c09a2c511c63e0 Mon Sep 17 00:00:00 2001 From: VineetBala-AOT Date: Wed, 5 Jul 2023 12:07:14 -0700 Subject: [PATCH 13/16] front end and etl changes for postion column --- .../src/analytics_api/models/request_type_option.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/analytics-api/src/analytics_api/models/request_type_option.py b/analytics-api/src/analytics_api/models/request_type_option.py index 5a7cb62dd..4a723c708 100644 --- a/analytics-api/src/analytics_api/models/request_type_option.py +++ b/analytics-api/src/analytics_api/models/request_type_option.py @@ -23,8 +23,8 @@ def get_survey_result( ): """Get the analytics survey id for an engagement id.""" analytics_survey_id = (db.session.query(SurveyModel.id) - .filter_by(SurveyModel.engagement_id == engagement_id, - SurveyModel.is_active == true()) + .filter(SurveyModel.engagement_id == engagement_id) + .filter(SurveyModel.is_active == true()) .subquery()) # Get all the survey questions specific to a survey id which are in active status. @@ -41,8 +41,8 @@ def get_survey_result( # are in active status. survey_response = (db.session.query(ResponseTypeOptionModel.request_id, ResponseTypeOptionModel.value, func.count(ResponseTypeOptionModel.request_id).label('response')) - .filter_by(ResponseTypeOptionModel.survey_id.in_(analytics_survey_id), - ResponseTypeOptionModel.is_active == true()) + .filter(ResponseTypeOptionModel.survey_id.in_(analytics_survey_id)) + .filter(ResponseTypeOptionModel.is_active == true()) .group_by(ResponseTypeOptionModel.request_id, ResponseTypeOptionModel.value) .subquery()) From 5f03a1130515c9ef324de36222079f6086899554 Mon Sep 17 00:00:00 2001 From: VineetBala-AOT Date: Wed, 12 Jul 2023 10:17:22 -0700 Subject: [PATCH 14/16] update --- met-api/src/met_api/models/report_setting.py | 3 --- 1 file changed, 3 deletions(-) diff --git a/met-api/src/met_api/models/report_setting.py b/met-api/src/met_api/models/report_setting.py index 02d9e52ec..220aa14d0 100644 --- a/met-api/src/met_api/models/report_setting.py +++ b/met-api/src/met_api/models/report_setting.py @@ -8,9 +8,6 @@ from sqlalchemy import ForeignKey from met_api.schemas.report_setting import ReportSettingSchema -from sqlalchemy import ForeignKey -from met_api.schemas.report_setting import ReportSettingSchema - from .base_model import BaseModel from .db import db From 773e5ec4be0f85f42f790fc49ee7b95a2fc8dc35 Mon Sep 17 00:00:00 2001 From: VineetBala-AOT Date: Thu, 13 Jul 2023 10:54:55 -0700 Subject: [PATCH 15/16] fix for report setting on analytics --- .../models/request_type_option.py | 17 ++++++----- met-api/src/met_api/models/report_setting.py | 19 ++++++++---- .../services/report_setting_service.py | 30 +++++++++---------- 3 files changed, 38 insertions(+), 28 deletions(-) diff --git a/analytics-api/src/analytics_api/models/request_type_option.py b/analytics-api/src/analytics_api/models/request_type_option.py index 4a723c708..546577b8a 100644 --- a/analytics-api/src/analytics_api/models/request_type_option.py +++ b/analytics-api/src/analytics_api/models/request_type_option.py @@ -2,7 +2,7 @@ Manages the option type questions (radio/checkbox) on a survey """ -from sqlalchemy import func +from sqlalchemy import func, and_, or_ from sqlalchemy.sql.expression import true from analytics_api.models.survey import Survey as SurveyModel from analytics_api.models.response_type_option import ResponseTypeOption as ResponseTypeOptionModel @@ -23,17 +23,18 @@ def get_survey_result( ): """Get the analytics survey id for an engagement id.""" analytics_survey_id = (db.session.query(SurveyModel.id) - .filter(SurveyModel.engagement_id == engagement_id) - .filter(SurveyModel.is_active == true()) + .filter(and_(SurveyModel.engagement_id == engagement_id, + SurveyModel.is_active == true())) .subquery()) # Get all the survey questions specific to a survey id which are in active status. survey_question = (db.session.query(RequestTypeOption.position.label('position'), RequestTypeOption.label.label('label'), RequestTypeOption.request_id) - .filter(RequestTypeOption.survey_id.in_(analytics_survey_id)) - .filter(RequestTypeOption.is_active == true()) - .filter(RequestTypeOption.display == true()) + .filter(and_(RequestTypeOption.survey_id.in_(analytics_survey_id), + RequestTypeOption.is_active == true(), + or_(RequestTypeOption.display == true(), + RequestTypeOption.display == None))) .order_by(RequestTypeOption.position) .subquery()) @@ -41,8 +42,8 @@ def get_survey_result( # are in active status. survey_response = (db.session.query(ResponseTypeOptionModel.request_id, ResponseTypeOptionModel.value, func.count(ResponseTypeOptionModel.request_id).label('response')) - .filter(ResponseTypeOptionModel.survey_id.in_(analytics_survey_id)) - .filter(ResponseTypeOptionModel.is_active == true()) + .filter(and_(ResponseTypeOptionModel.survey_id.in_(analytics_survey_id), + ResponseTypeOptionModel.is_active == true())) .group_by(ResponseTypeOptionModel.request_id, ResponseTypeOptionModel.value) .subquery()) diff --git a/met-api/src/met_api/models/report_setting.py b/met-api/src/met_api/models/report_setting.py index 220aa14d0..57855fb11 100644 --- a/met-api/src/met_api/models/report_setting.py +++ b/met-api/src/met_api/models/report_setting.py @@ -64,12 +64,21 @@ def add_all_report_settings(cls, survey_id, report_settings: list, session=None) else: session.add_all(new_report_setting) return new_report_setting - + @classmethod - def delete_report_settings(cls, survey_id, question_key): + def delete_report_settings(cls, survey_id, question_keys: list) -> ReportSetting: """Delete report setting by survey id and question key.""" - db.session.query(ReportSetting).filter(ReportSetting.survey_id == survey_id, - ReportSetting.question_key == question_key).delete() + db.session\ + .query(ReportSetting)\ + .filter(ReportSetting.survey_id == survey_id, + ReportSetting.question_key.in_(question_keys))\ + .delete(synchronize_session='fetch') db.session.commit() + return survey_id, question_keys - return survey_id, question_key + @classmethod + def update_report_settings_bulk(cls, report_settings: list) -> list[ReportSetting]: + """Save report settings.""" + db.session.bulk_update_mappings(ReportSetting, report_settings) + db.session.commit() + return report_settings diff --git a/met-api/src/met_api/services/report_setting_service.py b/met-api/src/met_api/services/report_setting_service.py index dd058a23a..99a7ad70f 100644 --- a/met-api/src/met_api/services/report_setting_service.py +++ b/met-api/src/met_api/services/report_setting_service.py @@ -132,9 +132,13 @@ def _delete_questions_removed_from_form(cls, survey_id, survey_question_keys): # Loop through the data from report setting and delete any record which does not exist on # survey form. This will happen if a existing survey question is deleted from the survey report_settings = cls.get_report_setting(survey_id) - for report_setting in report_settings: - if report_setting['question_key'] not in survey_question_keys: - ReportSettingModel.delete_report_settings(survey_id, report_setting['question_key']) + + report_setting_keys_to_delete = [report_setting['question_key'] for report_setting in report_settings + if report_setting['question_key'] not in survey_question_keys] + if len(report_setting_keys_to_delete) > 0: + ReportSettingModel.delete_report_settings(survey_id, report_setting_keys_to_delete) + + return report_setting_keys_to_delete @classmethod def update_report_setting(cls, survey_id, new_report_settings): @@ -142,15 +146,11 @@ def update_report_setting(cls, survey_id, new_report_settings): survey = SurveyModel.find_by_id(survey_id) if not survey: raise KeyError(f'No survey found for {survey_id}') - for setting in new_report_settings: - report_setting_id = setting.get('id', None) - report_setting = ReportSettingModel.find_by_id(report_setting_id) - if not report_setting: - raise ValueError(f'No report setting found for {report_setting_id}') - if report_setting.survey_id != survey_id: - raise KeyError(f'Report setting {report_setting.id} does not belong to survey {survey_id}') - - report_setting.display = setting.get('display', None) - report_setting.save() - - return new_report_settings + + report_settings_update_mapping = [{ + 'id': setting.get('id', None), + 'display': setting.get('display', None) + } for setting in new_report_settings] + + updated_report_settings = ReportSettingModel.update_report_settings_bulk(report_settings_update_mapping) + return updated_report_settings From b434010d238e9861882f2fb12e2a882486c3b915 Mon Sep 17 00:00:00 2001 From: VineetBala-AOT Date: Thu, 13 Jul 2023 11:10:43 -0700 Subject: [PATCH 16/16] fixing lint --- analytics-api/src/analytics_api/models/request_type_option.py | 4 ++-- met-api/src/met_api/models/report_setting.py | 2 +- met-api/src/met_api/services/report_setting_service.py | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/analytics-api/src/analytics_api/models/request_type_option.py b/analytics-api/src/analytics_api/models/request_type_option.py index 546577b8a..9d90a914d 100644 --- a/analytics-api/src/analytics_api/models/request_type_option.py +++ b/analytics-api/src/analytics_api/models/request_type_option.py @@ -2,7 +2,7 @@ Manages the option type questions (radio/checkbox) on a survey """ -from sqlalchemy import func, and_, or_ +from sqlalchemy import and_, func, or_ from sqlalchemy.sql.expression import true from analytics_api.models.survey import Survey as SurveyModel from analytics_api.models.response_type_option import ResponseTypeOption as ResponseTypeOptionModel @@ -34,7 +34,7 @@ def get_survey_result( .filter(and_(RequestTypeOption.survey_id.in_(analytics_survey_id), RequestTypeOption.is_active == true(), or_(RequestTypeOption.display == true(), - RequestTypeOption.display == None))) + RequestTypeOption.display is None))) .order_by(RequestTypeOption.position) .subquery()) diff --git a/met-api/src/met_api/models/report_setting.py b/met-api/src/met_api/models/report_setting.py index 57855fb11..e5420645c 100644 --- a/met-api/src/met_api/models/report_setting.py +++ b/met-api/src/met_api/models/report_setting.py @@ -64,7 +64,7 @@ def add_all_report_settings(cls, survey_id, report_settings: list, session=None) else: session.add_all(new_report_setting) return new_report_setting - + @classmethod def delete_report_settings(cls, survey_id, question_keys: list) -> ReportSetting: """Delete report setting by survey id and question key.""" diff --git a/met-api/src/met_api/services/report_setting_service.py b/met-api/src/met_api/services/report_setting_service.py index 99a7ad70f..6ae2a2688 100644 --- a/met-api/src/met_api/services/report_setting_service.py +++ b/met-api/src/met_api/services/report_setting_service.py @@ -134,7 +134,7 @@ def _delete_questions_removed_from_form(cls, survey_id, survey_question_keys): report_settings = cls.get_report_setting(survey_id) report_setting_keys_to_delete = [report_setting['question_key'] for report_setting in report_settings - if report_setting['question_key'] not in survey_question_keys] + if report_setting['question_key'] not in survey_question_keys] if len(report_setting_keys_to_delete) > 0: ReportSettingModel.delete_report_settings(survey_id, report_setting_keys_to_delete) @@ -150,7 +150,7 @@ def update_report_setting(cls, survey_id, new_report_settings): report_settings_update_mapping = [{ 'id': setting.get('id', None), 'display': setting.get('display', None) - } for setting in new_report_settings] + } for setting in new_report_settings] updated_report_settings = ReportSettingModel.update_report_settings_bulk(report_settings_update_mapping) return updated_report_settings