Compare commits

...

3 Commits

  1. 1
      UGSdjangoProject/.idea/UGSdjangoProject.iml
  2. 6
      UGSdjangoProject/UGSdjangoProject/settings.py
  3. 2
      UGSdjangoProject/UGSdjangoProject/urls.py
  4. BIN
      UGSdjangoProject/db.sqlite3
  5. 57
      UGSdjangoProject/ugssim/form.py
  6. 43
      UGSdjangoProject/ugssim/migrations/0001_initial.py
  7. 26
      UGSdjangoProject/ugssim/migrations/0001_initial.py.org
  8. 50
      UGSdjangoProject/ugssim/migrations/0002_salesarea_salesareatype_summary_companydata_and_more.py.org
  9. 23
      UGSdjangoProject/ugssim/migrations/0003_alter_address_postleitzahl_alter_address_street.py.org
  10. 31
      UGSdjangoProject/ugssim/models.py
  11. 10
      UGSdjangoProject/ugssim/templates/planungsparameter/companydata.html
  12. 19
      UGSdjangoProject/ugssim/templates/planungsparameter/mandantendaten.html
  13. 51
      UGSdjangoProject/ugssim/templates/planungsparameter/planungsparameter.html
  14. 12
      UGSdjangoProject/ugssim/templates/planungsparameter/summary.html
  15. 3
      UGSdjangoProject/ugssim/templates/ugssim/address.html
  16. 63
      UGSdjangoProject/ugssim/templates/ugssim/navigation.html
  17. 1
      UGSdjangoProject/ugssim/templates/ugssim/ugssim.html
  18. 10
      UGSdjangoProject/ugssim/urls.py
  19. 60
      UGSdjangoProject/ugssim/views.py

@ -26,6 +26,7 @@
<option value="$MODULE_DIR$/templates" /> <option value="$MODULE_DIR$/templates" />
<option value="$MODULE_DIR$/ugssim/templates/ugssim" /> <option value="$MODULE_DIR$/ugssim/templates/ugssim" />
<option value="$MODULE_DIR$/ugssim/templates" /> <option value="$MODULE_DIR$/ugssim/templates" />
<option value="$MODULE_DIR$/ugssim/templates/planungsparameter" />
</list> </list>
</option> </option>
</component> </component>

