Convert bulk update services classes to simple functions.

Because we are using python and not java ;)
remotes/origin/enhancement/email-actions
Andrey Antukh 2014-04-20 01:08:24 +02:00
parent eac6ac05ad
commit 2ad28a56c7
2 changed files with 122 additions and 131 deletions

View File

@ -170,18 +170,17 @@ class RolesViewSet(ModelCrudViewSet):
filter_backends = (filters.IsProjectMemberFilterBackend,) filter_backends = (filters.IsProjectMemberFilterBackend,)
filter_fields = ('project',) filter_fields = ('project',)
# User Stories commin ViewSets # User Stories commin ViewSets
class BulkUpdateOrderMixin: class BulkUpdateOrderMixin(object):
""" """
This mixin need three fields in the child class: This mixin need three fields in the child class:
- bulk_update_param: that the name of the field of the data received from - bulk_update_param: that the name of the field of the data received from
the cliente that contains the pairs (id, order) to sort the objects. the cliente that contains the pairs (id, order) to sort the objects.
- bulk_update_perm: that containts the codename of the permission needed to - bulk_update_perm: that containts the codename of the permission needed to sort.
sort. - bulk_update_order: method with bulk update order logic
- bulk_update_service: that is a object with the bulk_update_order method
for ordering the object.
""" """
@list_route(methods=["POST"]) @list_route(methods=["POST"])
@ -200,10 +199,10 @@ class BulkUpdateOrderMixin:
if request.user != project.owner and not has_project_perm(request.user, project, self.bulk_update_perm): if request.user != project.owner and not has_project_perm(request.user, project, self.bulk_update_perm):
raise exc.PermissionDenied(_("You don't have permisions %s.") % self.bulk_update_perm) raise exc.PermissionDenied(_("You don't have permisions %s.") % self.bulk_update_perm)
self.bulk_update_service.bulk_update_order(project, request.user, bulk_data) self.bulk_update_order(project, request.user, bulk_data)
return Response(data=None, status=status.HTTP_204_NO_CONTENT) return Response(data=None, status=status.HTTP_204_NO_CONTENT)
class PointsViewSet(ModelCrudViewSet, BulkUpdateOrderMixin): class PointsViewSet(ModelCrudViewSet, BulkUpdateOrderMixin):
model = models.Points model = models.Points
serializer_class = serializers.PointsSerializer serializer_class = serializers.PointsSerializer
@ -212,7 +211,7 @@ class PointsViewSet(ModelCrudViewSet, BulkUpdateOrderMixin):
filter_fields = ('project',) filter_fields = ('project',)
bulk_update_param = "bulk_points" bulk_update_param = "bulk_points"
bulk_update_perm = "change_points" bulk_update_perm = "change_points"
bulk_update_service = services.PointsService() bulk_update_order = services.bulk_update_points_order
class UserStoryStatusViewSet(ModelCrudViewSet, BulkUpdateOrderMixin): class UserStoryStatusViewSet(ModelCrudViewSet, BulkUpdateOrderMixin):
@ -223,7 +222,7 @@ class UserStoryStatusViewSet(ModelCrudViewSet, BulkUpdateOrderMixin):
filter_fields = ('project',) filter_fields = ('project',)
bulk_update_param = "bulk_userstory_statuses" bulk_update_param = "bulk_userstory_statuses"
bulk_update_perm = "change_userstorystatus" bulk_update_perm = "change_userstorystatus"
bulk_update_service = services.UserStoryStatusesService() bulk_update_order = services.bulk_update_userstory_status_order
class TaskStatusViewSet(ModelCrudViewSet, BulkUpdateOrderMixin): class TaskStatusViewSet(ModelCrudViewSet, BulkUpdateOrderMixin):
@ -234,7 +233,7 @@ class TaskStatusViewSet(ModelCrudViewSet, BulkUpdateOrderMixin):
filter_fields = ("project",) filter_fields = ("project",)
bulk_update_param = "bulk_task_statuses" bulk_update_param = "bulk_task_statuses"
bulk_update_perm = "change_taskstatus" bulk_update_perm = "change_taskstatus"
bulk_update_service = services.TaskStatusesService() bulk_update_order = services.bulk_update_task_status_order
class SeverityViewSet(ModelCrudViewSet, BulkUpdateOrderMixin): class SeverityViewSet(ModelCrudViewSet, BulkUpdateOrderMixin):
@ -245,7 +244,7 @@ class SeverityViewSet(ModelCrudViewSet, BulkUpdateOrderMixin):
filter_fields = ("project",) filter_fields = ("project",)
bulk_update_param = "bulk_severities" bulk_update_param = "bulk_severities"
bulk_update_perm = "change_severity" bulk_update_perm = "change_severity"
bulk_update_service = services.SeveritiesService() bulk_update_order = services.bulk_update_severity_order
class PriorityViewSet(ModelCrudViewSet, BulkUpdateOrderMixin): class PriorityViewSet(ModelCrudViewSet, BulkUpdateOrderMixin):
@ -256,7 +255,7 @@ class PriorityViewSet(ModelCrudViewSet, BulkUpdateOrderMixin):
filter_fields = ("project",) filter_fields = ("project",)
bulk_update_param = "bulk_priorities" bulk_update_param = "bulk_priorities"
bulk_update_perm = "change_priority" bulk_update_perm = "change_priority"
bulk_update_service = services.PrioritiesService() bulk_update_order = services.bulk_update_priority_order
class IssueTypeViewSet(ModelCrudViewSet, BulkUpdateOrderMixin): class IssueTypeViewSet(ModelCrudViewSet, BulkUpdateOrderMixin):
@ -267,7 +266,7 @@ class IssueTypeViewSet(ModelCrudViewSet, BulkUpdateOrderMixin):
filter_fields = ("project",) filter_fields = ("project",)
bulk_update_param = "bulk_issue_types" bulk_update_param = "bulk_issue_types"
bulk_update_perm = "change_issuetype" bulk_update_perm = "change_issuetype"
bulk_update_service = services.IssueTypesService() bulk_update_order = services.bulk_update_issue_type_order
class IssueStatusViewSet(ModelCrudViewSet, BulkUpdateOrderMixin): class IssueStatusViewSet(ModelCrudViewSet, BulkUpdateOrderMixin):
@ -278,7 +277,7 @@ class IssueStatusViewSet(ModelCrudViewSet, BulkUpdateOrderMixin):
filter_fields = ("project",) filter_fields = ("project",)
bulk_update_param = "bulk_issue_statuses" bulk_update_param = "bulk_issue_statuses"
bulk_update_perm = "change_issuestatus" bulk_update_perm = "change_issuestatus"
bulk_update_service = services.IssueStatusesService() bulk_update_order = services.bulk_update_issue_status_order
class QuestionStatusViewSet(ModelCrudViewSet, BulkUpdateOrderMixin): class QuestionStatusViewSet(ModelCrudViewSet, BulkUpdateOrderMixin):
@ -289,4 +288,4 @@ class QuestionStatusViewSet(ModelCrudViewSet, BulkUpdateOrderMixin):
filter_fields = ("project",) filter_fields = ("project",)
bulk_update_param = "bulk_question_statuses" bulk_update_param = "bulk_question_statuses"
bulk_update_perm = "change_questionstatus" bulk_update_perm = "change_questionstatus"
bulk_update_service = services.QuestionStatusesService() bulk_update_order = services.bulk_update_question_status_order

