digitaleagenturnc/standards/forms.py

143 lines
5.2 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" : "Übergeordneter Bereich",
"task" : "Tätigkeitsbereich",
"content": "Inhalt",
"public" : "Direkt veröffentlichen?",
"freefield_title" : "Freifeld Titel",
"freefield_content" : "Freifeld Inhalt",
}
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['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['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" : "Übergeordneter Bereich",
"task" : "Tätigkeitsbereich",
"content": "Inhalt",
"freefield_title" : "Freifeld Titel",
"freefield_content" : "Freifeld Inhalt",
}
fields = ['name', 'area', 'task', 'content',"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):
loggeduser = kwargs['instance'].created_standard_by
standard = kwargs['instance']
super(StandardUpdateStandard, self).__init__(*args, **kwargs)
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)
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:
self.fields['task'].queryset = Tasks.objects.filter(area__pk=standard.area.pk)
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)
class StandardUpdateStandardEditor(forms.ModelForm):
class Meta:
model = Standards
widgets = {
'content': SummernoteInplaceWidget()
}
labels = {
"content" : "Inhalt"
}
fields = ['content']