snapshot: split form builder config and runtime responsibilities
This commit is contained in:
117
backend/workflows/form_builder_config.py
Normal file
117
backend/workflows/form_builder_config.py
Normal file
@@ -0,0 +1,117 @@
|
||||
from django.utils.translation import gettext_lazy as _
|
||||
|
||||
DEFAULT_FIELD_ORDER = {
|
||||
'onboarding': [
|
||||
'first_name', 'last_name', 'full_name', 'gender', 'job_title', 'department', 'work_email',
|
||||
'order_business_cards', 'business_card_name', 'business_card_title', 'business_card_email', 'business_card_phone',
|
||||
'contract_start', 'employment_type', 'employment_end_date', 'handover_date',
|
||||
'group_mailboxes_required_choice', 'group_mailboxes', 'needed_devices_multi',
|
||||
'additional_hardware_needed_choice', 'additional_hardware_multi', 'additional_hardware_other',
|
||||
'needed_software_multi', 'additional_software_needed_choice', 'additional_software_multi', 'additional_software',
|
||||
'needed_accesses_multi', 'additional_access_needed_choice', 'additional_access_text',
|
||||
'needed_workspace_groups_multi', 'needed_resources_multi', 'successor_required_choice', 'successor_name',
|
||||
'inherit_phone_number_choice', 'phone_number_choice', 'additional_notes', 'signature_url', 'signature_image',
|
||||
'onboarded_by_email', 'agreement_confirm',
|
||||
],
|
||||
'offboarding': ['full_name', 'work_email', 'department', 'job_title', 'last_working_day', 'notes'],
|
||||
}
|
||||
|
||||
ONBOARDING_PAGE_ORDER = ['stammdaten', 'vertrag', 'itsetup', 'abschluss']
|
||||
OFFBOARDING_PAGE_ORDER = ['mitarbeitende', 'austritt', 'abschluss']
|
||||
ONBOARDING_PAGE_LABELS = {
|
||||
'stammdaten': _('1. Stammdaten'),
|
||||
'vertrag': _('2. Vertrag'),
|
||||
'itsetup': _('3. IT-Setup'),
|
||||
'abschluss': _('4. Abschluss'),
|
||||
}
|
||||
OFFBOARDING_PAGE_LABELS = {
|
||||
'mitarbeitende': _('1. Mitarbeitende'),
|
||||
'austritt': _('2. Austritt'),
|
||||
'abschluss': _('3. Abschluss'),
|
||||
}
|
||||
CORE_SECTION_LABELS = {'onboarding': ONBOARDING_PAGE_LABELS, 'offboarding': OFFBOARDING_PAGE_LABELS}
|
||||
|
||||
LOCKED_FIELD_RULES = {
|
||||
'onboarding': {'full_name', 'work_email', 'contract_start', 'agreement_confirm'},
|
||||
'offboarding': {'full_name', 'work_email', 'last_working_day'},
|
||||
}
|
||||
|
||||
LOCKED_SECTION_RULES = {
|
||||
'onboarding': {'stammdaten', 'vertrag', 'abschluss'},
|
||||
'offboarding': {'mitarbeitende', 'austritt'},
|
||||
}
|
||||
|
||||
ONBOARDING_DEFAULT_PAGE = {
|
||||
'first_name': 'stammdaten', 'last_name': 'stammdaten', 'full_name': 'stammdaten', 'gender': 'stammdaten',
|
||||
'job_title': 'stammdaten', 'department': 'stammdaten', 'work_email': 'stammdaten', 'order_business_cards': 'stammdaten',
|
||||
'business_card_name': 'stammdaten', 'business_card_title': 'stammdaten', 'business_card_email': 'stammdaten', 'business_card_phone': 'stammdaten',
|
||||
'contract_start': 'vertrag', 'employment_type': 'vertrag', 'employment_end_date': 'vertrag', 'handover_date': 'vertrag',
|
||||
'group_mailboxes_required_choice': 'vertrag', 'group_mailboxes': 'vertrag', 'needed_devices_multi': 'itsetup',
|
||||
'additional_hardware_needed_choice': 'itsetup', 'additional_hardware_multi': 'itsetup', 'additional_hardware_other': 'itsetup',
|
||||
'needed_software_multi': 'itsetup', 'additional_software_needed_choice': 'itsetup', 'additional_software_multi': 'itsetup', 'additional_software': 'itsetup',
|
||||
'needed_accesses_multi': 'itsetup', 'additional_access_needed_choice': 'itsetup', 'additional_access_text': 'itsetup',
|
||||
'needed_workspace_groups_multi': 'itsetup', 'needed_resources_multi': 'itsetup', 'successor_required_choice': 'itsetup',
|
||||
'successor_name': 'itsetup', 'inherit_phone_number_choice': 'itsetup', 'phone_number_choice': 'itsetup',
|
||||
'additional_notes': 'abschluss', 'signature_url': 'abschluss', 'signature_image': 'abschluss', 'onboarded_by_email': 'abschluss', 'agreement_confirm': 'abschluss',
|
||||
}
|
||||
OFFBOARDING_DEFAULT_PAGE = {
|
||||
'full_name': 'mitarbeitende', 'work_email': 'mitarbeitende', 'department': 'mitarbeitende', 'job_title': 'mitarbeitende',
|
||||
'last_working_day': 'austritt', 'notes': 'abschluss',
|
||||
}
|
||||
|
||||
DEFAULT_CONDITIONAL_RULES = {
|
||||
'onboarding': {
|
||||
'business-card-box': {'clauses': [{'field': 'order_business_cards', 'operator': 'checked', 'value': True}]},
|
||||
'employment-end-box': {'clauses': [{'field': 'employment_type', 'operator': 'equals', 'value': 'befristet'}]},
|
||||
'group-mailboxes-box': {'clauses': [{'field': 'group_mailboxes_required_choice', 'operator': 'equals', 'value': 'ja'}]},
|
||||
'extra-hardware-box': {'clauses': [{'field': 'additional_hardware_needed_choice', 'operator': 'equals', 'value': 'ja'}]},
|
||||
'extra-software-box': {'clauses': [{'field': 'additional_software_needed_choice', 'operator': 'equals', 'value': 'ja'}]},
|
||||
'extra-access-box': {'clauses': [{'field': 'additional_access_needed_choice', 'operator': 'equals', 'value': 'ja'}]},
|
||||
'successor-box': {'clauses': [{'field': 'successor_required_choice', 'operator': 'equals', 'value': 'ja'}]},
|
||||
},
|
||||
}
|
||||
|
||||
FORM_PRESETS = {
|
||||
'onboarding': {
|
||||
'standard': {'label': _('Standard'), 'sections': {'stammdaten': True, 'vertrag': True, 'itsetup': True, 'abschluss': True}, 'fields': {}},
|
||||
'lean': {
|
||||
'label': _('Lean'),
|
||||
'sections': {'stammdaten': True, 'vertrag': True, 'itsetup': False, 'abschluss': True},
|
||||
'fields': {
|
||||
'gender': {'is_visible': False}, 'order_business_cards': {'is_visible': False}, 'business_card_name': {'is_visible': False},
|
||||
'business_card_title': {'is_visible': False}, 'business_card_email': {'is_visible': False}, 'business_card_phone': {'is_visible': False},
|
||||
'employment_end_date': {'is_visible': False}, 'group_mailboxes_required_choice': {'is_visible': False}, 'group_mailboxes': {'is_visible': False},
|
||||
'additional_notes': {'is_required': False},
|
||||
},
|
||||
},
|
||||
'it_heavy': {
|
||||
'label': _('IT-heavy'),
|
||||
'sections': {'stammdaten': True, 'vertrag': True, 'itsetup': True, 'abschluss': True},
|
||||
'fields': {
|
||||
'needed_devices_multi': {'is_required': True}, 'needed_software_multi': {'is_required': True}, 'needed_accesses_multi': {'is_required': True},
|
||||
'needed_workspace_groups_multi': {'is_required': True}, 'needed_resources_multi': {'is_required': True},
|
||||
'additional_hardware_needed_choice': {'is_visible': True}, 'additional_software_needed_choice': {'is_visible': True},
|
||||
'additional_access_needed_choice': {'is_visible': True}, 'successor_required_choice': {'is_visible': True},
|
||||
},
|
||||
},
|
||||
},
|
||||
'offboarding': {
|
||||
'standard': {'label': _('Standard'), 'sections': {'mitarbeitende': True, 'austritt': True, 'abschluss': True}, 'fields': {}},
|
||||
'lean': {
|
||||
'label': _('Lean'),
|
||||
'sections': {'mitarbeitende': True, 'austritt': True, 'abschluss': False},
|
||||
'fields': {'department': {'is_visible': False}, 'job_title': {'is_visible': False}, 'notes': {'is_visible': False}},
|
||||
},
|
||||
'hr_heavy': {
|
||||
'label': _('HR-heavy'),
|
||||
'sections': {'mitarbeitende': True, 'austritt': True, 'abschluss': True},
|
||||
'fields': {
|
||||
'department': {'is_visible': True, 'is_required': True},
|
||||
'job_title': {'is_visible': True, 'is_required': True},
|
||||
'notes': {'is_visible': True, 'is_required': True},
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
CUSTOM_FIELD_PREFIX = 'custom__'
|
||||
Reference in New Issue
Block a user