WMDE
/
eva
forked from tohe/eva
7
1
Fork 0

Added Austritt to be functional (not fully released yet)

This commit is contained in:
root 2026-01-23 14:23:07 +00:00
parent 0b3ca2db03
commit ad322f8ac1
24 changed files with 430 additions and 118 deletions

View File

@ -29,39 +29,23 @@ class PersonalForm(EvaForm):
class Meta:
model = Employee
fields = ['firstname', 'lastname', 'department', 'team', 'add_to_wikimediade',]
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
fields = ['firstname', 'lastname', 'lastdate_employment', 'lastdate_office', 'lastdate_working']
widgets = {'lastdate_employment': DateInput(attrs={'type': 'date'}),
'lastdate_office': DateInput(attrs={'type': 'date'}),
'lastdate_working': DateInput(attrs={'type': 'date'}),}
class HRForm(EvaForm):
class Meta:
model = Employee
fields = ['firstdate_employment', 'firstdate_presence', 'jobdescription_german',
'jobdescription_english', 'works_in_gs', 'desk',]
widgets = {'firstdate_employment': DateInput(attrs={'type': 'date'}),
'firstdate_presence': DateInput(attrs={'type': 'date'}),}
fields = ['overtime', 'holiday']
class ITForm(EvaForm):
class Meta:
model = Employee
fields = [
'framework', 'os', 'keyboard', 'mobile', 'landline',
'comment', 'language', 'accounts', 'lists', 'rebu2go' ]
fields = ['laptop_id', 'forward', 'forwardemail', 'documents', 'documentowner', 'mobile', 'sim', 'credit_card', 'transponder_id', 'special_logins']
class OfficeForm(EvaForm):
class DummyForm(ModelForm):
class Meta:
model = Employee
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']
widgets = {'firstdate_employment': DateInput(attrs={'type': 'date'}),}
fields = []

View File

@ -0,0 +1,137 @@
# Generated by Django 5.2.8 on 2026-01-21 15:05
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('austritt', '0007_remove_employee_screen_and_more'),
]
operations = [
migrations.RemoveField(
model_name='employee',
name='accounts',
),
migrations.RemoveField(
model_name='employee',
name='add_to_wikimediade',
),
migrations.RemoveField(
model_name='employee',
name='comment',
),
migrations.RemoveField(
model_name='employee',
name='department',
),
migrations.RemoveField(
model_name='employee',
name='desk',
),
migrations.RemoveField(
model_name='employee',
name='firstdate_employment',
),
migrations.RemoveField(
model_name='employee',
name='firstdate_presence',
),
migrations.RemoveField(
model_name='employee',
name='framework',
),
migrations.RemoveField(
model_name='employee',
name='jobdescription_english',
),
migrations.RemoveField(
model_name='employee',
name='jobdescription_german',
),
migrations.RemoveField(
model_name='employee',
name='keyboard',
),
migrations.RemoveField(
model_name='employee',
name='landline',
),
migrations.RemoveField(
model_name='employee',
name='language',
),
migrations.RemoveField(
model_name='employee',
name='lists',
),
migrations.RemoveField(
model_name='employee',
name='os',
),
migrations.RemoveField(
model_name='employee',
name='post_office_box',
),
migrations.RemoveField(
model_name='employee',
name='rebu2go',
),
migrations.RemoveField(
model_name='employee',
name='special',
),
migrations.RemoveField(
model_name='employee',
name='team',
),
migrations.RemoveField(
model_name='employee',
name='transponder',
),
migrations.RemoveField(
model_name='employee',
name='works_in_gs',
),
migrations.AddField(
model_name='employee',
name='credit_card',
field=models.BooleanField(default=False, verbose_name='Kreditkarte'),
),
migrations.AddField(
model_name='employee',
name='laptop_id',
field=models.CharField(default='000000', max_length=6, verbose_name='Laptop ID'),
),
migrations.AddField(
model_name='employee',
name='lastdate_employment',
field=models.DateField(null=True, verbose_name='Vertragsende'),
),
migrations.AddField(
model_name='employee',
name='lastdate_office',
field=models.DateField(null=True, verbose_name='Letzter Tag der Anwesenheit in der Geschäftsstelle'),
),
migrations.AddField(
model_name='employee',
name='lastdate_working',
field=models.DateField(null=True, verbose_name='Letzter Arbeitstag'),
),
migrations.AddField(
model_name='employee',
name='sim',
field=models.BooleanField(default=False, verbose_name='Mobilfunkvertrag'),
),
migrations.AddField(
model_name='employee',
name='special_logins',
field=models.TextField(blank=True, max_length=500, null=True, verbose_name='Zusätzliche Accounts'),
),
migrations.AddField(
model_name='employee',
name='transponder_id',
field=models.CharField(default='000000', max_length=6, verbose_name='Transponder ID'),
),
]

