Skip to content

Commit

Permalink
Fix downloading, shrink list of export formats
Browse files Browse the repository at this point in the history
  • Loading branch information
zhiltsov-max committed Nov 14, 2019
1 parent f364a5a commit 3ac2ff7
Show file tree
Hide file tree
Showing 5 changed files with 50 additions and 17 deletions.
8 changes: 6 additions & 2 deletions cvat-core/src/server-proxy.js
Original file line number Diff line number Diff line change
Expand Up @@ -250,8 +250,12 @@
.get(`${url}`, {
proxy: config.proxy,
});
url = `${url}&action=download`;
resolve(url);
if (response.status === 202) {
setTimeout(request, 3000);
} else {
url = `${url}&action=download`;
resolve(url);
}
} catch (errorData) {
reject(generateError(
errorData,
Expand Down
46 changes: 39 additions & 7 deletions cvat/apps/dashboard/static/dashboard/js/dashboard.js
Original file line number Diff line number Diff line change
Expand Up @@ -110,10 +110,16 @@ class TaskView {
}
}

async _exportDataset(button, format) {
async _exportDataset(button, formatName) {
button.disabled = true;
try {
const url = await this._task.annotations.exportDataset(format);
const format = this._exportFormats.find((x) => {
return x.name == formatName;
});
if (!format) {
throw `Unknown dataset export format '${formatName}'`;
}
const url = await this._task.annotations.exportDataset(format.tag);
const tempElem = document.createElement('a');
tempElem.href = `${url}`;
document.body.appendChild(tempElem);
Expand All @@ -126,8 +132,8 @@ class TaskView {
}
}

_isDefaultExportFormat(format) {
return format == 'datumaro_project';
_isDefaultExportFormat(formatTag) {
return formatTag == 'datumaro_project';
}

init(task) {
Expand Down Expand Up @@ -194,8 +200,8 @@ class TaskView {
+ 'style="text-align-last: center;"> Export as Dataset </select>');
$('<option selected disabled> Export as Dataset </option>').appendTo(exportButton);
for (const format of this._exportFormats) {
const item = $(`<option>${format}</li>`);
if (this._isDefaultExportFormat(format)) {
const item = $(`<option>${format.name}</li>`);
if (this._isDefaultExportFormat(format.tag)) {
item.addClass('bold');
}
item.appendTo(exportButton);
Expand Down Expand Up @@ -252,13 +258,39 @@ class DashboardView {
this._sharePath = metaData.share_path;
this._params = {};
this._annotationFormats = annotationFormats;
this._exportFormats = exportFormats;
this._exportFormats = [];

this._setupExportFormats(exportFormats);
this._setupList();
this._setupTaskSearch();
this._setupCreateDialog();
}

_setupExportFormats(availableFormats) {
const publicFormats = [];

if (-1 != availableFormats.indexOf('datumaro_project')) {
publicFormats.push({
tag: 'datumaro_project',
name: 'Datumaro',
});
}
if (-1 != availableFormats.indexOf('voc')) {
publicFormats.push({
tag: 'voc',
name: 'PASCAL VOC 2012',
});
}
if (-1 != availableFormats.indexOf('coco')) {
publicFormats.push({
tag: 'coco',
name: 'MS COCO',
});
}

this._exportFormats = publicFormats;
}

_setupList() {
const dashboardList = $('#dashboardList');
const dashboardPagination = $('#dashboardPagination');
Expand Down
6 changes: 1 addition & 5 deletions cvat/apps/dataset_manager/task.py
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,6 @@ def log_exception(logger=None, exc_info=True):
_TASK_IMAGES_REMOTE_EXTRACTOR = 'cvat_rest_api_task_images'

EXPORT_FORMAT_DATUMARO_PROJECT = "datumaro_project"
EXPORT_FORMAT_DATUMARO_REMOTE_PROJECT = "datumaro_project_remote"

class TaskProject:
@staticmethod
Expand Down Expand Up @@ -208,9 +207,7 @@ def save(self, save_dir=None, save_images=False):
def export(self, dst_format, save_dir, save_images=False, server_url=None):
if self._dataset is None:
self._init_dataset()
if dst_format == DEFAULT_FORMAT:
self._dataset.save(save_dir=save_dir, save_images=save_images)
elif dst_format == DEFAULT_FORMAT_REMOTE:
if dst_format == EXPORT_FORMAT_DATUMARO_PROJECT:
self._remote_export(save_dir=save_dir, server_url=server_url)
else:
self._dataset.export(output_format=dst_format,
Expand Down Expand Up @@ -351,7 +348,6 @@ def get_export_formats():

formats = [
EXPORT_FORMAT_DATUMARO_PROJECT,
EXPORT_FORMAT_DATUMARO_REMOTE_PROJECT,
]

for name, _ in converters.items:
Expand Down
2 changes: 1 addition & 1 deletion cvat/apps/engine/static/engine/js/cvat-core.min.js

Large diffs are not rendered by default.

5 changes: 3 additions & 2 deletions cvat/apps/engine/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -480,7 +480,8 @@ def dataset_export(self, request, pk):
rq_job = queue.fetch_job(rq_id)
if rq_job:
task_time = timezone.localtime(db_task.updated_date)
request_time = timezone.localtime(rq_job.meta.get('request_time', datetime.min))
request_time = timezone.localtime(
rq_job.meta.get('request_time', datetime.min))
if request_time < task_time:
rq_job.cancel()
rq_job.delete()
Expand Down Expand Up @@ -511,7 +512,7 @@ def dataset_export(self, request, pk):
args=(pk, request.user, dst_format), job_id=rq_id,
meta={ 'request_time': timezone.localtime() },
result_ttl=ttl, failure_ttl=ttl)
return Response(status=status.HTTP_201_CREATED)
return Response(status=status.HTTP_202_ACCEPTED)

class JobViewSet(viewsets.GenericViewSet,
mixins.RetrieveModelMixin, mixins.UpdateModelMixin):
Expand Down

0 comments on commit 3ac2ff7

Please sign in to comment.