from django.contrib import messages from django.contrib.auth.mixins import LoginRequiredMixin from konova.sub_settings.context_settings import TAB_TITLE_IDENTIFIER from konova.views.base import BaseView, BaseModalFormView from user.forms.modals.user import UserContactForm from user.forms.user import UserNotificationForm from user.models import User from django.http import HttpRequest from django.shortcuts import render, redirect from django.utils.translation import gettext_lazy as _ from konova.contexts import BaseContext class UserBaseView(BaseView): def _user_has_shared_access(self, user, **kwargs): return True def _user_has_permission(self, user, **kwargs): return True class UserDetailView(LoginRequiredMixin, UserBaseView): _TEMPLATE = "user/index.html" _TAB_TITLE = _("User settings") def get(self, request: HttpRequest): context = { "user": request.user, TAB_TITLE_IDENTIFIER: self._TAB_TITLE, } context = BaseContext(request, context).context return render(request, self._TEMPLATE, context) class NotificationsView(LoginRequiredMixin, UserBaseView): _TEMPLATE = "user/notifications.html" _TAB_TITLE = _("User notifications") def get(self, request: HttpRequest): user = request.user form = UserNotificationForm(user=user, data=None) context = { "user": user, "form": form, TAB_TITLE_IDENTIFIER: self._TAB_TITLE, } context = BaseContext(request, context).context return render(request, self._TEMPLATE, context) def post(self, request: HttpRequest): user = request.user form = UserNotificationForm(user=user, data=request.POST) if form.is_valid(): form.save() messages.success( request, _("Notifications edited") ) return redirect("user:detail") context = { "user": user, "form": form, TAB_TITLE_IDENTIFIER: self._TAB_TITLE, } context = BaseContext(request, context).context return render(request, self._TEMPLATE, context) class ContactView(LoginRequiredMixin, BaseModalFormView): _FORM_CLS = UserContactForm _MODEL_CLS = User def _user_has_shared_access(self, user, **kwargs): # No specific constraints return True def _user_has_permission(self, user, **kwargs): # No specific constraints return True