Skip to content

Commit

Permalink
Reverting changes on the schema for subscription (bcgov#2157)
Browse files Browse the repository at this point in the history
* Changes to show all survey results to superusers

* removing hard coded values

* fixing linting

* splitting to seperate end points

* fixing auth check

* fixing linting

* merging method in service

* Handle no data error for graphs

* adding new nodata component

* adding new email for submission response

* fixing linting and testing

* updating model for subscription

* removing schema dependency on create

* fixing linting
  • Loading branch information
VineetBala-AOT authored Sep 11, 2023
1 parent 45cb2fb commit 48753ea
Show file tree
Hide file tree
Showing 7 changed files with 26 additions and 35 deletions.
14 changes: 6 additions & 8 deletions met-api/src/met_api/models/subscription.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,6 @@
from datetime import datetime
from sqlalchemy import ForeignKey

from met_api.schemas.subscription import SubscriptionSchema

from met_api.constants.subscription_type import SubscriptionType

from .base_model import BaseModel
Expand Down Expand Up @@ -60,12 +58,12 @@ def get_by_participant_and_eng_id(cls, participant_id, engagement_id) -> Subscri
return db_subscription

@classmethod
def create(cls, subscription: SubscriptionSchema, session=None) -> Subscription:
def create(cls, subscription: dict, session=None) -> Subscription:
"""Create a subscription."""
new_subscription = Subscription(
engagement_id=subscription.get('engagement_id', None),
participant_id=subscription.get('participant_id', None),
is_subscribed=subscription.get('is_subscribed', None),
is_subscribed=subscription.get('is_subscribed', False),
project_id=subscription.get('project_id', None),
type=subscription.get('type', None),
created_date=datetime.utcnow(),
Expand All @@ -79,10 +77,10 @@ def create(cls, subscription: SubscriptionSchema, session=None) -> Subscription:
return new_subscription

@classmethod
def update_subscription_for_participant(cls, subscription: SubscriptionSchema, session=None) -> Subscription:
def update_subscription_for_participant(cls, subscription: dict, session=None) -> Subscription:
"""Update subscription for a participant."""
update_fields = dict(
is_subscribed=subscription.get('is_subscribed', None),
is_subscribed=subscription.get('is_subscribed', False),
updated_date=datetime.utcnow(),
updated_by=subscription.get('updated_by', None),
)
Expand All @@ -97,10 +95,10 @@ def update_subscription_for_participant(cls, subscription: SubscriptionSchema, s
return query.first()

@classmethod
def update_subscription_for_participant_eng(cls, subscription: SubscriptionSchema, session=None) -> Subscription:
def update_subscription_for_participant_eng(cls, subscription: dict, session=None) -> Subscription:
"""Update subscription for a participant and engagement."""
update_fields = dict(
is_subscribed=subscription.get('is_subscribed', None),
is_subscribed=subscription.get('is_subscribed', False),
updated_date=datetime.utcnow(),
updated_by=subscription.get('updated_by', None),
)
Expand Down
13 changes: 4 additions & 9 deletions met-api/src/met_api/resources/subscription.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,6 @@
from flask_cors import cross_origin
from flask_restx import Namespace, Resource

from met_api.schemas.subscription import SubscriptionSchema
from met_api.services.subscription_service import SubscriptionService
from met_api.utils.util import allowedorigins, cors_preflight

Expand Down Expand Up @@ -63,8 +62,7 @@ def post():
"""Create a new subscription."""
try:
request_json = request.get_json()
subscription = SubscriptionSchema().load(request_json)
SubscriptionService().create_subscription(subscription)
SubscriptionService().create_subscription(request_json)
return {}, HTTPStatus.OK
except KeyError as err:
return str(err), HTTPStatus.INTERNAL_SERVER_ERROR
Expand All @@ -77,8 +75,7 @@ def patch():
"""Update a existing subscription partially."""
try:
request_json = request.get_json()
subscription = SubscriptionSchema().load(request_json, partial=True)
SubscriptionService().update_subscription_for_participant(subscription)
SubscriptionService().update_subscription_for_participant(request_json)
return {}, HTTPStatus.OK
except KeyError as err:
return str(err), HTTPStatus.INTERNAL_SERVER_ERROR
Expand All @@ -98,8 +95,7 @@ def post():
"""Create or update a subscription."""
try:
request_json = request.get_json()
subscription = SubscriptionSchema().load(request_json)
SubscriptionService().create_or_update_subscription(subscription)
SubscriptionService().create_or_update_subscription(request_json)
return {}, HTTPStatus.OK
except KeyError as err:
return str(err), HTTPStatus.INTERNAL_SERVER_ERROR
Expand All @@ -112,8 +108,7 @@ def patch():
"""Update a existing subscription partially."""
try:
request_json = request.get_json()
subscription = SubscriptionSchema().load(request_json, partial=True)
SubscriptionService().update_subscription_for_participant_eng(subscription)
SubscriptionService().update_subscription_for_participant_eng(request_json)
return {}, HTTPStatus.OK
except KeyError as err:
return str(err), HTTPStatus.INTERNAL_SERVER_ERROR
Expand Down
5 changes: 1 addition & 4 deletions met-api/src/met_api/schemas/subscription.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,6 @@
"""

from marshmallow import EXCLUDE, Schema, fields
from marshmallow_enum import EnumField

from met_api.constants.subscription_type import SubscriptionTypes


class SubscriptionSchema(Schema):
Expand All @@ -22,7 +19,7 @@ class Meta: # pylint: disable=too-few-public-methods
participant_id = fields.Int(data_key='participant_id')
is_subscribed = fields.Bool(data_key='is_subscribed')
project_id = fields.Str(data_key='project_id')
type = EnumField(SubscriptionTypes, by_value=True)
type = fields.Str(data_key='type')
created_by = fields.Str(data_key='created_by')
created_date = fields.Str(data_key='created_date')
updated_by = fields.Str(data_key='updated_by')
Expand Down
17 changes: 9 additions & 8 deletions met-api/src/met_api/services/subscription_service.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,25 +21,26 @@ def get(cls, participant_id):
def create_subscription(cls, subscription_data) -> SubscriptionSchema:
"""Create a subscription."""
subscription_data['created_by'] = subscription_data.get('participant_id')
return SubscriptionModel.create(subscription_data)
create_subscription = SubscriptionModel.create(subscription_data)
return SubscriptionSchema().dump(create_subscription)

@classmethod
def update_subscription_for_participant(cls, subscription_data) -> SubscriptionSchema:
"""Update subscription for a participant."""
subscription_data['updated_by'] = subscription_data.get('participant_id')
updated_subscription = SubscriptionModel.update_subscription_for_participant(subscription_data)
if not updated_subscription:
update_subscription = SubscriptionModel.update_subscription_for_participant(subscription_data)
if not update_subscription:
raise ValueError('Subscription to update was not found')
return SubscriptionModel.update_subscription_for_participant(subscription_data)
return SubscriptionSchema().dump(update_subscription)

@classmethod
def update_subscription_for_participant_eng(cls, subscription_data) -> SubscriptionSchema:
"""Update subscription for a participant."""
subscription_data['updated_by'] = subscription_data.get('participant_id')
updated_subscription = SubscriptionModel.update_subscription_for_participant_eng(subscription_data)
if not updated_subscription:
update_subscription = SubscriptionModel.update_subscription_for_participant_eng(subscription_data)
if not update_subscription:
raise ValueError('Subscription to update was not found')
return SubscriptionModel.update_subscription_for_participant_eng(subscription_data)
return SubscriptionSchema().dump(update_subscription)

@classmethod
def create_or_update_subscription(cls, subscription: dict):
Expand All @@ -56,7 +57,7 @@ def create_or_update_subscription(cls, subscription: dict):
return cls.update_subscription_for_participant_eng(subscription)

@staticmethod
def validate_fields(data: SubscriptionSchema):
def validate_fields(data: dict):
"""Validate all fields."""
empty_fields = [not data.get(field, None) for field in [
'engagement_id',
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ const EmailListModal = ({ open, setOpen }: { open: boolean; setOpen: (open: bool
await createSubscription({
engagement_id: savedEngagement.id,
email_address: email_verification.email_address,
is_subscribed: 'false',
is_subscribed: false,
participant_id: email_verification.participant_id,
project_id: engagementMetadata.project_id,
type: subscriptionType || defaultType,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -41,15 +41,15 @@ export const Subscription = () => {
await confirmSubscription({
engagement_id: parseInt(engagementId ?? ''),
participant_id: JSON.parse(subscribed).participant_id,
is_subscribed: 'true',
is_subscribed: true,
});
setSubscriptionText(['You have successfully confirmed your subscription. Thank you.']);
}
if (subscriptionStatus == SubscriptionType.UNSUBSCRIBE) {
const participant_id = scriptionKey;
await unSubscribe({
participant_id: parseInt(participant_id ?? ''),
is_subscribed: 'false',
is_subscribed: false,
});
setSubscriptionText([
'We are sorry to see you go.',
Expand Down
6 changes: 3 additions & 3 deletions met-web/src/models/subscription.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ export type CallToActionTypes = 'link' | 'button';
export interface Subscription {
engagement_id: number;
email_address: string;
is_subscribed: string;
is_subscribed: boolean;
participant_id: number;
project_id: string;
type: string;
Expand All @@ -14,12 +14,12 @@ export interface Subscription {
export interface Subscribe {
engagement_id: number;
participant_id: number;
is_subscribed: string;
is_subscribed: boolean;
}

export interface Unsubscribe {
participant_id: number;
is_subscribed: string;
is_subscribed: boolean;
}

export const SUBSCRIBE_TYPE: { [x in SubscribeTypeLabel]: SubscribeTypeLabel } = {
Expand Down

0 comments on commit 48753ea

Please sign in to comment.