Ladning page und Bestellung und Reg fertig

This commit is contained in:
holger.trampe 2020-10-23 10:27:13 +02:00
parent 1f690c0dc6
commit 9ad984beef
13 changed files with 330 additions and 16 deletions

View File

@ -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/<uidb64>/<token>/', 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')),

View File

@ -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):

View File

@ -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):

View File

@ -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)
admin.site.register(MainStatistic)
admin.site.register(RegNotfallhilfe)

View File

@ -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:

View File

@ -50,7 +50,7 @@
<p class="lp_text">
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.
<p class="lp_btnarea">
<a class="btn btn-primary btn-lg" href="#">Registrieren & Bestellen</a>
<a class="btn btn-primary btn-lg" href="{% url 'register-rd' %}">Registrieren & Bestellen</a>
</p>
</p>
</div>
@ -60,7 +60,7 @@
<p class="lp_text">
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.
<p class="lp_btnarea">
<a class="btn btn-primary btn-lg" href="#">Bestellen</a>
<a class="btn btn-primary btn-lg" href="{% url 'register-ord' %}">Bestellen</a>
</p>
</p>
</div>

View File

@ -0,0 +1,24 @@
<!-- Base-Template einbinden -->
{% extends "users/publicbase.html" %}
{% load crispy_forms_tags %}
<!-- BLOCK NAME START -->
{% block content %}
<style type="text/css">
#logincard {
width: 35%;
margin-top: 4%;
}
</style>
<div class="card mx-auto" id="logincard">
<div class="card-body">
<legend class="border-bottom mb-4" style="text-align: center;">
<i class="fas fa-laptop"></i>
<h3>Bestellung abgeschlossen</h3>
</legend>
<p>Sie erhalten in den nächsten Tagen eine E-Mail mit allen Zahlungsinformationen zu Ihrer Bestellung.
</p>
</div>
</div>
{% endblock content %}

View File

@ -45,7 +45,7 @@
</div>-->
</fieldset>
<div class="form-group">
<button type="submit" class="btn btn-success">Registrieren</button>
<button type="submit" class="btn btn-primary btn-lg" style="float: right;">Registrieren</button>
</div>
</form>
</div>

View File

@ -0,0 +1,58 @@
<!-- Base-Template einbinden -->
{% extends "users/publicbase.html" %}
<!-- CRISPY -->
{% load crispy_forms_tags %}
<!-- BLOCK NAME START -->
{% block content %}
<style type="text/css">
#regcard{
width: 80%;
margin-top: 20px;
}
</style>
<div class="card mx-auto col-12" id="regcard">
<div class="card-body">
{% if messages %}
{% for message in messages %}
<div class="alert alert-{{ message.tags }} alert-dismissible fade show " role="alert" id="message_{{forloop.counter}}">
{{ message }}
<button type="button" class="close" data-dismiss="alert" aria-label="Close" onclick='javascript:$("#message_{{forloop.counter}}").fadeOut()'>
<span aria-hidden="true">&times;</span>
</button>
</div>
{% endfor %}
{% endif %}
<form method="POST">
{% csrf_token %}
<fieldset class="form-group" >
<legend class="border-bottom mb-4" style="text-align: center;">
<i class="fas fa-laptop"></i>
<h3>Registrieren & Notfallhilfe bestellen</h3>
</legend>
<div class="row">
<div class="col-6">
{% for field in form %}
{% if forloop.counter|divisibleby:8 and forloop.counter != 9%}
</div>
<div class="col-6">
{% endif %}
{% if field.name != 'captcha' and field.name != 'agb' and field.name != 'av' %}
{{field|as_crispy_field}}
{% endif %}
{% endfor %}
{{form.agb}}&nbsp;&nbsp;<a style="" href="{% url 'datenschutzda' %}" target="_blank">AGB's*</a><br />
{{form.av}}&nbsp;&nbsp;<a style="" href="{% url 'impressumda' %}" target="_blank">Auftragsverarbeitung*</a>
{{form.captcha|as_crispy_field}}
</div>
</div>
</fieldset>
<hr>
<div class="form-group">
<button type="submit" class="btn btn-primary btn-lg" style="float: right">Registrieren & Bestellen</button>
</div>
</form>
</div>
</div>
{% endblock content %}

View File

@ -0,0 +1,56 @@
<!-- Base-Template einbinden -->
{% extends "users/publicbase.html" %}
<!-- CRISPY -->
{% load crispy_forms_tags %}
<!-- BLOCK NAME START -->
{% block content %}
<style type="text/css">
#regcard{
width: 80%;
margin-top: 20px;
}
</style>
<div class="card mx-auto col-12" id="regcard">
<div class="card-body">
{% if messages %}
{% for message in messages %}
<div class="alert alert-{{ message.tags }} alert-dismissible fade show " role="alert" id="message_{{forloop.counter}}">
{{ message }}
<button type="button" class="close" data-dismiss="alert" aria-label="Close" onclick='javascript:$("#message_{{forloop.counter}}").fadeOut()'>
<span aria-hidden="true">&times;</span>
</button>
</div>
{% endfor %}
{% endif %}
<form method="POST">
{% csrf_token %}
<fieldset class="form-group" >
<legend class="border-bottom mb-4" style="text-align: center;">
<i class="fas fa-laptop"></i>
<h3>Notfallhilfe bestellen</h3>
</legend>
<div class="row">
<div class="col-6">
{% for field in form %}
{% if forloop.counter|divisibleby:6 %}
</div>
<div class="col-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}}
</div>
</div>
</fieldset>
<hr>
<div class="form-group">
<button type="submit" class="btn btn-primary btn-lg" style="float: right">Notfallhilfe kostenpflichtig bestellen</button>
</div>
</form>
</div>
</div>
{% endblock content %}

View File

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

View File

@ -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):