From e0fe83377f195cfde2222631d044c725fa6ca073 Mon Sep 17 00:00:00 2001 From: Horilla Date: Tue, 15 Oct 2024 14:14:48 +0530 Subject: [PATCH] [UPDT] BASE: Updated load data function by adding additional json file to load data --- base/views.py | 2 + .../templates/documents/document_nav.html | 20 -- .../templates/employee/employees_select.html | 2 +- load_data/offboarding_data.json | 241 ++++++++++++++++++ load_data/onboarding_data.json | 108 ++++++++ load_data/payroll_data.json | 105 ++++++++ load_data/recruitment_data.json | 226 ++++++++++++++++ load_data/test_data.json | 3 + payroll/models/models.py | 26 +- .../pipeline_components/kanban_tabs.html | 188 -------------- .../survey/view_question_templates.html | 48 ++-- recruitment/urls.py | 2 +- 12 files changed, 725 insertions(+), 246 deletions(-) create mode 100644 load_data/offboarding_data.json create mode 100644 load_data/onboarding_data.json create mode 100644 load_data/test_data.json delete mode 100644 recruitment/templates/pipeline/pipeline_components/kanban_tabs.html diff --git a/base/views.py b/base/views.py index fb27c54d2..e7d68b9a6 100644 --- a/base/views.py +++ b/base/views.py @@ -230,6 +230,8 @@ def load_demo_database(request): "leave": "leave_data.json", "asset": "asset_data.json", "recruitment": "recruitment_data.json", + "onboarding": "onboarding_data.json", + "offboarding": "offboarding_data.json", "pms": "pms_data.json", "payroll": "payroll_data.json", } diff --git a/employee/templates/documents/document_nav.html b/employee/templates/documents/document_nav.html index e6d2c98dd..d229e24b9 100644 --- a/employee/templates/documents/document_nav.html +++ b/employee/templates/documents/document_nav.html @@ -236,26 +236,6 @@ - -
{{ employee.1 }} -{% endfor %} \ No newline at end of file +{% endfor %} diff --git a/load_data/offboarding_data.json b/load_data/offboarding_data.json new file mode 100644 index 000000000..101c88da8 --- /dev/null +++ b/load_data/offboarding_data.json @@ -0,0 +1,241 @@ +[ + { + "model": "offboarding.offboarding", + "pk": 1, + "fields": { + "created_at": "2024-10-15T03:07:52.493Z", + "created_by": 1, + "modified_by": 1, + "is_active": true, + "title": "Offboarding 2024", + "description": "Offboarding pipeline 2024", + "status": "ongoing", + "company_id": null, + "managers": [1] + } + }, + { + "model": "offboarding.offboarding", + "pk": 2, + "fields": { + "created_at": "2024-10-15T03:10:52.493Z", + "created_by": 1, + "modified_by": 1, + "is_active": true, + "title": "Offboarding 2025", + "description": "Offboarding pipeline 2025", + "status": "ongoing", + "company_id": null, + "managers": [1] + } + }, + { + "model": "offboarding.offboardingstage", + "pk": 1, + "fields": { + "created_at": "2024-10-15T03:07:52.499Z", + "created_by": 1, + "modified_by": 1, + "is_active": true, + "title": "Notice Period", + "type": "notice_period", + "offboarding_id": 1, + "sequence": 0, + "managers": [] + } + }, + { + "model": "offboarding.offboardingstage", + "pk": 2, + "fields": { + "created_at": "2024-10-15T03:07:52.517Z", + "created_by": 1, + "modified_by": 1, + "is_active": true, + "title": "Exit interview", + "type": "interview", + "offboarding_id": 1, + "sequence": 0, + "managers": [] + } + }, + { + "model": "offboarding.offboardingstage", + "pk": 3, + "fields": { + "created_at": "2024-10-15T03:07:52.527Z", + "created_by": 1, + "modified_by": 1, + "is_active": true, + "title": "Work Handover", + "type": "handover", + "offboarding_id": 1, + "sequence": 0, + "managers": [] + } + }, + { + "model": "offboarding.offboardingstage", + "pk": 4, + "fields": { + "created_at": "2024-10-15T03:07:52.537Z", + "created_by": 1, + "modified_by": 1, + "is_active": true, + "title": "FNF", + "type": "fnf", + "offboarding_id": 1, + "sequence": 0, + "managers": [] + } + }, + { + "model": "offboarding.offboardingstage", + "pk": 5, + "fields": { + "created_at": "2024-10-15T03:07:52.547Z", + "created_by": 1, + "modified_by": 1, + "is_active": true, + "title": "Farewell", + "type": "other", + "offboarding_id": 1, + "sequence": 0, + "managers": [] + } + }, + { + "model": "offboarding.offboardingstage", + "pk": 6, + "fields": { + "created_at": "2024-10-15T03:07:52.556Z", + "created_by": 1, + "modified_by": 1, + "is_active": true, + "title": "Archived", + "type": "archived", + "offboarding_id": 1, + "sequence": 0, + "managers": [] + } + }, + { + "model": "offboarding.offboardingstage", + "pk": 8, + "fields": { + "created_at": "2024-10-15T03:07:52.517Z", + "created_by": 1, + "modified_by": 1, + "is_active": true, + "title": "Exit interview", + "type": "interview", + "offboarding_id": 2, + "sequence": 0, + "managers": [] + } + }, + { + "model": "offboarding.offboardingstage", + "pk": 9, + "fields": { + "created_at": "2024-10-15T03:07:52.527Z", + "created_by": 1, + "modified_by": 1, + "is_active": true, + "title": "Work Handover", + "type": "handover", + "offboarding_id": 2, + "sequence": 0, + "managers": [] + } + }, + { + "model": "offboarding.offboardingstage", + "pk": 10, + "fields": { + "created_at": "2024-10-15T03:07:52.537Z", + "created_by": 1, + "modified_by": 1, + "is_active": true, + "title": "FNF", + "type": "fnf", + "offboarding_id": 2, + "sequence": 0, + "managers": [] + } + }, + { + "model": "offboarding.offboardingstage", + "pk": 11, + "fields": { + "created_at": "2024-10-15T03:07:52.547Z", + "created_by": 1, + "modified_by": 1, + "is_active": true, + "title": "Farewell", + "type": "other", + "offboarding_id": 2, + "sequence": 0, + "managers": [] + } + }, + { + "model": "offboarding.offboardingstage", + "pk": 12, + "fields": { + "created_at": "2024-10-15T03:07:52.556Z", + "created_by": 1, + "modified_by": 1, + "is_active": true, + "title": "Archived", + "type": "archived", + "offboarding_id": 2, + "sequence": 0, + "managers": [] + } + }, + { + "model": "offboarding.resignationletter", + "pk": 1, + "fields": { + "created_at": "2024-10-15T03:45:33.566Z", + "created_by": 13, + "modified_by": 13, + "is_active": true, + "employee_id": 12, + "title": "Resignation", + "description": "

After much consideration, I have decided to pursue a new opportunity that aligns with my career goals and personal aspirations. Working at Horilla has been an incredibly rewarding experience, and I deeply appreciate the support, guidance, and opportunities for growth provided by the company and my colleagues.

I am committed to ensuring a smooth transition and will do my best to complete my ongoing tasks and assist in handing over responsibilities. Please let me know how I can support the transition process.

I want to express my gratitude to the entire team at Horilla for the collaboration, learning, and support throughout my time here. I will cherish the experience and the relationships I have built.

Thank you once again for the opportunity to be a part of Horilla, and I wish the company continued success in the future.

", + "planned_to_leave_on": "2024-10-31", + "status": "requested", + "offboarding_employee_id": null + } + }, + { + "model": "offboarding.resignationletter", + "pk": 2, + "fields": { + "created_at": "2024-10-15T03:46:37.925Z", + "created_by": 29, + "modified_by": 29, + "is_active": true, + "employee_id": 28, + "title": "Resignation Letter", + "description": "

This was not an easy decision, but after careful thought, I believe it is the right time for me to explore new professional challenges. My time at Horilla has been an enriching journey, and I am truly grateful for the opportunities I have had to contribute and grow, both professionally and personally.

I will do my best to ensure a smooth transition and am happy to assist in handing over my current projects or training a replacement if necessary. Please feel free to guide me on how I can assist during this period.

Thank you once again for the support and for allowing me to be part of such a fantastic team. I wish Horilla continued growth and success, and I look forward to staying connected in the future.

", + "planned_to_leave_on": "2024-10-30", + "status": "requested", + "offboarding_employee_id": null + } + }, + { + "model": "offboarding.offboardinggeneralsetting", + "pk": 1, + "fields": { + "created_at": "2024-10-15T03:43:33.290Z", + "created_by": 1, + "modified_by": 1, + "is_active": true, + "resignation_request": true, + "company_id": null + } + } +] diff --git a/load_data/onboarding_data.json b/load_data/onboarding_data.json new file mode 100644 index 000000000..e481e05c1 --- /dev/null +++ b/load_data/onboarding_data.json @@ -0,0 +1,108 @@ +[ + { + "model": "onboarding.onboardingstage", + "pk": 1, + "fields": { + "created_at": "2024-10-15T04:25:05.927Z", + "created_by": null, + "modified_by": 1, + "is_active": true, + "stage_title": "Initial", + "recruitment_id": 1, + "sequence": 1, + "is_final_stage": false, + "employee_id": [] + } + }, + { + "model": "onboarding.onboardingstage", + "pk": 2, + "fields": { + "created_at": "2024-10-15T04:25:05.946Z", + "created_by": null, + "modified_by": null, + "is_active": true, + "stage_title": "Initial", + "recruitment_id": 2, + "sequence": 0, + "is_final_stage": false, + "employee_id": [] + } + }, + { + "model": "onboarding.onboardingstage", + "pk": 3, + "fields": { + "created_at": "2024-10-15T04:25:05.959Z", + "created_by": null, + "modified_by": null, + "is_active": true, + "stage_title": "Initial", + "recruitment_id": 3, + "sequence": 0, + "is_final_stage": false, + "employee_id": [] + } + }, + { + "model": "onboarding.onboardingstage", + "pk": 4, + "fields": { + "created_at": "2024-10-15T04:27:30.582Z", + "created_by": 1, + "modified_by": 1, + "is_active": true, + "stage_title": "Introduction & Orientation", + "recruitment_id": 1, + "sequence": 2, + "is_final_stage": false, + "employee_id": [12] + } + }, + { + "model": "onboarding.onboardingstage", + "pk": 5, + "fields": { + "created_at": "2024-10-15T04:27:47.767Z", + "created_by": 1, + "modified_by": 1, + "is_active": true, + "stage_title": "Technical Setup", + "recruitment_id": 1, + "sequence": 3, + "is_final_stage": false, + "employee_id": [37] + } + }, + { + "model": "onboarding.onboardingstage", + "pk": 6, + "fields": { + "created_at": "2024-10-15T04:28:04.122Z", + "created_by": 1, + "modified_by": 1, + "is_active": true, + "stage_title": "Training & Knowledge Transfer", + "recruitment_id": 1, + "sequence": 4, + "is_final_stage": false, + "employee_id": [13] + } + }, + { + "model": "onboarding.onboardingstage", + "pk": 7, + "fields": { + "created_at": "2024-10-15T04:28:32.569Z", + "created_by": 1, + "modified_by": 1, + "is_active": true, + "stage_title": "First Task Assignment", + "recruitment_id": 1, + "sequence": 5, + "is_final_stage": true, + "employee_id": [13] + } + } + ] + \ No newline at end of file diff --git a/load_data/payroll_data.json b/load_data/payroll_data.json index 91d9e88a9..dc828a75c 100644 --- a/load_data/payroll_data.json +++ b/load_data/payroll_data.json @@ -1515,5 +1515,110 @@ "max_income": Infinity, "tax_rate": 37.0 } + }, + { + "model": "payroll.reimbursement", + "pk": 1, + "fields": { + "created_at": "2024-09-21T08:42:06.139Z", + "created_by": 1, + "modified_by": 1, + "is_active": true, + "title": "Reimbursment For Travel", + "type": "reimbursement", + "employee_id": 11, + "allowance_on": "2024-09-01", + "attachment": "payroll/reimbursements/Passport_yHUaQ2e.pdf", + "ad_to_encash": 0.0, + "cfd_to_encash": 0.0, + "bonus_to_encash": 0, + "amount": 2000.0, + "status": "requested", + "description": "Request for travels amount reimbursment" + } + }, + { + "model": "payroll.reimbursement", + "pk": 2, + "fields": { + "created_at": "2024-10-15T04:38:48.945Z", + "created_by": 1, + "modified_by": 1, + "is_active": true, + "title": "Transportation Cost", + "type": "reimbursement", + "employee_id": 28, + "allowance_on": "2024-10-17", + "attachment": "payroll/reimbursements/Multiple_Approvals_1Q5Ce9r.png", + "ad_to_encash": 0.0, + "cfd_to_encash": 0.0, + "bonus_to_encash": 0, + "amount": 100.0, + "status": "requested", + "description": "Transportation cost for client meeting (taxi fare to and from office to clientÆs location)." + } + }, + { + "model": "payroll.reimbursement", + "pk": 3, + "fields": { + "created_at": "2024-10-15T04:39:28.342Z", + "created_by": 1, + "modified_by": 1, + "is_active": true, + "title": "Conference registratio", + "type": "reimbursement", + "employee_id": 19, + "allowance_on": "2024-10-18", + "attachment": "payroll/reimbursements/Cosec_TgVWkpp.png", + "ad_to_encash": 0.0, + "cfd_to_encash": 0.0, + "bonus_to_encash": 0, + "amount": 1200.0, + "status": "requested", + "description": "Conference registration fee for DjangoCon 2024 (online workshop)." + } + }, + { + "model": "payroll.reimbursement", + "pk": 4, + "fields": { + "created_at": "2024-10-15T04:39:56.670Z", + "created_by": 1, + "modified_by": 1, + "is_active": true, + "title": "Lunch with client", + "type": "reimbursement", + "employee_id": 22, + "allowance_on": "2024-10-15", + "attachment": "payroll/reimbursements/Mutliple_Approval_Form_gcX4pnl.png", + "ad_to_encash": 0.0, + "cfd_to_encash": 0.0, + "bonus_to_encash": 0, + "amount": 300.0, + "status": "requested", + "description": "Lunch with client (meal expenses incurred during project discussion with ABC Corp)." + } + }, + { + "model": "payroll.reimbursement", + "pk": 5, + "fields": { + "created_at": "2024-10-15T04:40:31.350Z", + "created_by": 1, + "modified_by": 1, + "is_active": true, + "title": "Software license", + "type": "reimbursement", + "employee_id": 19, + "allowance_on": "2024-10-15", + "attachment": "payroll/reimbursements/Horilla_2_PLf7NkW.png", + "ad_to_encash": 0.0, + "cfd_to_encash": 0.0, + "bonus_to_encash": 0, + "amount": 2500.0, + "status": "requested", + "description": "Software license for Sublime Text (1-year subscription for team development)." + } } ] diff --git a/load_data/recruitment_data.json b/load_data/recruitment_data.json index 5ad314b3d..4494e942b 100644 --- a/load_data/recruitment_data.json +++ b/load_data/recruitment_data.json @@ -937,6 +937,34 @@ "company_id": 1 } }, + { + "model": "recruitment.surveytemplate", + "pk": 2, + "fields": { + "created_at": "2024-10-15T04:08:07.657Z", + "created_by": 1, + "modified_by": 1, + "is_active": true, + "title": "Odoo Developer Template", + "description": "For an Odoo developer interview exam, here are some types of questions that can be asked using the provided", + "is_general_template": false, + "company_id": 1 + } + }, + { + "model": "recruitment.surveytemplate", + "pk": 3, + "fields": { + "created_at": "2024-10-15T04:13:08.737Z", + "created_by": 1, + "modified_by": 1, + "is_active": true, + "title": "Django Developer Template", + "description": "Here are some types of questions you can ask in a Django developer interview exam.", + "is_general_template": false, + "company_id": 1 + } + }, { "model": "recruitment.recruitmentsurvey", "pk": 1, @@ -972,5 +1000,203 @@ "recruitment_ids": [1], "job_position_ids": [] } + }, + { + "model": "recruitment.recruitmentsurvey", + "pk": 3, + "fields": { + "created_at": "2024-10-15T04:08:37.429Z", + "created_by": 1, + "modified_by": 1, + "is_active": true, + "is_mandatory": true, + "question": "Have you worked with Odoo's ORM before ?", + "sequence": 0, + "type": "checkbox", + "options": "", + "template_id": [2], + "recruitment_ids": [1], + "job_position_ids": [] + } + }, + { + "model": "recruitment.recruitmentsurvey", + "pk": 4, + "fields": { + "created_at": "2024-10-15T04:09:33.102Z", + "created_by": 1, + "modified_by": 1, + "is_active": true, + "is_mandatory": true, + "question": "Which Odoo module have you worked on the most?", + "sequence": 0, + "type": "options", + "options": "Sales, Inventory, Accounting, Human Resources", + "template_id": [2], + "recruitment_ids": [1], + "job_position_ids": [] + } + }, + { + "model": "recruitment.recruitmentsurvey", + "pk": 5, + "fields": { + "created_at": "2024-10-15T04:10:25.767Z", + "created_by": 1, + "modified_by": 1, + "is_active": true, + "is_mandatory": true, + "question": "Which of the following are key features of OdooÆs ORM?", + "sequence": 0, + "type": "multiple", + "options": "Data modeling, SQL query generation, Form building, Workflow automation", + "template_id": [2], + "recruitment_ids": [1], + "job_position_ids": [] + } + }, + { + "model": "recruitment.recruitmentsurvey", + "pk": 6, + "fields": { + "created_at": "2024-10-15T04:10:47.869Z", + "created_by": 1, + "modified_by": 1, + "is_active": true, + "is_mandatory": false, + "question": "Explain how you would customize an Odoo report for a client.", + "sequence": 0, + "type": "text", + "options": "", + "template_id": [2], + "recruitment_ids": [1], + "job_position_ids": [] + } + }, + { + "model": "recruitment.recruitmentsurvey", + "pk": 7, + "fields": { + "created_at": "2024-10-15T04:11:01.784Z", + "created_by": 1, + "modified_by": 1, + "is_active": true, + "is_mandatory": false, + "question": "How many years of experience do you have working with Odoo?", + "sequence": 0, + "type": "number", + "options": "", + "template_id": [2], + "recruitment_ids": [1], + "job_position_ids": [] + } + }, + { + "model": "recruitment.recruitmentsurvey", + "pk": 8, + "fields": { + "created_at": "2024-10-15T04:11:20.757Z", + "created_by": 1, + "modified_by": 1, + "is_active": true, + "is_mandatory": false, + "question": "Estimate your proficiency with Python in relation to Odoo development (0-100%).", + "sequence": 0, + "type": "percentage", + "options": "", + "template_id": [2], + "recruitment_ids": [1], + "job_position_ids": [] + } + }, + { + "model": "recruitment.recruitmentsurvey", + "pk": 9, + "fields": { + "created_at": "2024-10-15T04:11:41.456Z", + "created_by": 1, + "modified_by": 1, + "is_active": true, + "is_mandatory": true, + "question": "Rate your experience in using Odoo Studio on a scale of 1 to 5.", + "sequence": 0, + "type": "rating", + "options": "", + "template_id": [2], + "recruitment_ids": [1], + "job_position_ids": [] + } + }, + { + "model": "recruitment.recruitmentsurvey", + "pk": 10, + "fields": { + "created_at": "2024-10-15T04:13:39.132Z", + "created_by": 1, + "modified_by": 1, + "is_active": true, + "is_mandatory": true, + "question": "Have you implemented class-based views (CBVs) in Django?", + "sequence": 0, + "type": "checkbox", + "options": "", + "template_id": [3], + "recruitment_ids": [2], + "job_position_ids": [] + } + }, + { + "model": "recruitment.recruitmentsurvey", + "pk": 11, + "fields": { + "created_at": "2024-10-15T04:14:26.896Z", + "created_by": 1, + "modified_by": 1, + "is_active": true, + "is_mandatory": true, + "question": "Which ORM-related tasks have you most frequently used in Django?", + "sequence": 0, + "type": "options", + "options": "Writing custom queries, Query optimization, Database migrations, Managing relations between models", + "template_id": [3], + "recruitment_ids": [2], + "job_position_ids": [] + } + }, + { + "model": "recruitment.recruitmentsurvey", + "pk": 12, + "fields": { + "created_at": "2024-10-15T04:15:18.850Z", + "created_by": 1, + "modified_by": 1, + "is_active": true, + "is_mandatory": true, + "question": "Which of the following are key components of Django's architecture ?", + "sequence": 0, + "type": "options", + "options": "Views, Models, Controllers, Templates", + "template_id": [3], + "recruitment_ids": [2], + "job_position_ids": [] + } + }, + { + "model": "recruitment.recruitmentsurvey", + "pk": 13, + "fields": { + "created_at": "2024-10-15T04:15:35.442Z", + "created_by": 1, + "modified_by": 1, + "is_active": true, + "is_mandatory": false, + "question": "How do you handle user authentication in a Django project?", + "sequence": 0, + "type": "text", + "options": "", + "template_id": [3], + "recruitment_ids": [2], + "job_position_ids": [] + } } ] diff --git a/load_data/test_data.json b/load_data/test_data.json new file mode 100644 index 000000000..3c5c1916a --- /dev/null +++ b/load_data/test_data.json @@ -0,0 +1,3 @@ +[ + +] diff --git a/payroll/models/models.py b/payroll/models/models.py index cc9d95ca7..1912ed4eb 100644 --- a/payroll/models/models.py +++ b/payroll/models/models.py @@ -1678,17 +1678,17 @@ class Reimbursement(HorillaModel): """ reimbursement_types = [ - ("reimbursement", "Reimbursement"), - ("bonus_encashment", "Bonus Point Encashment"), + ("reimbursement", _("Reimbursement")), + ("bonus_encashment", _("Bonus Point Encashment")), ] if apps.is_installed("leave"): - reimbursement_types.append(("leave_encashment", "Leave Encashment")) + reimbursement_types.append(("leave_encashment", _("Leave Encashment"))) status_types = [ - ("requested", "Requested"), - ("approved", "Approved"), - ("rejected", "Rejected"), + ("requested", _("Requested")), + ("approved", _("Approved")), + ("rejected", _("Rejected")), ] title = models.CharField(max_length=50) type = models.CharField( @@ -1708,20 +1708,22 @@ class Reimbursement(HorillaModel): on_delete=models.PROTECT, blank=True, null=True, - verbose_name="Leave type", + verbose_name=_("Leave type"), ) ad_to_encash = models.FloatField( - default=0, help_text="Available Days to encash", verbose_name="Available days" + default=0, + help_text=_("Available Days to encash"), + verbose_name=_("Available days"), ) cfd_to_encash = models.FloatField( default=0, - help_text="Carry Forward Days to encash", - verbose_name="Carry forward days", + help_text=_("Carry Forward Days to encash"), + verbose_name=_("Carry forward days"), ) bonus_to_encash = models.IntegerField( default=0, - help_text="Bonus points to encash", - verbose_name="Bonus points", + help_text=_("Bonus points to encash"), + verbose_name=_("Bonus points"), ) amount = models.FloatField(default=0) status = models.CharField( diff --git a/recruitment/templates/pipeline/pipeline_components/kanban_tabs.html b/recruitment/templates/pipeline/pipeline_components/kanban_tabs.html deleted file mode 100644 index 637a3a218..000000000 --- a/recruitment/templates/pipeline/pipeline_components/kanban_tabs.html +++ /dev/null @@ -1,188 +0,0 @@ -{% load i18n %} -{% include 'pipeline/pipeline_tab.html' %} -{% if messages %} -
- {% for message in messages %} -
-
- {{ message }} -
-
- {% endfor %} -
-{% endif %} -{% for rec in recruitment %} -
-
-
- {% for stage in rec.stage_set.all|dictsort:"sequence" %} -
-
-
- - {{stage.active_candidates.all|length}} - {{stage}} -
-
-
- - - -
-
- {% csrf_token %} -
- - {{candidate_form.name}} -
-
- - {{candidate_form.email}} -
-
- - {{candidate_form.mobile}} -
-
- - {{candidate_form.resume}} -
-
- - {{candidate_form.profile}} -
- - - -
-
-
- -
-
- -
- - {% for cand in stage.active_candidates.all %} -
-
-
-
- -
- {{cand}} -
- -
- -
- {% endfor %} -
-
- - {% endfor %} - - - -
- {% include 'pipeline/form/stage_drop_down_form.html' %} - -
- -
-
-
-{% endfor %} diff --git a/recruitment/templates/survey/view_question_templates.html b/recruitment/templates/survey/view_question_templates.html index be99b32d0..6aeeec4c7 100644 --- a/recruitment/templates/survey/view_question_templates.html +++ b/recruitment/templates/survey/view_question_templates.html @@ -34,7 +34,8 @@

{% comment %} {% trans "Update Survey Template" %} {% endcomment %}

-
@@ -92,34 +93,33 @@
  • {% trans "Templates" %} {% if perms.recruitment.add_recruitmentsurvey %} - + {% endif %}
  • {% trans "Questions" %} {% if perms.recruitment.add_recruitmentsurvey %} - + {% endif %}
  • diff --git a/recruitment/urls.py b/recruitment/urls.py index 9da1689c6..89884e7af 100644 --- a/recruitment/urls.py +++ b/recruitment/urls.py @@ -339,7 +339,7 @@ urlpatterns = [ name="recruitment-application-survey", ), path( - "recruitment-survey-question-template-view", + "recruitment-survey-question-template-view/", recruitment.views.surveys.view_question_template, name="recruitment-survey-question-template-view", ),