from django import forms from django.db import models from django.contrib.auth.models import User from django.contrib.auth.forms import UserCreationForm from .models import Profile, Agency, RegNotfallhilfe from django.contrib.auth.models import Permission from areas.models import Areas from tasks.models import Tasks from PIL import Image from django.utils.translation import gettext as _ from captcha.fields import CaptchaField # Standard-User-Formular - NUR Username und Password wird hier genutzt class UsersAddNewUser(UserCreationForm): email = models.EmailField() class Meta: model = User fields = ['username', 'first_name', 'last_name', 'password1', 'password2', 'email'] error_messages = { 'email': { 'unique': _("Mailadresse bereits vergeben!"), }, } # Change logged Users Data (Usernamen an Email) NUR HIER MÖGLICH! class UsersChangeProfil(forms.ModelForm): email = forms.EmailField() class Meta: model = User fields = ['first_name', 'last_name', 'username', 'email'] # Formular zum hinzufügen neuer Agentur-Mitglieder class UsersAddProfileForm(forms.ModelForm): x = forms.FloatField(widget=forms.HiddenInput()) y = forms.FloatField(widget=forms.HiddenInput()) width = forms.FloatField(widget=forms.HiddenInput()) height = forms.FloatField(widget=forms.HiddenInput()) class Meta: model = Profile labels = { "phoneland" : "Telefon", "phonemobile" : "Mobil", "phone_public" : "Interne Verwendung", "func" : "Agenturfunktion", "compfunc" : "Tätigkeit", "image" : "Profilbild", "visible" : "Im Organigramm sichtbar" } fields = ['phoneland','phonemobile', 'phone_public', 'visible', 'func', 'compfunc', 'image', 'x', 'y', 'width', 'height'] def save(self): photo = super(UsersAddProfileForm, self).save() try: x = self.cleaned_data.get('x') y = self.cleaned_data.get('y') w = self.cleaned_data.get('width') h = self.cleaned_data.get('height') image = Image.open(photo.image) cropped_image = image.crop((x, y, w+x, h+y)) resized_image = cropped_image.resize((300, 300), Image.ANTIALIAS) resized_image.save(photo.image.path) return photo except: print("no photo") # Formular zum hinzufügen neuer Agentur-Mitglieder class AgencyUpdateForm(forms.ModelForm): x = forms.FloatField(widget=forms.HiddenInput()) y = forms.FloatField(widget=forms.HiddenInput()) width = forms.FloatField(widget=forms.HiddenInput()) height = forms.FloatField(widget=forms.HiddenInput()) rotation = forms.FloatField(widget=forms.HiddenInput()) class Meta: model = Agency labels = { "name" : "Agenturname", "inhaber" : "Inhaber", "street" : "Straße und Hausnummer", "plz" : "PLZ", "city" : "Stadt", "agency_email" : "E-Mail", "phone" : "Telefon", "agencypic" : "Agenturbild" } fields = ['name','inhaber','agency_email', 'phone', 'street', 'plz', 'city', 'agencypic', 'x', 'y', 'width', 'height', 'rotation'] def save(self): photo = super(AgencyUpdateForm, self).save() try: x = self.cleaned_data.get('x') y = self.cleaned_data.get('y') w = self.cleaned_data.get('width') h = self.cleaned_data.get('height') rotation = self.cleaned_data.get('rotation') image = Image.open(photo.agencypic) rotatet_image = image.rotate(rotation, expand=True) cropped_image = rotatet_image.crop((x, y, w+x, h+y)) #resized_image = cropped_image.resize((w, h), Image.ANTIALIAS) cropped_image.save(photo.agencypic.path) return photo except: print("no photo") ######################## USERSPERMFORM LÖSCHEN WEIL IN AGENCYGROUP ################################ # PERMISSION USER FORM class UsersPermForm(forms.Form): ''' Permission-System Persmissions werden im Model gesetzt, hier automatisch als Form ausgegeben. Hat der Nutzer eine der genannten Rechte, wird die Checkbox automatisch TRUE gesetzt. Die erstellen Felder werden entsprechend den Feldern hinzugefügt und ausgegeben. @param: user - User ist der aufgerufene User! ''' def __init__(self, user, *args, **kwargs): super().__init__(*args, **kwargs) temprof = Profile for ele in temprof._meta.permissions: if isinstance(user, User): if user.has_perm('users.' + ele[0]): self.fields[ele[0]] = forms.BooleanField(required=False, initial=True, help_text=(ele[1])) else: self.fields[ele[0]] = forms.BooleanField(required=False, initial=False, help_text=(ele[1])) class UserAreaTaskForm(forms.Form): def __init__(self, user, *args, **kwargs): super().__init__(*args, **kwargs) areas = Areas.objects.filter(agency__pk=user.profile.agency.pk) tasks = Tasks.objects.filter(agency__pk=user.profile.agency.pk) for area in areas: if user in area.usersfield.all(): self.fields['area_'+str(area.pk)] = forms.BooleanField(required=False, initial=True, label="

Bereich "+area.name+"

") else: self.fields['area_'+str(area.pk)] = forms.BooleanField(required=False, initial=False, label="

Bereich "+area.name+"

