[Backport] Fixing ordering in archived states

remotes/origin/3.4.0rc
Jesús Espino 2017-05-17 12:50:28 +02:00 committed by Alejandro Alonso
parent cb6f3bb0fe
commit e715c7b03e
1 changed files with 11 additions and 0 deletions

View File

@ -18,6 +18,7 @@
from django.apps import apps from django.apps import apps
from django.db import transaction from django.db import transaction
from django.db.models import Max
from django.utils.translation import ugettext as _ from django.utils.translation import ugettext as _
from django.http import HttpResponse from django.http import HttpResponse
@ -156,6 +157,10 @@ class UserStoryViewSet(OCCResourceMixin, VotedResourceMixin, HistoryResourceMixi
related_data = getattr(obj, "_related_data", {}) related_data = getattr(obj, "_related_data", {})
self._role_points = related_data.pop("role_points", None) self._role_points = related_data.pop("role_points", None)
if obj.kanban_order == -1:
if self._max_order:
obj.kanban_order = self._max_order + 1;
if not obj.id: if not obj.id:
obj.owner = self.request.user obj.owner = self.request.user
else: else:
@ -276,6 +281,12 @@ class UserStoryViewSet(OCCResourceMixin, VotedResourceMixin, HistoryResourceMixi
except Project.DoesNotExist: except Project.DoesNotExist:
return response.BadRequest(_("The project doesn't exist")) return response.BadRequest(_("The project doesn't exist"))
if self.object and self.object.project_id:
self._max_order = models.UserStory.objects.filter(
project_id=self.object.project_id,
status_id=request.DATA.get('status', None)
).aggregate(Max('kanban_order'))['kanban_order__max']
return super().update(request, *args, **kwargs) return super().update(request, *args, **kwargs)
@list_route(methods=["GET"]) @list_route(methods=["GET"])