@ -105,7 +105,7 @@ AUTH_PASSWORD_VALIDATORS = [
# Internationalization # Internationalization
# https://docs.djangoproject.com/en/5.0/topics/i18n/ # https://docs.djangoproject.com/en/5.0/topics/i18n/
LANGUAGE_CODE = 'en-us' LANGUAGE_CODE = 'de-de'
TIME_ZONE = 'UTC' TIME_ZONE = 'UTC'
@ -124,4 +124,6 @@ STATIC_URL = 'static/'
DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField' DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField'
STATICFILES_DIRS = [os.path.join(BASE_DIR, "static")] STATICFILES_DIRS = [os.path.join(BASE_DIR, "static")]
#DATE_INPUT_FORMATS = ['%d-%m-%Y']

@ -22,5 +22,5 @@ from django.urls import path,include
urlpatterns = [ urlpatterns = [
path('admin/', admin.site.urls), path('admin/', admin.site.urls),
path('ugs/', include('ugssim.urls')), path('', include('ugssim.urls')),
] ]

Binary file not shown.

@ -1,10 +1,63 @@
from django import forms from django import forms
from django.forms import DateInput
from .models import *
from django import forms from django import forms
from .models import Address
''''
class AddressForm(forms.Form):
vorname = forms.CharField(max_length=255)
nachname = forms.CharField(max_length=255)
geburtstag = forms.DateField(widget=forms.SelectDateWidget)
street = forms.CharField(max_length=255)
hausnummer = forms.CharField(max_length=10)
postleitzahl = forms.CharField(max_length=5)
'''
class AddressForm(forms.ModelForm): class AddressForm(forms.ModelForm):
class Meta: class Meta:
model = Address model = Address
fields = ['vorname', 'nachname', 'geburtstag', 'street', 'hausnummer', 'postleitzahl'] fields = '__all__'
# noinspection PyRedundantParentheses
widgets = {
'geburtstag': forms.DateInput(
format=('%Y-%m-%d'),
attrs={'class': 'form-control',
'placeholder': 'Wähle ein Datum',
'type': 'date'
}
)
}
def is_valid(self):
return True
class SummaryForm(forms.ModelForm):
class Meta:
model = Summary
fields = '__all__'
widgets = {
'text': forms.Textarea(attrs={'rows': 10, 'cols': 30})
}
class SalesAreaTypeForm(forms.ModelForm):
class Meta:
model = SalesAreaType
fields = '__all__'
class SalesAreaForm(forms.ModelForm):
class Meta:
model = SalesArea
fields = '__all__'
class CompanyDataForm(forms.ModelForm):
class Meta:
model = CompanyData
fields = '__all__'

@ -1,5 +1,6 @@
# Generated by Django 5.0.1 on 2024-03-06 10:00 # Generated by Django 5.0.1 on 2024-03-13 12:59
import django.db.models.deletion
from django.db import migrations, models from django.db import migrations, models
@ -18,9 +19,45 @@ class Migration(migrations.Migration):
('vorname', models.CharField(max_length=255)), ('vorname', models.CharField(max_length=255)),
('nachname', models.CharField(max_length=255)), ('nachname', models.CharField(max_length=255)),
('geburtstag', models.DateField()), ('geburtstag', models.DateField()),
('street', models.CharField(max_length=255)), ('street', models.CharField(max_length=10)),
('hausnummer', models.CharField(max_length=255)), ('hausnummer', models.CharField(max_length=255)),
('postleitzahl', models.PositiveIntegerField()), ('postleitzahl', models.CharField(max_length=5)),
], ],
), ),
migrations.CreateModel(
name='SalesArea',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('title', models.CharField(max_length=255)),
],
),
migrations.CreateModel(
name='SalesAreaType',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('title', models.CharField(max_length=255)),
],
),
migrations.CreateModel(
name='Summary',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('text', models.TextField(max_length=2000)),
],
),
migrations.CreateModel(
name='CompanyData',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('title', models.CharField(max_length=255)),
('website', models.URLField()),
('startDate', models.DateField()),
('salesArea', models.ManyToManyField(related_name='+', to='ugssim.salesarea')),
],
),
migrations.AddField(
model_name='salesarea',
name='type',
field=models.ForeignKey(on_delete=django.db.models.deletion.RESTRICT, to='ugssim.salesareatype'),
),
] ]

@ -0,0 +1,26 @@
# Generated by Django 5.0.1 on 2024-03-06 10:00
from django.db import migrations, models
class Migration(migrations.Migration):
initial = True
dependencies = [
]
operations = [
migrations.CreateModel(
name='Address',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('vorname', models.CharField(max_length=255)),
('nachname', models.CharField(max_length=255)),
('geburtstag', models.DateField()),
('street', models.CharField(max_length=255)),
('hausnummer', models.CharField(max_length=255)),
('postleitzahl', models.PositiveIntegerField()),
],
),
]

@ -0,0 +1,50 @@
# Generated by Django 5.0.1 on 2024-03-12 16:10
import django.db.models.deletion
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('ugssim', '0001_initial'),
]
operations = [
migrations.CreateModel(
name='SalesArea',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('title', models.CharField(max_length=255)),
],
),
migrations.CreateModel(
name='SalesAreaType',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('title', models.CharField(max_length=255)),
],
),
migrations.CreateModel(
name='Summary',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('text', models.TextField(max_length=2000)),
],
),
migrations.CreateModel(
name='CompanyData',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('title', models.CharField(max_length=255)),
('website', models.URLField()),
('startDate', models.DateField()),
('salesArea', models.ManyToManyField(related_name='+', to='ugssim.salesarea')),
],
),
migrations.AddField(
model_name='salesarea',
name='type',
field=models.ForeignKey(on_delete=django.db.models.deletion.RESTRICT, to='ugssim.salesareatype'),
),
]