View File

@ -0,0 +1,43 @@
# Generated by Django 5.2.8 on 2026-01-22 11:31
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('austritt', '0008_remove_employee_accounts_and_more'),
]
operations = [
migrations.AlterField(
model_name='employee',
name='credit_card',
field=models.BooleanField(default=False, verbose_name='Kreditkarte vorhanden?'),
),
migrations.AlterField(
model_name='employee',
name='laptop_id',
field=models.CharField(default='000000', max_length=6, verbose_name='Laptop ID (wenn bekannt)'),
),
migrations.AlterField(
model_name='employee',
name='mobile',
field=models.BooleanField(default=False, max_length=6, verbose_name='Diensttelefon (Handy) vorhanden?'),
),
migrations.AlterField(
model_name='employee',
name='sim',
field=models.BooleanField(default=False, verbose_name='Mobilfunkvertrag vorhanden?'),
),
migrations.AlterField(
model_name='employee',
name='special_logins',
field=models.TextField(blank=True, max_length=500, null=True, verbose_name='Zusätzlich zu deaktivierende Accounts'),
),
migrations.AlterField(
model_name='employee',
name='transponder_id',
field=models.CharField(default='000000', max_length=6, verbose_name='Transponder ID (wenn bekannt)'),
),
]

View File

@ -0,0 +1,53 @@
# Generated by Django 5.2.8 on 2026-01-22 12:41
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('austritt', '0009_alter_employee_credit_card_alter_employee_laptop_id_and_more'),
]
operations = [
migrations.AddField(
model_name='employee',
name='documentowner',
field=models.CharField(blank=True, max_length=300, null=True, verbose_name='An wen sollen die Dokumente übertragen werden?'),
),
migrations.AddField(
model_name='employee',
name='documents',
field=models.BooleanField(default=False, max_length=6, verbose_name='Sollen Google Drive Dokumente übertragen werden? (Sonst werden sie gelöscht)'),
),
migrations.AddField(
model_name='employee',
name='forward',
field=models.BooleanField(default=False, max_length=6, verbose_name='Soll die Email umgeleitet werden anstatt sie zu deaktivieren?'),
),
migrations.AddField(
model_name='employee',
name='forwardemail',
field=models.CharField(blank=True, max_length=300, null=True, verbose_name='An welche Email soll umgeleitet werden?'),
),
migrations.AddField(
model_name='employee',
name='holiday',
field=models.CharField(blank=True, max_length=6, verbose_name='restliche Urlaubstage (wenn bekannt)'),
),
migrations.AddField(
model_name='employee',
name='overtime',
field=models.CharField(blank=True, max_length=6, verbose_name='vorhandene Überstunden (wenn bekannt)'),
),
migrations.AlterField(
model_name='employee',
name='laptop_id',
field=models.CharField(blank=True, default='000000', max_length=6, verbose_name='Laptop ID (wenn bekannt)'),
),
migrations.AlterField(
model_name='employee',
name='transponder_id',
field=models.CharField(blank=True, default='000000', max_length=6, verbose_name='Transponder ID (wenn bekannt)'),
),
]

