From 1cb924891285cbd75ee185db32bfcb83819c843a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20Barrag=C3=A1n=20Merino?= Date: Fri, 19 Aug 2016 09:59:41 +0200 Subject: [PATCH] Minor codee improvements --- taiga/permissions/choices.py | 2 +- taiga/projects/epics/api.py | 99 +++++++++++++++++------------------- 2 files changed, 49 insertions(+), 52 deletions(-) diff --git a/taiga/permissions/choices.py b/taiga/permissions/choices.py index 3564acc8..594d48ee 100644 --- a/taiga/permissions/choices.py +++ b/taiga/permissions/choices.py @@ -37,7 +37,7 @@ MEMBERS_PERMISSIONS = [ ('add_milestone', _('Add milestone')), ('modify_milestone', _('Modify milestone')), ('delete_milestone', _('Delete milestone')), - # US permissions + # Epic permissions ('view_epics', _('View epic')), ('add_epic', _('Add epic')), ('modify_epic', _('Modify epic')), diff --git a/taiga/projects/epics/api.py b/taiga/projects/epics/api.py index cf7bed6e..cc1b1c5d 100644 --- a/taiga/projects/epics/api.py +++ b/taiga/projects/epics/api.py @@ -111,16 +111,15 @@ class EpicViewSet(OCCResourceMixin, VotedResourceMixin, HistoryResourceMixin, def _reorder_if_needed(self, obj, old_order_key, order_key): # Executes the extra ordering if there is a difference in the ordering keys - if old_order_key != order_key: - extra_orders = json.loads(self.request.META.get("HTTP_SET_ORDERS", "{}")) - data = [{"epic_id": obj.id, "order": getattr(obj, "epics_order")}] - for id, order in extra_orders.items(): - data.append({"epic_id": int(id), "order": order}) + if old_order_key == order_key: + return {} - return services.update_epics_order_in_bulk(data, - "epics_order", - project=obj.project) - return {} + extra_orders = json.loads(self.request.META.get("HTTP_SET_ORDERS", "{}")) + data = [{"epic_id": obj.id, "order": getattr(obj, "epics_order")}] + for id, order in extra_orders.items(): + data.append({"epic_id": int(id), "order": order}) + + return services.update_epics_order_in_bulk(data, "epics_order", project=obj.project) def post_save(self, obj, created=False): if not created: @@ -205,26 +204,26 @@ class EpicViewSet(OCCResourceMixin, VotedResourceMixin, HistoryResourceMixin, @list_route(methods=["POST"]) def bulk_create(self, request, **kwargs): validator = validators.EpicsBulkValidator(data=request.DATA) - if validator.is_valid(): - data = validator.data - project = Project.objects.get(id=data["project_id"]) - self.check_permissions(request, "bulk_create", project) - if project.blocked_code is not None: - raise exc.Blocked(_("Blocked element")) + if not validator.is_valid(): + return response.BadRequest(validator.errors) - epics = services.create_epics_in_bulk( - data["bulk_epics"], - status_id=data.get("status_id") or project.default_epic_status_id, - project=project, - owner=request.user, - callback=self.post_save, precall=self.pre_save) + data = validator.data + project = Project.objects.get(id=data["project_id"]) + self.check_permissions(request, "bulk_create", project) + if project.blocked_code is not None: + raise exc.Blocked(_("Blocked element")) - epics = self.get_queryset().filter(id__in=[i.id for i in epics]) - epics_serialized = self.get_serializer_class()(epics, many=True) + epics = services.create_epics_in_bulk( + data["bulk_epics"], + status_id=data.get("status_id") or project.default_epic_status_id, + project=project, + owner=request.user, + callback=self.post_save, precall=self.pre_save) - return response.Ok(epics_serialized.data) + epics = self.get_queryset().filter(id__in=[i.id for i in epics]) + epics_serialized = self.get_serializer_class()(epics, many=True) - return response.BadRequest(validator.errors) + return response.Ok(epics_serialized.data) class EpicRelatedUserStoryViewSet(NestedViewSetMixin, BlockedByProjectMixin, ModelCrudViewSet): @@ -254,18 +253,16 @@ class EpicRelatedUserStoryViewSet(NestedViewSetMixin, BlockedByProjectMixin, Mod def _reorder_if_needed(self, obj, old_order_key, order_key): # Executes the extra ordering if there is a difference in the ordering keys - if old_order_key != order_key: - extra_orders = json.loads(self.request.META.get("HTTP_SET_ORDERS", "{}")) - data = [{"us_id": obj.id, "order": getattr(obj, "order")}] - for id, order in extra_orders.items(): - data.append({"epic_id": int(id), "order": order}) + if old_order_key == order_key: + return {} - return services.update_epic_related_userstories_order_in_bulk( - data, - epic=obj.epic - ) + extra_orders = json.loads(self.request.META.get("HTTP_SET_ORDERS", "{}")) + data = [{"us_id": obj.id, "order": getattr(obj, "order")}] + for id, order in extra_orders.items(): + data.append({"epic_id": int(id), "order": order}) + + return services.update_epic_related_userstories_order_in_bulk(data, epic=obj.epic) - return {} def post_save(self, obj, created=False): if not created: @@ -280,27 +277,27 @@ class EpicRelatedUserStoryViewSet(NestedViewSetMixin, BlockedByProjectMixin, Mod @list_route(methods=["POST"]) def bulk_create(self, request, **kwargs): validator = validators.CrateRelatedUserStoriesBulkValidator(data=request.DATA) - if validator.is_valid(): - data = validator.data + if not validator.is_valid(): + return response.BadRequest(validator.errors) - epic = get_object_or_404(models.Epic, id=kwargs["epic"]) - project = epic.project + data = validator.data - self.check_permissions(request, 'bulk_create', project) - if project.blocked_code is not None: - raise exc.Blocked(_("Blocked element")) + epic = get_object_or_404(models.Epic, id=kwargs["epic"]) + project = epic.project - services.create_related_userstories_in_bulk( - data["userstories"], - epic, - project=project, - owner=request.user - ) + self.check_permissions(request, 'bulk_create', project) + if project.blocked_code is not None: + raise exc.Blocked(_("Blocked element")) - related_uss_serialized = self.get_serializer_class()(epic.relateduserstory_set.all(), many=True) - return response.Ok(related_uss_serialized.data) + services.create_related_userstories_in_bulk( + data["userstories"], + epic, + project=project, + owner=request.user + ) - return response.BadRequest(validator.errors) + related_uss_serialized = self.get_serializer_class()(epic.relateduserstory_set.all(), many=True) + return response.Ok(related_uss_serialized.data) class EpicVotersViewSet(VotersViewSetMixin, ModelListViewSet):