From 28e01adde11e4e6c1b1b5c53261555fe0a746feb Mon Sep 17 00:00:00 2001 From: Ulf Wagner Date: Fri, 15 Mar 2024 12:21:12 +0100 Subject: [PATCH] =?UTF-8?q?Eingabefelder=20werden=20dynamisch=20aus=20dem?= =?UTF-8?q?=20Model/Form=20erzeugt.=20Aufger=C3=A4umt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- UGSdjangoProject/ugssim/form.py | 2 +- .../planungsparameter/planungsparameter.html | 19 ++++-- .../ugssim/templates/ugssim/navigation.html | 4 +- .../ugssim/templatetags/read_dictonary.py | 3 +- UGSdjangoProject/ugssim/urls.py | 2 - UGSdjangoProject/ugssim/views.py | 61 +++++-------------- 6 files changed, 33 insertions(+), 58 deletions(-) diff --git a/UGSdjangoProject/ugssim/form.py b/UGSdjangoProject/ugssim/form.py index 4389f23..4f7be59 100644 --- a/UGSdjangoProject/ugssim/form.py +++ b/UGSdjangoProject/ugssim/form.py @@ -45,7 +45,7 @@ class SummaryForm(UGSModelForm): model = Summary fields = '__all__' widgets = { - 'text': forms.Textarea(attrs={'rows': 10, 'cols': 30}) + 'text': forms.Textarea(attrs={'rows': 10}) } diff --git a/UGSdjangoProject/ugssim/templates/planungsparameter/planungsparameter.html b/UGSdjangoProject/ugssim/templates/planungsparameter/planungsparameter.html index b844acf..658af2a 100644 --- a/UGSdjangoProject/ugssim/templates/planungsparameter/planungsparameter.html +++ b/UGSdjangoProject/ugssim/templates/planungsparameter/planungsparameter.html @@ -4,11 +4,10 @@
{% csrf_token %}
- {% define '' as show %} {% for key,value in formlist.items %} {% define value|lookup:'form' as myform %} {% define value|lookup:'modelname' as modelname %} - {% define value|lookup:'description' as description %} + {% define value|lookup:'description' as description %}

-
+
- {% include 'planungsparameter/mandantendaten.html' %} + {{ description }} + {% for field in myform %} +
+ {% if field.html_name == "description" %} + {% else %} + + {{field }} + {% endif %} +
+ {% endfor %} +
- {% endfor %}
diff --git a/UGSdjangoProject/ugssim/templates/ugssim/navigation.html b/UGSdjangoProject/ugssim/templates/ugssim/navigation.html index 3c6d4d0..a3654ec 100644 --- a/UGSdjangoProject/ugssim/templates/ugssim/navigation.html +++ b/UGSdjangoProject/ugssim/templates/ugssim/navigation.html @@ -30,11 +30,11 @@ - +
diff --git a/UGSdjangoProject/ugssim/templatetags/read_dictonary.py b/UGSdjangoProject/ugssim/templatetags/read_dictonary.py index eaf4978..df7f4fe 100644 --- a/UGSdjangoProject/ugssim/templatetags/read_dictonary.py +++ b/UGSdjangoProject/ugssim/templatetags/read_dictonary.py @@ -1,9 +1,8 @@ from django import template from django.template.loader_tags import register -register = template.Library() - +# register = template.Library() @register.filter(name='lookup') def lookup(value, arg): """ diff --git a/UGSdjangoProject/ugssim/urls.py b/UGSdjangoProject/ugssim/urls.py index a2acb85..9accbd6 100644 --- a/UGSdjangoProject/ugssim/urls.py +++ b/UGSdjangoProject/ugssim/urls.py @@ -3,8 +3,6 @@ from . import views urlpatterns = [ path('', views.index, name='ugs_index'), - path('input/', views.input, name='ugs_input'), - path('address/', views.address, name='ugs_address'), path('planungsparameter/', views.planungsparameter, name='ugs_planungsparameter'), # path('tables/',views.tables, name='ugstables'), ] diff --git a/UGSdjangoProject/ugssim/views.py b/UGSdjangoProject/ugssim/views.py index b605a19..7d38390 100644 --- a/UGSdjangoProject/ugssim/views.py +++ b/UGSdjangoProject/ugssim/views.py @@ -1,14 +1,18 @@ -from django.shortcuts import render +import sys from django.http import HttpResponse from django.template import loader from django.shortcuts import render from .form import * -from .models import * -from django.forms.models import model_to_dict -import sys + 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) @@ -17,32 +21,27 @@ def index(request): def planungsparameter(request): - ''' + """ Die Erzeugung der Webformulare soll dynamisch auf Basis der Model und Form Klassen geschehen. - Dafür wird eine Liste mit den Klassenname der Models angelegt über die iteriert wird - Über die Funktion get_class(classname) erhält man das Klassenobjekt - modelclass für das Model - formclass für das Form + 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. - Ein Formularfeld 'description' ist bei jedem Formular vorhanden, da die aber nicht - in der Datenbank /Model vorhanden ist. Daher wird dieses Feld entfernt (pop) - ''' + """ formlist = {} modellist = ['Address', 'Summary', 'CompanyData'] for modelname in modellist: - # globals()[ + 'Form'] = get_class( + 'Form') modelclass = get_class(modelname) formclass = get_class(modelname + 'Form') if request.method == "POST": - rp = request.POST - if modelname + 'Button' in rp: + if modelname + 'Button' in request.POST: form = formclass(request.POST) form.fields.pop('description') if form.is_valid(): modelclass.objects.update(**form.cleaned_data) else: - initial = {'description': 'Tester'} # initial.update(model_to_dict(modelclass.objects.filter(id=1).first())) form = formclass() formpart = { @@ -60,33 +59,3 @@ def planungsparameter(request): return render(request, 'planungsparameter/planungsparameter.html', context) -def companydata(request): - template = loader.get_template('ugssim/companydata.html') - return HttpResponse(template.render(request)) - - -def input(request): - template = loader.get_template('ugssim/companydata.html') - return HttpResponse(template.render(request)) - - -''' -def get_name(request): - if request.method == 'POST': - form = NameForm(request.POST) - if form.is_valid(): - return HttpResponse(f"Hello, {form.your_name}!") - else: - form = NameForm() - return render(request, 'ugssim/name.html', {'form': form}) -''' - - -def address(request): - if request.method == 'POST': - form = AddressForm(request.POST) - if form.is_valid(): - form.save() - else: - form = AddressForm() - return render(request, 'ugssim/address.html', {'form': form})