View File

@ -0,0 +1,43 @@
# Generated by Django 5.2.8 on 2026-01-22 12:53
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('austritt', '0010_employee_documentowner_employee_documents_and_more'),
]
operations = [
migrations.AlterField(
model_name='employee',
name='credit_card',
field=models.CharField(choices=[('NEIN', 'Nein'), ('JA', 'Ja')], max_length=5, verbose_name='Kreditkarte vorhanden?'),
),
migrations.AlterField(
model_name='employee',
name='documents',
field=models.CharField(choices=[('NEIN', 'Nein'), ('JA', 'Ja')], max_length=5, verbose_name='Sollen Google Drive Dokumente übertragen werden? (Sonst werden sie gelöscht)'),
),
migrations.AlterField(
model_name='employee',
name='forward',
field=models.CharField(choices=[('NEIN', 'Nein'), ('JA', 'Ja')], max_length=5, verbose_name='Soll die Email umgeleitet werden anstatt sie zu deaktivieren?'),
),
migrations.AlterField(
model_name='employee',
name='laptop_id',
field=models.CharField(blank=True, max_length=6, verbose_name='Laptop ID (wenn bekannt)'),
),
migrations.AlterField(
model_name='employee',
name='mobile',
field=models.CharField(choices=[('NEIN', 'Nein'), ('JA', 'Ja')], max_length=5, verbose_name='Diensttelefon (Handy) vorhanden?'),
),
migrations.AlterField(
model_name='employee',
name='transponder_id',
field=models.CharField(blank=True, max_length=6, verbose_name='Transponder ID (wenn bekannt)'),
),
]

View File

@ -53,35 +53,28 @@ class Employee(models.Model):
# 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?"))
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"))
lastdate_working = models.DateField(null=True, verbose_name=_("Letzter Arbeitstag"))
# HR related stuff
overtime = models.CharField(max_length=6, blank=True, verbose_name=_("vorhandene Überstunden (wenn bekannt)"))
holiday = models.CharField(max_length=6, blank=True, verbose_name=_("restliche Urlaubstage (wenn bekannt)"))
# 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)
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)'))
documentowner = models.CharField(max_length=300, null=True, blank=True, verbose_name=_("An wen sollen die Dokumente übertragen werden?"))
mobile = models.CharField(max_length=5, choices=JANEIN_CHOICES.items(), verbose_name=_('Diensttelefon (Handy) vorhanden?'))
sim = models.BooleanField(default=False, verbose_name="Mobilfunkvertrag vorhanden?")
# 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?'))
transponder_id = models.CharField(max_length=6, blank=True, verbose_name=_("Transponder ID (wenn bekannt)"))
# finance related stuff
credit_card = models.CharField(max_length=5, choices=JANEIN_CHOICES.items(), verbose_name="Kreditkarte vorhanden?")

View File

@ -5,57 +5,81 @@ 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',
'lastdate_employment',
'lastdate_office',
'lastdate_working'
]
# 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',
'DATA': [
'laptop', 'os', 'comment', 'email', 'landline', 'lists', 'mobile',
'department', 'accounts', 'language', 'screen', 'works_in_gs', 'desk',
'keyboard',
],
'laptop_id',
'email',
'forward',
'forwardemail',
'documents',
'documentowner',
'mobile',
'special_logins'
],
},
'OFFICE': {
'MAIL': 'office@wikimedia.de',
# 'MAIL': 'office@wikimedia.de',
'MAIL': 'julian.hahn@wikimedia.de',
'DATA': [
'transponder', 'special', 'post_office_box', 'mobile',
'works_in_gs', 'desk',
'transponder_id'
],
},
'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'
]
},
# 'KOMM': {
# 'MAIL': 'presse@wikimedia.de',
# 'DATA': [
# 'email'
# ],
# },
# 'CENTRAL': {
# 'MAIL': 'anna.noelte@wikimedia.de',
# 'DATA': [
# 'sim'
# ],
# },
# 'HR': {
# 'MAIL': 'personal@wikimedia.de',
# 'DATA': [
# 'overtime',
# 'holiday',
# 'laptop_id',
# 'mobile',
# 'sim',
# 'credit_card'
# ]
# },
# 'FINANCE': {
# 'MAIL': 'claudia.langrock@wikimedia.de',
# 'DATA': [
# 'credit_card'
# ]
# },
'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'
'overtime',
'holiday',
'laptop_id',
'email',
'forward',
'forwardemail',
'documents',
'documentowner',
'mobile',
'sim',
'credit_card'
'transponder_id',
'special_logins',
]
}
}

