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