forked from extern/django-helpdesk
Fix codestyle errors, use currying instead of lambdas for determing user access
This commit is contained in:
parent
38d9ae9c57
commit
c70cf04e4d
@ -7,17 +7,38 @@ from django.contrib.auth.decorators import user_passes_test
|
|||||||
|
|
||||||
from helpdesk import settings as helpdesk_settings
|
from helpdesk import settings as helpdesk_settings
|
||||||
|
|
||||||
|
|
||||||
|
def check_staff_status(check_staff=False):
|
||||||
|
"""
|
||||||
|
Somewhat ridiculous currying to check user permissions without using lambdas.
|
||||||
|
The function most only take one User parameter at the end for use with
|
||||||
|
the Django function user_passes_test.
|
||||||
|
"""
|
||||||
|
def check_superuser_status(check_superuser):
|
||||||
|
def check_user_status(u):
|
||||||
|
is_ok = u.is_authenticated and u.is_active
|
||||||
|
if check_staff:
|
||||||
|
return is_ok and u.is_staff
|
||||||
|
elif check_superuser:
|
||||||
|
return is_ok and u.is_superuser
|
||||||
|
else:
|
||||||
|
return is_ok
|
||||||
|
return check_user_status
|
||||||
|
return check_superuser_status
|
||||||
|
|
||||||
|
|
||||||
if callable(helpdesk_settings.HELPDESK_ALLOW_NON_STAFF_TICKET_UPDATE):
|
if callable(helpdesk_settings.HELPDESK_ALLOW_NON_STAFF_TICKET_UPDATE):
|
||||||
# apply a custom user validation condition
|
# apply a custom user validation condition
|
||||||
is_helpdesk_staff = helpdesk_settings.HELPDESK_ALLOW_NON_STAFF_TICKET_UPDATE
|
is_helpdesk_staff = helpdesk_settings.HELPDESK_ALLOW_NON_STAFF_TICKET_UPDATE
|
||||||
elif helpdesk_settings.HELPDESK_ALLOW_NON_STAFF_TICKET_UPDATE:
|
elif helpdesk_settings.HELPDESK_ALLOW_NON_STAFF_TICKET_UPDATE:
|
||||||
# treat 'normal' users like 'staff'
|
# treat 'normal' users like 'staff'
|
||||||
is_helpdesk_staff = lambda u: u.is_authenticated and u.is_active
|
is_helpdesk_staff = check_staff_status(False)(False)
|
||||||
else:
|
else:
|
||||||
is_helpdesk_staff = lambda u: u.is_authenticated and u.is_active and u.is_staff
|
is_helpdesk_staff = check_staff_status(True)(False)
|
||||||
|
|
||||||
helpdesk_staff_member_required = user_passes_test(is_helpdesk_staff)
|
helpdesk_staff_member_required = user_passes_test(is_helpdesk_staff)
|
||||||
helpdesk_superuser_required = user_passes_test(lambda u: u.is_authenticated and u.is_active and u.is_superuser)
|
helpdesk_superuser_required = user_passes_test(check_staff_status(False)(True))
|
||||||
|
|
||||||
|
|
||||||
def protect_view(view_func):
|
def protect_view(view_func):
|
||||||
"""
|
"""
|
||||||
@ -33,4 +54,3 @@ def protect_view(view_func):
|
|||||||
return view_func(request, *args, **kwargs)
|
return view_func(request, *args, **kwargs)
|
||||||
|
|
||||||
return _wrapped_view
|
return _wrapped_view
|
||||||
|
|
||||||
|
@ -11,6 +11,14 @@ import mimetypes
|
|||||||
import os
|
import os
|
||||||
from smtplib import SMTPException
|
from smtplib import SMTPException
|
||||||
|
|
||||||
|
from django.conf import settings
|
||||||
|
from django.db.models import Q
|
||||||
|
from django.utils import six
|
||||||
|
from django.utils.encoding import smart_text
|
||||||
|
from django.utils.safestring import mark_safe
|
||||||
|
|
||||||
|
from helpdesk.models import Attachment, EmailTemplate
|
||||||
|
|
||||||
import six
|
import six
|
||||||
|
|
||||||
if six.PY3:
|
if six.PY3:
|
||||||
@ -20,14 +28,6 @@ else:
|
|||||||
from base64 import urlsafe_b64encode as b64encode
|
from base64 import urlsafe_b64encode as b64encode
|
||||||
from base64 import urlsafe_b64decode as b64decode
|
from base64 import urlsafe_b64decode as b64decode
|
||||||
|
|
||||||
from django.conf import settings
|
|
||||||
from django.db.models import Q
|
|
||||||
from django.utils import six
|
|
||||||
from django.utils.encoding import smart_text
|
|
||||||
from django.utils.safestring import mark_safe
|
|
||||||
|
|
||||||
from helpdesk.models import Attachment, EmailTemplate
|
|
||||||
|
|
||||||
logger = logging.getLogger('helpdesk')
|
logger = logging.getLogger('helpdesk')
|
||||||
|
|
||||||
|
|
||||||
|
@ -21,6 +21,7 @@ import re
|
|||||||
|
|
||||||
import six
|
import six
|
||||||
|
|
||||||
|
|
||||||
@python_2_unicode_compatible
|
@python_2_unicode_compatible
|
||||||
class Queue(models.Model):
|
class Queue(models.Model):
|
||||||
"""
|
"""
|
||||||
|
@ -2,10 +2,10 @@
|
|||||||
import sys
|
import sys
|
||||||
from django.contrib.auth import get_user_model
|
from django.contrib.auth import get_user_model
|
||||||
|
|
||||||
User = get_user_model()
|
|
||||||
|
|
||||||
from helpdesk.models import Ticket, Queue, UserSettings
|
from helpdesk.models import Ticket, Queue, UserSettings
|
||||||
|
|
||||||
|
User = get_user_model()
|
||||||
|
|
||||||
|
|
||||||
def get_staff_user(username='helpdesk.staff', password='password'):
|
def get_staff_user(username='helpdesk.staff', password='password'):
|
||||||
try:
|
try:
|
||||||
|
@ -500,7 +500,7 @@ def update_ticket(request, ticket_id, public=False):
|
|||||||
f.title = _('Updated')
|
f.title = _('Updated')
|
||||||
|
|
||||||
f.save()
|
f.save()
|
||||||
|
|
||||||
files = []
|
files = []
|
||||||
if request.FILES:
|
if request.FILES:
|
||||||
files = process_attachments(f, request.FILES.getlist('attachment'))
|
files = process_attachments(f, request.FILES.getlist('attachment'))
|
||||||
|
Loading…
Reference in New Issue
Block a user