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.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 Meta:
model = Offer
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):
zipcode = models.PositiveIntegerField()
zipcode = models.PositiveIntegerField(blank=True)
class Offer(models.Model):

View file

@ -13,7 +13,9 @@
</p>
<hr />
<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>
{% endblock %}

View file

@ -16,5 +16,6 @@ urlpatterns = [
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/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')),
]

View file

@ -1,10 +1,12 @@
from django.shortcuts import render, get_object_or_404, redirect
from django.utils import timezone
from django.contrib import messages
from django.contrib.auth import login
from django.contrib.auth.decorators import login_required
from django.http import HttpResponseForbidden
from .forms import CreateOfferForm
from .forms import CreateOfferForm, RegistrationForm
from .models import PflaenzliUser, Offer, Wish
from .mail import send_offer_email
from .upload import generate_unique_filename
@ -97,3 +99,16 @@ def user_detail(request, user_id):
wishes = Wish.objects.filter(user=user_id)
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",
"crispy_forms",
"crispy_bootstrap5",
"friendly_captcha",
]
MIDDLEWARE = [
@ -161,3 +162,9 @@ EMAIL_PORT = os.getenv('SMTP_PORT')
EMAIL_HOST_USER = os.getenv('SMTP_USER')
EMAIL_HOST_PASSWORD = os.getenv('SMTP_PASSWORD')
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'