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 from django.contrib.auth.models import Permission from areas.models import Areas from tasks.models import Tasks # 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'] # 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): class Meta: model = Profile labels = { "phoneland" : "Telefon", "phonemobile" : "Mobil", "func" : "Agenturfunktion", "compfunc" : "Tätigkeit", "image" : "Agenturbild" } fields = ['phoneland','phonemobile','func', 'compfunc', 'image'] # Formular zum hinzufügen neuer Agentur-Mitglieder class AgencyUpdateForm(forms.ModelForm): class Meta: model = Agency labels = { "name" : "Agenturname", "inhaber" : "Inhaber", "street" : "Straße", "city" : "Stadt", "email" : "E-Mail", "phone" : "Telefon", "agencypic" : "Agenturbild" } fields = ['name','inhaber','street', 'city', 'email', 'phone', 'agencypic'] # 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+"
")