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) ' ) }
ACCOUNT_CHOICES = { ' OTRSWMDE ' : ' OTRS Ticketsystem ' ,
' CIVIC1 ' : _ ( ' Civic CRM (allgemein) ' ) ,
' CIVIC2 ' : _ ( " Civic CRM (Mailings, impliziert allgemein) " ) ,
' WEB ' : ' www.wikimedia.de (edit) ' ,
' BLOG ' : ' blog.wikimedia.de (edit) ' ,
' FORUM ' : ' forum.wikimedia.de ' ,
}
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 " ) )
# intern = models.BooleanField(verbose_name='Interne_r Mitarbeiter_in?', default=True)
department = models . CharField ( max_length = 5 , choices = DEPARTMENT_CHOICES . items ( ) , verbose_name = _ ( ' Bereich ' ) )
team = models . CharField ( max_length = 50 , null = True , blank = True ) # TODO? better with choices?
add_to_wikimediade = models . CharField ( max_length = 5 , choices = JANEIN_CHOICES . items ( ) , verbose_name = _ ( " Soll die Person bei Ansprechpartner*innen auf der WMDE-Webseite mit aufgenommen werden? " ) )
# 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? " ) )
# 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? " ) )
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) ' ) )
landline = models . BooleanField ( default = False , verbose_name = _ ( ' Festnetznummer (Sipgate) ' ) )
# 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 " ) )
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 " ) )
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 " ) )
post_office_box = models . BooleanField ( default = True , verbose_name = _ ( ' Postfach am Empfang benötigt? ' ) )