User registration

This commit is contained in:
Jannis Portmann 2023-04-05 23:29:30 +02:00
parent 300e535b5c
commit 15f5a4d281
6 changed files with 39 additions and 4 deletions

View file

@ -1,9 +1,19 @@
from django import forms from django import forms
from django.contrib.auth.forms import UserCreationForm
from friendly_captcha.fields import FrcCaptchaField
from .models import PflaenzliUser, Offer from .models import Offer, PflaenzliUser
class CreateOfferForm(forms.ModelForm): class CreateOfferForm(forms.ModelForm):
class Meta: class Meta:
model = Offer model = Offer
fields = ['title', 'description', 'zipcode', 'image'] fields = ['title', 'description', 'zipcode', 'image']
class RegistrationForm(UserCreationForm):
class Meta(UserCreationForm.Meta):
model = PflaenzliUser
fields = UserCreationForm.Meta.fields + ('zipcode',)
captcha = FrcCaptchaField()

View file

@ -6,7 +6,7 @@ from django.core.files.storage import default_storage
class PflaenzliUser(User): class PflaenzliUser(User):
zipcode = models.PositiveIntegerField() zipcode = models.PositiveIntegerField(blank=True)
class Offer(models.Model): class Offer(models.Model):

View file

@ -13,7 +13,9 @@
</p> </p>
<hr /> <hr />
<p>To offer your plants, please register first.</p> <p>To offer your plants, please register first.</p>
<a href="#" class="btn btn-pfl btn-lg mb-3" type="button">Register</a> <a href="{% url 'register_user' %}"
class="btn btn-pfl btn-lg mb-3"
type="button">Register</a>
</div> </div>
</div> </div>
{% endblock %} {% endblock %}

View file

@ -16,5 +16,6 @@ urlpatterns = [
path("accounts/<int:user_id>", views.user_detail, name="user_detail"), path("accounts/<int:user_id>", views.user_detail, name="user_detail"),
path('accounts/login/', auth_views.LoginView.as_view(template_name='registration/login.html')), path('accounts/login/', auth_views.LoginView.as_view(template_name='registration/login.html')),
path('accounts/profile/', auth_views.LoginView.as_view(template_name='user/detail.html'), name='user_profile'), path('accounts/profile/', auth_views.LoginView.as_view(template_name='user/detail.html'), name='user_profile'),
path('accounts/register/', views.register_user, name='register_user'),
path('accounts/', include('django.contrib.auth.urls')), path('accounts/', include('django.contrib.auth.urls')),
] ]

View file

@ -1,10 +1,12 @@
from django.shortcuts import render, get_object_or_404, redirect from django.shortcuts import render, get_object_or_404, redirect
from django.utils import timezone from django.utils import timezone
from django.contrib import messages from django.contrib import messages
from django.contrib.auth import login
from django.contrib.auth.decorators import login_required from django.contrib.auth.decorators import login_required
from django.http import HttpResponseForbidden from django.http import HttpResponseForbidden
from .forms import CreateOfferForm from .forms import CreateOfferForm, RegistrationForm
from .models import PflaenzliUser, Offer, Wish from .models import PflaenzliUser, Offer, Wish
from .mail import send_offer_email from .mail import send_offer_email
from .upload import generate_unique_filename from .upload import generate_unique_filename
@ -97,3 +99,16 @@ def user_detail(request, user_id):
wishes = Wish.objects.filter(user=user_id) wishes = Wish.objects.filter(user=user_id)
return render(request, "user/public.html", {"user": user, "offers": offers, "wishes": wishes}) return render(request, "user/public.html", {"user": user, "offers": offers, "wishes": wishes})
def register_user(request):
if request.method == "POST":
form = RegistrationForm(request.POST)
if form.is_valid():
user = form.save()
login(request, user)
return redirect("index")
else:
form = RegistrationForm()
return render(request, "basic_form.html", {"form": form, "button_label": "Register", "title": "Registeration"})

View file

@ -48,6 +48,7 @@ INSTALLED_APPS = [
"fontawesomefree", "fontawesomefree",
"crispy_forms", "crispy_forms",
"crispy_bootstrap5", "crispy_bootstrap5",
"friendly_captcha",
] ]
MIDDLEWARE = [ MIDDLEWARE = [
@ -161,3 +162,9 @@ EMAIL_PORT = os.getenv('SMTP_PORT')
EMAIL_HOST_USER = os.getenv('SMTP_USER') EMAIL_HOST_USER = os.getenv('SMTP_USER')
EMAIL_HOST_PASSWORD = os.getenv('SMTP_PASSWORD') EMAIL_HOST_PASSWORD = os.getenv('SMTP_PASSWORD')
EMAIL_USE_SSL = True EMAIL_USE_SSL = True
# Friendly Captcha setting
FRC_CAPTCHA_SECRET = os.getenv('FRC_SECRET')
FRC_CAPTCHA_SITE_KEY = os.getenv('FRC_SITEKEY')
FRC_CAPTCHA_VERIFICATION_URL = 'https://api.friendlycaptcha.com/api/v1/siteverify'