PyCharm Entwicklungsumgebung
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.
 
 
 
 

124 lines
4.1 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', 'Company']
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()
"""
form = formclass()
else:
try:
dict = modelclass.objects.filter(user=request.user).values().first()
form = formclass(initial=dict)
except Exception as e:
form = formclass()
formpart = {
'modelname': modelname,
'form': form,
'heading': form.heading,
'description': form.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 pk:
: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_instance=User.objects.get(id=request.user.id)
form = formclass(data,instance=form_instance)
# 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:
if modelclass.objects.filter(pk=form_user_id).exists():
# Update Database
# form.initial['user'] = 1
if form.is_valid():
for key,value in form.cleaned_data.items():
# print(key, value)
modelclass.objects.filter(pk=form_user_id).update(**{key:value})
return HttpResponse("Form data updates successfully.")
else:
if form.is_valid():
modelclass.objects.create(**form.cleaned_data)
return HttpResponse("Form data saved successfully.")
return HttpResponse("Form data NOT saved.")