You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
110 lines
3.5 KiB
110 lines
3.5 KiB
import json
|
|
import sys
|
|
from django.http import HttpResponse
|
|
from django.template import loader
|
|
from django.shortcuts import render, redirect
|
|
from .form import *
|
|
|
|
|
|
def get_class(classname):
|
|
"""
|
|
Retrieve a class object by its name.
|
|
|
|
:param classname: Name of the class to retrieve.
|
|
:return: The class object with the given name.
|
|
"""
|
|
return getattr(sys.modules[__name__], classname)
|
|
|
|
|
|
def index(request):
|
|
return render(request, 'ugssim/home.html')
|
|
|
|
|
|
def planungsparameter(request):
|
|
"""
|
|
Die Erzeugung der Webformulare soll dynamisch auf Basis der Model und Form Klassen
|
|
geschehen.
|
|
Dafür wird eine Liste mit den Klassennamen der Models angelegt über die iteriert wird
|
|
über die Funktion get_class(classname) erhält man die Klassenobjekte
|
|
modelclass für das Model
|
|
formclass für das Formular
|
|
über diese wird dann iterierter.
|
|
"""
|
|
|
|
"""
|
|
Anleitung für Nutzerdatenlogin und anzeigen
|
|
https://github.com/OmiDevProjects/show-only-the-data-of-the-user-that-is-logged-in/blob/master/home/views.py
|
|
"""
|
|
|
|
formlist = {}
|
|
modellist = ['Address', 'Summary'] #, 'CompanyData']
|
|
for modelname in modellist:
|
|
modelclass = get_class(modelname)
|
|
formclass = get_class(modelname + 'Form')
|
|
if request.method == "POST":
|
|
if modelname + 'Button' in request.POST:
|
|
form = formclass(request.POST)
|
|
# form.fields.pop('description')
|
|
if form.is_valid():
|
|
modelclass.objects.update(**form.cleaned_data)
|
|
form = formclass(request.POST)
|
|
else:
|
|
form = formclass()
|
|
else:
|
|
try:
|
|
adressdict = modelclass.objects.filter(user=request.user).values().first()
|
|
form = formclass(initial=adressdict)
|
|
except Exception as e:
|
|
form = formclass()
|
|
formpart = {
|
|
'modelname': modelname,
|
|
'form': form,
|
|
'heading': 'Mandatendaten',
|
|
'description': 'Dict Description'
|
|
}
|
|
formlist.update({modelname + "form": formpart})
|
|
|
|
context = {
|
|
'formlist': formlist
|
|
}
|
|
|
|
return render(request, 'planungsparameter/planungsparameter.html', context)
|
|
|
|
|
|
def save_planungsparameter(request):
|
|
"""
|
|
Save the form data for planungsparameter.
|
|
|
|
:param request: The HTTP request object.
|
|
:return: HttpResponse object.
|
|
"""
|
|
|
|
if request.method == "POST":
|
|
if request.headers.get('X-Requested-With') == 'XMLHttpRequest':
|
|
# Load Body
|
|
body = json.loads(request.body.decode('utf-8'))
|
|
# Form Data
|
|
data = body['data']
|
|
# Modelname
|
|
modelName = body['modelName']
|
|
# Get Classes
|
|
formclass = get_class(modelName+'Form')
|
|
modelclass = get_class(modelName)
|
|
form = formclass(data)
|
|
# Check User ID
|
|
user_id = request.user.id
|
|
try:
|
|
form_user_id = int(data['user'])
|
|
except Exception as ex:
|
|
return redirect('logout')
|
|
if form_user_id != user_id:
|
|
return redirect('logout')
|
|
else:
|
|
# Update Database
|
|
if form.is_valid():
|
|
form.save()
|
|
modelclass.objects.udpate_or_create(**form.cleaned_data)
|
|
return HttpResponse("Form data saved successfully.")
|
|
|
|
return HttpResponse("Form data NOT saved.")
|
|
|
|
|