From d4c4e58051d4e3eb3c3cfe9374cae4ecc00efd75 Mon Sep 17 00:00:00 2001 From: p1037977 <xiao.ju@umontreal.ca> Date: Wed, 13 Jan 2021 14:14:17 -0500 Subject: [PATCH 1/4] add look up value in annotations, return a JSONListView --- portal/urls.py | 3 ++ portal/views/secure/datafile.py | 54 ++++++++++++++++++++++++--------- 2 files changed, 43 insertions(+), 14 deletions(-) diff --git a/portal/urls.py b/portal/urls.py index fcea34d..e639293 100644 --- a/portal/urls.py +++ b/portal/urls.py @@ -17,6 +17,7 @@ from .views.secure.datafile import (DataFileAnnotateView, DataFileDeleteView, DataFileDetailsView, DataFileDownloadView, DataFileHasKeyJSONListView, + DataFileHasAnnotJSONListView, DataFileMetadataJSONView, DataFilesJSONListView, DataFilesView, DataFileUpdateView, @@ -74,6 +75,8 @@ urlpatterns = [ 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/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/list/json/', SharedWithMeDataFilesJSONListView.as_view(), name='user.shared-datafiles-json-list'), path('secure/datafiles/annotate', DataFileAnnotateView.as_view(), name='user.datafile-annotate'), diff --git a/portal/views/secure/datafile.py b/portal/views/secure/datafile.py index dd0f16c..6dd870a 100644 --- a/portal/views/secure/datafile.py +++ b/portal/views/secure/datafile.py @@ -490,23 +490,11 @@ class DataFileDeleteView(LoginRequiredMixin, DeleteViewMixin, DeleteView): return HttpResponseRedirect(self.get_success_url()) -class DataFileHasKeyJSONListView(LoginRequiredMixin, JSONListView): +class DataFileLookupJSONListView(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() + pass def get_rows(self): rows = [] @@ -527,3 +515,41 @@ class DataFileHasKeyJSONListView(LoginRequiredMixin, JSONListView): rows.append(row) return rows + + +class DataFileHasKeyJSONListView(DataFileLookupJSONListView): + 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() + + +class DataFileHasAnnotJSONListView(DataFileLookupJSONListView): + model = DataFile + + 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 and re.match('DS[A-F0-9]{8}', dataset): + qs = qs.filter( + datasets__iric_data_id=dataset + ) + + return qs.distinct() \ No newline at end of file -- GitLab From c3d1386ecd22a37bdec418bf325927a1b383b801 Mon Sep 17 00:00:00 2001 From: p1037977 <xiao.ju@umontreal.ca> Date: Wed, 13 Jan 2021 14:28:02 -0500 Subject: [PATCH 2/4] fix urls.py --- portal/urls.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/portal/urls.py b/portal/urls.py index e639293..5bd0da0 100644 --- a/portal/urls.py +++ b/portal/urls.py @@ -73,8 +73,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/datafiles/list/json/lookup-key/<str:key>/', 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'), -- GitLab From 2c8d7ec1609753de68f4eb656d7b206eb279f0e8 Mon Sep 17 00:00:00 2001 From: p1037977 <xiao.ju@umontreal.ca> Date: Wed, 13 Jan 2021 15:37:14 -0500 Subject: [PATCH 3/4] remove unnecessary functions --- portal/views/secure/datafile.py | 5 ----- 1 file changed, 5 deletions(-) diff --git a/portal/views/secure/datafile.py b/portal/views/secure/datafile.py index 6dd870a..fb8d9de 100644 --- a/portal/views/secure/datafile.py +++ b/portal/views/secure/datafile.py @@ -493,9 +493,6 @@ class DataFileDeleteView(LoginRequiredMixin, DeleteViewMixin, DeleteView): class DataFileLookupJSONListView(LoginRequiredMixin, JSONListView): model = DataFile - def get_queryset(self): - pass - def get_rows(self): rows = [] @@ -518,7 +515,6 @@ class DataFileLookupJSONListView(LoginRequiredMixin, JSONListView): class DataFileHasKeyJSONListView(DataFileLookupJSONListView): - model = DataFile def get_queryset(self): qs = DataFile.objects.accessible_to_profile(self.request.user.profile) @@ -537,7 +533,6 @@ class DataFileHasKeyJSONListView(DataFileLookupJSONListView): class DataFileHasAnnotJSONListView(DataFileLookupJSONListView): - model = DataFile def get_queryset(self): qs = DataFile.objects.accessible_to_profile(self.request.user.profile) -- GitLab From ff7f1359215a4371a04a3b394dc59af1ab980247 Mon Sep 17 00:00:00 2001 From: p1037977 <xiao.ju@umontreal.ca> Date: Wed, 13 Jan 2021 15:50:00 -0500 Subject: [PATCH 4/4] fix datasetid check --- portal/views/secure/datafile.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/portal/views/secure/datafile.py b/portal/views/secure/datafile.py index fb8d9de..bc9b6cd 100644 --- a/portal/views/secure/datafile.py +++ b/portal/views/secure/datafile.py @@ -524,7 +524,7 @@ class DataFileHasKeyJSONListView(DataFileLookupJSONListView): dataset = self.kwargs.get('dataset', None) logger.debug(dataset) - if dataset and re.match('DS[A-F0-9]{8}', dataset): + if dataset: qs = qs.filter( datasets__iric_data_id=dataset ) @@ -542,9 +542,10 @@ class DataFileHasAnnotJSONListView(DataFileLookupJSONListView): dataset = self.kwargs.get('dataset', None) logger.debug(dataset) - if dataset and re.match('DS[A-F0-9]{8}', dataset): + if dataset: qs = qs.filter( datasets__iric_data_id=dataset ) + return qs.distinct() \ No newline at end of file -- GitLab