from django.contrib import messages
from django.contrib.auth.decorators import login_required
from django.http import HttpRequest
from django.shortcuts import render, redirect
from django.utils.translation import gettext_lazy as _

from konova.contexts import BaseContext
from user.forms import UserNotificationForm
from user.models import KonovaUserExtension


@login_required
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
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)