Skip to content
Snippets Groups Projects
Commit fe7a4e14 authored by Jean-Philippe Laverdure's avatar Jean-Philippe Laverdure
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 !65
parents ef84f037 ff7f1359
No related branches found
No related tags found
1 merge request!65Resolve "Add possibility of querying annotations of datafiles"
...@@ -17,6 +17,7 @@ from .views.secure.datafile import (DataFileAnnotateView, ...@@ -17,6 +17,7 @@ from .views.secure.datafile import (DataFileAnnotateView,
DataFileDeleteView, DataFileDetailsView, DataFileDeleteView, DataFileDetailsView,
DataFileDownloadView, DataFileDownloadView,
DataFileHasKeyJSONListView, DataFileHasKeyJSONListView,
DataFileHasAnnotJSONListView,
DataFileMetadataJSONView, DataFileMetadataJSONView,
DataFilesJSONListView, DataFilesView, DataFilesJSONListView, DataFilesView,
DataFileUpdateView, DataFileUpdateView,
...@@ -72,8 +73,10 @@ urlpatterns = [ ...@@ -72,8 +73,10 @@ urlpatterns = [
# Files # Files
path('secure/datafiles/', DataFilesView.as_view(), name='user.datafiles'), 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/', 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/lookup-key/<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/datafiles/list/json/lookup-key/<str:key>/<str:dataset>/', DataFileHasKeyJSONListView.as_view(), name='user.datafiles-json-list'),
path('secure/datafiles/list/json/lookup-value/<str:value>/', DataFileHasAnnotJSONListView.as_view(), name='user.datafiles-json-list'),
path('secure/datafiles/list/json/lookup-value/<str:value>/<str:dataset>/', DataFileHasAnnotJSONListView.as_view(),name='user.datafiles-json-list'),
path('secure/shared-datafiles/', SharedWithMeDataFilesView.as_view(), name='user.shared-datafiles'), 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/shared-datafiles/list/json/', SharedWithMeDataFilesJSONListView.as_view(), name='user.shared-datafiles-json-list'),
path('secure/datafiles/annotate', DataFileAnnotateView.as_view(), name='user.datafile-annotate'), path('secure/datafiles/annotate', DataFileAnnotateView.as_view(), name='user.datafile-annotate'),
......
...@@ -490,24 +490,9 @@ class DataFileDeleteView(LoginRequiredMixin, DeleteViewMixin, DeleteView): ...@@ -490,24 +490,9 @@ class DataFileDeleteView(LoginRequiredMixin, DeleteViewMixin, DeleteView):
return HttpResponseRedirect(self.get_success_url()) return HttpResponseRedirect(self.get_success_url())
class DataFileHasKeyJSONListView(LoginRequiredMixin, JSONListView): class DataFileLookupJSONListView(LoginRequiredMixin, JSONListView):
model = DataFile 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): def get_rows(self):
rows = [] rows = []
...@@ -527,3 +512,40 @@ class DataFileHasKeyJSONListView(LoginRequiredMixin, JSONListView): ...@@ -527,3 +512,40 @@ class DataFileHasKeyJSONListView(LoginRequiredMixin, JSONListView):
rows.append(row) rows.append(row)
return rows return rows
class DataFileHasKeyJSONListView(DataFileLookupJSONListView):
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:
qs = qs.filter(
datasets__iric_data_id=dataset
)
return qs.distinct()
class DataFileHasAnnotJSONListView(DataFileLookupJSONListView):
def get_queryset(self):
qs = DataFile.objects.accessible_to_profile(self.request.user.profile)
value = self.kwargs.get('value', None)
qs = qs.filter(annotations__values__icontains=value)
dataset = self.kwargs.get('dataset', None)
logger.debug(dataset)
if dataset:
qs = qs.filter(
datasets__iric_data_id=dataset
)
return qs.distinct()
\ No newline at end of file
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