from django.contrib import messages from django.contrib.auth.decorators import login_required from django.contrib.auth.models import User from django.http import HttpRequest from django.shortcuts import render, redirect, get_object_or_404 from django.utils.translation import gettext_lazy as _ from konova.contexts import BaseContext from konova.decorators import any_group_check from user.forms import UserNotificationForm, UserContactForm from user.models import KonovaUserExtension @login_required @any_group_check def index_view(request: HttpRequest): """ Renders the user's data index view Args: request (): Returns: """ template = "user/index.html" context = { "user": request.user, } context = BaseContext(request, context).context return render(request, template, context) @login_required @any_group_check def notifications_view(request: HttpRequest): """ Renders the notifications settings view Args: request (): Returns: """ template = "user/notifications.html" user = request.user konova_ext = KonovaUserExtension.objects.get_or_create( user=user )[0] form = UserNotificationForm(user=user, data=request.POST or None) if request.method == "POST": if form.is_valid(): form.save() messages.success( request, _("Notifications edited") ) return redirect("user:index") elif request.method == "GET": # Implicit pass else: raise NotImplementedError context = { "user": user, "form": form, "konova_ext": konova_ext, } context = BaseContext(request, context).context return render(request, template, context) @login_required def contact_view(request: HttpRequest, id: str): """ Renders contact modal view of a users contact data Args: request (HttpRequest): The incoming request id (str): The user's id Returns: """ user = get_object_or_404(User, id=id) form = UserContactForm(request.POST or None, instance=user, user=request.user) template = "modal/modal_form.html" context = { "form": form, } context = BaseContext(request, context).context return render( request, template, context )