member settings
This commit is contained in:
parent
ab0fb93409
commit
10a4faa2e0
6 changed files with 84 additions and 1 deletions
|
|
@ -129,3 +129,14 @@ class UpdateDeviceForm(forms.ModelForm):
|
|||
fields = ['question']
|
||||
question = forms.CharField(widget=CKEditorWidget(
|
||||
attrs={'style': 'width:100%;'}), label="Frage")
|
||||
|
||||
|
||||
class MemberSettings(forms.Form):
|
||||
"""
|
||||
Form for editing member settings.
|
||||
"""
|
||||
notifications = forms.BooleanField(
|
||||
label="Benachrichtigungen",
|
||||
help_text="Kreuzen Sie diese Kästchen an wenn sie Benachrichtigungen erhalten möchten.",
|
||||
required=False
|
||||
)
|
||||
|
|
|
|||
18
rc_hip/repapp/migrations/0010_customuser_notifications.py
Normal file
18
rc_hip/repapp/migrations/0010_customuser_notifications.py
Normal file
|
|
@ -0,0 +1,18 @@
|
|||
# Generated by Django 4.2 on 2023-06-05 16:38
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('repapp', '0009_question_answered'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name='customuser',
|
||||
name='notifications',
|
||||
field=models.BooleanField(default=True, verbose_name='Benachrichtigungen'),
|
||||
),
|
||||
]
|
||||
|
|
@ -19,6 +19,8 @@ class CustomUser(AbstractUser):
|
|||
Custom user object with unique email.
|
||||
"""
|
||||
email = models.EmailField(unique=True, verbose_name=_("eMail Adresse"))
|
||||
notifications = models.BooleanField(
|
||||
verbose_name=_("Benachrichtigungen"), default=True)
|
||||
|
||||
class Meta:
|
||||
verbose_name = _('Benutzer')
|
||||
|
|
|
|||
17
rc_hip/repapp/templates/repapp/member/member_settings.html
Normal file
17
rc_hip/repapp/templates/repapp/member/member_settings.html
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
{% extends "repapp/base.html" %}
|
||||
{% load crispy_forms_tags %}
|
||||
{% block title %}
|
||||
- Eintellungen
|
||||
{% endblock title %}
|
||||
{% block page_title %}
|
||||
Eintellungen
|
||||
{% endblock page_title %}
|
||||
{% block content %}
|
||||
<form action="{% url 'member_settings' %}"
|
||||
method="post"
|
||||
enctype="multipart/form-data">
|
||||
{% csrf_token %}
|
||||
{{ form|crispy }}
|
||||
<button type="submit" class="btn btn-primary submit_button">Aktualisieren</button>
|
||||
</form>
|
||||
{% endblock content %}
|
||||
|
|
@ -25,6 +25,8 @@ urlpatterns = [
|
|||
path("onetimelogin/<str:secret>/",
|
||||
views.one_time_login, name="one_time_login"),
|
||||
path("member/", views.member, name="member"),
|
||||
path("member/settings/", views.MemberSettingsFormView.as_view(),
|
||||
name="member_settings"),
|
||||
path("logout/", views.user_logout, name="logout"),
|
||||
path("orga/select/", views.select_role, name="select_role"),
|
||||
path("orga/", views.orga, name="orga"),
|
||||
|
|
|
|||
|
|
@ -22,7 +22,7 @@ from django.contrib.auth.decorators import login_required
|
|||
from django.contrib.auth.mixins import LoginRequiredMixin, UserPassesTestMixin
|
||||
from django.contrib.auth import authenticate, login, logout
|
||||
from django.utils.timezone import now
|
||||
from .forms import RegisterDevice, RegisterGuest, Mail, UpdateDeviceForm
|
||||
from .forms import RegisterDevice, RegisterGuest, Mail, UpdateDeviceForm, MemberSettings
|
||||
from .models import (Cafe, Device, Guest, OneTimeLogin, Question,
|
||||
CustomUser, Organisator, Reparateur)
|
||||
from . import mail_interface
|
||||
|
|
@ -937,3 +937,36 @@ def user_logout(request):
|
|||
"""
|
||||
logout(request)
|
||||
return HttpResponseRedirect(reverse_lazy('index'))
|
||||
|
||||
|
||||
class MemberSettingsFormView(LoginRequiredMixin, UserPassesTestMixin, generic.edit.FormView):
|
||||
"""
|
||||
MemberSettingsFormView shows the member settings.
|
||||
"""
|
||||
template_name = "repapp/member/member_settings.html"
|
||||
form_class = MemberSettings
|
||||
|
||||
def form_valid(self, form):
|
||||
user = self.request.user
|
||||
if not is_member(user):
|
||||
raise PermissionDenied('Not a member!')
|
||||
user = get_object_or_404(CustomUser, email=user.email)
|
||||
user.notifications = form.cleaned_data['notifications']
|
||||
user.save()
|
||||
|
||||
return HttpResponseRedirect(reverse_lazy('member_settings'))
|
||||
|
||||
def get_initial(self):
|
||||
initial = super(MemberSettingsFormView, self).get_initial()
|
||||
initial['notifications'] = self.request.user.notifications
|
||||
return initial
|
||||
|
||||
def get_context_data(self, **kwargs):
|
||||
context = super(MemberSettingsFormView, self).get_context_data(
|
||||
**kwargs
|
||||
)
|
||||
context["user"] = self.request.user
|
||||
return context
|
||||
|
||||
def test_func(self):
|
||||
return is_member(self.request.user)
|
||||
|
|
|
|||
Reference in a new issue