Improve Epic sort feature
parent
3dbde420d8
commit
133cf149fd
|
@ -200,12 +200,11 @@ class EpicViewSet(OCCResourceMixin, VotedResourceMixin, HistoryResourceMixin,
|
||||||
if project.blocked_code is not None:
|
if project.blocked_code is not None:
|
||||||
raise exc.Blocked(_("Blocked element"))
|
raise exc.Blocked(_("Blocked element"))
|
||||||
|
|
||||||
services.update_epics_order_in_bulk(data["bulk_epics"],
|
ret = services.update_epics_order_in_bulk(data["bulk_epics"],
|
||||||
project=project,
|
project=project,
|
||||||
field=order_field)
|
field=order_field)
|
||||||
services.snapshot_epics_in_bulk(data["bulk_epics"], request.user)
|
|
||||||
|
|
||||||
return response.NoContent()
|
return response.Ok(ret)
|
||||||
|
|
||||||
@list_route(methods=["POST"])
|
@list_route(methods=["POST"])
|
||||||
def bulk_update_epics_order(self, request, **kwargs):
|
def bulk_update_epics_order(self, request, **kwargs):
|
||||||
|
|
|
@ -27,6 +27,7 @@ from django.utils.translation import ugettext as _
|
||||||
|
|
||||||
from taiga.base.utils import db, text
|
from taiga.base.utils import db, text
|
||||||
from taiga.projects.history.services import take_snapshot
|
from taiga.projects.history.services import take_snapshot
|
||||||
|
from taiga.projects.services import apply_order_updates
|
||||||
from taiga.projects.epics.apps import connect_epics_signals
|
from taiga.projects.epics.apps import connect_epics_signals
|
||||||
from taiga.projects.epics.apps import disconnect_epics_signals
|
from taiga.projects.epics.apps import disconnect_epics_signals
|
||||||
from taiga.events import events
|
from taiga.events import events
|
||||||
|
@ -78,28 +79,21 @@ def update_epics_order_in_bulk(bulk_data: list, field: str, project: object):
|
||||||
Update the order of some epics.
|
Update the order of some epics.
|
||||||
`bulk_data` should be a list of tuples with the following format:
|
`bulk_data` should be a list of tuples with the following format:
|
||||||
|
|
||||||
[(<epic id>, {<field>: <value>, ...}), ...]
|
[{'epic_id': <value>, 'order': <value>}, ...]
|
||||||
"""
|
"""
|
||||||
epic_ids = []
|
epics = project.epics.all()
|
||||||
new_order_values = []
|
|
||||||
for epic_data in bulk_data:
|
|
||||||
epic_ids.append(epic_data["epic_id"])
|
|
||||||
new_order_values.append({field: epic_data["order"]})
|
|
||||||
|
|
||||||
|
epic_orders = {e.id: getattr(e, field) for e in epics}
|
||||||
|
new_epic_orders = {d["epic_id"]: d["order"] for d in bulk_data}
|
||||||
|
apply_order_updates(epic_orders, new_epic_orders)
|
||||||
|
|
||||||
|
epic_ids = epic_orders.keys()
|
||||||
events.emit_event_for_ids(ids=epic_ids,
|
events.emit_event_for_ids(ids=epic_ids,
|
||||||
content_type="epics.epic",
|
content_type="epics.epic",
|
||||||
projectid=project.pk)
|
projectid=project.pk)
|
||||||
|
|
||||||
db.update_in_bulk_with_ids(epic_ids, new_order_values, model=models.Epic)
|
db.update_attr_in_bulk_for_ids(epic_orders, field, models.Epic)
|
||||||
|
return epic_orders
|
||||||
|
|
||||||
def snapshot_epics_in_bulk(bulk_data, user):
|
|
||||||
for epic_data in bulk_data:
|
|
||||||
try:
|
|
||||||
epic = models.Epic.objects.get(pk=epic_data['epic_id'])
|
|
||||||
take_snapshot(epic, user=user)
|
|
||||||
except models.Epic.DoesNotExist:
|
|
||||||
pass
|
|
||||||
|
|
||||||
|
|
||||||
#####################################################
|
#####################################################
|
||||||
|
|
|
@ -131,7 +131,6 @@ def test_apply_order_updates_duplicated_orders():
|
||||||
"a": 3
|
"a": 3
|
||||||
}
|
}
|
||||||
apply_order_updates(orders, new_orders)
|
apply_order_updates(orders, new_orders)
|
||||||
print(orders)
|
|
||||||
assert orders == {
|
assert orders == {
|
||||||
"a": 3,
|
"a": 3,
|
||||||
"c": 4,
|
"c": 4,
|
||||||
|
@ -155,7 +154,6 @@ def test_apply_order_updates_multiple_elements_duplicated_orders():
|
||||||
"a": 4
|
"a": 4
|
||||||
}
|
}
|
||||||
apply_order_updates(orders, new_orders)
|
apply_order_updates(orders, new_orders)
|
||||||
print(orders)
|
|
||||||
assert orders == {
|
assert orders == {
|
||||||
"c": 3,
|
"c": 3,
|
||||||
"d": 3,
|
"d": 3,
|
||||||
|
|
Loading…
Reference in New Issue