From 8b3d77fa62984dedcfb6a0a5f7278879e4059624 Mon Sep 17 00:00:00 2001 From: "CHIEFSOFT\\ameye" Date: Tue, 20 Jan 2026 14:50:55 -0500 Subject: [PATCH] New end pint --- app/api/routes/routes.py | 7 ++ app/api/schemas/myproduct_template_image.py | 8 ++ app/api/services/myproduct.py | 101 ++++++++++++++++++++ 3 files changed, 116 insertions(+) create mode 100644 app/api/schemas/myproduct_template_image.py diff --git a/app/api/routes/routes.py b/app/api/routes/routes.py index 4ebab3b..1b24d21 100644 --- a/app/api/routes/routes.py +++ b/app/api/routes/routes.py @@ -413,6 +413,13 @@ def myproduct_template_config(): response = MyProductsService.template_configuration(data) return response +@api.route("/panel/myproduct/template-media-set", methods=["POST"]) +def myproduct_template_set_media(): + data = request.get_json() + logger.info(f"Route Save MyProduct_Template_Config ==>>>> {data}") + response = MyProductsService.template_set_media(data) + return response + @api.route("/panel/myproduct/settings/values", methods=["POST"]) def myproduct_settings_values(): data = request.get_json() diff --git a/app/api/schemas/myproduct_template_image.py b/app/api/schemas/myproduct_template_image.py new file mode 100644 index 0000000..5388206 --- /dev/null +++ b/app/api/schemas/myproduct_template_image.py @@ -0,0 +1,8 @@ +from marshmallow import Schema, fields + +class MyProductTemplateImageSchema(Schema): + token = fields.Str(required=True) + uid = fields.Str(required=True) + product_id = fields.Str(required=True) + file_uid = fields.Str(required=True) + image_id = fields.Str(required=True) diff --git a/app/api/services/myproduct.py b/app/api/services/myproduct.py index 239cb19..93f0abb 100644 --- a/app/api/services/myproduct.py +++ b/app/api/services/myproduct.py @@ -6,6 +6,7 @@ from app.api.enums import SettingsItemsData, KafkaMessage from app.api.schemas.myproduct_external_url import MyProductExternalUrlSchema from app.api.schemas.myproduct_set_colorstyle import MyProductSetColorStyleSchema from app.api.schemas.myproduct_set_template import MyProductSetTemplateSchema +from app.api.schemas.myproduct_template_image import MyProductTemplateImageSchema from app.utils.logger import logger from app.api.services.base_service import BaseService from marshmallow import ValidationError @@ -902,3 +903,103 @@ class MyProductsService(BaseService): logger.error(f"An error occurred: {str(e)}", exc_info=True) db.session.rollback() return ResponseHelper.internal_server_error() + + @staticmethod + def template_set_media(data): + try: + with db.session.begin(): + validated_data = MyProductsService.validate_data(data, MyProductTemplateImageSchema()) + token = validated_data.get('token') + uid = validated_data.get('uid') + file_uid = validated_data.get('file_uid') + image_id = validated_data.get('image_id') + + member_data = Members.get_member_by_uid(uid) + member_id = member_data.id + product_id = validated_data.get('product_id') + + product_subscription_uid = '' + product_data = Products.get_product_by_product_id(product_id) + if not product_data: + return { + "message": "Please provide valid product_id", + "error_message": "Error - Please select a valid product to view", + "data": None, + "error": f"Product with ID {product_id} does not exist." + }, 400 + + product_description = ProductsDetails.get_product_details_with_product_id(product_id) + productDataStatus = product_data.status + + memberSubscription = MembersProducts.get_member_product_by_product_member_id(member_id, product_id) + template_images = [] + template_name = '' + + if memberSubscription is not None: + custom_template = "" if ( + memberSubscription.custom_template is None or len(memberSubscription.custom_template) + == 0) else memberSubscription.custom_template + + # logger.info(f"Incoming MyProduct data ==>>>> {memberSubscription}") + product_subscription_uid = memberSubscription.uid + subscription_template = "" if len(custom_template) > 0 else memberSubscription.product_template + settingsFields = SettingsItemsData.get_site_settings_data() + templateData = [] + # homeFields = SettingsItemsData.get_site_home_settings() + # footerFields = SettingsItemsData.get_site_footer_settings() + # contactFields = SettingsItemsData.get_site_contact_items() + # socialFields = SettingsItemsData.get_site_social_settings_data() + # aboutFields = SettingsItemsData.get_site_about_items() + # testimonialFields = SettingsItemsData.get_site_testimonial_settings() + # blogConnectFields = SettingsItemsData.get_site_blog_connect_settings() + + blogConnect = False + if product_data.blog_product_id != None and product_data.blog_product_id != '': + blogConnect = True + blog_product_data = Products.get_product_by_product_id(product_data.blog_product_id) + + settings_items = {} + selected_flavor = '' + if product_id == "A000001" or product_id == "A000002": ## should be config or data driven not hard coded + settings_items = {} + + if memberSubscription.product_template: + selectedTemplate = ProductsTemplates.get_template_by_uid( + str(memberSubscription.product_template)) + if selectedTemplate: + selected_flavor = selectedTemplate.flavor + template_name = selectedTemplate.name + + template_images = BaseService.get_site_imges_data(memberSubscription.uid, + memberSubscription.primary_server, + memberSubscription.provision_port, + selected_flavor) + + # Simulate processing + response_data = { + "settings_items": settings_items, + "member_id": member_id, + "subscription_template": str(subscription_template), + "template_name": str(template_name), + "product_subscription_uid": str(product_subscription_uid), + "blog_connect": str(blogConnect), + "template_images": template_images + } + + 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()