From 9ad984beefafe36cf480af690c4e44da288488fa Mon Sep 17 00:00:00 2001 From: "holger.trampe" Date: Fri, 23 Oct 2020 10:27:13 +0200 Subject: [PATCH] Ladning page und Bestellung und Reg fertig --- .../__pycache__/urls.cpython-38.pyc | Bin 3042 -> 3172 bytes digitaleagentur/urls.py | 4 +- recoverdir/forms.py | 6 +- recoverdir/views.py | 3 +- users/admin.py | 5 +- users/models.py | 13 ++ users/templates/users/landingpage.html | 4 +- users/templates/users/rdorder_complete.html | 24 ++++ users/templates/users/register.html | 2 +- users/templates/users/register_da_rd.html | 58 +++++++++ users/templates/users/register_rd.html | 56 ++++++++ users/usersforms.py | 50 +++++++- users/views.py | 121 +++++++++++++++++- 13 files changed, 330 insertions(+), 16 deletions(-) create mode 100644 users/templates/users/rdorder_complete.html create mode 100644 users/templates/users/register_da_rd.html create mode 100644 users/templates/users/register_rd.html diff --git a/digitaleagentur/__pycache__/urls.cpython-38.pyc b/digitaleagentur/__pycache__/urls.cpython-38.pyc index 738ecd8bad9c42c23ca8210f06008331687b049f..4758bd49a89e2fc79087c1f1a8442e7994ce5e90 100644 GIT binary patch delta 726 zcmY+BOK;Oa6oox@>O5>GPLn1kB!SWtnuewl0wUfmMIZ_kXbF_zk%rt!sAVUT1LCpi zB1;sB#48pE5I-Sn_V5o-goFfaKtk-0*dVTr%VVs$KHoWabVr&G$xm9LtSBK4SFPW# z^c9Z#=)k`#hcJh`{k>NxubC=U%_xl$4*Vb(qoznjR|gEyjM11Gr*UKsg2tGcpb1xp zjHIbi&DD~z#Z1wZt7T)WnWkyNF##0j*E4#y_jW?qrf={4d~<4C&%yyX2#2~n9ENCD zz^)_MwFCX55a|*)=DBm|PM|yQy2m|t0o|OQwZnX7Lxt0xyU3z&#?xn6d~mTtIy}x@M!nJ@aLLQc$d{3?c)W^y6)0Tm@^1fi6VB!sXXLJFl20!;vc3QDH9`u}=znGQ*g~8td&l%vxgi<{PY8d$4?BD7Kmg{s;Gk zr#y)d65=A+uWU9#)q>fF(k9MW@E4p!{*$yU7*zaE2r1e>0?)=IynrP;CFzu~QzG`u zV2-HvYphZGYj9c{MSG}%UTrp7#agRbFW$9`wiUByL*K-bbEahHq}50rrA$;JyIhhUZ}ln9+=W-}m0=74zHsS#Go)$0E3%MXwh3Z9;za z;ont7n8dUBWxLVtPy$I{K`u18sq#QzhAwx*JkKK&NCgMN0xzg+1;wz$ODd;>a_DhS zWji<+4)Q@t1OrDT{X>3b`+JQY_K!%De%u=JD{uzR!nxRh^Weq|+b&?+QS=uf8&jCj zb`tF{+9_qHwY`M4iuSUySG1iG8MvzRtjNBpyd`i=^PDjK8eIQNTW~`p;AWS04IF$6 z^X)E$JGylqc>%el`7UxB?!o=oQ2ia`2UzF2{!owKVHPQPrFk% zcx_0eMamz+a}1VZqfB@m^YNEP^hwlJ?F8~@zjhjHu*}C`g*O0NWK_sHo1jdtvQxbe zY}cUqUdx=Lz0b)VN>9o#^*UX|4~_7*N#w|3YlLRx4BlD!+#2(8sK4gGUs_+=7+={~ zUmbrD1)Gs8-&=cTv;U?k-=#a*WsEk>QCsbTOxaC2Z5N#%Mm6&-Q5&EImY{zC)FhT- diff --git a/digitaleagentur/urls.py b/digitaleagentur/urls.py index 5dc30ae..2b302c4 100644 --- a/digitaleagentur/urls.py +++ b/digitaleagentur/urls.py @@ -3,7 +3,7 @@ from django.urls import path, include from django.contrib.auth import views as auth_views from django.conf import settings from django.conf.urls.static import static -from users.views import AgencyCreateView, registerNewAgency, landingPage +from users.views import AgencyCreateView, registerNewAgency, landingPage, registerNewAgencyRD, onlyRD from . import views from .views import GetCryptFile, GetCryptFileRecover from django.contrib.auth.decorators import login_required @@ -33,6 +33,8 @@ urlpatterns = [ path('password-reset-confirm///', auth_views.PasswordResetConfirmView.as_view(template_name='users/password_reset_confirm.html'), name='password_reset_confirm'), path('password-reset-complete/', auth_views.PasswordResetCompleteView.as_view(template_name='users/password_reset_complete.html'), name='password_reset_complete'), path('register/', registerNewAgency, name='register'), + path('registerdard/', registerNewAgencyRD, name='register-rd'), + path('registerrd/', onlyRD, name='register-ord'), path('vve/', landingPage.as_view(), name="landingpage"), path('register/done', views.registerdone, name='register-done'), path('summernote/', include('django_summernote.urls')), diff --git a/recoverdir/forms.py b/recoverdir/forms.py index 46799f2..ad7510c 100644 --- a/recoverdir/forms.py +++ b/recoverdir/forms.py @@ -5,7 +5,7 @@ from bootstrap_datepicker_plus import DatePickerInput from django.contrib.auth.password_validation import validate_password from django.core import validators from passwords.validators import * - +from captcha.fields import CaptchaField class PersLetterForm(forms.ModelForm): @@ -28,10 +28,14 @@ class LoginRDForm(forms.Form): class LoginRDExternalForm(forms.Form): + + captcha = CaptchaField() + def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self.fields['key'] = forms.CharField(label="Sicherheitssschlüssel", required=True) self.fields['pass'] = forms.CharField(widget=forms.PasswordInput, label="Passwort", required=True) + self.fields['captcha'] = CaptchaField(required=True, label="Bitte geben Sie die Symbole ein.") class RecoverDirSettingForm(forms.ModelForm): diff --git a/recoverdir/views.py b/recoverdir/views.py index 7d0b206..97dc86f 100644 --- a/recoverdir/views.py +++ b/recoverdir/views.py @@ -82,13 +82,14 @@ class LoadExternalDataLogin(FormView): # LOGIN IN DIE NOTFALLHILFE for ele in settings: - if(ele.recoverkey == key and ele.logpass == password): + if(ele.recoverkey == key and ele.logpass == password and form.is_valid()): ele.lastlogg = datetime.now() ele.save() return redirect('load-rd-external-logged', agpk=ele.agency.pk) else: messages.warning(self.request, f'Die eingegebenen Daten sind nicht korrekt!') return redirect('load-rd-external') + return super().form_valid(form) class CloseExternalData(TemplateView): diff --git a/users/admin.py b/users/admin.py index 7551001..2a4e016 100644 --- a/users/admin.py +++ b/users/admin.py @@ -1,5 +1,5 @@ from django.contrib import admin -from .models import Profile, Agency, AgencyGroup, AgencyJob, AgencyNetwork, AgencyNetworkPreperation, UserTime, UserYearAbsenceInfo, UserNotifications, AgencyBills +from .models import Profile, Agency, AgencyGroup, AgencyJob, AgencyNetwork, AgencyNetworkPreperation, UserTime, UserYearAbsenceInfo, UserNotifications, AgencyBills, RegNotfallhilfe from .priomodel import Prio from standards.models import StandardCommentRate, StandardComments from django.contrib.auth.models import Permission @@ -41,4 +41,5 @@ admin.site.register(Documents, SimpleHistoryAdmin) admin.site.register(Handlungsleitfaden) admin.site.register(RDContact) admin.site.register(RecoverDirSetting) -admin.site.register(MainStatistic) \ No newline at end of file +admin.site.register(MainStatistic) +admin.site.register(RegNotfallhilfe) \ No newline at end of file diff --git a/users/models.py b/users/models.py index 573773a..354fc2b 100644 --- a/users/models.py +++ b/users/models.py @@ -496,6 +496,19 @@ class AgencyGroup(models.Model): ('recoverdirmanager', 'Notfallhilfe verwalten') ] +class RegNotfallhilfe(models.Model): + + mail = models.CharField(max_length=500, blank=True) + name = models.CharField(max_length=500, blank=True) + persnumber = models.CharField(max_length=500, blank=True) + mitgliedsnummer = models.CharField(max_length=500, blank=True) + plz = models.CharField(max_length=500, blank=True) + stadt = models.CharField(max_length=500, blank=True) + street = models.CharField(max_length=500, blank=True) + data_to_vh = models.BooleanField(default=True) + rabatt = models.BooleanField(default=False) + + # SUBCLASS class UserFullName(User): class Meta: diff --git a/users/templates/users/landingpage.html b/users/templates/users/landingpage.html index 0c5d72c..6398a77 100644 --- a/users/templates/users/landingpage.html +++ b/users/templates/users/landingpage.html @@ -50,7 +50,7 @@

Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.

