Initialize fork and rebrand app to event_manager
This commit is contained in:
@@ -0,0 +1,15 @@
|
||||
// Copyright (c) 2025, BWH Studios and contributors
|
||||
// For license information, please see license.txt
|
||||
|
||||
frappe.ui.form.on("Pohodex Event Manager Custom Field", {
|
||||
refresh(frm) {
|
||||
frm.set_query("custom_form_doctype", function () {
|
||||
return {
|
||||
filters: {
|
||||
istable: 0,
|
||||
issingle: 0,
|
||||
},
|
||||
};
|
||||
});
|
||||
},
|
||||
});
|
||||
@@ -0,0 +1,144 @@
|
||||
{
|
||||
"actions": [],
|
||||
"allow_rename": 1,
|
||||
"creation": "2025-11-01 11:29:38.327158",
|
||||
"doctype": "DocType",
|
||||
"engine": "InnoDB",
|
||||
"field_order": [
|
||||
"enabled",
|
||||
"event",
|
||||
"label",
|
||||
"fieldname",
|
||||
"mandatory",
|
||||
"placeholder",
|
||||
"default_value",
|
||||
"column_break_fpgn",
|
||||
"applied_to",
|
||||
"custom_form_doctype",
|
||||
"offline_payment_method",
|
||||
"fieldtype",
|
||||
"options",
|
||||
"order"
|
||||
],
|
||||
"fields": [
|
||||
{
|
||||
"fieldname": "event",
|
||||
"fieldtype": "Link",
|
||||
"in_list_view": 1,
|
||||
"in_standard_filter": 1,
|
||||
"label": "Event",
|
||||
"options": "Pohodex Event Manager Event",
|
||||
"reqd": 1
|
||||
},
|
||||
{
|
||||
"fieldname": "column_break_fpgn",
|
||||
"fieldtype": "Column Break"
|
||||
},
|
||||
{
|
||||
"fieldname": "label",
|
||||
"fieldtype": "Data",
|
||||
"in_list_view": 1,
|
||||
"label": "Label",
|
||||
"reqd": 1
|
||||
},
|
||||
{
|
||||
"fieldname": "fieldname",
|
||||
"fieldtype": "Data",
|
||||
"label": "Name"
|
||||
},
|
||||
{
|
||||
"default": "Data",
|
||||
"fieldname": "fieldtype",
|
||||
"fieldtype": "Select",
|
||||
"in_list_view": 1,
|
||||
"label": "Type",
|
||||
"options": "Data\nCheck\nSmall Text\nPhone\nEmail\nSelect\nDate\nNumber\nMulti Select\nRating\nAttach\nAttach Image",
|
||||
"reqd": 1
|
||||
},
|
||||
{
|
||||
"fieldname": "options",
|
||||
"fieldtype": "Small Text",
|
||||
"label": "Options"
|
||||
},
|
||||
{
|
||||
"default": "1",
|
||||
"fieldname": "enabled",
|
||||
"fieldtype": "Check",
|
||||
"label": "Enabled?"
|
||||
},
|
||||
{
|
||||
"default": "0",
|
||||
"fieldname": "mandatory",
|
||||
"fieldtype": "Check",
|
||||
"label": "Mandatory?"
|
||||
},
|
||||
{
|
||||
"fieldname": "placeholder",
|
||||
"fieldtype": "Data",
|
||||
"label": "Placeholder"
|
||||
},
|
||||
{
|
||||
"default": "1",
|
||||
"fieldname": "order",
|
||||
"fieldtype": "Int",
|
||||
"label": "Order",
|
||||
"non_negative": 1
|
||||
},
|
||||
{
|
||||
"fieldname": "default_value",
|
||||
"fieldtype": "Data",
|
||||
"label": "Default Value"
|
||||
},
|
||||
{
|
||||
"default": "Booking",
|
||||
"fieldname": "applied_to",
|
||||
"fieldtype": "Select",
|
||||
"label": "Applied To",
|
||||
"options": "Booking\nTicket\nOffline Payment Form\nCustom Form"
|
||||
},
|
||||
{
|
||||
"depends_on": "eval:doc.applied_to === 'Custom Form'",
|
||||
"fieldname": "custom_form_doctype",
|
||||
"fieldtype": "Link",
|
||||
"label": "Custom Form DocType",
|
||||
"mandatory_depends_on": "eval:doc.applied_to === 'Custom Form'",
|
||||
"options": "DocType"
|
||||
},
|
||||
{
|
||||
"depends_on": "eval:doc.applied_to === 'Offline Payment Form'",
|
||||
"fieldname": "offline_payment_method",
|
||||
"fieldtype": "Link",
|
||||
"label": "Offline Payment Method",
|
||||
"mandatory_depends_on": "eval:doc.applied_to === 'Offline Payment Form'",
|
||||
"options": "Offline Payment Method"
|
||||
}
|
||||
],
|
||||
"grid_page_length": 50,
|
||||
"index_web_pages_for_search": 1,
|
||||
"links": [],
|
||||
"modified": "2026-02-06 15:26:27.195623",
|
||||
"modified_by": "Administrator",
|
||||
"module": "Pohodex Event Manager",
|
||||
"name": "Pohodex Event Manager Custom Field",
|
||||
"owner": "Administrator",
|
||||
"permissions": [
|
||||
{
|
||||
"create": 1,
|
||||
"delete": 1,
|
||||
"email": 1,
|
||||
"export": 1,
|
||||
"print": 1,
|
||||
"read": 1,
|
||||
"report": 1,
|
||||
"role": "System Manager",
|
||||
"share": 1,
|
||||
"write": 1
|
||||
}
|
||||
],
|
||||
"row_format": "Dynamic",
|
||||
"rows_threshold_for_grid_search": 20,
|
||||
"sort_field": "creation",
|
||||
"sort_order": "DESC",
|
||||
"states": [],
|
||||
"title_field": "label"
|
||||
}
|
||||
@@ -0,0 +1,72 @@
|
||||
# Copyright (c) 2025, BWH Studios and contributors
|
||||
# For license information, please see license.txt
|
||||
|
||||
import frappe
|
||||
from frappe import _
|
||||
from frappe.model.document import Document
|
||||
|
||||
|
||||
class BuzzCustomField(Document):
|
||||
# begin: auto-generated types
|
||||
# This code is auto-generated. Do not modify anything in this block.
|
||||
|
||||
from typing import TYPE_CHECKING
|
||||
|
||||
if TYPE_CHECKING:
|
||||
from frappe.types import DF
|
||||
|
||||
applied_to: DF.Literal["Booking", "Ticket", "Offline Payment Form"]
|
||||
default_value: DF.Data | None
|
||||
enabled: DF.Check
|
||||
event: DF.Link
|
||||
fieldname: DF.Data | None
|
||||
fieldtype: DF.Literal[
|
||||
"Data", "Check", "Small Text", "Phone", "Email", "Select", "Date", "Number", "Multi Select"
|
||||
]
|
||||
label: DF.Data
|
||||
mandatory: DF.Check
|
||||
options: DF.SmallText | None
|
||||
order: DF.Int
|
||||
placeholder: DF.Data | None
|
||||
# end: auto-generated types
|
||||
|
||||
def validate(self):
|
||||
if not self.fieldname:
|
||||
self.fieldname = frappe.scrub(self.label)
|
||||
|
||||
def on_update(self):
|
||||
if self.applied_to == "Custom Form" and self.custom_form_doctype:
|
||||
self.create_additional_fields_if_missing()
|
||||
|
||||
def create_additional_fields_if_missing(self):
|
||||
meta = frappe.get_meta(self.custom_form_doctype)
|
||||
|
||||
if meta.has_field("additional_fields"):
|
||||
return
|
||||
|
||||
frappe.get_doc(
|
||||
{
|
||||
"doctype": "Custom Field",
|
||||
"dt": self.custom_form_doctype,
|
||||
"fieldname": "section_break_additional",
|
||||
"label": "Additional Fields",
|
||||
"fieldtype": "Section Break",
|
||||
}
|
||||
).insert(ignore_permissions=True)
|
||||
|
||||
frappe.get_doc(
|
||||
{
|
||||
"doctype": "Custom Field",
|
||||
"dt": self.custom_form_doctype,
|
||||
"fieldname": "additional_fields",
|
||||
"label": "Additional Fields",
|
||||
"fieldtype": "Table",
|
||||
"options": "Additional Field",
|
||||
"insert_after": "section_break_additional",
|
||||
}
|
||||
).insert(ignore_permissions=True)
|
||||
|
||||
frappe.msgprint(
|
||||
_("Added 'Additional Fields' table to {0}").format(self.custom_form_doctype),
|
||||
alert=True,
|
||||
)
|
||||
@@ -0,0 +1,20 @@
|
||||
# Copyright (c) 2025, BWH Studios and Contributors
|
||||
# See license.txt
|
||||
|
||||
# import frappe
|
||||
from frappe.tests import IntegrationTestCase
|
||||
|
||||
# On IntegrationTestCase, the doctype test records and all
|
||||
# link-field test record dependencies are recursively loaded
|
||||
# Use these module variables to add/remove to/from that list
|
||||
EXTRA_TEST_RECORD_DEPENDENCIES = [] # eg. ["User"]
|
||||
IGNORE_TEST_RECORD_DEPENDENCIES = [] # eg. ["User"]
|
||||
|
||||
|
||||
class IntegrationTestBuzzCustomField(IntegrationTestCase):
|
||||
"""
|
||||
Integration tests for BuzzCustomField.
|
||||
Use this class for testing interactions between multiple components.
|
||||
"""
|
||||
|
||||
pass
|
||||
@@ -0,0 +1,3 @@
|
||||
frappe.ready(function () {
|
||||
// bind events here
|
||||
});
|
||||
@@ -0,0 +1,135 @@
|
||||
{
|
||||
"accept_payment": 0,
|
||||
"allow_comments": 0,
|
||||
"allow_delete": 0,
|
||||
"allow_edit": 0,
|
||||
"allow_incomplete": 0,
|
||||
"allow_multiple": 1,
|
||||
"allow_print": 0,
|
||||
"amount": 0.0,
|
||||
"amount_based_on_field": 0,
|
||||
"anonymous": 0,
|
||||
"apply_document_permissions": 0,
|
||||
"button_label": "Submit",
|
||||
"condition_json": "[]",
|
||||
"creation": "2025-10-09 18:53:54.552643",
|
||||
"currency": "INR",
|
||||
"doc_type": "Sponsorship Enquiry",
|
||||
"docstatus": 0,
|
||||
"doctype": "Web Form",
|
||||
"hide_footer": 1,
|
||||
"hide_navbar": 1,
|
||||
"idx": 0,
|
||||
"is_standard": 1,
|
||||
"list_columns": [],
|
||||
"login_required": 1,
|
||||
"max_attachment_size": 5,
|
||||
"modified": "2025-10-30 16:52:36.708858",
|
||||
"modified_by": "Administrator",
|
||||
"module": "Pohodex Event Manager",
|
||||
"name": "apply-for-sponsorship",
|
||||
"owner": "Administrator",
|
||||
"payment_button_label": "Buy Now",
|
||||
"published": 1,
|
||||
"route": "apply-for-sponsorship",
|
||||
"show_attachments": 0,
|
||||
"show_list": 1,
|
||||
"show_sidebar": 0,
|
||||
"success_url": "/dashboard/account/sponsorships",
|
||||
"title": "Apply for Sponsorship",
|
||||
"web_form_fields": [
|
||||
{
|
||||
"allow_read_on_all_link_options": 1,
|
||||
"fieldname": "event",
|
||||
"fieldtype": "Link",
|
||||
"hidden": 0,
|
||||
"label": "Event",
|
||||
"max_length": 0,
|
||||
"max_value": 0,
|
||||
"options": "Pohodex Event Manager Event",
|
||||
"precision": "",
|
||||
"read_only": 0,
|
||||
"reqd": 1,
|
||||
"show_in_filter": 0
|
||||
},
|
||||
{
|
||||
"allow_read_on_all_link_options": 0,
|
||||
"fieldname": "company_name",
|
||||
"fieldtype": "Data",
|
||||
"hidden": 0,
|
||||
"label": "Company Name",
|
||||
"max_length": 0,
|
||||
"max_value": 0,
|
||||
"precision": "",
|
||||
"read_only": 0,
|
||||
"reqd": 1,
|
||||
"show_in_filter": 0
|
||||
},
|
||||
{
|
||||
"allow_read_on_all_link_options": 0,
|
||||
"fieldname": "company_logo",
|
||||
"fieldtype": "Attach Image",
|
||||
"hidden": 0,
|
||||
"label": "Company Logo",
|
||||
"max_length": 0,
|
||||
"max_value": 0,
|
||||
"precision": "",
|
||||
"read_only": 0,
|
||||
"reqd": 1,
|
||||
"show_in_filter": 0
|
||||
},
|
||||
{
|
||||
"allow_read_on_all_link_options": 0,
|
||||
"fieldname": "column_break_fhgg",
|
||||
"fieldtype": "Column Break",
|
||||
"hidden": 0,
|
||||
"max_length": 0,
|
||||
"max_value": 0,
|
||||
"precision": "",
|
||||
"read_only": 0,
|
||||
"reqd": 0,
|
||||
"show_in_filter": 0
|
||||
},
|
||||
{
|
||||
"allow_read_on_all_link_options": 0,
|
||||
"fieldname": "website",
|
||||
"fieldtype": "Data",
|
||||
"hidden": 0,
|
||||
"label": "Website",
|
||||
"max_length": 0,
|
||||
"max_value": 0,
|
||||
"options": "URL",
|
||||
"precision": "",
|
||||
"read_only": 0,
|
||||
"reqd": 1,
|
||||
"show_in_filter": 0
|
||||
},
|
||||
{
|
||||
"allow_read_on_all_link_options": 1,
|
||||
"fieldname": "country",
|
||||
"fieldtype": "Link",
|
||||
"hidden": 0,
|
||||
"label": "Country",
|
||||
"max_length": 0,
|
||||
"max_value": 0,
|
||||
"options": "Country",
|
||||
"precision": "",
|
||||
"read_only": 0,
|
||||
"reqd": 1,
|
||||
"show_in_filter": 0
|
||||
},
|
||||
{
|
||||
"allow_read_on_all_link_options": 0,
|
||||
"fieldname": "phone",
|
||||
"fieldtype": "Phone",
|
||||
"hidden": 0,
|
||||
"label": "Phone Number",
|
||||
"max_length": 0,
|
||||
"max_value": 0,
|
||||
"precision": "",
|
||||
"read_only": 0,
|
||||
"reqd": 1,
|
||||
"show_in_filter": 0
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
import frappe
|
||||
|
||||
|
||||
def get_context(context):
|
||||
# do your magic here
|
||||
pass
|
||||
@@ -0,0 +1,3 @@
|
||||
frappe.ready(function () {
|
||||
// bind events here
|
||||
});
|
||||
@@ -0,0 +1,133 @@
|
||||
{
|
||||
"accept_payment": 0,
|
||||
"allow_comments": 0,
|
||||
"allow_delete": 1,
|
||||
"allow_edit": 0,
|
||||
"allow_incomplete": 0,
|
||||
"allow_multiple": 1,
|
||||
"allow_print": 0,
|
||||
"amount": 0.0,
|
||||
"amount_based_on_field": 0,
|
||||
"anonymous": 0,
|
||||
"apply_document_permissions": 0,
|
||||
"button_label": "Submit",
|
||||
"condition_json": "[]",
|
||||
"creation": "2025-10-09 18:57:22.187906",
|
||||
"currency": "INR",
|
||||
"doc_type": "Talk Proposal",
|
||||
"docstatus": 0,
|
||||
"doctype": "Web Form",
|
||||
"hide_footer": 1,
|
||||
"hide_navbar": 1,
|
||||
"idx": 0,
|
||||
"introduction_text": "<div class=\"ql-editor read-mode\"><p>Apply for giving a talk at the event.</p></div>",
|
||||
"is_standard": 1,
|
||||
"list_columns": [],
|
||||
"login_required": 1,
|
||||
"max_attachment_size": 0,
|
||||
"modified": "2025-10-28 17:42:31.607629",
|
||||
"modified_by": "Administrator",
|
||||
"module": "Pohodex Event Manager",
|
||||
"name": "propose-a-talk",
|
||||
"owner": "Administrator",
|
||||
"payment_button_label": "Buy Now",
|
||||
"published": 1,
|
||||
"route": "propose-a-talk",
|
||||
"show_attachments": 0,
|
||||
"show_list": 1,
|
||||
"show_sidebar": 0,
|
||||
"title": "Propose a Talk",
|
||||
"web_form_fields": [
|
||||
{
|
||||
"allow_read_on_all_link_options": 0,
|
||||
"fieldname": "title",
|
||||
"fieldtype": "Data",
|
||||
"hidden": 0,
|
||||
"label": "Title of your talk",
|
||||
"max_length": 0,
|
||||
"max_value": 0,
|
||||
"precision": "",
|
||||
"read_only": 0,
|
||||
"reqd": 1,
|
||||
"show_in_filter": 0
|
||||
},
|
||||
{
|
||||
"allow_read_on_all_link_options": 0,
|
||||
"fieldname": "column_break_esac",
|
||||
"fieldtype": "Column Break",
|
||||
"hidden": 0,
|
||||
"max_length": 0,
|
||||
"max_value": 0,
|
||||
"precision": "",
|
||||
"read_only": 0,
|
||||
"reqd": 0,
|
||||
"show_in_filter": 0
|
||||
},
|
||||
{
|
||||
"allow_read_on_all_link_options": 1,
|
||||
"fieldname": "event",
|
||||
"fieldtype": "Link",
|
||||
"hidden": 0,
|
||||
"label": "Event",
|
||||
"max_length": 0,
|
||||
"max_value": 0,
|
||||
"options": "Pohodex Event Manager Event",
|
||||
"precision": "",
|
||||
"read_only": 0,
|
||||
"reqd": 1,
|
||||
"show_in_filter": 0
|
||||
},
|
||||
{
|
||||
"allow_read_on_all_link_options": 0,
|
||||
"fieldname": "section_break_yqfb",
|
||||
"fieldtype": "Section Break",
|
||||
"hidden": 0,
|
||||
"max_length": 0,
|
||||
"max_value": 0,
|
||||
"precision": "",
|
||||
"read_only": 0,
|
||||
"reqd": 0,
|
||||
"show_in_filter": 0
|
||||
},
|
||||
{
|
||||
"allow_read_on_all_link_options": 0,
|
||||
"fieldname": "description",
|
||||
"fieldtype": "Text Editor",
|
||||
"hidden": 0,
|
||||
"label": "Description",
|
||||
"max_length": 0,
|
||||
"max_value": 0,
|
||||
"precision": "",
|
||||
"read_only": 0,
|
||||
"reqd": 0,
|
||||
"show_in_filter": 0
|
||||
},
|
||||
{
|
||||
"allow_read_on_all_link_options": 0,
|
||||
"fieldname": "speakers",
|
||||
"fieldtype": "Table",
|
||||
"hidden": 0,
|
||||
"label": "Speakers",
|
||||
"max_length": 0,
|
||||
"max_value": 0,
|
||||
"options": "Proposal Speaker",
|
||||
"precision": "",
|
||||
"read_only": 0,
|
||||
"reqd": 0,
|
||||
"show_in_filter": 0
|
||||
},
|
||||
{
|
||||
"allow_read_on_all_link_options": 0,
|
||||
"fieldname": "phone",
|
||||
"fieldtype": "Phone",
|
||||
"hidden": 0,
|
||||
"label": "Phone Number",
|
||||
"max_length": 0,
|
||||
"max_value": 0,
|
||||
"precision": "",
|
||||
"read_only": 0,
|
||||
"reqd": 0,
|
||||
"show_in_filter": 0
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
import frappe
|
||||
|
||||
|
||||
def get_context(context):
|
||||
# do your magic here
|
||||
pass
|
||||
@@ -0,0 +1,29 @@
|
||||
{
|
||||
"app": "Pohodex Event Manager",
|
||||
"charts": [],
|
||||
"content": "[]",
|
||||
"creation": "2026-03-05 19:10:56.484378",
|
||||
"custom_blocks": [],
|
||||
"docstatus": 0,
|
||||
"doctype": "Workspace",
|
||||
"hide_custom": 0,
|
||||
"idx": 0,
|
||||
"indicator_color": "green",
|
||||
"is_hidden": 0,
|
||||
"label": "Pohodex Event Manager",
|
||||
"link_type": "DocType",
|
||||
"links": [],
|
||||
"modified": "2026-03-05 19:24:18.378896",
|
||||
"modified_by": "Administrator",
|
||||
"module": "Pohodex Event Manager",
|
||||
"name": "Pohodex Event Manager",
|
||||
"number_cards": [],
|
||||
"owner": "Administrator",
|
||||
"public": 1,
|
||||
"quick_lists": [],
|
||||
"roles": [],
|
||||
"sequence_id": 0.0,
|
||||
"shortcuts": [],
|
||||
"title": "Pohodex Event Manager",
|
||||
"type": "Workspace"
|
||||
}
|
||||
Reference in New Issue
Block a user