From 0dd905cf811635ac5b09f51ed6d1e2124838433e Mon Sep 17 00:00:00 2001 From: Arthur Deierlein Date: Mon, 22 Apr 2024 14:37:31 +0200 Subject: [PATCH] refactor: move code after except ModelDoesNotExist outside of try block --- timed/employment/views.py | 37 ++++++++++++++++++------------------- timed/tracking/views.py | 30 +++++++++++++++--------------- 2 files changed, 33 insertions(+), 34 deletions(-) diff --git a/timed/employment/views.py b/timed/employment/views.py index 9f831585..7c316e96 100644 --- a/timed/employment/views.py +++ b/timed/employment/views.py @@ -67,23 +67,6 @@ def get_queryset(self): current_employment = models.Employment.objects.get_at( user=user, date=datetime.date.today() ) - if current_employment.is_external: - assigned_tasks = Task.objects.filter( - Q(task_assignees__user=user, task_assignees__is_reviewer=True) - | Q( - project__project_assignees__user=user, - project__project_assignees__is_reviewer=True, - ) - | Q( - project__customer__customer_assignees__user=user, - project__customer__customer_assignees__is_reviewer=True, - ) - ) - visible_reports = Report.objects.all().filter( - Q(task__in=assigned_tasks) | Q(user=user) - ) - - return queryset.filter(Q(reports__in=visible_reports) | Q(id=user.id)) except models.Employment.DoesNotExist: if CustomerAssignee.objects.filter(user=user, is_customer=True).exists(): assigned_tasks = Task.objects.filter( @@ -98,8 +81,24 @@ def get_queryset(self): return queryset.filter(Q(reports__in=visible_reports) | Q(id=user.id)) msg = "User has no employment" raise exceptions.PermissionDenied(msg) from None - else: - return queryset + if current_employment.is_external: + assigned_tasks = Task.objects.filter( + Q(task_assignees__user=user, task_assignees__is_reviewer=True) + | Q( + project__project_assignees__user=user, + project__project_assignees__is_reviewer=True, + ) + | Q( + project__customer__customer_assignees__user=user, + project__customer__customer_assignees__is_reviewer=True, + ) + ) + visible_reports = Report.objects.all().filter( + Q(task__in=assigned_tasks) | Q(user=user) + ) + + return queryset.filter(Q(reports__in=visible_reports) | Q(id=user.id)) + return queryset @action(methods=["get"], detail=False) def me(self, request, *args, **kwargs): diff --git a/timed/tracking/views.py b/timed/tracking/views.py index 77949e08..aab2aa7b 100644 --- a/timed/tracking/views.py +++ b/timed/tracking/views.py @@ -138,21 +138,6 @@ def get_queryset(self): try: current_employment = Employment.objects.get_at(user=user, date=date.today()) - if not current_employment.is_external: - return queryset - - assigned_tasks = Task.objects.filter( - Q(task_assignees__user=user, task_assignees__is_reviewer=True) - | Q( - project__project_assignees__user=user, - project__project_assignees__is_reviewer=True, - ) - | Q( - project__customer__customer_assignees__user=user, - project__customer__customer_assignees__is_reviewer=True, - ) - ) - return queryset.filter(Q(task__in=assigned_tasks) | Q(user=user)) except Employment.DoesNotExist: if CustomerAssignee.objects.filter(user=user, is_customer=True).exists(): return queryset.filter( @@ -163,6 +148,21 @@ def get_queryset(self): ) msg = "User has no employment and isn't a customer!" raise exceptions.PermissionDenied(msg) from None + if not current_employment.is_external: + return queryset + + assigned_tasks = Task.objects.filter( + Q(task_assignees__user=user, task_assignees__is_reviewer=True) + | Q( + project__project_assignees__user=user, + project__project_assignees__is_reviewer=True, + ) + | Q( + project__customer__customer_assignees__user=user, + project__customer__customer_assignees__is_reviewer=True, + ) + ) + return queryset.filter(Q(task__in=assigned_tasks) | Q(user=user)) def update(self, request, *args, **kwargs): """Override so we can issue emails on update."""