View File

@ -3,10 +3,9 @@
from django.db import transaction from django.db import transaction
from django.db import connection from django.db import connection
from . import models
class UserStoryStatusesService(object):
@transaction.atomic @transaction.atomic
def bulk_update_order(self, project, user, data): def bulk_update_userstory_status_order(project, user, data):
cursor = connection.cursor() cursor = connection.cursor()
sql = """ sql = """
@ -14,7 +13,6 @@ class UserStoryStatusesService(object):
where projects_userstorystatus.id = $2 and where projects_userstorystatus.id = $2 and
projects_userstorystatus.project_id = $3; projects_userstorystatus.project_id = $3;
""" """
cursor.execute(sql) cursor.execute(sql)
for id, order in data: for id, order in data:
cursor.execute("EXECUTE bulk_update_order (%s, %s, %s);", cursor.execute("EXECUTE bulk_update_order (%s, %s, %s);",
@ -22,9 +20,8 @@ class UserStoryStatusesService(object):
cursor.close() cursor.close()
class PointsService(object):
@transaction.atomic @transaction.atomic
def bulk_update_order(self, project, user, data): def bulk_update_points_order(project, user, data):
cursor = connection.cursor() cursor = connection.cursor()
sql = """ sql = """
@ -39,9 +36,9 @@ class PointsService(object):
(order, id, project.id)) (order, id, project.id))
cursor.close() cursor.close()
class TaskStatusesService(object):
@transaction.atomic @transaction.atomic
def bulk_update_order(self, project, user, data): def bulk_update_task_status_order(project, user, data):
cursor = connection.cursor() cursor = connection.cursor()
sql = """ sql = """
@ -57,9 +54,8 @@ class TaskStatusesService(object):
cursor.close() cursor.close()
class IssueStatusesService(object):
@transaction.atomic @transaction.atomic
def bulk_update_order(self, project, user, data): def bulk_update_issue_status_order(project, user, data):
cursor = connection.cursor() cursor = connection.cursor()
sql = """ sql = """
@ -75,9 +71,8 @@ class IssueStatusesService(object):
cursor.close() cursor.close()
class IssueTypesService(object):
@transaction.atomic @transaction.atomic
def bulk_update_order(self, project, user, data): def bulk_update_issue_type_order(project, user, data):
cursor = connection.cursor() cursor = connection.cursor()
sql = """ sql = """
@ -93,9 +88,8 @@ class IssueTypesService(object):
cursor.close() cursor.close()
class PrioritiesService(object):
@transaction.atomic @transaction.atomic
def bulk_update_order(self, project, user, data): def bulk_update_priority_order(project, user, data):
cursor = connection.cursor() cursor = connection.cursor()
sql = """ sql = """
@ -111,9 +105,8 @@ class PrioritiesService(object):
cursor.close() cursor.close()
class SeveritiesService(object):
@transaction.atomic @transaction.atomic
def bulk_update_order(self, project, user, data): def bulk_update_severity_order(project, user, data):
cursor = connection.cursor() cursor = connection.cursor()
sql = """ sql = """
@ -129,9 +122,8 @@ class SeveritiesService(object):
cursor.close() cursor.close()
class QuestionStatusesService(object):
@transaction.atomic @transaction.atomic
def bulk_update_order(self, project, user, data): def bulk_update_question_status_order(project, user, data):
cursor = connection.cursor() cursor = connection.cursor()
sql = """ sql = """