digitaleagenturnc/standards/forms.py

175 lines
6.8 KiB
Python

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 != None 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']