- Registrieren & Bestellen + Registrieren & Bestellen

@@ -60,7 +60,7 @@

Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.

- Bestellen + Bestellen

diff --git a/users/templates/users/rdorder_complete.html b/users/templates/users/rdorder_complete.html new file mode 100644 index 0000000..fd71f25 --- /dev/null +++ b/users/templates/users/rdorder_complete.html @@ -0,0 +1,24 @@ + +{% extends "users/publicbase.html" %} + +{% load crispy_forms_tags %} + +{% block content %} + + +
+
+ + +

Bestellung abgeschlossen

+
+

Sie erhalten in den nächsten Tagen eine E-Mail mit allen Zahlungsinformationen zu Ihrer Bestellung. +

+
+
+{% endblock content %} \ No newline at end of file diff --git a/users/templates/users/register.html b/users/templates/users/register.html index 99f6954..3411c24 100644 --- a/users/templates/users/register.html +++ b/users/templates/users/register.html @@ -45,7 +45,7 @@ -->
- +
diff --git a/users/templates/users/register_da_rd.html b/users/templates/users/register_da_rd.html new file mode 100644 index 0000000..94450a9 --- /dev/null +++ b/users/templates/users/register_da_rd.html @@ -0,0 +1,58 @@ + +{% extends "users/publicbase.html" %} + +{% load crispy_forms_tags %} + +{% block content %} + +
+
+ {% if messages %} + {% for message in messages %} + + {% endfor %} + {% endif %} +
+ {% csrf_token %} +
+ + +

