From: Michael Wagner Date: Mon, 31 Mar 2025 15:17:44 +0000 (+0200) Subject: pydev-s6git X-Git-Url: http://wagnertech.de/gitweb/gitweb.cgi/SVBaL.git/commitdiff_plain/b4b80676eb47a7028f5ea5222b541bdae746b584 pydev-s6git --- diff --git a/python/eh_util/eh_app/forms.py b/python/eh_util/eh_app/forms.py index 396bbe2..0b71c69 100644 --- a/python/eh_util/eh_app/forms.py +++ b/python/eh_util/eh_app/forms.py @@ -24,9 +24,14 @@ https://docs.djangoproject.com/en/2.2/topics/forms/ https://docs.djangoproject.com/en/2.2/ref/forms/fields/ ''' class KassenbriefForm(forms.Form): - briefpapier = forms.FileField(label='Briefpapier ändern:', required=False) + #briefpapier = forms.FileField(label='Briefpapier ändern:', required=False) + template = forms.ChoiceField(choices=[('AB', 'ab'),('BC','bc')]) basisbeitrag = forms.IntegerField() zusatzbeitrag = forms.IntegerField(label="Beitrag für Zusatzgrundstück") + def __init__(self, *args, templates=[('AB', 'ab'),('BC','bc')], **kwargs): + self.templates = templates + KassenbriefForm.template = forms.ChoiceField(choices=templates) + super().__init__(*args, **kwargs) class EhmeldungForm(forms.Form): VorZuname = forms.CharField( diff --git a/python/eh_util/eh_app/qmodels.py b/python/eh_util/eh_app/qmodels.py index b503546..bfa577c 100644 --- a/python/eh_util/eh_app/qmodels.py +++ b/python/eh_util/eh_app/qmodels.py @@ -3,6 +3,7 @@ Created on 04.12.2024 @author: sparky2021 ''' +from q import QError from qif import QIF from .AWK import config @@ -20,6 +21,8 @@ class MitgliederQuery: import datetime data_set = self.data_source.request(f"SELECT {self.att_list} FROM {self.file_name} WHERE Abteilung_1 = 'Standard'") + if type(data_set) is QError: + raise RuntimeError(data_set) mm = [] for data in data_set: eintrittsdatum = datetime.datetime.strptime(data[8], '%d.%m.%Y') @@ -46,7 +49,7 @@ class MitgliederQuery: # m.geburtsdatum = data[7] # "Austrittsgrund" # m.zahlungsart = data[16] - # m.iban = data[17] + m.iban = data[11] # m.bic = data[18] # "Kontonummer" # "Bankleitzahl" @@ -82,7 +85,7 @@ class MitgliederQuery: def VersicherteGrundstucke(self, mitglied): # Hole Basiseintrag - data_set = self.data_source.request(f"SELECT Freifeldwert_1 FROM {self.file_name} WHERE `Mitglieds-Nr` = {mitglied.mitgliedsnr}") + data_set = self.data_source.request(f"SELECT Freifeldwert_2 FROM {self.file_name} WHERE `Mitglieds-Nr` = {mitglied.mitgliedsnr}") if data_set[0][0]: gr = data_set[0][0] else: @@ -92,7 +95,11 @@ class MitgliederQuery: # Suche nach weiteren Grunstücken data_set = self.data_source.request(f"SELECT Freifeldwert_2 FROM {self.file_name} WHERE Freifeldname_1 = 'Partnernummer' AND Freifeldwert_1 = {mitglied.mitgliedsnr}") for data in data_set: - gst.append(data[0]) + if len(data[0]) > 0: + gst.append(data[0]) + else: + gst.append(f"{mitglied.strasse}, {mitglied.plz} {mitglied.ort}") + return gst class Mitglied: diff --git a/python/eh_util/eh_app/templates/kassenbrief.html b/python/eh_util/eh_app/templates/kassenbrief.html index f1d906b..08cdd27 100644 --- a/python/eh_util/eh_app/templates/kassenbrief.html +++ b/python/eh_util/eh_app/templates/kassenbrief.html @@ -4,11 +4,14 @@

Erstellung Kassenbrief

-

Überprüfen Sie folgende Eingabedaten

+

Überprüfen Sie folgende Eingabedaten:

+
+ +

Template

+
{% csrf_token %} - {{form}}
Briefpapier:{{briefpapier}}
{{fehlertext}} diff --git a/python/eh_util/eh_util/settings.py b/python/eh_util/eh_util/settings.py index 1264b3c..6a67c6e 100644 --- a/python/eh_util/eh_util/settings.py +++ b/python/eh_util/eh_util/settings.py @@ -79,7 +79,7 @@ WSGI_APPLICATION = 'eh_util.wsgi.application' DATABASES = { 'default': { 'ENGINE': 'django.db.backends.sqlite3', - 'NAME': '/var/django/eh_util.sqlite3', + 'NAME': 'db.sqlite3', } } @@ -88,18 +88,18 @@ DATABASES = { # https://docs.djangoproject.com/en/2.2/ref/settings/#auth-password-validators AUTH_PASSWORD_VALIDATORS = [ - { - 'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator', - }, - { - 'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator', - }, - { - 'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator', - }, - { - 'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator', - }, + #{ + # 'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator', + #}, + #{ + # 'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator', + #}, + #{ + # 'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator', + #}, + #{ + # 'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator', + #}, ] diff --git a/python/eh_util/eh_util/urls.py b/python/eh_util/eh_util/urls.py index 2cb5b2a..0d8d93c 100644 --- a/python/eh_util/eh_util/urls.py +++ b/python/eh_util/eh_util/urls.py @@ -20,6 +20,7 @@ from . import views urlpatterns = [ path('', views.index), + path('accounts/login/', views.login), path('admin/', admin.site.urls), path('eh-abgleich/', include('eh_abgleich.urls')), # path('/', views.vbasis), diff --git a/python/eh_util/eh_util/views.py b/python/eh_util/eh_util/views.py index 990de52..e4e8444 100644 --- a/python/eh_util/eh_util/views.py +++ b/python/eh_util/eh_util/views.py @@ -7,8 +7,45 @@ def index(request): template = loader.get_template('index.html') return HttpResponse(template.render({}, request)) +def login(request): + from django.contrib.auth import authenticate + from .forms import LoginForm + + fehlertext = "" + # if this is a POST request we need to process the form data + if request.method == 'POST': + # create a form instance and populate it with data from the request: + form = LoginForm(request.POST, request.FILES) + # check whether it's valid: + if form.is_valid(): + user = authenticate( + username = request.POST["name"], + password = request.POST["password"], + ) + if user is None: + # login fehlgeschlagen + fehlertext = "Login fehlgeschlagen" + + else: + next = request.POST.get("next", None) + if next: + return HttpResponseRedirect(next) + else: + return HttpResponseRedirect('/') + + # if a GET (or any other method) we'll create a blank form + else: + next = None + verein = "" + next = request.GET.get("next", None) + if next: + path_elems = next.split("/") + verein = path_elems[1] + form = LoginForm(initial={'next': next, 'verein': verein}) + + return render(request, 'login.html', {'form': form, 'fehlertext': fehlertext}) + def vbasis(request, verein): template = loader.get_template("vbasis.html") return HttpResponse(template.render({"verein" : verein}, request)) - \ No newline at end of file