From e71625b35138bfed8add1243587eb52e27c67278 Mon Sep 17 00:00:00 2001 From: Julian Hahn Date: Fri, 23 Jan 2026 16:44:52 +0100 Subject: [PATCH] Initial commit for veraenderung --- eintritt/settings.py | 2 +- veraenderung/forms.py | 48 ++++++++++++----- veraenderung/models.py | 22 ++++---- veraenderung/settings.py | 108 +++++++++++++++++++++++++-------------- 4 files changed, 117 insertions(+), 63 deletions(-) diff --git a/eintritt/settings.py b/eintritt/settings.py index 6f50c3d..7320369 100644 --- a/eintritt/settings.py +++ b/eintritt/settings.py @@ -14,7 +14,7 @@ MAILS = { 'IT': { 'MAIL': 'wmde-it@wikimedia.de', 'DATA': [ - 'laptop', 'os', 'comment', 'email', 'landline', 'lists', 'mobile', + 'vendor', 'os', 'comment', 'email', 'landline', 'lists', 'mobile', 'department', 'accounts', 'language', 'screen', 'works_in_gs', 'desk', 'keyboard', ], diff --git a/veraenderung/forms.py b/veraenderung/forms.py index 108dbc5..4177161 100644 --- a/veraenderung/forms.py +++ b/veraenderung/forms.py @@ -33,16 +33,16 @@ class PersonalForm(EvaForm): class WorkingForm(EvaForm): - def clean(self): - data = self.cleaned_data - if data['works_in_gs'] and data['desk'] is None: - raise ValidationError('Wer nicht remote arbeitet braucht einen Schreibtisch!') - return data +# def clean(self): +# data = self.cleaned_data +# if data['works_in_gs'] and data['desk'] is None: +# raise ValidationError('Wer nicht remote arbeitet braucht einen Schreibtisch!') +# return data class Meta: model = Employee - fields = ['firstdate_employment', 'firstdate_presence', 'jobdescription_german', - 'jobdescription_english', 'works_in_gs', 'desk',] + fields = ['firstdate_employment', 'jobdescription_german', + 'jobdescription_english',] widgets = {'firstdate_employment': DateInput(attrs={'type': 'date'}), 'firstdate_presence': DateInput(attrs={'type': 'date'}),} @@ -51,17 +51,41 @@ class ITForm(EvaForm): class Meta: model = Employee fields = [ - 'framework', 'os', 'keyboard', 'mobile', 'landline', - 'comment', 'language', 'accounts', 'lists', 'rebu2go' ] + 'laptop', + 'framework', + 'os', + 'keyboard', + 'mobile', + 'landline', + 'comment', + 'language', + 'accounts', + 'lists', + 'oldaccounts', + 'oldlists', + 'rebu2go' + ] class OfficeForm(EvaForm): class Meta: model = Employee - fields = ['transponder', 'special', 'post_office_box',] + fields = [ + 'transponder', + 'special', + 'post_office_box' + ] class ChangeForm(EvaForm): class Meta: model = Employee - fields = ['firstdate_employment', 'jobdescription_german', 'jobdescription_english', - 'desk', 'comment', 'accounts', 'lists', 'transponder'] + fields = [ + 'firstdate_employment', + 'jobdescription_german', + 'jobdescription_english', + 'desk', + 'comment', + 'accounts', + 'lists', + 'transponder' + ] widgets = {'firstdate_employment': DateInput(attrs={'type': 'date'}),} diff --git a/veraenderung/models.py b/veraenderung/models.py index c5614e7..4dd05bf 100644 --- a/veraenderung/models.py +++ b/veraenderung/models.py @@ -14,7 +14,7 @@ DEPARTMENT_CHOICES = {'COENG': _('Communitys & Engagement'), 'KOMAD': _('Kommunikation & Advocacy'), 'VOR': _('Vorstand'),} -#VENDOR_CHOICES = {'STANDARD': 'Dell Latitude', +#VENDOR_CHOICES = {'STANDARD': 'Framework', # 'LENOVO': 'Lenovo Thinkpad', # 'MAC': _('Mac (nur für Grafiker_innen)')} @@ -60,15 +60,12 @@ class Employee(models.Model): # general work related stuff firstdate_employment = models.DateField(null=True, verbose_name=_("Erster Arbeitstag")) - firstdate_presence = models.DateField(null=True, verbose_name=_("Erster Tag der Anwesenheit in der Geschäftsstelle")) - jobdescription_german = models.CharField(null=True, max_length=100, verbose_name="Stellenbezeichnung(deutsch)") - jobdescription_english = models.CharField(null=True, max_length=100, verbose_name="Job description(english)") - works_in_gs = models.BooleanField(verbose_name=_('Braucht Arbeitsplatz in der Geschäftsstelle?)'), default=True) - desk = models.CharField(max_length=100, null=True, blank=True, verbose_name=_("Wo soll der Arbeitsplatz sein?")) + jobdescription_german = models.CharField(null=True, max_length=100, verbose_name="Neue Stellenbezeichnung(deutsch)") + jobdescription_english = models.CharField(null=True, max_length=100, verbose_name="New Job description(english)") # IT related stuff - #vendor = models.CharField(max_length=8, choices=VENDOR_CHOICES.items(), default='STANDARD', verbose_name=_('Hersteller')) - framework = models.CharField(max_length=300, null=True, blank=True, verbose_name=_("Möchten Sie vom Standard des Frameworks (Laptop) abweichen, und wenn ja, warum?")) + laptop = models.CharField(max_length=8, choices=JANEIN_CHOICES.items(), default='NEIN', verbose_name=_('Wird ein neuer Laptop gebraucht?')) + framework = models.CharField(max_length=300, null=True, blank=True, verbose_name=_("Wenn ja, soll er vom Standard des Frameworks (Laptop) abweichen, und wenn ja, warum?")) os = models.CharField(max_length=3, choices=OS_CHOICES.items(), default='FED', verbose_name=_('Betriebssystem')) #screen = models.BooleanField(default=False, verbose_name=_('Zusätzlicher Monitor? Einer ist standard.')) mobile = models.BooleanField(max_length=6, default=False, verbose_name=_('Diensttelefon (Handy)')) @@ -76,12 +73,15 @@ class Employee(models.Model): # sim = models.BooleanField(default=False, verbose_name="Mobilfunkvertrag") keyboard = models.CharField(max_length=2, choices=KEYBOARD_CHOICES.items(), default='DE', verbose_name=_("Tastaturlayout")) comment = models.TextField(max_length=500, null=True, blank=True, verbose_name=_("zusätzliche IT-Anforderungen")) + onboarding = models.CharField(max_length=8, choices=JANEIN_CHOICES.items(), default='NEIN', verbose_name=_('Wird wieder ein Onboarding gebraucht?')) language = models.CharField(max_length=3, choices=LANG_CHOICES.items(), default="GER", verbose_name=_("Sprache für Onboarding")) - accounts = MultiSelectField(choices=ACCOUNT_CHOICES.items(), max_length=40, null=True, blank=True, verbose_name=_("Zusätzliche Accounts")) - lists = models.CharField(max_length=100, null=True, blank=True, verbose_name=_("Zusätzliche Mailinglisten")) + accounts = models.TextField(max_length=500, null=True, blank=True, verbose_name=_("Zusätzliche benötigte neue Zugänge")) + lists = models.CharField(max_length=100, null=True, blank=True, verbose_name=_("Zusätzliche neue Mailinglisten")) + oldaccounts = models.TextField(max_length=500, null=True, blank=True, verbose_name=_("Nicht mehr benötigte alte Zugänge")) + oldlists = models.CharField(max_length=100, null=True, blank=True, verbose_name=_("Nicht mehr benötigte Mailinglisten")) rebu2go = models.BooleanField(verbose_name=_("Rebu2Go-Zugang benötigt?"), default=False) # office related stuff transponder = models.CharField(max_length=7, choices=TRANSPONDER_CHOICES.items(), default='NORM') - special = models.TextField(max_length=500, null=True, blank=True, verbose_name=_("Besondere Schließungen hier eintragen")) + special = models.TextField(max_length=500, null=True, blank=True, verbose_name=_("Besondere Schließungen hier eintragen (auch bereits vergebene)")) post_office_box = models.BooleanField(default=True, verbose_name=_('Postfach am Empfang benötigt?')) diff --git a/veraenderung/settings.py b/veraenderung/settings.py index 10e3d99..a0efb4a 100644 --- a/veraenderung/settings.py +++ b/veraenderung/settings.py @@ -5,57 +5,87 @@ ONLY_ONBOARDING = True EVA_MAIL = 'it-support@wikimedia.de' # these Fields should be included in every mail -BASIC_DATA = ['firstname', 'lastname', 'firstdate_employment', 'firstdate_presence', - 'jobdescription_german', 'jobdescription_english',] +BASIC_DATA = ['firstname', + 'lastname', + 'firstdate_employment', + 'jobdescription_german', + 'jobdescription_english',] # for every department: 'MAIL' => mail adress, 'DATA': additional fields to include # also one copy with all fields to the person filling the form. MAILS = { 'IT': { - 'MAIL': 'wmde-it@wikimedia.de', + 'MAIL': 'it-support@wikimedia.de', 'DATA': [ - 'laptop', 'os', 'comment', 'email', 'landline', 'lists', 'mobile', - 'department', 'accounts', 'language', 'screen', 'works_in_gs', 'desk', + 'laptop', + 'framework', + 'os', 'keyboard', + 'mobile', + 'landline', + 'comment', + 'email', + 'accounts', + 'lists', + 'oldaccounts', + 'oldlists', + 'department', + 'language', ], }, - 'OFFICE': { - 'MAIL': 'office@wikimedia.de', - 'DATA': [ - 'transponder', 'special', 'post_office_box', 'mobile', - 'works_in_gs', 'desk', - ], - }, - 'KOMM': { - 'MAIL': 'presse@wikimedia.de', - 'DATA': [ - 'department', 'team', 'add_to_wikimediade' - ], - }, - 'CENTRAL': { - 'MAIL': 'anna.noelte@wikimedia.de', - 'DATA': [ - 'department', 'team', 'language', 'mobile', 'rebu2go' - ], - }, - 'HR': { - 'MAIL': 'personal@wikimedia.de', - 'DATA': [ - 'department', 'team', 'language', - ] - }, - 'FINANCE': { - 'MAIL': 'claudia.langrock@wikimedia.de', - 'DATA': [ - 'rebu2go' - ] - }, +# 'OFFICE': { +# 'MAIL': 'office@wikimedia.de', +# 'DATA': [ +# 'transponder', 'special', 'post_office_box', 'mobile', +# 'works_in_gs', 'desk', +# ], +# }, +# 'KOMM': { +# 'MAIL': 'presse@wikimedia.de', +# 'DATA': [ +# 'department', 'team', 'add_to_wikimediade' +# ], +# }, +# 'CENTRAL': { +# 'MAIL': 'anna.noelte@wikimedia.de', +# 'DATA': [ +# 'department', 'team', 'language', 'mobile', 'rebu2go' +# ], +# }, +# 'HR': { +# 'MAIL': 'personal@wikimedia.de', +# 'DATA': [ +# 'department', 'team', 'language', +# ] +# }, +# 'FINANCE': { +# 'MAIL': 'claudia.langrock@wikimedia.de', +# 'DATA': [ +# 'rebu2go' +# ] +# }, 'SUBMITTER': { 'MAIL': 'submitter@wikimedia.de', 'DATA': [ - 'department', 'team', 'add_to_wikimediade', 'remote', 'desk', 'vendor', - 'os', 'screen', 'mobile', 'landline', 'keyboard', 'comment', 'language', - 'accounts', 'lists', 'rebu2go', 'transponder', 'special', 'post_office_box' + 'department', + 'team', + 'add_to_wikimediade', + 'remote', + 'desk', + 'vendor', + 'os', + 'screen', + 'mobile', + 'landline', + 'keyboard', + 'comment', + 'language', + 'accounts', + 'lists', + 'rebu2go', + 'transponder', + 'special', + 'post_office_box' ] } }