Registrieren & Notfallhilfe bestellen

+
+
+
+ {% for field in form %} + {% if forloop.counter|divisibleby:8 and forloop.counter != 9%} +
+
+ {% endif %} + {% if field.name != 'captcha' and field.name != 'agb' and field.name != 'av' %} + {{field|as_crispy_field}} + {% endif %} + {% endfor %} + {{form.agb}}  AGB's*
+ {{form.av}}  Auftragsverarbeitung* + {{form.captcha|as_crispy_field}} +
+
+
+
+
+ +
+
+
+
+{% endblock content %} + + diff --git a/users/templates/users/register_rd.html b/users/templates/users/register_rd.html new file mode 100644 index 0000000..a5d6b1f --- /dev/null +++ b/users/templates/users/register_rd.html @@ -0,0 +1,56 @@ + +{% extends "users/publicbase.html" %} + +{% load crispy_forms_tags %} + +{% block content %} + +
+
+ {% if messages %} + {% for message in messages %} + + {% endfor %} + {% endif %} +
+ {% csrf_token %} +
+ + +

Notfallhilfe bestellen

+
+
+
+ {% for field in form %} + {% if forloop.counter|divisibleby:6 %} +
+
+ {% endif %} + {% if field.name != 'captcha' and field.name != 'agb' and field.name != 'av' %} + {{field|as_crispy_field}} + {% endif %} + {% endfor %} + {{form.captcha|as_crispy_field}} +
+
+
+
+
+ +
+
+
+
+{% endblock content %} + + diff --git a/users/usersforms.py b/users/usersforms.py index 8480d6c..80bd9eb 100644 --- a/users/usersforms.py +++ b/users/usersforms.py @@ -2,7 +2,7 @@ from django import forms from django.db import models from django.contrib.auth.models import User from django.contrib.auth.forms import UserCreationForm -from .models import Profile, Agency +from .models import Profile, Agency, RegNotfallhilfe from django.contrib.auth.models import Permission from areas.models import Areas from tasks.models import Tasks @@ -21,7 +21,7 @@ class UsersAddNewUser(UserCreationForm): error_messages = { 'email': { - 'unique': _("DIE JIBBET SCHON!"), + 'unique': _("Mailadresse bereits vergeben!"), }, } @@ -193,5 +193,49 @@ class NewAgencyForm(forms.Form): self.fields['av'] = forms.BooleanField(required=True, label="Auftragsverarbeitung") self.fields['captcha'] = CaptchaField(required=True, label="Bitte geben Sie die Symbole ein.") +# Formular für Registrierung neuer Agentur UND Notfallhilfe +class NewAgencyFormRD(forms.Form): + + captcha = CaptchaField() + + fields = ['first_name','last_name','mail','persnumber', 'plz', 'stadt', 'street', 'data_to_vh', 'agencyname','vve','agb','av','captcha'] + field_order = ['agencyname', 'first_name','last_name','mail','persnumber', 'plz', 'stadt', 'street', 'data_to_vh', 'vve','agb','av','captcha'] + + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) + self.fields['first_name'] = forms.CharField(required=True, label="Vorname") + self.fields['last_name'] = forms.CharField(required=True, label="Nachname") + self.fields['mail'] = forms.EmailField(required=True, label="E-Mail") + self.fields['persnumber'] = forms.CharField(required=True, label="Personalnummer") + self.fields['agencyname'] = forms.CharField(required=True, label="Agenturname") + self.fields['plz'] = forms.CharField(required=True, label="PLZ") + self.fields['stadt'] = forms.CharField(required=True, label="Stadt") + self.fields['street'] = forms.CharField(required=True, label="Straße und Hausnummer") + self.fields['vve'] = forms.CharField(required=True, label="VVE-Mitgliedsnummer") + self.fields['agb'] = forms.BooleanField(required=True, label="AGB's") + self.fields['av'] = forms.BooleanField(required=True, label="Auftragsverarbeitung") + self.fields['data_to_vh'] = forms.BooleanField(required=True, label="Hiermit erkläre ich mich der Übertragung meiner Daten von der vh Solutions UG an den VVE einverstanden.") + self.fields['captcha'] = CaptchaField(required=True, label="Bitte geben Sie die Symbole ein.") + - \ No newline at end of file +class FormRD(forms.Form): + + captcha = CaptchaField() + model = RegNotfallhilfe + + fields = ['name', 'mail', 'persnumber', 'mitgliedsnummer', 'plz', 'stadt', 'street', 'data_to_vh'] + + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) + + self.fields['name'] = forms.CharField(required=True, label="Vor- und Nachname") + self.fields['persnumber'] = forms.CharField(required=True, label="Personalnummer") + self.fields['mitgliedsnummer'] = forms.CharField(required=True, label="VVE-Mitgliedsnummer") + self.fields['plz'] = forms.CharField(required=True, label="PLZ") + self.fields['stadt'] = forms.CharField(required=True, label="Stadt") + self.fields['street'] = forms.CharField(required=True, label="Straße und Hausnummer") + self.fields['mail'] = forms.EmailField(required=True, label="E-Mail") + self.fields['data_to_vh'] = forms.BooleanField(required=True, label="Hiermit erkläre ich mich der Übertragung meiner Daten von der vh Solutions UG an den VVE einverstanden.") + self.fields['captcha'] = CaptchaField(required=True, label="Bitte geben Sie die Symbole ein.") + + diff --git a/users/views.py b/users/views.py index 0144c55..dc092da 100644 --- a/users/views.py +++ b/users/views.py @@ -2,12 +2,12 @@ from django.shortcuts import render, redirect, reverse from django.contrib.auth.mixins import LoginRequiredMixin, UserPassesTestMixin from django.contrib.auth.decorators import login_required from django.conf import settings -from .usersforms import UsersAddNewUser, UsersAddProfileForm, UsersChangeProfil, AgencyUpdateForm, UsersPermForm, UserAreaTaskForm, SupportForm, NewAgencyForm +from .usersforms import UsersAddNewUser, UsersAddProfileForm, UsersChangeProfil, AgencyUpdateForm, UsersPermForm, UserAreaTaskForm, SupportForm, NewAgencyForm, NewAgencyFormRD, FormRD from django.views.generic import CreateView, ListView, UpdateView, DetailView, DeleteView, View, TemplateView from django.contrib import messages from django.contrib.auth.models import User, Permission from django.db import models -from .models import Profile, Agency, UserTime, UserYearAbsenceInfo, AgencyBills +from .models import Profile, Agency, UserTime, UserYearAbsenceInfo, AgencyBills, RegNotfallhilfe from django.core.mail import send_mail from django.http import HttpResponseRedirect,HttpResponse, JsonResponse from areas.models import Areas @@ -188,12 +188,123 @@ def toUpdate(request): ut.loose_holidedate = "30.04" ut.save() +def onlyRD(request): + if request.method == "POST": + rdform = FormRD(request.POST) + + if rdform.is_valid(): + rd = RegNotfallhilfe() + rd.mail = rdform.cleaned_data.get('mail') + rd.name = rdform.cleaned_data.get('name') + rd.persnumber = rdform.cleaned_data.get("persnumber") + rd.mitgliedsnummer = rdform.cleaned_data.get("mitgliedsnummer") + rd.plz = rdform.cleaned_data.get("plz") + rd.stadt = rdform.cleaned_data.get("stadt") + rd.street = rdform.cleaned_data.get("street") + rd.data_to_vh = True + rd.rabatt = False + rd.save() + return render (request, 'users/rdorder_complete.html') + else: + messages.success(request, f'Bitte geben Sie korrekte Daten ein!') + context = { + "form" : FormRD(request.POST) + } + return render (request, 'users/register_rd.html',context) + else: + context = { + "form" : FormRD() + } + return render (request, 'users/register_rd.html',context) + + + ''' -DASHBOARD-View -View nach erfolgreichem Login Dashboard +Neue Agentur UND Notfallhilfe bestellen -Templates: welcomeusers.html und base.html +''' +def registerNewAgencyRD(request): + if request.method == "POST": + newagencyform = NewAgencyFormRD(request.POST) + + + if newagencyform.is_valid(): + # Check Mail + email = newagencyform.cleaned_data.get('mail') + + mailset = User.objects.filter(email=email) + if(len(mailset) == 0): + # AGENTURREGISTRIERUNG + newuser_name = newagencyform.cleaned_data.get('first_name') + ' ' + newagencyform.cleaned_data.get('last_name') + + agency = Agency() + agency.name = newagencyform.cleaned_data.get("agencyname") + agency.vve = newagencyform.cleaned_data.get("vve") + agency.street = newagencyform.cleaned_data.get("street") + agency.city = newagencyform.cleaned_data.get("stadt") + agency.plz = newagencyform.cleaned_data.get("plz") + agency.save() + pr=Profile() + pr.agency=agency + user = "" + try: + user=User.objects.create_user(email, email, randomString(30)) + except: + user = User.objects.get(username=email) + user.first_name = newagencyform.cleaned_data.get('first_name') + user.last_name = newagencyform.cleaned_data.get('last_name') + pr.user=user + pr.save() + user.profile = pr + user.save() + + msg_html = render_to_string('users/register_mail.html', {'username': newuser_name}) + + + # NOTFALLHILFE-DATEN SPEICHERN + rd = RegNotfallhilfe() + rd.mail = email + rd.name = newagencyform.cleaned_data.get('first_name') + ' ' + newagencyform.cleaned_data.get('last_name') + rd.persnumber = newagencyform.cleaned_data.get("persnumber") + rd.mitgliedsnummer = newagencyform.cleaned_data.get("vve") + rd.plz = newagencyform.cleaned_data.get("plz") + rd.stadt = newagencyform.cleaned_data.get("stadt") + rd.street = newagencyform.cleaned_data.get("street") + rd.data_to_vh = True + rd.rabatt = True + rd.save() + + # E-Mail für Passwort-Setzung! + form = PasswordResetForm({'email': email}) + if form.is_valid(): + form.save(request=request,html_email_template_name='users/password_reset_mail.html') + return render (request, 'users/registercomplete.html') + + else: + messages.success(request, f'Diese E-Mailadresse ist bereits vergeben!') + context = { + "form" : NewAgencyFormRD(request.POST) + } + return render (request, 'users/register_da_rd.html',context) + else: + messages.success(request, f'Bitte die korrekten Symbole aus dem Bild eingeben!') + + context = { + "form" : NewAgencyForm(request.POST) + } + return render (request, 'users/register_da_rd.html',context) + + else: + context = { + "form" : NewAgencyFormRD() + } + return render (request, 'users/register_da_rd.html',context) + + + +''' +Neue Agentur registrieren ''' def registerNewAgency(request):