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')