import frappe from event_manager.utils import delete_custom_fields, get_custom_fields_creator _create_custom_fields = get_custom_fields_creator("Pohodex Event Manager") CRM_INTEGRATION_CUSTOM_FIELDS = { "CRM Lead": [ { "fieldname": "buzz_tab", "label": "Pohodex Event Manager", "fieldtype": "Tab Break", "insert_after": "facebook_form_id", }, { "fieldname": "buzz_campaign", "label": "Pohodex Event Manager Campaign", "fieldtype": "Link", "options": "Pohodex Event Manager Campaign", "insert_after": "buzz_tab", }, { "fieldname": "buzz_column_break", "fieldtype": "Column Break", "insert_after": "buzz_campaign", }, { "fieldname": "event_ticket", "label": "Event Ticket", "fieldtype": "Link", "options": "Event Ticket", "insert_after": "buzz_column_break", }, ], } ZOOM_INTEGRATION_CUSTOM_FIELDS = { "Pohodex Event Manager Event": [ { "fieldname": "zoom_integration_tab", "label": "Zoom Integration", "fieldtype": "Tab Break", "insert_after": "ticket_print_format", }, { "fieldname": "zoom_webinar", "label": "Zoom Webinar", "fieldtype": "Link", "options": "Zoom Webinar", "insert_after": "zoom_integration_tab", }, ], "Pohodex Event Manager Settings": [ { "fieldname": "zoom_integration_section", "label": "Zoom Integration Settings", "fieldtype": "Section Break", "insert_after": "custom_fields_go_after_this", }, { "fieldname": "default_webinar_template", "label": "Default Webinar Template", "fieldtype": "Link", "options": "Zoom Webinar Template", "insert_after": "zoom_integration_section", }, ], "Event Ticket": [ { "fieldname": "zoom_webinar_registration", "label": "Zoom Webinar Registration", "fieldtype": "Link", "options": "Zoom Webinar Registration", "insert_after": "ticket_type", "read_only": 1, }, ], } def before_tests(): setup_test_records() def setup_test_records(): test_category = frappe.get_doc({"doctype": "Event Category", "name": "Test Category"}).insert( ignore_if_duplicate=True ) test_venue = frappe.get_doc({"doctype": "Event Venue", "name": "Test Venue", "address": "test"}).insert( ignore_if_duplicate=True ) test_host = frappe.get_doc({"doctype": "Event Host", "name": "Test Host"}).insert( ignore_if_duplicate=True ) test_event_exists = frappe.db.exists("Pohodex Event Manager Event", {"route": "test-route"}) if test_event_exists: frappe.delete_doc("Pohodex Event Manager Event", test_event_exists, force=True) frappe.get_doc( { "doctype": "Pohodex Event Manager Event", "category": test_category.name, "venue": test_venue.name, "host": test_host.name, "title": "Test Event", "route": "test-route", "start_date": frappe.utils.today(), "start_time": "10:00:00", "end_time": "18:00:00", } ).insert(ignore_if_duplicate=True) def after_install(): create_event_categories() create_custom_fields() def on_migrate(): create_custom_fields() def after_app_install(app_name: str): if app_name == "zoom_integration": create_zoom_integration_custom_fields() if app_name == "crm": create_crm_integration_custom_fields() def after_app_uninstall(app_name: str): if app_name == "zoom_integration": delete_zoom_integration_custom_fields() if app_name == "crm": delete_crm_integration_custom_fields() def create_custom_fields(): installed_apps = frappe.get_installed_apps() if "zoom_integration" in installed_apps: create_zoom_integration_custom_fields() if "crm" in installed_apps: create_crm_integration_custom_fields() def create_zoom_integration_custom_fields(): _create_custom_fields(ZOOM_INTEGRATION_CUSTOM_FIELDS, ignore_validate=True) def create_crm_integration_custom_fields(): _create_custom_fields(CRM_INTEGRATION_CUSTOM_FIELDS, ignore_validate=True) def delete_zoom_integration_custom_fields(): delete_custom_fields(ZOOM_INTEGRATION_CUSTOM_FIELDS) def delete_crm_integration_custom_fields(): delete_custom_fields(CRM_INTEGRATION_CUSTOM_FIELDS) def create_event_categories(): categories = [ { "name": "Meetups", "icon_svg": """ """, "enabled": 1, }, { "name": "Conferences", "icon_svg": """ """, "enabled": 1, }, { "name": "Local", "icon_svg": """ """, "enabled": 1, }, { "name": "Webinars", "icon_svg": """ """, "enabled": 1, }, ] for category in categories: frappe.get_doc({"doctype": "Event Category", **category}).insert(ignore_if_duplicate=True)