|
|
|
@@ -2,7 +2,8 @@ from urllib import request
|
|
|
|
|
|
|
|
|
|
from flask import session, jsonify
|
|
|
|
|
|
|
|
|
|
from app.api.enums import SettingsItemsData,KafkaMessage
|
|
|
|
|
from app.api.enums import SettingsItemsData, KafkaMessage
|
|
|
|
|
from app.api.schemas.myproduct_external_url import MyProductExternalUrlSchema
|
|
|
|
|
from app.api.schemas.myproduct_set_template import MyProductSetTemplateSchema
|
|
|
|
|
from app.utils.logger import logger
|
|
|
|
|
from app.api.services.base_service import BaseService
|
|
|
|
@@ -23,7 +24,7 @@ from app.config import Config
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class MyProductsService(BaseService):
|
|
|
|
|
START_URL_PATTERN = Config.START_URL_PATTERN
|
|
|
|
|
START_URL_PATTERN = Config.START_URL_PATTERN
|
|
|
|
|
|
|
|
|
|
@staticmethod
|
|
|
|
|
def process_provision_actions(data):
|
|
|
|
@@ -197,8 +198,8 @@ class MyProductsService(BaseService):
|
|
|
|
|
member_id = member_data.id
|
|
|
|
|
|
|
|
|
|
# getting the url-name part
|
|
|
|
|
url_name_part = str(random.randint(100000, 999999)) # Starr with random numbers
|
|
|
|
|
member_profile_data = MembersProfile.get_member_profile_by_member_id(member_id)
|
|
|
|
|
url_name_part = str(random.randint(100000, 999999)) # Starr with random numbers
|
|
|
|
|
member_profile_data = MembersProfile.get_member_profile_by_member_id(member_id)
|
|
|
|
|
if member_profile_data and member_profile_data.url_name != None:
|
|
|
|
|
url_name_part = member_profile_data.url_name
|
|
|
|
|
|
|
|
|
@@ -206,11 +207,11 @@ class MyProductsService(BaseService):
|
|
|
|
|
product_data = Products.get_product_by_product_id(product_id)
|
|
|
|
|
configured_start_url = product_data.start_url
|
|
|
|
|
|
|
|
|
|
if configured_start_url =='':
|
|
|
|
|
if configured_start_url == '':
|
|
|
|
|
configured_start_url = MyProductsService.START_URL_PATTERN
|
|
|
|
|
|
|
|
|
|
internal_url = url_name_part + configured_start_url # ".devprov.mermsemr.com" =
|
|
|
|
|
internal_url=internal_url.lower()
|
|
|
|
|
internal_url = url_name_part + configured_start_url # ".devprov.mermsemr.com" =
|
|
|
|
|
internal_url = internal_url.lower()
|
|
|
|
|
|
|
|
|
|
# let us see if this is in USE
|
|
|
|
|
anybodyUsingUrl = MembersProducts.get_member_product_by_internal_url(internal_url)
|
|
|
|
@@ -247,13 +248,14 @@ class MyProductsService(BaseService):
|
|
|
|
|
status = 6
|
|
|
|
|
subscription = MembersProducts.create_subscription(member_id, product_id, status, internal_url)
|
|
|
|
|
|
|
|
|
|
#-let prepare the flags for auto generated stuffs
|
|
|
|
|
# -let prepare the flags for auto generated stuffs
|
|
|
|
|
profile_data = MembersProfile.get_member_profile_by_member_id(member_id)
|
|
|
|
|
if profile_data:
|
|
|
|
|
practice = profile_data.practice
|
|
|
|
|
specialization = profile_data.specialization
|
|
|
|
|
specialization = profile_data.specialization
|
|
|
|
|
subscription_uid = subscription.uid
|
|
|
|
|
SubscriptionGenerative.create_subscription_generative(member_id ,practice,specialization,product_id, subscription_uid)
|
|
|
|
|
SubscriptionGenerative.create_subscription_generative(member_id, practice, specialization,
|
|
|
|
|
product_id, subscription_uid)
|
|
|
|
|
|
|
|
|
|
response_data = {
|
|
|
|
|
"subscription_uid": subscription.uid,
|
|
|
|
@@ -303,7 +305,6 @@ class MyProductsService(BaseService):
|
|
|
|
|
productDataStatus = memberSubscription.status
|
|
|
|
|
product_subscription_uid = memberSubscription.uid
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
for key in settings.keys():
|
|
|
|
|
setting_value = settings[key]
|
|
|
|
|
subscription_uid = memberSubscription.uid
|
|
|
|
@@ -379,7 +380,6 @@ class MyProductsService(BaseService):
|
|
|
|
|
product_template = memberSubscription.product_template
|
|
|
|
|
custom_template = memberSubscription.custom_template
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# "banner": "banner.jpg",
|
|
|
|
|
myproduct_data = {
|
|
|
|
|
"myproudct": {
|
|
|
|
@@ -557,7 +557,7 @@ class MyProductsService(BaseService):
|
|
|
|
|
if product_id == "A000002":
|
|
|
|
|
settings_items = {
|
|
|
|
|
"url_config_tab": {"title": 'URL Configuration', "controls": 'url-config', "active": '',
|
|
|
|
|
"custom": True, "data": {}, "list_order": 0},
|
|
|
|
|
"custom": True, "data": {}, "list_order": 0},
|
|
|
|
|
"settings": {"title": 'Settings', "controls": 'settings', "active": 'active show',
|
|
|
|
|
"custom": False, "data": settingsFields, "list_order": 1},
|
|
|
|
|
"home_tab": {"title": 'Home Page', "controls": 'home', "active": '', "custom": False,
|
|
|
|
@@ -605,3 +605,74 @@ class MyProductsService(BaseService):
|
|
|
|
|
logger.error(f"An error occurred: {str(e)}", exc_info=True)
|
|
|
|
|
db.session.rollback()
|
|
|
|
|
return ResponseHelper.internal_server_error()
|
|
|
|
|
|
|
|
|
|
@staticmethod
|
|
|
|
|
def set_external_url(data):
|
|
|
|
|
try:
|
|
|
|
|
with db.session.begin():
|
|
|
|
|
# logger.info(f"Incoming MyProduct data ==>>>> {data}")
|
|
|
|
|
validated_data = MyProductsService.validate_data(data, MyProductExternalUrlSchema())
|
|
|
|
|
token = validated_data.get('token')
|
|
|
|
|
uid = validated_data.get('uid')
|
|
|
|
|
subscription_uid = validated_data.get('subscription_uid')
|
|
|
|
|
external_url = validated_data.get('external_url')
|
|
|
|
|
|
|
|
|
|
member_data = Members.get_member_by_uid(uid)
|
|
|
|
|
if not member_data:
|
|
|
|
|
return {
|
|
|
|
|
"message": "Invalid User",
|
|
|
|
|
"error_message": "Error - Please select a valid product to view",
|
|
|
|
|
"data": None,
|
|
|
|
|
"error": f"User with UID {uid} does not exist."
|
|
|
|
|
}, 400
|
|
|
|
|
|
|
|
|
|
member_id = member_data.id
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
membersSubResult = MembersProducts.get_member_product_by_subscription_uid(subscription_uid)
|
|
|
|
|
if not membersSubResult:
|
|
|
|
|
return {
|
|
|
|
|
"message": "Invalid Subscription",
|
|
|
|
|
"error_message": "Error - Please select a valid product to view",
|
|
|
|
|
"data": None,
|
|
|
|
|
"error": f"Subscription with UID {subscription_uid} does not exist."
|
|
|
|
|
}, 400
|
|
|
|
|
logger.info(f"External URL Member Data: {member_data}")
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if int(membersSubResult.member_id) != member_id:
|
|
|
|
|
return {
|
|
|
|
|
"message": "Mismatch subscription and User",
|
|
|
|
|
"error_message": "Error - Please select a valid product to view",
|
|
|
|
|
"data": None,
|
|
|
|
|
"error": f"Mismatch subscription and User."
|
|
|
|
|
}, 400
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
setUrlResult = MembersProducts.set_member_product_external_url(member_id, membersSubResult.product_id,
|
|
|
|
|
external_url)
|
|
|
|
|
|
|
|
|
|
# Simulate processing
|
|
|
|
|
response_data = {
|
|
|
|
|
"subscription_uid": subscription_uid,
|
|
|
|
|
"member_id": member_id,
|
|
|
|
|
"uid": uid,
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return ResponseHelper.success(data=response_data)
|
|
|
|
|
|
|
|
|
|
except ValidationError as err:
|
|
|
|
|
|
|
|
|
|
logger.error(f"Validation Error: {getattr(err, 'messages', str(err))}")
|
|
|
|
|
db.session.rollback()
|
|
|
|
|
return ResponseHelper.unprocessable_entity(result_description="Validation exception")
|
|
|
|
|
|
|
|
|
|
except ValueError as err:
|
|
|
|
|
logger.error(f"{getattr(err, 'messages', str(err))}")
|
|
|
|
|
db.session.rollback()
|
|
|
|
|
return ResponseHelper.error(result_description=str(err))
|
|
|
|
|
|
|
|
|
|
except Exception as e:
|
|
|
|
|
logger.error(f"An error occurred: {str(e)}", exc_info=True)
|
|
|
|
|
db.session.rollback()
|
|
|
|
|
return ResponseHelper.internal_server_error()
|
|
|
|
|