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)