from django import forms from django.forms import ModelForm from .models import Standards from areas.models import Areas from tasks.models import Tasks from django.contrib.auth.models import User from users.models import Profile, UserFullName from django_summernote.widgets import SummernoteInplaceWidget class StandardAddStandard(forms.ModelForm): class Meta: model =Standards widgets = { 'content': SummernoteInplaceWidget() } labels = { "name" : "Titel", "area" : "Bereich", "task" : "Tätigkeit", "content": "Inhalt", "public" : "Direkt veröffentlichen?", "freefield_title" : "Titel und Text", "freefield_content" : "", } fields = ['name', 'area', 'task', 'content', 'public',"freefield_title", "freefield_content"] ''' Hier werden die Elemente für die DropDowns erstellt, damit ein Standard nur einem Aufgabenbereich aus einem Bereich zugewiesen wird. Damit nach der Auswahl des Bereichs auch eine valide Aufgabe ankommt, wird diese hier manuel validiert und das Query-Set mit der Bereichsauswahl geladen. ''' def __init__(self, *args, **kwargs): super(StandardAddStandard, self).__init__(*args, **kwargs) self.fields['area'].queryset = Areas.objects.filter(agency__pk=kwargs['instance'].profile.agency.pk) self.fields['task'].queryset = Tasks.objects.none() if 'area' in self.data: try: areaid = int(self.data.get('area')) self.fields['task'].queryset = Tasks.objects.filter(area__id=areaid).order_by('name') except (ValueError, TypeError): pass elif self.instance.pk: self.fields['task'].queryset = Tasks.objects.none() self.fields['area'].required = True self.fields['task'].required = True self.fields['freefield_title'].required = False self.fields['freefield_content'].required = False self.fields['freefield_content'].widget.attrs['rows'] = 2 #self.fields['representative'].queryset = UserFullName.objects.filter(profile__agency__pk=kwargs['instance'].profile.agency.pk) #self.fields['executor'].queryset = UserFullName.objects.filter(profile__agency__pk=kwargs['instance'].profile.agency.pk) #self.fields['authority'].queryset = UserFullName.objects.filter(profile__agency__pk=kwargs['instance'].profile.agency.pk) self.fields['checked_groups'] = forms.CharField(initial="", required=False, widget=forms.HiddenInput()) self.fields['added_files'] = forms.CharField(initial="", required=False, widget=forms.HiddenInput()) self.fields['added_standards'] = forms.CharField(initial="", required=False, widget=forms.HiddenInput()) self.fields['added_quicklinks'] = forms.CharField(initial="", required=False, widget=forms.HiddenInput()) self.fields['added_contacts'] = forms.CharField(initial="", required=False, widget=forms.HiddenInput()) self.fields['added_passwords'] = forms.CharField(initial="", required=False, widget=forms.HiddenInput()) self.fields['us_verant'] = forms.CharField(initial="", required=False, widget=forms.HiddenInput()) self.fields['us_ex'] = forms.CharField(initial="", required=False, widget=forms.HiddenInput()) self.fields['us_ver'] = forms.CharField(initial="", required=False, widget=forms.HiddenInput()) class StandardAddStandardEditor(forms.ModelForm): class Meta: model = Standards widgets = { 'content': SummernoteInplaceWidget(), } labels = { "content" : "Inhalt" } fields = ['content'] class StandardUpdateStandard(forms.ModelForm): class Meta: model =Standards widgets = { 'content': SummernoteInplaceWidget() } labels = { "name" : "Titel", "area" : "Bereich", "task" : "Tätigkeit", "content": "Inhalt", "freefield_title" : "Titel und Text", "freefield_content" : "", 'public' : "Veröffentlichen" } fields = ['name', 'area', 'task', 'content',"freefield_title", "freefield_content", 'public'] ''' Hier werden die Elemente für die DropDowns erstellt, damit ein Standard nur einem Aufgabenbereich aus einem Bereich zugewiesen wird. Damit nach der Auswahl des Bereichs auch eine valide Aufgabe ankommt, wird diese hier manuel validiert und das Query-Set mit der Bereichsauswahl geladen. ''' def __init__(self, *args, **kwargs): loggeduser = kwargs['instance'].created_standard_by standard = kwargs['instance'] super(StandardUpdateStandard, self).__init__(*args, **kwargs) try: self.fields['area'].queryset = Areas.objects.filter(agency__pk=loggeduser.profile.agency.pk) # Dummy PK self.fields['task'].queryset = Tasks.objects.filter(area__pk=standard.area.pk) except: pass if 'area' in self.data: try: areaid = int(self.data.get('area')) self.fields['task'].queryset = Tasks.objects.filter(area__id=areaid).order_by('name') except (ValueError, TypeError): pass elif loggeduser.pk and standard.area != None: self.fields['task'].queryset = Tasks.objects.filter(area__pk=standard.area.pk) self.fields['area'].required = True self.fields['task'].required = True self.fields['freefield_title'].required = False self.fields['freefield_content'].required = False self.fields['freefield_content'].widget.attrs['rows'] = 2 #self.fields['representative'].queryset = UserFullName.objects.filter(profile__agency__pk=loggeduser.profile.agency.pk) #self.fields['executor'].queryset = UserFullName.objects.filter(profile__agency__pk=loggeduser.profile.agency.pk) #self.fields['authority'].queryset = UserFullName.objects.filter(profile__agency__pk=loggeduser.profile.agency.pk) self.fields['checked_groups'] = forms.CharField(initial="", required=False, widget=forms.HiddenInput()) self.fields['added_files'] = forms.CharField(initial="", required=False, widget=forms.HiddenInput()) self.fields['added_standards'] = forms.CharField(initial="", required=False, widget=forms.HiddenInput()) self.fields['added_quicklinks'] = forms.CharField(initial="", required=False, widget=forms.HiddenInput()) self.fields['added_contacts'] = forms.CharField(initial="", required=False, widget=forms.HiddenInput()) self.fields['added_passwords'] = forms.CharField(initial="", required=False, widget=forms.HiddenInput()) self.fields['us_verant'] = forms.CharField(initial="", required=False, widget=forms.HiddenInput()) self.fields['us_ex'] = forms.CharField(initial="", required=False, widget=forms.HiddenInput()) self.fields['us_ver'] = forms.CharField(initial="", required=False, widget=forms.HiddenInput()) self.fields['checked_networks'] = forms.CharField(initial="", required=False, widget=forms.HiddenInput()) self.fields['public'] = forms.BooleanField(initial=standard.public, required=False) class StandardUpdateStandardEditor(forms.ModelForm): class Meta: model = Standards widgets = { 'content': SummernoteInplaceWidget() } labels = { "content" : "Inhalt" } fields = ['content']