2025-04-14 08:34:30 +00:00
from django . db import models
from multiselectfield import MultiSelectField
from django . utils . translation import gettext_lazy as _
2025-04-29 06:33:15 +00:00
from eintritt . models import Employee
2025-04-14 08:34:30 +00:00
# ATTENTION!!!
# No key should be used twice in any of these dicts because of the
# suboptimal implementation in views.EvaFormView.beautify_data()
#
DEPARTMENT_CHOICES = { ' COENG ' : _ ( ' Communitys & Engagement ' ) ,
' SOFT ' : _ ( ' Softwareentwicklung ' ) ,
' CENT ' : ' Central ' ,
' KOMAD ' : _ ( ' Kommunikation & Advocacy ' ) ,
' VOR ' : _ ( ' Vorstand ' ) , }
#VENDOR_CHOICES = {'STANDARD': 'Dell Latitude',
# 'LENOVO': 'Lenovo Thinkpad',
# 'MAC': _('Mac (nur für Grafiker_innen)')}
OS_CHOICES = { ' FED ' : ' Fedora (Standard) ' ,
' WIN ' : _ ( ' Windows (bitte Begründung angeben) ' ) ,
' MOS ' : _ ( ' Mac OS (nur wenn Mac gewählt) ' ) ,
' UBU ' : _ ( ' Ubuntu ' ) }
LANG_CHOICES = { ' GER ' : ' Deutsch ' ,
' ENG ' : ' English ' , }
KEYBOARD_CHOICES = { ' DE ' : ' Deutsch ' ,
' US ' : ' USA ' ,
' OT ' : _ ( ' Anderes (Bitte unten angeben) ' ) }
2026-03-03 14:29:40 +00:00
HARDWARE_CHOICES = { ' KEYBOARD ' : ' Tastatur ' ,
' MOUSE ' : ' Maus ' ,
' MONITOR ' : ' Monitor ' ,
' HEADSET ' : ' Headset ' ,
' 2FA ' : ' 2FA Stick ' ,
2025-04-14 08:34:30 +00:00
}
TRANSPONDER_CHOICES = { ' NORM ' : _ ( ' Allgemeiner Transponder ' ) ,
' SPECIAL ' : _ ( ' Besondere Schließungen (bitte angeben) ' ) ,
' NOTRANS ' : _ ( ' Kein Transponder ' ) , }
JANEIN_CHOICES = { ' NEIN ' : ( ' Nein ' ) ,
' JA ' : _ ( ' Ja ' ) , }
class Employee ( models . Model ) :
# email adress of user. should not be necessary if we use openauth one day
# usermail = models.EmailField(max_length=50, verbose_name="Deine Mailadresse (Ansprechpartner_in)", default='bestechefin@wikimedia.de')
# personal data
firstname = models . CharField ( max_length = 50 , verbose_name = _ ( " Vorname " ) )
lastname = models . CharField ( max_length = 50 , verbose_name = _ ( " Nachname " ) )
# general work related stuff
2026-01-23 14:23:07 +00:00
lastdate_employment = models . DateField ( null = True , verbose_name = _ ( " Vertragsende " ) )
lastdate_office = models . DateField ( null = True , verbose_name = _ ( " Letzter Tag der Anwesenheit in der Geschäftsstelle " ) )
# HR related stuff
2026-03-03 14:29:40 +00:00
overtime = models . CharField ( max_length = 5 , choices = JANEIN_CHOICES . items ( ) , verbose_name = _ ( " Sollen restliche Überstunden ausgezahlt werden? " ) )
holiday = models . CharField ( max_length = 5 , choices = JANEIN_CHOICES . items ( ) , verbose_name = _ ( " Sollen restliche Urlaubstage ausgezahlt werden? " ) )
pension = models . CharField ( max_length = 5 , choices = JANEIN_CHOICES . items ( ) , verbose_name = _ ( " Ist betriebliche Altersvorsorge (BAV) vorhanden? " ) )
2025-04-14 08:34:30 +00:00
# IT related stuff
2026-01-23 14:23:07 +00:00
laptop_id = models . CharField ( max_length = 6 , blank = True , verbose_name = _ ( " Laptop ID (wenn bekannt) " ) )
special_logins = models . TextField ( max_length = 500 , null = True , blank = True , verbose_name = _ ( " Zusätzlich zu deaktivierende Accounts " ) )
forward = models . CharField ( max_length = 5 , choices = JANEIN_CHOICES . items ( ) , verbose_name = _ ( ' Soll die Email umgeleitet werden anstatt sie zu deaktivieren? ' ) )
forwardemail = models . CharField ( max_length = 300 , null = True , blank = True , verbose_name = _ ( " An welche Email soll umgeleitet werden? " ) )
documents = models . CharField ( max_length = 5 , choices = JANEIN_CHOICES . items ( ) , verbose_name = _ ( ' Sollen Google Drive Dokumente übertragen werden? (Sonst werden sie gelöscht) ' ) )
2026-03-12 09:18:50 +00:00
documentowner = models . CharField ( max_length = 300 , null = True , verbose_name = _ ( " An wen sollen die Dokumente übertragen werden? " ) )
2026-01-23 14:23:07 +00:00
mobile = models . CharField ( max_length = 5 , choices = JANEIN_CHOICES . items ( ) , verbose_name = _ ( ' Diensttelefon (Handy) vorhanden? ' ) )
2026-03-03 15:34:11 +00:00
sim = models . CharField ( max_length = 5 , default = " NEIN " , blank = True , choices = JANEIN_CHOICES . items ( ) , verbose_name = " Mobilfunkvertrag vorhanden? " )
2026-03-03 14:29:40 +00:00
hardware = MultiSelectField ( choices = HARDWARE_CHOICES . items ( ) , max_length = 40 , null = True , blank = True , verbose_name = _ ( " Zusätzliche Hardware vorhanden? " ) )
2025-04-14 08:34:30 +00:00
# office related stuff
2026-03-12 09:18:50 +00:00
transponder_id = models . CharField ( max_length = 6 , blank = True , verbose_name = _ ( " Transponder ID (Laut Personio) " ) )
2026-01-23 14:23:07 +00:00
# finance related stuff
credit_card = models . CharField ( max_length = 5 , choices = JANEIN_CHOICES . items ( ) , verbose_name = " Kreditkarte vorhanden? " )
2026-03-03 15:34:11 +00:00
bahncard = models . CharField ( max_length = 5 , default = " NEIN " , blank = True , choices = JANEIN_CHOICES . items ( ) , verbose_name = " Bahncard-Abo vorhanden? " )
2026-03-03 14:29:40 +00:00
# kom related stuff
2026-03-12 10:00:42 +00:00
website = models . CharField ( max_length = 5 , default = " NEIN " , blank = True , choices = JANEIN_CHOICES . items ( ) , verbose_name = " Müssen Dinge von der Webseite gelöscht werden? " )
# rest text field
miscellaneous = models . TextField ( max_length = 500 , null = True , blank = True , verbose_name = _ ( " Sonstiges " ) )