From bd90ff571dff07096ad352d99b82ef122e811e61 Mon Sep 17 00:00:00 2001 From: Ross Date: Fri, 30 Jul 2021 21:57:45 +0100 Subject: [PATCH] . --- longs/decorators.py | 13 ++++++++++++- longs/views.py | 10 +++++----- 2 files changed, 17 insertions(+), 6 deletions(-) diff --git a/longs/decorators.py b/longs/decorators.py index e936b082..ca5fa30e 100755 --- a/longs/decorators.py +++ b/longs/decorators.py @@ -1,5 +1,16 @@ from django.core.exceptions import PermissionDenied -from .models import Long +from .models import Long, LongSeries + +def user_is_author_or_long_series_checker(function): + def wrap(request, *args, **kwargs): + series = LongSeries.objects.get(pk=kwargs['pk']) + if request.user in series.get_author_objects() or request.user.groups.filter(name='long_checker').exists() or request.user.is_superuser: + return function(request, *args, **kwargs) + else: + raise PermissionDenied + wrap.__doc__ = function.__doc__ + wrap.__name__ = function.__name__ + return wrap def user_is_author_or_long_checker(function): def wrap(request, *args, **kwargs): diff --git a/longs/views.py b/longs/views.py index 999afa01..dbbfe28a 100755 --- a/longs/views.py +++ b/longs/views.py @@ -103,7 +103,7 @@ def question_detail(request, pk): return render(request, "longs/question_detail.html", {"question": long}) @login_required -@user_is_author_or_long_checker +@user_is_author_or_long_series_checker def long_series_detail(request, pk): series = get_object_or_404(LongSeries, pk=pk) @@ -904,7 +904,7 @@ def exam_scores_cid_user(request, pk, sk): ) @login_required -@user_is_author_or_long_checker +@user_is_author_or_long_series_checker def long_series_order_dicom(request, pk): series = get_object_or_404(LongSeries, pk=pk) try: @@ -915,7 +915,7 @@ def long_series_order_dicom(request, pk): return redirect("longs:long_series_detail", pk=pk) @login_required -@user_is_author_or_long_checker +@user_is_author_or_long_series_checker def long_series_order_dicom_instance(request, pk): series = get_object_or_404(LongSeries, pk=pk) try: @@ -926,7 +926,7 @@ def long_series_order_dicom_instance(request, pk): return redirect("longs:long_series_detail", pk=pk) @login_required -@user_is_author_or_long_checker +@user_is_author_or_long_series_checker def long_series_order_dicom_SeriesInstanceUID(request, pk): series = get_object_or_404(LongSeries, pk=pk) try: @@ -937,7 +937,7 @@ def long_series_order_dicom_SeriesInstanceUID(request, pk): return redirect("longs:long_series_detail", pk=pk) @login_required -@user_is_author_or_long_checker +@user_is_author_or_long_series_checker def long_series_order_upload_filename(request, pk): series = get_object_or_404(LongSeries, pk=pk) series.order_by_upload_filename()