@ -0,0 +1,23 @@
# Generated by Django 5.0.1 on 2024-03-13 10:04
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('ugssim', '0002_salesarea_salesareatype_summary_companydata_and_more'),
]
operations = [
migrations.AlterField(
model_name='address',
name='postleitzahl',
field=models.CharField(max_length=5),
),
migrations.AlterField(
model_name='address',
name='street',
field=models.CharField(max_length=10),
),
]

@ -1,15 +1,40 @@
from datetime import date
from django import forms
from django.db import models from django.db import models
# Create your models here. # Create your models here.
class Address(models.Model): class Address(models.Model):
vorname = models.CharField(max_length=255) vorname = models.CharField(max_length=255)
nachname = models.CharField(max_length=255) nachname = models.CharField(max_length=255)
geburtstag = models.DateField() geburtstag: date = models.DateField()
street = models.CharField(max_length=255) street = models.CharField(max_length=10)
hausnummer = models.CharField(max_length=255) hausnummer = models.CharField(max_length=255)
postleitzahl = models.PositiveIntegerField() postleitzahl = models.CharField(max_length=5)
def __str__(self): def __str__(self):
return f'{self.vorname} {self.nachname} lives at {self.street} {self.hausnummer}, {self.postleitzahl}' return f'{self.vorname} {self.nachname} lives at {self.street} {self.hausnummer}, {self.postleitzahl}'
class Summary(models.Model):
text = models.TextField(max_length=2000)
def __str__(self):
return self.text
class SalesAreaType(models.Model):
title = models.CharField(max_length=255)
class SalesArea(models.Model):
title = models.CharField(max_length=255)
type = models.ForeignKey(SalesAreaType, on_delete=models.RESTRICT)
class CompanyData(models.Model):
title = models.CharField(max_length=255)
website = models.URLField(max_length=200)
startDate = models.DateField()
#salesArea = models.ManyToManyField(SalesArea, related_name='+')

@ -0,0 +1,10 @@
<div class="container">
{% csrf_token %}
{% for field in companyDataForm %}
<div class="form-group">
<label for="{{ field.id_for_label }}">{{ field.label }}</label>
<input class="form-control" type="{{ field.field.widget.input_type }}" name="{{ field.html_name }}" id="{{ field.auto_id }}" value="{{ field.value|default_if_none:"" }}" >
</div>
{% endfor %}
<button type="submit" class="btn btn-primary" name="companyDataButton">Submit</button>
</div>

@ -0,0 +1,19 @@
<div class="container">
<!-- <form method="post" class="form-group">-->
{% csrf_token %}
{% for field in addressForm %}
<div class="form-group">
<label for="{{ field.id_for_label }}">{{ field.label }}</label>
<input class="form-control"
type="{{ field.field.widget.input_type }}"
name="{{ field.html_name }}"
id="{{ field.auto_id }}"
value="{{ field.value|default_if_none:"" }}"
>
</div>
{% endfor %}
<button type="submit" class="btn btn-primary" name="addressButton">Submit</button>
<!--</form> -->
</div>

@ -0,0 +1,51 @@
{% extends 'ugssim/ugssim.html' %}
{% block content %}
<form method="post" class="form-group">
<div class="accordion" id="accordionPlanning">
<div class="accordion-item">
<h2 class="accordion-header">
<button class="accordion-button" type="button" data-bs-toggle="collapse"
data-bs-target="#collapseOne"
aria-expanded="true" aria-controls="collapseOne">
Mandantendaten
</button>
</h2>
<div id="collapseOne" class="accordion-collapse collapse show" data-bs-parent="#accordionPlanning">
<div class="accordion-body">
{% include 'planungsparameter/mandantendaten.html' %}
</div>
</div>
</div>
<div class="accordion-item">
<h2 class="accordion-header">
<button class="accordion-button collapsed" type="button" data-bs-toggle="collapse"
data-bs-target="#collapseTwo" aria-expanded="false" aria-controls="collapseTwo">
Kurzfassung
</button>
</h2>
<div id="collapseTwo" class="accordion-collapse collapse" data-bs-parent="#accordionPlanning">
<div class="accordion-body">
{% include 'planungsparameter/summary.html' %}
</div>
</div>
</div>
<div class="accordion-item">
<h2 class="accordion-header">
<button class="accordion-button collapsed" type="button" data-bs-toggle="collapse"
data-bs-target="#collapseThree" aria-expanded="false" aria-controls="collapseThree">
Unternehmensdaten
</button>
</h2>
<div id="collapseThree" class="accordion-collapse collapse" data-bs-parent="#accordionPlanning">
<div class="accordion-body">
{% include 'planungsparameter/companydata.html' %}
</div>
</div>
</div>
</div>
</form>
<!-- Add more sections here -->
{% endblock content %}
</div>

