diff --git a/galerie/views.py b/galerie/views.py index d23e79f1..4570b8fb 100644 --- a/galerie/views.py +++ b/galerie/views.py @@ -14,7 +14,7 @@ from galerie.forms import KomentarForm, NewGalerieForm def zobrazit(galerie, request): preview = False if galerie.zobrazit >= 1: - if request.user.is_staff: + if request.user.je_org: preview = True; else: raise Http404 @@ -35,7 +35,7 @@ def nahled(request, pk, soustredeni): galerie = get_object_or_404(Galerie, pk=pk) podgalerie = Galerie.objects.filter(galerie_up = galerie).order_by('poradi') - if not request.user.is_staff: + if not request.user.je_org: podgalerie = podgalerie.filter(zobrazit__lt=1) obrazky = Obrazek.objects.filter(galerie = galerie).order_by('poradi', 'nazev') @@ -44,7 +44,7 @@ def nahled(request, pk, soustredeni): sourozenci = [] if galerie.galerie_up: sourozenci = galerie.galerie_up.galerie_set.all().order_by('poradi') - if not request.user.is_staff: + if not request.user.je_org: sourozenci = sourozenci.filter(zobrazit__lt=1) predchozi = None diff --git a/seminar/templates/seminar/soustredeni/seznam_soustredeni.html b/seminar/templates/seminar/soustredeni/seznam_soustredeni.html index a607e41e..2f2a98ca 100644 --- a/seminar/templates/seminar/soustredeni/seznam_soustredeni.html +++ b/seminar/templates/seminar/soustredeni/seznam_soustredeni.html @@ -17,8 +17,8 @@ {# Projdi vsechna soustredeni #} {% for soustredeni in object_list %} {# Kdyz je verejne -> zobraz #} - {% if soustredeni.verejne_db or user.is_staff %} - {% if not soustredeni.verejne_db and user.is_staff %} + {% if soustredeni.verejne_db or user.je_org %} + {% if not soustredeni.verejne_db and user.je_org %}
{% endif %} @@ -34,8 +34,8 @@ {# Zobrazeni odkazu na galerie #} {% if soustredeni.galerie_set.all %} {% for galerie in soustredeni.galerie_set.all %} - {% if galerie.zobrazit == 0 or user.is_staff %} -
  • 0 and user.is_staff %}class="mam-org-only"{% endif %}> + {% if galerie.zobrazit == 0 or user.je_org %} +
  • 0 and user.je_org %}class="mam-org-only"{% endif %}> Fotogalerie {# TODO kdyz je titulni obrazek, tak asi i titulni obrazek #}
  • @@ -43,7 +43,7 @@ {% endfor %} {% endif %} - {% if user.is_staff %} + {% if user.je_org %}
    Vytvořit novou fotogalerii
    Vygenerovat obálky pro účastníky
    @@ -60,7 +60,7 @@ {% if soustredeni.text %} {% autoescape off %}{{soustredeni.text}}{% endautoescape %} {% endif %} - {% if user.is_staff %} + {% if user.je_org %}
    {# Účastníci #}

    Soustředění se zúčastnili tito účastníci:

    @@ -82,7 +82,7 @@
    {% endif %} - {% if not soustredeni.verejne_db and user.is_staff %} + {% if not soustredeni.verejne_db and user.je_org %}
    {# class="mam-org-only" #} {% endif %} {% endif %} diff --git a/seminar/utils.py b/seminar/utils.py index f4e38779..ad9be95e 100644 --- a/seminar/utils.py +++ b/seminar/utils.py @@ -1,8 +1,12 @@ # -*- coding: utf-8 -*- import datetime + +from django.contrib.auth import get_user_model from django.contrib.auth.decorators import permission_required from html.parser import HTMLParser + +from django.contrib.auth.models import AnonymousUser from django.contrib.contenttypes.models import ContentType from django.core.exceptions import ObjectDoesNotExist @@ -11,6 +15,11 @@ import seminar.treelib as t org_required = permission_required('auth.org', raise_exception=True) resitel_required = permission_required('auth.resitel', raise_exception=True) +User = get_user_model() +User.je_org = lambda self: self.has_perm('auth.org') +User.je_resitel = lambda self: self.has_perm('auth.resitel') +AnonymousUser.je_org = lambda self: False +AnonymousUser.je_resitel = lambda self: False class FirstTagParser(HTMLParser): diff --git a/seminar/views/views_all.py b/seminar/views/views_all.py index 9e77341d..a27f85d2 100644 --- a/seminar/views/views_all.py +++ b/seminar/views/views_all.py @@ -238,8 +238,7 @@ def spravne_novinky(request): user = request.user # Využíváme líné vyhodnocování QuerySetů qs = Novinky.objects.all() - # TODO: Tohle by mělo spíš kontrolovat, že je/není někdo org, než že může do Adminu. - if not user.is_staff: + if not user.je_org: qs = qs.filter(zverejneno=True) return qs.order_by('-datum') @@ -623,7 +622,7 @@ class ProblemView(generic.DetailView): def get_context_data(self, **kwargs): context = super().get_context_data(**kwargs) # Musí se používat context['object'], protože nevíme, jestli dostaneme úložku, téma, článek, .... a tyhle věci vyrábějí různé klíče. - if not context['object'].verejne() and not self.request.user.is_staff: + if not context['object'].verejne() and not self.request.user.je_org: raise PermissionDenied() if isinstance(context['object'], Clanek): context['reseni'] = Reseni.objects.filter(problem=context['object']).select_related('resitel').order_by('resitel__prijmeni')