44 lines
1.4 KiB
Python
44 lines
1.4 KiB
Python
# -*- coding: utf8 -*-
|
|
from pyramid.security import Allow, Everyone, Authenticated
|
|
from pyramid.httpexceptions import HTTPFound, HTTPNotFound, HTTPForbidden
|
|
from pyramid.httpexceptions import HTTPBadRequest, HTTPUnauthorized
|
|
|
|
USERS = { 1:'editor',
|
|
'editor':'editor',
|
|
'viewer':'viewer'}
|
|
GROUPS = {'editor':['group:editors'], 1:['group:editors']}
|
|
|
|
|
|
def check_logged(request):
|
|
""" This function is intended to raise an exception if the user is not logged"""
|
|
if request.user is None:
|
|
# Don't answer to users that aren't logged
|
|
raise HTTPForbidden(u'Vous devez vous identifier pour obtenir une réponse.')
|
|
|
|
|
|
def check_staff(request):
|
|
""" This function is intended to raise an exception if the user is not a Staff member"""
|
|
check_logged(request)
|
|
if not request.user.Staff:
|
|
# Don't answer to users that aren't logged
|
|
raise HTTPForbidden(u'Vous n\'avez pas l\'autorité suffisante pour effectuer cette action.')
|
|
|
|
|
|
def groupfinder(userid, request):
|
|
if userid in USERS:
|
|
return GROUPS.get(userid, [])
|
|
|
|
class EntryFactory(object):
|
|
__acl__ = [(Allow, Everyone, 'view'),
|
|
(Allow, Authenticated, 'create'),
|
|
(Allow, Authenticated, 'edit'), ]
|
|
|
|
def __init__(self, request):
|
|
pass
|
|
|
|
class RootFactory(object):
|
|
__acl__ = [ (Allow, Everyone, 'view'),
|
|
(Allow, 'group:editors', 'edit') ]
|
|
def __init__(self, request):
|
|
pass
|