@ -0,0 +1,12 @@
<div class="container">
<form method="post" class="form-group">
{% csrf_token %}
{% for field in summaryForm %}
<div class="form-group">
<label for="{{ field.id_for_label }}">{{ field.label }}</label>
<input class="form-control" type="{{ field.field.widget.input_type }}" name="{{ field.html_name }}" id="{{ field.auto_id }}" value="{{ field.value|default_if_none:"" }}" >
</div>
{% endfor %}
<button type="submit" class="btn btn-primary" name="summaryButton">Submit</button>
</form>
</div>

@ -12,6 +12,5 @@
<button type="submit" class="btn btn-primary">Submit</button> <button type="submit" class="btn btn-primary">Submit</button>
</form> </form>
</div> </div>
</body>
</html>
{% endblock content %} {% endblock content %}

@ -1,37 +1,40 @@
<nav class="navbar navbar-expand-lg bg-light"> <nav class="navbar navbar-expand-lg bg-light">
<div class="container-fluid"> <div class="container-fluid">
<!--<a class="navbar-brand" href="#">Menü</a>--> <!--<a class="navbar-brand" href="#">Menü</a>-->
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarSupportedContent" <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarSupportedContent"
aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation"> aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span> <span class="navbar-toggler-icon"></span>
</button> </button>
<div class="collapse navbar-collapse" id="navbarSupportedContent"> <div class="collapse navbar-collapse" id="navbarSupportedContent">
<ul class="navbar-nav me-auto mb-2 mb-lg-0"> <ul class="navbar-nav me-auto mb-2 mb-lg-0">
<li class="nav-item"> <li class="nav-item">
<a class="nav-link active" aria-current="page" href="/ugs/">Home</a> <a class="nav-link active" aria-current="page" href="/">Home</a>
</li> </li>
<li class="nav-item"> <li class="nav-item">
<a class="nav-link" href="/ugs/input/">Erfassung</a> <a class="nav-link" href="/planungsparameter/">Planungsparameter</a>
</li> </li>
<li class="nav-item dropdown"> <li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" href="#" role="button" data-bs-toggle="dropdown" aria-expanded="false"> <a class="nav-link dropdown-toggle" href="#" role="button" data-bs-toggle="dropdown"
Auswertung aria-expanded="false">
</a> Auswertung
<ul class="dropdown-menu"> </a>
<li><a class="dropdown-item" href="/mockup/tables/">Tabellen</a></li> <ul class="dropdown-menu">
<li><a class="dropdown-item" href="#">Diagramme</a></li> <li><a class="dropdown-item" href="/mockup/tables/">Tabellen</a></li>
<li><hr class="dropdown-divider"></li> <li><a class="dropdown-item" href="#">Diagramme</a></li>
<li><a class="dropdown-item" href="#">Export</a></li> <li>
</ul> <hr class="dropdown-divider">
</li> </li>
<li class="nav-item"> <li><a class="dropdown-item" href="#">Export</a></li>
<a class="nav-link disabled">Pro Version Button</a> </ul>
</li> </li>
<li class="nav-item">
<a class="nav-link disabled">Pro Version Button</a>
</li>
</ul> </ul>
<form class="d-flex" role="search"> <form class="d-flex" role="search">
<input class="form-control me-2" type="search" placeholder="Suche" aria-label="Search"> <input class="form-control me-2" type="search" placeholder="Suche" aria-label="Search">
<button class="btn btn-outline-success" type="submit">Suche</button> <button class="btn btn-outline-success" type="submit">Suche</button>
</form> </form>
</div>
</div> </div>
</nav> </div>
</nav>

