134 lines
7.0 KiB
Python
134 lines
7.0 KiB
Python
#!/usr/bin/env python3
|
|
"""
|
|
PDF Field Mapping
|
|
|
|
This module provides a mapping of PDF fields to their corresponding keys in the application data.
|
|
"""
|
|
|
|
_PLACEHOLDER_VALUES: set = {None, "", "-", "JJJJ-MM", "/\\Fld@default "}
|
|
|
|
# --- COMMON fields (shared across variants) ---
|
|
TEXT_MAPPING_COMMON: dict = {
|
|
# Applicant
|
|
'pa-applicant-type': {
|
|
'required': True,
|
|
'target-key': 'pa.applicant.type',
|
|
'type': 'enum',
|
|
'values': [('person', 'Person'), ('institution', 'Institution')]
|
|
},
|
|
'pa-institution-type': {
|
|
'required': True,
|
|
'target-key': 'pa.applicant.institution.type',
|
|
'type': 'enum',
|
|
'values': [
|
|
('-', '-'),
|
|
('stud-fs', 'Fachschaft'),
|
|
('stud-rf', 'STUPA-Referat'),
|
|
('stud-hg', 'Studentische Hochschulgruppe'),
|
|
('faculty', 'Fakultät'),
|
|
('hs-institution', 'Hochschuleinrichtung'),
|
|
]
|
|
},
|
|
'pa-institution': {'required': True, 'target-key': 'pa.applicant.institution.name', 'type': str},
|
|
'pa-first-name': {'required': True, 'target-key': 'pa.applicant.name.first'},
|
|
'pa-last-name': {'required': True, 'target-key': 'pa.applicant.name.last'},
|
|
'pa-email': {'required': True, 'target-key': 'pa.applicant.contact.email'},
|
|
'pa-phone': {'required': False, 'target-key': 'pa.applicant.contact.phone'},
|
|
|
|
'pa-course': {
|
|
'required': True,
|
|
'target-key': 'pa.applicant.course',
|
|
'type': 'enum',
|
|
'values': [('-', '-'), ('INF', 'INF'), ('ESB', 'ESB'), ('LS', 'LS'), ('TEC', 'TEC'), ('TEX', 'TEX'), ('NXT', 'NXT')]
|
|
},
|
|
'pa-role': {
|
|
'required': True,
|
|
'target-key': 'pa.applicant.role',
|
|
'type': 'enum',
|
|
'values': [
|
|
('-', '-'),
|
|
('Student', 'Student'),
|
|
('Professor', 'Professor'),
|
|
('Mitarbeiter', 'Mitarbeiter'),
|
|
('ASTA', 'ASTA'),
|
|
('Referatsleitung', 'Referatsleitung'),
|
|
('Fachschaftsvorstand', 'Fachschaftsvorstand'),
|
|
]
|
|
},
|
|
|
|
# Project core
|
|
'pa-project-name': {'required': True, 'target-key': 'pa.project.name', 'type': str},
|
|
'pa-start-date': {'required': True, 'target-key': 'pa.project.dates.start', 'type': str},
|
|
'pa-end-date': {'required': False, 'target-key': 'pa.project.dates.end', 'type': str},
|
|
'pa-participants': {'required': False, 'target-key': 'pa.project.participants', 'type': int},
|
|
'pa-project-description': {'required': True, 'target-key': 'pa.project.description', 'type': str},
|
|
|
|
# Participation (checkboxes)
|
|
'pa-participating-faculties-inf': {'required': False, 'target-key': 'pa.project.participation.faculties.inf', 'type': bool},
|
|
'pa-participating-faculties-esb': {'required': False, 'target-key': 'pa.project.participation.faculties.esb', 'type': bool},
|
|
'pa-participating-faculties-ls': {'required': False, 'target-key': 'pa.project.participation.faculties.ls', 'type': bool},
|
|
'pa-participating-faculties-tec': {'required': False, 'target-key': 'pa.project.participation.faculties.tec', 'type': bool},
|
|
'pa-participating-faculties-tex': {'required': False, 'target-key': 'pa.project.participation.faculties.tex', 'type': bool},
|
|
'pa-participating-faculties-nxt': {'required': False, 'target-key': 'pa.project.participation.faculties.nxt', 'type': bool},
|
|
'pa-participating-faculties-open': {'required': False, 'target-key': 'pa.project.participation.faculties.open', 'type': bool},
|
|
|
|
# Costs & totals
|
|
'pa-cost-{a;1:24}-name': {'required': True, 'target-key': 'pa.project.costs[{a}].name', 'type': str},
|
|
'pa-cost-{a;1:24}-amount-euro': {'required': True, 'target-key': 'pa.project.costs[{a}].amountEur', 'type': float},
|
|
'pa-requested-amount-euro-sum': {'required': True, 'target-key': 'pa.project.totals.requestedAmountEur', 'type': float},
|
|
|
|
# Attachments common
|
|
'pa-anh-vergleichsangebote': {'required': False, 'target-key': 'pa.attachments.comparativeOffers', 'type': bool},
|
|
|
|
# Misc
|
|
'warning-not-supported': {'required': False, 'target-key': 'warning.notSupported', 'type': str},
|
|
}
|
|
|
|
# --- QSM-specific fields (second variant) ---
|
|
TEXT_MAPPING_QSM = {
|
|
'pa-qsm-financing': {
|
|
'required': True,
|
|
'target-key': 'pa.project.financing.qsm.code',
|
|
'type': 'enum',
|
|
'values': [
|
|
('vwv-3-2-1-1', 'Finanzierung zusätzlicher Lehr- und Seminarangebote'),
|
|
('vwv-3-2-1-2', 'Fachspezifische Studienprojekte'),
|
|
('vwv-3-2-1-3', 'Hochschuldidaktische Fort- und Weiterbildungsmaßnahmen'),
|
|
('vwv-3-2-2-1', 'Verbesserung/Ausbau von Serviceeinrichtungen sowie Infrastruktur'),
|
|
('vwv-3-2-2-2', 'Lehr- und Lernmaterialien'),
|
|
('vwv-3-2-2-3', 'Durchführung von Exkursionen'),
|
|
('vwv-3-2-2-4', 'Finanzierung von infrastrukturellen Begleit- und Anpassungsmaßnahmen'),
|
|
('vwv-3-2-3-1', 'Verbesserung der Beratungsangebote für Studierende'),
|
|
('vwv-3-2-3-2', 'Studium Generale und fachübergreifende Lehrangebote'),
|
|
('vwv-3-2-3-3', 'Sonstige Maßnahmen im Interesse der Studierendenschaft'),
|
|
]
|
|
},
|
|
'pa-qsm-stellenfinanzierungen': {'required': False, 'target-key': 'pa.project.financing.qsm.flags.stellenfinanzierungen', 'type': bool},
|
|
'pa-qsm-studierende': {'required': False, 'target-key': 'pa.project.financing.qsm.flags.studierende', 'type': bool},
|
|
'pa-qsm-individuell': {'required': False, 'target-key': 'pa.project.financing.qsm.flags.individuell', 'type': bool},
|
|
'pa-qsm-exkursion-genehmigt': {'required': False, 'target-key': 'pa.project.financing.qsm.flags.exkursionGenehmigt', 'type': bool},
|
|
'pa-qsm-exkursion-bezuschusst': {'required': False, 'target-key': 'pa.project.financing.qsm.flags.exkursionBezuschusst', 'type': bool},
|
|
'pa-anh-fakultaet': {'required': False, 'target-key': 'pa.attachments.fakultaet', 'type': bool},
|
|
}
|
|
|
|
# --- VSM-specific fields (first variant; include for completeness) ---
|
|
TEXT_MAPPING_VSM = {
|
|
'pa-vsm-financing': {
|
|
'required': True,
|
|
'target-key': 'pa.project.financing.vsm.code',
|
|
'type': 'enum',
|
|
'values': [
|
|
('-', '-'),
|
|
('lhg-01', 'Hochschulpolitische, fachliche, soziale, wirtschaftliche und kulturelle Belange'),
|
|
('lhg-02', 'Mitwirkung an den Aufgaben der Hochschulen nach den §§ 2 bis 7'),
|
|
('lhg-03', 'Politische Bildung'),
|
|
('lhg-04', 'Förderung der Chancengleichheit und Abbau von Benachteiligungen'),
|
|
('lhg-05', 'Förderung der Integration ausländischer Studierender'),
|
|
('lhg-06', 'Förderung der sportlichen Aktivitäten'),
|
|
('lhg-07', 'Pflege der überregionalen Studierendenbeziehungen'),
|
|
]
|
|
},
|
|
'pa-vsm-aufgaben': {'required': False, 'target-key': 'pa.project.financing.vsm.flags.aufgaben', 'type': bool},
|
|
'pa-vsm-individuell': {'required': False, 'target-key': 'pa.project.financing.vsm.flags.individuell', 'type': bool},
|
|
}
|