View File

@ -4,11 +4,11 @@
Hallo!
Es gibt einen Neuzugang bei Wikimedia! Hier ( https://wiki.wikimedia.de/wiki/Onboarding ) kannst Du nachsehen,
Es gibt einen Austritt bei Wikimedia! Hier ( https://wiki.wikimedia.de/wiki/Offboarding ) kannst Du nachsehen,
welche Schritte jetzt für Deine Abteilung nötig werden. Im Folgenden alle Daten,
die Du dafür brauchst:
{% include 'evapp/dataloop.txt' %}
{% include 'austritt/dataloop.txt' %}
Wenn Du Fragen hast, melde Dich bei {{contact}}.
@ -18,12 +18,12 @@ Grüße, Deine E.V.A.
{% language 'en' %}
Hi!
There is a new employee at Wikimedia! Here ( https://wiki.wikimedia.de/wiki/Onboarding ) you can see, which
Someone is leaving Wikimedia! Here ( https://wiki.wikimedia.de/wiki/Offboarding/en ) you can see, which
steps are now necessary for your department.
All Data you need for this:
{% include 'evapp/dataloop.txt' %}
{% include 'austritt/dataloop.txt' %}
If you have any questions please write to {{contact}}.

View File

@ -36,7 +36,7 @@
<h1 style="background-color:red;color:white">{% translate "WARNUNG! Test-MODUS aktiviert. Es werden keine Mails verschickt!" %}</h1>
{% endif %}
<h1>
E (V A) - Austritt, (Veränderung, Austritt)<p>
(E V) A - (Eintritt, Veränderung), Austritt<p>
</h1>{% translate "Du bist eingeloggt als" %} {{ user.email }}
<h2>
@ -45,11 +45,10 @@
{% translate "Angaben zur Person" %} {% endif %}
{% if choice == 'IN' %}
{% if wizard.steps.step1 == 2 %}
{% translate "Angaben zum neuen Arbeitsverhältnis" %}
{% translate "Personal-relevante Angaben" %}
{% elif wizard.steps.step1 == 3 %}
{% translate "IT-relevante Angaben" %}
{% elif wizard.steps.step1 == 4 %}
{% translate "Office-relevante Angaben" %}
{% endif %}
{% else %}
{% if wizard.steps.step1 == 2 %}

View File

@ -14,8 +14,7 @@ from django.utils.translation import gettext_lazy as _
from .models import Employee, DEPARTMENT_CHOICES, OS_CHOICES, \
LANG_CHOICES, ACCOUNT_CHOICES, TRANSPONDER_CHOICES, KEYBOARD_CHOICES, JANEIN_CHOICES
from .forms import PersonalForm, WorkingForm, ITForm, OfficeForm, DummyForm,\
ChangeForm, TYPE_CHOICES
from .forms import PersonalForm, HRForm, ITForm, DummyForm, TYPE_CHOICES
from .settings import MAILS, EVA_MAIL, BASIC_DATA, ONLY_ONBOARDING
def success(request):
@ -47,7 +46,7 @@ def change_process(wizard):
class EvaFormView(LoginRequiredMixin, CookieWizardView):
template_name = 'austritt/employee_form.html'
form_list = [PersonalForm, WorkingForm, ITForm, OfficeForm, ChangeForm, DummyForm]
form_list = [PersonalForm, HRForm, ITForm, DummyForm]
instance = None
choice = 'IN'
@ -90,7 +89,7 @@ class EvaFormView(LoginRequiredMixin, CookieWizardView):
'TESTMODE': testmode})
# deliver context for forms if we are in the last step
if (self.steps.step1 == 5 or (self.choice != 'IN' and self.steps.step1 == 3)):
if (self.steps.step1 == 4 or (self.choice != 'IN' and self.steps.step1 == 4)):
context.update({'data': self.beautify_data(self.get_all_cleaned_data()),
'datatable': True,})
return context
@ -141,26 +140,26 @@ class EvaFormView(LoginRequiredMixin, CookieWizardView):
context = {'data': self.beautify_data(newdata), 'contact': contact}
firstname = data['firstname']
lastname = data['lastname']
firstday = data['firstdate_employment']
lastday = data['lastdate_employment']
try:
mail_template = get_template(f'evapp/department_mail.txt')
mail_template = get_template(f'austritt/department_mail.txt')
if settings.MAILTEST:
send_mail(
f'EVA: Neuzugang {firstname} {lastname} {firstday} (MAILTEST)',
f'EVA: Austritt {firstname} {lastname} {lastday} (MAILTEST)',
mail_template.render(context),
EVA_MAIL,
[EVA_MAIL],
fail_silently=False)
elif department != "SUBMITTER":
send_mail(
f'EVA: Neuzugang {firstname} {lastname} {firstday}',
f'EVA: Austritt {firstname} {lastname} {lastday}',
mail_template.render(context),
EVA_MAIL,
[MAILS[department]['MAIL']],
fail_silently=False)
else:
send_mail(
f'EVA: Neuzugang {firstname} {lastname} {firstday}',
f'EVA: Austritt {firstname} {lastname} {lastday}',
mail_template.render(context),
EVA_MAIL,
[contact],

View File

@ -0,0 +1,18 @@
# Generated by Django 5.2.8 on 2026-01-22 12:41
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('eintritt', '0007_remove_employee_screen_and_more'),
]
operations = [
migrations.AlterField(
model_name='employee',
name='os',
field=models.CharField(choices=[('FED', 'Fedora (Standard)'), ('WIN', 'Windows (bitte Begründung angeben)'), ('MOS', 'Mac OS (nur wenn Mac gewählt)'), ('UBU', 'Ubuntu (bitte Begründung angeben)')], default='FED', max_length=3, verbose_name='Betriebssystem'),
),
]

View File

@ -20,7 +20,7 @@ DEPARTMENT_CHOICES = {'COENG': _('Communitys & Engagement'),
OS_CHOICES = {'FED': 'Fedora (Standard)',
'WIN': _('Windows (bitte Begründung angeben)'),
'MOS': _('Mac OS (nur wenn Mac gewählt)'),
'UBU': _('Ubuntu')}
'UBU': _('Ubuntu (bitte Begründung angeben)')}
LANG_CHOICES = {'GER': 'Deutsch',
'ENG': 'English',}

View File

@ -59,3 +59,7 @@ MAILS = {
]
}
}

