Skip to content
Snippets Groups Projects
Commit ef84f037 authored by Xiao Ju's avatar Xiao Ju
Browse files

Merge branch '118-add-possibility-of-querying-annotations-of-datafiles' into 'master'

Resolve "Add possibility of querying annotations of datafiles"

Closes #118

See merge request !62
parents f428badd db27434b
No related branches found
No related tags found
1 merge request!62Resolve "Add possibility of querying annotations of datafiles"
......@@ -16,6 +16,7 @@ from .views.secure.datafile import (DataFileAnnotateView,
DataFileBatchRemoveAnnotation,
DataFileDeleteView, DataFileDetailsView,
DataFileDownloadView,
DataFileHasKeyJSONListView,
DataFileMetadataJSONView,
DataFilesJSONListView, DataFilesView,
DataFileUpdateView,
......@@ -71,6 +72,8 @@ urlpatterns = [
# Files
path('secure/datafiles/', DataFilesView.as_view(), name='user.datafiles'),
path('secure/datafiles/list/json/', DataFilesJSONListView.as_view(), name='user.datafiles-json-list'),
path('secure/datafiles/list/json/<str:key>/', DataFileHasKeyJSONListView.as_view(), name='user.datafiles-json-list'),
path('secure/datafiles/list/json/<str:key>/<str:dataset>/', DataFileHasKeyJSONListView.as_view(), name='user.datafiles-json-list'),
path('secure/shared-datafiles/', SharedWithMeDataFilesView.as_view(), name='user.shared-datafiles'),
path('secure/shared-datafiles/list/json/', SharedWithMeDataFilesJSONListView.as_view(), name='user.shared-datafiles-json-list'),
path('secure/datafiles/annotate', DataFileAnnotateView.as_view(), name='user.datafile-annotate'),
......
import json
import logging
import re
from django.contrib import messages
from django.contrib.admin.utils import flatten
......@@ -487,3 +488,42 @@ class DataFileDeleteView(LoginRequiredMixin, DeleteViewMixin, DeleteView):
)
)
return HttpResponseRedirect(self.get_success_url())
class DataFileHasKeyJSONListView(LoginRequiredMixin, JSONListView):
model = DataFile
def get_queryset(self):
qs = DataFile.objects.accessible_to_profile(self.request.user.profile)
key = self.kwargs.get('key', None)
qs = qs.filter(annotations__has_key=key)
dataset = self.kwargs.get('dataset', None)
logger.debug(dataset)
if dataset and re.match('DS[A-F0-9]{8}', dataset):
qs = qs.filter(
datasets__iric_data_id=dataset
)
return qs.distinct()
def get_rows(self):
rows = []
for o in self.object_list:
row = {
'id': o.id,
'filename': o.filename,
'iric_data_id': o.iric_data_id,
'hash': o.hash,
'ext': o.filext.upper(),
'size': o.file.size,
'upload_date': timezone.localtime(o.upload_timestamp).strftime('%Y-%m-%d %H:%M:%S %Z'),
'uploaded_by': o.uploaded_by.fullname,
'lab': str(o.lab) if o.lab else ''
}
rows.append(row)
return rows
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment