diff --git a/README.md b/README.md index 5953cb8..57e18b4 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ ### Lukenya Marathon -Activity Management System +Activity Management Sytem ### Installation diff --git a/lukenya_marathon/hooks.py b/lukenya_marathon/hooks.py index cc8cac7..87a849a 100644 --- a/lukenya_marathon/hooks.py +++ b/lukenya_marathon/hooks.py @@ -1,8 +1,8 @@ app_name = "lukenya_marathon" app_title = "Lukenya Marathon" app_publisher = "Digital Chances" -app_description = "Activity Management System" -app_email = "Josephnjuki@digitalchances.co.ke" +app_description = "Activity Management Sytem" +app_email = "josephnjuki@digitalchances.co.ke" app_license = "mit" # Apps diff --git a/lukenya_marathon/lukenya_marathon/doctype/__init__.py b/lukenya_marathon/lukenya_marathon/doctype/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/lukenya_marathon/lukenya_marathon/doctype/event_edition/__init__.py b/lukenya_marathon/lukenya_marathon/doctype/event_edition/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/lukenya_marathon/lukenya_marathon/doctype/event_edition/event_edition.json b/lukenya_marathon/lukenya_marathon/doctype/event_edition/event_edition.json new file mode 100644 index 0000000..6113220 --- /dev/null +++ b/lukenya_marathon/lukenya_marathon/doctype/event_edition/event_edition.json @@ -0,0 +1,108 @@ +{ + "actions": [], + "allow_rename": 1, + "autoname": "field:edition_code", + "doctype": "DocType", + "editable_grid": 1, + "engine": "InnoDB", + "field_order": [ + "edition_code", + "edition_name", + "event_date", + "registration_open", + "registration_close", + "status", + "venue", + "county", + "description", + "registration_capacity", + "trees_commitment_per_entry" + ], + "fields": [ + { + "fieldname": "edition_code", + "fieldtype": "Data", + "label": "Edition Code", + "reqd": 1, + "unique": 1 + }, + { + "fieldname": "edition_name", + "fieldtype": "Data", + "label": "Edition Name", + "reqd": 1 + }, + { + "fieldname": "event_date", + "fieldtype": "Date", + "label": "Event Date", + "reqd": 1 + }, + { + "fieldname": "registration_open", + "fieldtype": "Datetime", + "label": "Registration Open" + }, + { + "fieldname": "registration_close", + "fieldtype": "Datetime", + "label": "Registration Close" + }, + { + "default": "Draft", + "fieldname": "status", + "fieldtype": "Select", + "label": "Status", + "options": "Draft\nOpen\nClosed\nCompleted\nCancelled", + "reqd": 1 + }, + { + "fieldname": "venue", + "fieldtype": "Data", + "label": "Venue", + "reqd": 1 + }, + { + "fieldname": "county", + "fieldtype": "Data", + "label": "County" + }, + { + "fieldname": "description", + "fieldtype": "Text Editor", + "label": "Public Description" + }, + { + "fieldname": "registration_capacity", + "fieldtype": "Int", + "label": "Registration Capacity" + }, + { + "default": "1", + "fieldname": "trees_commitment_per_entry", + "fieldtype": "Int", + "label": "Trees per Eligible Entry", + "reqd": 1 + } + ], + "links": [], + "module": "Lukenya Marathon", + "name": "Event Edition", + "permissions": [ + { + "create": 1, + "delete": 1, + "email": 1, + "export": 1, + "print": 1, + "read": 1, + "report": 1, + "role": "System Manager", + "share": 1, + "write": 1 + } + ], + "sort_field": "modified", + "sort_order": "DESC", + "track_changes": 1 +} diff --git a/lukenya_marathon/lukenya_marathon/doctype/participant/__init__.py b/lukenya_marathon/lukenya_marathon/doctype/participant/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/lukenya_marathon/lukenya_marathon/doctype/participant/participant.json b/lukenya_marathon/lukenya_marathon/doctype/participant/participant.json new file mode 100644 index 0000000..cc15b8a --- /dev/null +++ b/lukenya_marathon/lukenya_marathon/doctype/participant/participant.json @@ -0,0 +1,133 @@ +{ + "actions": [], + "allow_rename": 1, + "autoname": "field:participant_code", + "doctype": "DocType", + "editable_grid": 1, + "engine": "InnoDB", + "field_order": [ + "participant_code", + "first_name", + "last_name", + "id_number", + "date_of_birth", + "gender", + "nationality", + "email", + "phone", + "whatsapp", + "shirt_size", + "emergency_contact_name", + "emergency_contact_phone", + "medical_notes", + "communication_consent" + ], + "fields": [ + { + "fieldname": "participant_code", + "fieldtype": "Data", + "label": "Participant Code", + "reqd": 1, + "unique": 1 + }, + { + "fieldname": "first_name", + "fieldtype": "Data", + "label": "First Name", + "reqd": 1 + }, + { + "fieldname": "last_name", + "fieldtype": "Data", + "label": "Last Name", + "reqd": 1 + }, + { + "fieldname": "id_number", + "fieldtype": "Data", + "label": "ID / Passport Number", + "unique": 1 + }, + { + "fieldname": "date_of_birth", + "fieldtype": "Date", + "label": "Date of Birth" + }, + { + "fieldname": "gender", + "fieldtype": "Select", + "label": "Gender", + "options": "Male\nFemale\nOther\nPrefer not to say" + }, + { + "default": "Kenya", + "fieldname": "nationality", + "fieldtype": "Data", + "label": "Nationality" + }, + { + "fieldname": "email", + "fieldtype": "Data", + "label": "Email", + "options": "Email" + }, + { + "fieldname": "phone", + "fieldtype": "Data", + "label": "Phone", + "reqd": 1 + }, + { + "fieldname": "whatsapp", + "fieldtype": "Data", + "label": "WhatsApp" + }, + { + "fieldname": "shirt_size", + "fieldtype": "Select", + "label": "Shirt Size", + "options": "XS\nS\nM\nL\nXL\nXXL" + }, + { + "fieldname": "emergency_contact_name", + "fieldtype": "Data", + "label": "Emergency Contact Name" + }, + { + "fieldname": "emergency_contact_phone", + "fieldtype": "Data", + "label": "Emergency Contact Phone" + }, + { + "fieldname": "medical_notes", + "fieldtype": "Small Text", + "label": "Medical / Accessibility Notes", + "permlevel": 1 + }, + { + "fieldname": "communication_consent", + "fieldtype": "Check", + "label": "Communication Consent" + } + ], + "links": [], + "module": "Lukenya Marathon", + "name": "Participant", + "permissions": [ + { + "create": 1, + "delete": 1, + "email": 1, + "export": 1, + "print": 1, + "read": 1, + "report": 1, + "role": "System Manager", + "share": 1, + "write": 1 + } + ], + "sort_field": "modified", + "sort_order": "DESC", + "track_changes": 1 +} diff --git a/lukenya_marathon/lukenya_marathon/doctype/race_category/__init__.py b/lukenya_marathon/lukenya_marathon/doctype/race_category/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/lukenya_marathon/lukenya_marathon/doctype/race_category/race_category.json b/lukenya_marathon/lukenya_marathon/doctype/race_category/race_category.json new file mode 100644 index 0000000..7ef2c9f --- /dev/null +++ b/lukenya_marathon/lukenya_marathon/doctype/race_category/race_category.json @@ -0,0 +1,132 @@ +{ + "actions": [], + "allow_rename": 1, + "autoname": "field:category_code", + "doctype": "DocType", + "editable_grid": 1, + "engine": "InnoDB", + "field_order": [ + "category_code", + "category_name", + "event_edition", + "discipline", + "distance_km", + "start_time", + "cutoff_hours", + "eligibility", + "kenyan_price", + "non_resident_price", + "early_bird_price", + "capacity", + "active", + "prize_eligible", + "inclusions" + ], + "fields": [ + { + "fieldname": "category_code", + "fieldtype": "Data", + "label": "Category Code", + "reqd": 1, + "unique": 1 + }, + { + "fieldname": "category_name", + "fieldtype": "Data", + "label": "Category Name", + "reqd": 1 + }, + { + "fieldname": "event_edition", + "fieldtype": "Link", + "label": "Event Edition", + "options": "Event Edition", + "reqd": 1 + }, + { + "default": "Running", + "fieldname": "discipline", + "fieldtype": "Select", + "label": "Discipline", + "options": "Running\nCycling\nVirtual\nRelay", + "reqd": 1 + }, + { + "fieldname": "distance_km", + "fieldtype": "Float", + "label": "Distance (KM)" + }, + { + "fieldname": "start_time", + "fieldtype": "Time", + "label": "Start Time" + }, + { + "fieldname": "cutoff_hours", + "fieldtype": "Float", + "label": "Cut-off (Hours)" + }, + { + "fieldname": "eligibility", + "fieldtype": "Small Text", + "label": "Eligibility Rules" + }, + { + "fieldname": "kenyan_price", + "fieldtype": "Currency", + "label": "Kenyan Price", + "reqd": 1 + }, + { + "fieldname": "non_resident_price", + "fieldtype": "Currency", + "label": "Non-resident Price" + }, + { + "fieldname": "early_bird_price", + "fieldtype": "Currency", + "label": "Early Bird Price" + }, + { + "fieldname": "capacity", + "fieldtype": "Int", + "label": "Capacity" + }, + { + "default": "1", + "fieldname": "active", + "fieldtype": "Check", + "label": "Active" + }, + { + "fieldname": "prize_eligible", + "fieldtype": "Check", + "label": "Prize Eligible" + }, + { + "fieldname": "inclusions", + "fieldtype": "Small Text", + "label": "Inclusions" + } + ], + "links": [], + "module": "Lukenya Marathon", + "name": "Race Category", + "permissions": [ + { + "create": 1, + "delete": 1, + "email": 1, + "export": 1, + "print": 1, + "read": 1, + "report": 1, + "role": "System Manager", + "share": 1, + "write": 1 + } + ], + "sort_field": "modified", + "sort_order": "DESC", + "track_changes": 1 +} diff --git a/lukenya_marathon/lukenya_marathon/doctype/registration/__init__.py b/lukenya_marathon/lukenya_marathon/doctype/registration/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/lukenya_marathon/lukenya_marathon/doctype/registration/registration.json b/lukenya_marathon/lukenya_marathon/doctype/registration/registration.json new file mode 100644 index 0000000..429483d --- /dev/null +++ b/lukenya_marathon/lukenya_marathon/doctype/registration/registration.json @@ -0,0 +1,151 @@ +{ + "actions": [], + "allow_rename": 0, + "autoname": "format:REG-{####}", + "doctype": "DocType", + "editable_grid": 1, + "engine": "InnoDB", + "field_order": [ + "participant", + "event_edition", + "race_category", + "registration_status", + "registration_date", + "price_tier", + "amount_due", + "payment_status", + "payment_reference", + "bib_number", + "chip_number", + "race_pack_status", + "check_in_status", + "indemnity_accepted", + "consent_timestamp", + "transfer_notes" + ], + "fields": [ + { + "fieldname": "participant", + "fieldtype": "Link", + "label": "Participant", + "options": "Participant", + "reqd": 1 + }, + { + "fieldname": "event_edition", + "fieldtype": "Link", + "label": "Event Edition", + "options": "Event Edition", + "reqd": 1 + }, + { + "fieldname": "race_category", + "fieldtype": "Link", + "label": "Race Category", + "options": "Race Category", + "reqd": 1 + }, + { + "default": "Pending", + "fieldname": "registration_status", + "fieldtype": "Select", + "label": "Registration Status", + "options": "Pending\nConfirmed\nCancelled\nTransferred\nRefunded\nCompleted", + "reqd": 1 + }, + { + "fieldname": "registration_date", + "fieldtype": "Datetime", + "label": "Registration Date", + "default": "Now" + }, + { + "default": "Standard", + "fieldname": "price_tier", + "fieldtype": "Select", + "label": "Price Tier", + "options": "Early Bird\nStandard\nNon-resident\nCorporate\nComplimentary" + }, + { + "fieldname": "amount_due", + "fieldtype": "Currency", + "label": "Amount Due", + "reqd": 1 + }, + { + "default": "Unpaid", + "fieldname": "payment_status", + "fieldtype": "Select", + "label": "Payment Status", + "options": "Unpaid\nPending\nPaid\nFailed\nPartially Paid\nRefunded", + "reqd": 1 + }, + { + "fieldname": "payment_reference", + "fieldtype": "Data", + "label": "Payment Reference" + }, + { + "fieldname": "bib_number", + "fieldtype": "Data", + "label": "Bib Number", + "unique": 1 + }, + { + "fieldname": "chip_number", + "fieldtype": "Data", + "label": "Chip Number", + "unique": 1 + }, + { + "default": "Not Issued", + "fieldname": "race_pack_status", + "fieldtype": "Select", + "label": "Race Pack Status", + "options": "Not Issued\nReady\nIssued\nCollected\nUncollected" + }, + { + "default": "Not Checked In", + "fieldname": "check_in_status", + "fieldtype": "Select", + "label": "Check-in Status", + "options": "Not Checked In\nChecked In\nDid Not Start\nFinished" + }, + { + "fieldname": "indemnity_accepted", + "fieldtype": "Check", + "label": "Indemnity Accepted", + "reqd": 1 + }, + { + "fieldname": "consent_timestamp", + "fieldtype": "Datetime", + "label": "Consent Timestamp" + }, + { + "fieldname": "transfer_notes", + "fieldtype": "Small Text", + "label": "Transfer / Admin Notes" + } + ], + "links": [], + "module": "Lukenya Marathon", + "name": "Registration", + "permissions": [ + { + "create": 1, + "delete": 1, + "email": 1, + "export": 1, + "print": 1, + "read": 1, + "report": 1, + "role": "System Manager", + "share": 1, + "write": 1 + } + ], + "sort_field": "modified", + "sort_order": "DESC", + "track_changes": 1 +} diff --git a/pyproject.toml b/pyproject.toml index 234121f..0028c91 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,9 +1,9 @@ [project] name = "lukenya_marathon" authors = [ - { name = "Digital Chances", email = "Josephnjuki@digitalchances.co.ke"} + { name = "Digital Chances", email = "josephnjuki@digitalchances.co.ke"} ] -description = "Activity Management System" +description = "Activity Management Sytem" requires-python = ">=3.10" readme = "README.md" dynamic = ["version"]