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']
|
fields = ['question']
|
||||||
question = forms.CharField(widget=CKEditorWidget(
|
question = forms.CharField(widget=CKEditorWidget(
|
||||||
attrs={'style': 'width:100%;'}), label="Frage")
|
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.
|
Custom user object with unique email.
|
||||||
"""
|
"""
|
||||||
email = models.EmailField(unique=True, verbose_name=_("eMail Adresse"))
|
email = models.EmailField(unique=True, verbose_name=_("eMail Adresse"))
|
||||||
|
notifications = models.BooleanField(
|
||||||
|
verbose_name=_("Benachrichtigungen"), default=True)
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
verbose_name = _('Benutzer')
|
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>/",
|
path("onetimelogin/<str:secret>/",
|
||||||
views.one_time_login, name="one_time_login"),
|
views.one_time_login, name="one_time_login"),
|
||||||
path("member/", views.member, name="member"),
|
path("member/", views.member, name="member"),
|
||||||
|
path("member/settings/", views.MemberSettingsFormView.as_view(),
|
||||||
|
name="member_settings"),
|
||||||
path("logout/", views.user_logout, name="logout"),
|
path("logout/", views.user_logout, name="logout"),
|
||||||
path("orga/select/", views.select_role, name="select_role"),
|
path("orga/select/", views.select_role, name="select_role"),
|
||||||
path("orga/", views.orga, name="orga"),
|
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.mixins import LoginRequiredMixin, UserPassesTestMixin
|
||||||
from django.contrib.auth import authenticate, login, logout
|
from django.contrib.auth import authenticate, login, logout
|
||||||
from django.utils.timezone import now
|
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,
|
from .models import (Cafe, Device, Guest, OneTimeLogin, Question,
|
||||||
CustomUser, Organisator, Reparateur)
|
CustomUser, Organisator, Reparateur)
|
||||||
from . import mail_interface
|
from . import mail_interface
|
||||||
|
|
@ -937,3 +937,36 @@ def user_logout(request):
|
||||||
"""
|
"""
|
||||||
logout(request)
|
logout(request)
|
||||||
return HttpResponseRedirect(reverse_lazy('index'))
|
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