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.")