@ -1,4 +1,5 @@
{% load static %} {% load static %}
<script src="{% static 'bootstrap/js/bootstrap.bundle.js' %}"></script>
<!DOCTYPE html> <!DOCTYPE html>
<html lang="de"> <html lang="de">
<head> <head>

@ -2,7 +2,9 @@ from django.urls import path
from . import views from . import views
urlpatterns = [ urlpatterns = [
path('',views.index, name='ugs_index'), path('', views.index, name='ugs_index'),
path('input/',views.input, name='ugs_input'), path('input/', views.input, name='ugs_input'),
# path('tables/',views.tables, name='ugstables'), path('address/', views.address, name='ugs_address'),
] path('planungsparameter/', views.planungsparameter, name='ugs_planungsparameter'),
# path('tables/',views.tables, name='ugstables'),
]

@ -2,39 +2,78 @@ from django.shortcuts import render
from django.http import HttpResponse from django.http import HttpResponse
from django.template import loader from django.template import loader
from django.shortcuts import render from django.shortcuts import render
from .form import AddressForm from .form import *
from .models import *
from django.forms.models import model_to_dict
from django.views.generic import TemplateView from django.views.generic import TemplateView
from ugssim.form import NameForm
# from ugssim.form import NameForm
# Create your views here. # Create your views here.
def index(request): def index(request):
template = loader.get_template('ugssim/home.html') return render(request, 'ugssim/home.html')
return HttpResponse(template.render())
def planungsparameter(request):
addressForm = AddressForm()
summaryForm = SummaryForm()
companyDataForm = CompanyDataForm()
if request.method == "POST":
rp = request.POST
if 'addressButton' in rp:
addressForm = AddressForm(request.POST)
if addressForm.is_valid():
#Address.objects.create(**addressForm.cleaned_data)
addressForm.save()
elif 'summaryButton' in rp:
summaryForm = SummaryForm(request.POST)
if summaryForm.is_valid():
Summary.objects.update(**summaryForm.cleaned_data)
elif 'companyDataButton' in rp:
companyDataForm = CompanyDataForm(request.POST)
if companyDataForm.is_valid():
CompanyData.objects.update(**companyDataForm.cleaned_data)
else:
initial = model_to_dict(Address.objects.filter(id=1).first())
addressForm = AddressForm(initial=initial)
context = {
'addressForm': addressForm,
'summaryForm': summaryForm,
'companyDataForm': companyDataForm
}
return render(request, 'planungsparameter/planungsparameter.html', context)
def companydata(request): def companydata(request):
template = loader.get_template('ugssim/companydata.html') template = loader.get_template('ugssim/companydata.html')
return HttpResponse(template.render()) return HttpResponse(template.render(request))
def input(request): def input(request):
template = loader.get_template('ugssim/companydata.html') template = loader.get_template('ugssim/companydata.html')
return HttpResponse(template.render()) return HttpResponse(template.render(request))
'''
def get_name(request): def get_name(request):
if request.method == 'POST': if request.method == 'POST':
form= NameForm(request.POST) form = NameForm(request.POST)
if form.is_valid(): if form.is_valid():
return HttpResponse(f"Hello, {form.your_name}!") return HttpResponse(f"Hello, {form.your_name}!")
else: else:
form = NameForm() form = NameForm()
return render(request, 'ugssim/name.html', {'form': form}) return render(request, 'ugssim/name.html', {'form': form})
'''
from django.shortcuts import render
from .form import AddressForm
def address(request): def address(request):
if request.method == 'POST': if request.method == 'POST':
@ -43,5 +82,4 @@ def address(request):
form.save() form.save()
else: else:
form = AddressForm() form = AddressForm()
return render(request, 'address.html', {'form': form}) return render(request, 'ugssim/address.html', {'form': form})

Loading…
Cancel
Save