Merge branch 'trombi' into 'master'

Trombi fixs

See merge request ae/Sith!240
This commit is contained in:
Antoine Bartuccio 2019-09-30 00:00:38 +02:00
commit fd5cd56f81
3 changed files with 47 additions and 25 deletions

View File

@ -40,5 +40,3 @@
</table> </table>
{% endblock %} {% endblock %}

View File

@ -12,7 +12,8 @@
{{ subscribe_form.as_p() }} {{ subscribe_form.as_p() }}
<p><input type="submit" value="{% trans %}Save{% endtrans %}" /></p> <p><input type="submit" value="{% trans %}Save{% endtrans %}" /></p>
</form> </form>
{% else %} {% endif %}
{% if trombi %}
<p>{% trans trombi = user.trombi_user.trombi %}You are subscribed to the Trombi {{ trombi }}{% endtrans %}</p> <p>{% trans trombi = user.trombi_user.trombi %}You are subscribed to the Trombi {{ trombi }}{% endtrans %}</p>
<hr> <hr>
{% set can_comment = trombi.subscription_deadline < date.today() and {% set can_comment = trombi.subscription_deadline < date.today() and

View File

@ -25,7 +25,7 @@
from django.http import Http404, HttpResponseRedirect from django.http import Http404, HttpResponseRedirect
from django.shortcuts import get_object_or_404, redirect from django.shortcuts import get_object_or_404, redirect
from django.core.urlresolvers import reverse_lazy, reverse from django.core.urlresolvers import reverse_lazy, reverse
from django.views.generic import DetailView, RedirectView, TemplateView from django.views.generic import DetailView, RedirectView, TemplateView, View
from django.views.generic.edit import UpdateView, CreateView, DeleteView from django.views.generic.edit import UpdateView, CreateView, DeleteView
from django.utils.translation import ugettext_lazy as _ from django.utils.translation import ugettext_lazy as _
from django import forms from django import forms
@ -59,6 +59,7 @@ class TrombiTabsMixin(TabedViewMixin):
tab_list.append( tab_list.append(
{"url": reverse("trombi:user_tools"), "slug": "tools", "name": _("Tools")} {"url": reverse("trombi:user_tools"), "slug": "tools", "name": _("Tools")}
) )
if hasattr(self.request.user, "trombi_user"):
tab_list.append( tab_list.append(
{ {
"url": reverse("trombi:profile"), "url": reverse("trombi:profile"),
@ -90,6 +91,19 @@ class TrombiTabsMixin(TabedViewMixin):
return tab_list return tab_list
class UserIsInATrombiMixin(View):
"""
This view check if the requested user has a trombi_user attribute
"""
def dispatch(self, request, *args, **kwargs):
if not hasattr(self.request.user, "trombi_user"):
raise Http404()
return super(UserIsInATrombiMixin, self).dispatch(request, *args, **kwargs)
class TrombiForm(forms.ModelForm): class TrombiForm(forms.ModelForm):
class Meta: class Meta:
model = Trombi model = Trombi
@ -299,6 +313,10 @@ class UserTrombiToolsView(QuickNotifMixin, TrombiTabsMixin, TemplateView):
def post(self, request, *args, **kwargs): def post(self, request, *args, **kwargs):
self.form = UserTrombiForm(request.POST) self.form = UserTrombiForm(request.POST)
if self.form.is_valid(): if self.form.is_valid():
if hasattr(request.user, "trombi_user"):
trombi_user = request.user.trombi_user
trombi_user.trombi = self.form.cleaned_data["trombi"]
else:
trombi_user = TrombiUser( trombi_user = TrombiUser(
user=request.user, trombi=self.form.cleaned_data["trombi"] user=request.user, trombi=self.form.cleaned_data["trombi"]
) )
@ -309,7 +327,10 @@ class UserTrombiToolsView(QuickNotifMixin, TrombiTabsMixin, TemplateView):
def get_context_data(self, **kwargs): def get_context_data(self, **kwargs):
kwargs = super(UserTrombiToolsView, self).get_context_data(**kwargs) kwargs = super(UserTrombiToolsView, self).get_context_data(**kwargs)
kwargs["user"] = self.request.user kwargs["user"] = self.request.user
if not hasattr(self.request.user, "trombi_user"): if not (
hasattr(self.request.user, "trombi_user")
and self.request.user.trombi_user.trombi
):
kwargs["subscribe_form"] = UserTrombiForm() kwargs["subscribe_form"] = UserTrombiForm()
else: else:
kwargs["trombi"] = self.request.user.trombi_user.trombi kwargs["trombi"] = self.request.user.trombi_user.trombi
@ -317,7 +338,7 @@ class UserTrombiToolsView(QuickNotifMixin, TrombiTabsMixin, TemplateView):
return kwargs return kwargs
class UserTrombiEditPicturesView(TrombiTabsMixin, UpdateView): class UserTrombiEditPicturesView(TrombiTabsMixin, UserIsInATrombiMixin, UpdateView):
model = TrombiUser model = TrombiUser
fields = ["profile_pict", "scrub_pict"] fields = ["profile_pict", "scrub_pict"]
template_name = "core/edit.jinja" template_name = "core/edit.jinja"
@ -330,7 +351,9 @@ class UserTrombiEditPicturesView(TrombiTabsMixin, UpdateView):
return reverse("trombi:user_tools") + "?qn_success" return reverse("trombi:user_tools") + "?qn_success"
class UserTrombiEditProfileView(QuickNotifMixin, TrombiTabsMixin, UpdateView): class UserTrombiEditProfileView(
QuickNotifMixin, TrombiTabsMixin, UserIsInATrombiMixin, UpdateView
):
model = User model = User
form_class = modelform_factory( form_class = modelform_factory(
User, User,
@ -358,7 +381,7 @@ class UserTrombiEditProfileView(QuickNotifMixin, TrombiTabsMixin, UpdateView):
return reverse("trombi:user_tools") + "?qn_success" return reverse("trombi:user_tools") + "?qn_success"
class UserTrombiResetClubMembershipsView(RedirectView): class UserTrombiResetClubMembershipsView(UserIsInATrombiMixin, RedirectView):
permanent = False permanent = False
def get(self, request, *args, **kwargs): def get(self, request, *args, **kwargs):