") for task in tasks: if task.area == area: if user in task.usersfield.all(): self.fields['task_'+str(task.pk)] = forms.BooleanField(required=False, initial=True, label="
"+task.name+"
") else: self.fields['task_'+str(task.pk)] = forms.BooleanField(required=False, initial=False, label="
"+task.name+"
") SUPPORT_DEP = ( ('12', 'Technischer Support'), ('13', 'Abrechnung'), ('14', 'Lob, Kritik und Anregung'), ) class SupportForm(forms.Form): def __init__(self, user, *args, **kwargs): super().__init__(*args, **kwargs) user_name = user.first_name + " " + user.last_name self.fields['name'] = forms.CharField(required=True, label="Name", initial=user_name) self.fields['mail'] = forms.EmailField(required=True, label="E-Mail", initial=user.email) self.fields['department'] = forms.ChoiceField(required=True, label="Bereich", choices=SUPPORT_DEP) self.fields['problemconc'] = forms.CharField(required=True, label="Problemzusammenfassung") self.fields['problem'] = forms.CharField(required=True, widget=forms.Textarea, label="Ausführliche Problembeschreibung") self.fields['name'].widget.attrs['readonly'] = True self.fields['mail'].widget.attrs['readonly'] = True #self.fields["attachment_1"] = forms.FileField(label="Anhang 1", required=False) #self.fields["attachment_2"] = forms.FileField(label="Anhang 2", required=False) #self.fields["attachment_3"] = forms.FileField(label="Anhang 3", required=False) class NewAgencyForm(forms.Form): captcha = CaptchaField() fields = ['first_name','last_name','mail','agencyname','vve','agb','av','captcha'] field_order = ['first_name','last_name','mail','agencyname','vve','agb','av','captcha'] def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self.fields['first_name'] = forms.CharField(required=True, label="Vorname") self.fields['last_name'] = forms.CharField(required=True, label="Nachname") self.fields['mail'] = forms.EmailField(required=True, label="E-Mail") self.fields['agencyname'] = forms.CharField(required=True, label="Agenturname") self.fields['vve'] = forms.CharField(required=True, label="VVE-Mitgliedsnummer") self.fields['agb'] = forms.BooleanField(required=True, label="AGB's") self.fields['av'] = forms.BooleanField(required=True, label="Auftragsverarbeitung") self.fields['captcha'] = CaptchaField(required=True, label="Bitte geben Sie die Symbole ein.") # Formular für Registrierung neuer Agentur UND Notfallhilfe class NewAgencyFormRD(forms.Form): captcha = CaptchaField() fields = ['first_name','last_name','mail','persnumber', 'plz', 'stadt', 'street', 'data_to_vh', 'agencyname','vve','agb','av','captcha'] field_order = ['agencyname', 'first_name','last_name','mail','persnumber', 'plz', 'stadt', 'street', 'data_to_vh', 'vve','agb','av','captcha'] def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self.fields['first_name'] = forms.CharField(required=True, label="Vorname") self.fields['last_name'] = forms.CharField(required=True, label="Nachname") self.fields['mail'] = forms.EmailField(required=True, label="E-Mail") self.fields['persnumber'] = forms.CharField(required=True, label="Personalnummer") self.fields['agencyname'] = forms.CharField(required=True, label="Agenturname") self.fields['plz'] = forms.CharField(required=True, label="PLZ") self.fields['stadt'] = forms.CharField(required=True, label="Stadt") self.fields['street'] = forms.CharField(required=True, label="Straße und Hausnummer") self.fields['vve'] = forms.CharField(required=True, label="VVE-Mitgliedsnummer - Ihre Mitgliedsnummer entnehmen Sie bitte der Teilnahmebestätigung zur VVE-Jahrestagung.") self.fields['agb'] = forms.BooleanField(required=True, label="AGB's") self.fields['av'] = forms.BooleanField(required=True, label="Auftragsverarbeitung") self.fields['data_to_vh'] = forms.BooleanField(required=True, label="Hiermit erkläre ich mich der Übertragung meiner Daten von der vh Solutions UG an den VVE einverstanden.") self.fields['captcha'] = CaptchaField(required=True, label="Bitte geben Sie die Symbole ein.") class FormRD(forms.Form): captcha = CaptchaField() model = RegNotfallhilfe fields = ['name', 'mail', 'persnumber', 'mitgliedsnummer', 'plz', 'stadt', 'street', 'data_to_vh'] def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self.fields['name'] = forms.CharField(required=True, label="Vor- und Nachname") self.fields['persnumber'] = forms.CharField(required=True, label="Personalnummer") self.fields['mitgliedsnummer'] = forms.CharField(required=True, label="VVE-Mitgliedsnummer - Ihre Mitgliedsnummer entnehmen Sie bitte der Teilnahmebestätigung zur VVE-Jahrestagung.") self.fields['plz'] = forms.CharField(required=True, label="PLZ") self.fields['stadt'] = forms.CharField(required=True, label="Stadt") self.fields['street'] = forms.CharField(required=True, label="Straße und Hausnummer") self.fields['mail'] = forms.EmailField(required=True, label="E-Mail") self.fields['data_to_vh'] = forms.BooleanField(required=True, label="Hiermit erkläre ich mich der Übertragung meiner Daten von der vh Solutions UG an den VVE einverstanden.") self.fields['captcha'] = CaptchaField(required=True, label="Bitte geben Sie die Symbole ein.")