View File

@ -8,7 +8,7 @@ Es gibt einen Neuzugang bei Wikimedia! Hier ( https://wiki.wikimedia.de/wiki/Onb
welche Schritte jetzt für Deine Abteilung nötig werden. Im Folgenden alle Daten,
die Du dafür brauchst:
{% include 'evapp/dataloop.txt' %}
{% include 'eintritt/dataloop.txt' %}
Wenn Du Fragen hast, melde Dich bei {{contact}}.
@ -23,7 +23,7 @@ steps are now necessary for your department.
All Data you need for this:
{% include 'evapp/dataloop.txt' %}
{% include 'eintritt/dataloop.txt' %}
If you have any questions please write to {{contact}}.

View File

@ -143,7 +143,7 @@ class EvaFormView(LoginRequiredMixin, CookieWizardView):
lastname = data['lastname']
firstday = data['firstdate_employment']
try:
mail_template = get_template(f'evapp/department_mail.txt')
mail_template = get_template(f'eintritt/department_mail.txt')
if settings.MAILTEST:
send_mail(
f'EVA: Neuzugang {firstname} {lastname} {firstday} (MAILTEST)',
@ -174,6 +174,10 @@ class EvaFormView(LoginRequiredMixin, CookieWizardView):
self.instance.delete()
return HttpResponse(f'{error}<p>Error in sending mails (propably wrong adress?). Data not saved!')
except Exception as error:
print("str:", str(error))
print("repr:", repr(error))
print("type:", type(error))
print(error)
# self.instance.delete()
return HttpResponse(f'{error}<p>Error in sending mails. Data not saved! Please contact ' + EVA_MAIL)

View File

@ -166,9 +166,20 @@ STATIC_URL = '/static/'
# settings needed for allauth
SOCIALACCOUNT_PROVIDERS = {
'nextcloud': {
'SERVER': 'https://wolke.wikimedia.de/',
}
# 'SERVER': 'https://wolke.wikimedia.de',
'APP': {
'name': 'Wolke',
'client_id': 'uKfMSd1oBqkrNog02ZhsXamXvvXblHYOCfLoNHLcppCQPvlFYoiKKmvdKZf77ZQ2',
'secret': 'CyEBOwjOxgR12POEAEi7FIyusZrMX9d2S7YB0diFMhbw65M06oWKtYyGq0zZJpZE',
'settings': {
'server': 'https://wolke.wikimedia.de/',
# 'server_url': 'https://wolke.wikimedia.de',
},
}
},
}
SOCIALACCOUNT_ONLY = True
DISABLE_ALLAUTH_LOGIN_URL = True
AUTHENTICATION_BACKENDS = (
"django.contrib.auth.backends.ModelBackend",

View File

@ -17,11 +17,11 @@ from django.contrib import admin
from django.urls import path, include
urlpatterns = [
path('eintritt/', include('eintritt.urls')),
path('accounts/', include('allauth.urls')),
path('eintritt/', include('eintritt.urls')),
path('', include("home.urls")),
path('austritt/', include("austritt.urls")),
path('veraenderung/', include("veraenderung.urls")),
path('admin/', admin.site.urls),
path('accounts/', include('allauth.urls')),
]

Binary file not shown.

After

Width:  |  Height:  |  Size: 99 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

BIN
home/static/evapp/logo.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

View File

@ -54,7 +54,7 @@ class Employee(models.Model):
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'))
department = models.CharField(max_length=5, choices=DEPARTMENT_CHOICES.items(), verbose_name=_('neuer 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?"))

View File

@ -8,7 +8,7 @@ Es gibt einen Neuzugang bei Wikimedia! Hier ( https://wiki.wikimedia.de/wiki/Onb
welche Schritte jetzt für Deine Abteilung nötig werden. Im Folgenden alle Daten,
die Du dafür brauchst:
{% include 'evapp/dataloop.txt' %}
{% include 'veraenderung/dataloop.txt' %}
Wenn Du Fragen hast, melde Dich bei {{contact}}.
@ -23,7 +23,7 @@ steps are now necessary for your department.
All Data you need for this:
{% include 'evapp/dataloop.txt' %}
{% include 'veraenderung/dataloop.txt' %}
If you have any questions please write to {{contact}}.

View File

@ -143,7 +143,7 @@ class EvaFormView(LoginRequiredMixin, CookieWizardView):
lastname = data['lastname']
firstday = data['firstdate_employment']
try:
mail_template = get_template(f'evapp/department_mail.txt')
mail_template = get_template(f'veraenderung/department_mail.txt')
if settings.MAILTEST:
send_mail(
f'EVA: Neuzugang {firstname} {lastname} {firstday} (MAILTEST)',