2020-06-08 18:30:40 +02:00
|
|
|
from django.contrib import messages
|
|
|
|
from django.contrib.auth import get_user_model
|
|
|
|
from django.http import Http404, HttpResponseRedirect
|
|
|
|
from django.shortcuts import get_object_or_404
|
|
|
|
from django.utils.translation import gettext_lazy as _
|
2020-06-05 17:02:16 +02:00
|
|
|
from django.views.generic import TemplateView
|
|
|
|
|
|
|
|
from bds.autocomplete import bds_search
|
2020-06-08 18:30:40 +02:00
|
|
|
from bds.forms import BDSProfileForm, BDSUserForm
|
2020-06-07 21:01:54 +02:00
|
|
|
from bds.mixins import StaffRequiredMixin
|
2020-06-05 17:02:16 +02:00
|
|
|
|
2020-06-08 18:30:40 +02:00
|
|
|
User = get_user_model()
|
|
|
|
|
2020-06-05 17:02:16 +02:00
|
|
|
|
2020-06-07 21:01:54 +02:00
|
|
|
class AutocompleteView(StaffRequiredMixin, TemplateView):
|
2020-06-05 17:02:16 +02:00
|
|
|
template_name = "bds/search_results.html"
|
|
|
|
|
|
|
|
def get_context_data(self, *args, **kwargs):
|
|
|
|
ctx = super().get_context_data(*args, **kwargs)
|
|
|
|
if "q" not in self.request.GET:
|
|
|
|
raise Http404
|
|
|
|
q = self.request.GET["q"]
|
|
|
|
ctx["q"] = q
|
2020-06-07 20:58:33 +02:00
|
|
|
results = bds_search.search(q.split())
|
|
|
|
ctx.update(results)
|
|
|
|
ctx["total"] = sum((len(r) for r in results.values()))
|
2020-06-05 17:02:16 +02:00
|
|
|
return ctx
|
2020-06-07 20:58:33 +02:00
|
|
|
|
|
|
|
|
2020-06-07 21:01:54 +02:00
|
|
|
class Home(StaffRequiredMixin, TemplateView):
|
2020-06-07 20:58:33 +02:00
|
|
|
template_name = "bds/home.html"
|
2020-06-08 18:30:40 +02:00
|
|
|
|
|
|
|
|
|
|
|
class UserUpdateView(StaffRequiredMixin, TemplateView):
|
|
|
|
template_name = "bds/user_update.html"
|
|
|
|
|
|
|
|
def setup(self, *args, **kwargs):
|
|
|
|
super().setup(*args, **kwargs)
|
|
|
|
self.user = get_object_or_404(User, pk=self.kwargs["pk"])
|
|
|
|
|
|
|
|
def get_context_data(self, **kwargs):
|
|
|
|
ctx = super().get_context_data(**kwargs)
|
|
|
|
|
|
|
|
form_data = self.request.POST if self.request.method == "POST" else None
|
|
|
|
profile = getattr(self.user, "bds", None)
|
|
|
|
ctx["user_form"] = BDSUserForm(prefix="user", intance=self.user, data=form_data)
|
|
|
|
ctx["profile_form"] = BDSProfileForm(
|
|
|
|
prefix="profile", instance=profile, data=form_data
|
|
|
|
)
|
|
|
|
|
|
|
|
return ctx
|
|
|
|
|
|
|
|
def post(self, *args, **kwargs):
|
|
|
|
ctx = self.get_context_data()
|
|
|
|
user_form = ctx["user_form"]
|
|
|
|
profile_form = ctx["profile_form"]
|
|
|
|
|
|
|
|
if user_form.is_valid() and profile_form.is_valid():
|
|
|
|
user_form.save()
|
|
|
|
profile_form.save()
|
|
|
|
messages.add_message(
|
|
|
|
self.request, messages.SUCCESS, _("Compte mis à jour avec succès !")
|
|
|
|
)
|
|
|
|
else:
|
|
|
|
messages.add_message(
|
|
|
|
self.request,
|
|
|
|
messages.ERROR,
|
|
|
|
_("Le formulaire de mise à jour du compte contient des erreurs."),
|
|
|
|
)
|
|
|
|
|
|
|
|
# Redirect here.
|
|
|
|
return HttpResponseRedirect("")
|