Fixed labels order (#242)

main
Boris Sekachev 7 years ago committed by Nikita Manovich
parent d9eac607b9
commit 02abd5a8f7

@ -26,6 +26,7 @@ from django.db import transaction
from ffmpy import FFmpeg from ffmpy import FFmpeg
from pyunpack import Archive from pyunpack import Archive
from distutils.dir_util import copy_tree from distutils.dir_util import copy_tree
from collections import OrderedDict
from . import models from . import models
from .log import slogger from .log import slogger
@ -154,7 +155,7 @@ def get(tid):
"""Get the task as dictionary of attributes""" """Get the task as dictionary of attributes"""
db_task = models.Task.objects.get(pk=tid) db_task = models.Task.objects.get(pk=tid)
if db_task: if db_task:
db_labels = db_task.label_set.prefetch_related('attributespec_set').all() db_labels = db_task.label_set.prefetch_related('attributespec_set').order_by('-pk').all()
im_meta_data = get_image_meta_cache(db_task) im_meta_data = get_image_meta_cache(db_task)
attributes = {} attributes = {}
for db_label in db_labels: for db_label in db_labels:
@ -174,7 +175,7 @@ def get(tid):
response = { response = {
"status": db_task.status, "status": db_task.status,
"spec": { "spec": {
"labels": { db_label.id:db_label.name for db_label in db_labels }, "labels": OrderedDict((db_label.id, db_label.name) for db_label in db_labels),
"attributes": attributes "attributes": attributes
}, },
"size": db_task.size, "size": db_task.size,
@ -228,7 +229,7 @@ def get_job(jid):
if db_task.mode == 'annotation': if db_task.mode == 'annotation':
im_meta_data['original_size'] = im_meta_data['original_size'][db_segment.start_frame:db_segment.stop_frame + 1] im_meta_data['original_size'] = im_meta_data['original_size'][db_segment.start_frame:db_segment.stop_frame + 1]
db_labels = db_task.label_set.prefetch_related('attributespec_set').all() db_labels = db_task.label_set.prefetch_related('attributespec_set').order_by('-pk').all()
attributes = {} attributes = {}
for db_label in db_labels: for db_label in db_labels:
attributes[db_label.id] = {} attributes[db_label.id] = {}
@ -237,7 +238,7 @@ def get_job(jid):
response = { response = {
"status": db_job.status, "status": db_job.status,
"labels": { db_label.id:db_label.name for db_label in db_labels }, "labels": OrderedDict((db_label.id, db_label.name) for db_label in db_labels),
"stop": db_segment.stop_frame, "stop": db_segment.stop_frame,
"taskid": db_task.id, "taskid": db_task.id,
"slug": db_task.name, "slug": db_task.name,
@ -375,7 +376,7 @@ def _get_frame_path(frame, base_dir):
return path return path
def _parse_labels(labels): def _parse_labels(labels):
parsed_labels = {} parsed_labels = OrderedDict()
last_label = "" last_label = ""
for token in shlex.split(labels): for token in shlex.split(labels):

Loading…
Cancel
Save