Fixes message when not in group, NOT DRY

This commit is contained in:
nikolark committed 2012-02-13 23:32:22 +01:00
1 parent e47e9585c1
commit a17cc97b89
4 files changed
+44 -37

No files matched your search

+14
View File
@@ -0,0 +1,14 @@
from django.conf import settings
from django.contrib import messages
def in_groups(request):
if request.user.is_authenticated():
#settings.GROUPS_ALLOWED
if bool(request.user.groups.filter(name__in=settings.GROUPS_ALLOWED)) or request.user.is_superuser:
return True
# Gi brukeren beskjed (muligens)
message = "Jeg kan ikke gi deg tilgang fordi \
du er ikke i noen av disse gruppene: {0}.".format(
", ".join(settings.GROUPS_ALLOWED))
messages.info(request, message=message)
return False
-16
View File
@@ -1,16 +0,0 @@
from django.conf import settings
from django.contrib.auth.decorators import user_passes_test
def groups_required(*group_names):
"""Requires user membership in at least one of the groups passed in."""
def in_groups(u):
if u.is_authenticated():
if bool(u.groups.filter(name__in=group_names)) or u.is_superuser:
return True
# Gi brukeren beskjed (muligens)
#message = "Jeg kan ikke gi deg tilgang fordi \
# du er ikke i noen av disse gruppene: {0}.".format(
# ", ".join(settings.GROUPS_ALLOWED))
#messages.create(message=message)
return False
return user_passes_test(in_groups)
+2 -14
View File
@@ -1,28 +1,16 @@
from datetime import datetime
from django.conf.urls.defaults import patterns, include, url
from django.views.generic.list_detail import object_list
from django.contrib.auth.decorators import login_required
from django.conf import settings
from models import *
from decorators import groups_required
urlpatterns = patterns('main.views',
url(r'^system/$', 'system', name='system'),
url(r'^new/$', 'new', name='new'),
url(r'^new/created/$', 'new_created', name='new_created'),
url(r'^list/page(?P<page>[0-9]+)/$',
groups_required(settings.GROUPS_ALLOWED)(login_required(object_list)), {
'queryset': TempUserLog.objects.filter(expires__gt=datetime.now()).order_by('created').reverse(),
'template_name':'private/list.html'
}, name='list_page'),
url(r'^list/',
groups_required(settings.GROUPS_ALLOWED)(login_required(object_list)), {
'queryset': TempUserLog.objects.filter(expires__gt=datetime.now()).order_by('created').reverse(),
'template_name':'private/list.html'
},
name='list_users'),
url(r'^list/page(?P<page>[0-9]+)/$', 'list', name='list_page'),
url(r'^list/','list', name='list_users'),
url(r'^download/(?P<tempuserlog_id>[0-9]+)/pdf$', 'download_pdf', name='download_pdf')
)
+28 -7
View File
@@ -4,7 +4,7 @@ import datetime
from django.http import HttpResponse, HttpResponseRedirect
from django.conf import settings
from django.contrib.auth import login
from django.contrib.auth import login, logout
from django.contrib.auth.decorators import login_required
from django.contrib.auth.forms import AuthenticationForm
from django.core.exceptions import ObjectDoesNotExist
@@ -14,13 +14,13 @@ from django.template import RequestContext
from django.views.decorators.csrf import csrf_protect
from django.shortcuts import get_object_or_404
from django.contrib import messages
from django.views.generic.list_detail import object_list # override this to get pagination
from models import *
from radius.models import *
from forms import *
import utils
from decorators import groups_required
import utils, auth
from pdf import render_to_pdf
@@ -38,9 +38,12 @@ def index(request):
return render_to_response('public/index.html', locals(), context_instance=RequestContext(request))
@groups_required(settings.GROUPS_ALLOWED)
@login_required
def new(request):
if not auth.in_groups(request):
logout(request)
return HttpResponseRedirect( '/accounts/login/' )
if request.method == "POST":
form = TempUserForm(data=request.POST)
if form.is_valid():
@@ -76,9 +79,12 @@ def new(request):
return render_to_response('private/new.html', locals(), context_instance=RequestContext(request))
@groups_required(settings.GROUPS_ALLOWED)
@login_required
def new_created(request):
if not auth.in_groups(request):
logout(request)
return HttpResponseRedirect( '/accounts/login/' )
# Retrieve the last id from session
storage = messages.get_messages(request)
msgs = [message for message in storage]
@@ -88,15 +94,30 @@ def new_created(request):
tempuserlog_id = 0
return render_to_response('private/new_created.html', locals(), context_instance=RequestContext(request))
@groups_required(settings.GROUPS_ALLOWED)
@login_required
def system(request):
if not auth.in_groups(request):
logout(request)
return HttpResponseRedirect( '/accounts/login/' )
return render_to_response('private/system.html', locals(), context_instance=RequestContext(request))
@login_required
def list(request, page=0):
if not auth.in_groups(request):
logout(request)
return HttpResponseRedirect( '/accounts/login/' )
queryset = TempUserLog.objects.filter(expires__gt=datetime.datetime.now()).order_by('created').reverse(),
return render_to_response('private/list.html', locals(), context_instance=RequestContext(request))
@groups_required(settings.GROUPS_ALLOWED)
@login_required
def download_pdf(request, tempuserlog_id=-1):
if not auth.in_groups(request):
logout(request)
return HttpResponseRedirect( '/accounts/login/' )
log = get_object_or_404(TempUserLog, pk=tempuserlog_id)
return render_to_pdf(