Skip to content

Commit 31a8bc6

Browse files
authored
Merge pull request #148 from UMNLibraries/restore-old-viewset-temporarily
[FIX] restore old deed search viewset for now
2 parents 2afa2e2 + 41344c8 commit 31a8bc6

3 files changed

Lines changed: 47 additions & 2 deletions

File tree

apps/deed/views.py

Lines changed: 41 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,14 @@
77
from rest_framework.request import Request
88
from rest_framework.response import Response
99
from rest_framework.viewsets import ModelViewSet
10-
from django.shortcuts import render
10+
from django import forms
1111
from django.db.models import Case, When
1212

13+
from haystack.generic_views import SearchView
14+
from haystack.forms import SearchForm
15+
16+
from apps.zoon.models import ZooniverseWorkflow
17+
1318
from .documents import DeedPageDocument
1419
from .serializers import DeedPageSerializer
1520
from .models import DeedPage
@@ -184,3 +189,38 @@ def generate_search_query(self, search_terms_list: list[str], param_filters: dic
184189
return query
185190

186191
return Q("match_all")
192+
193+
194+
# TODO: delete this once we have transitioned to elasticsearch
195+
class DeedSearchForm(SearchForm):
196+
bool_match = forms.BooleanField(required=False)
197+
workflow = forms.ModelChoiceField(
198+
queryset=ZooniverseWorkflow.objects.all(),
199+
to_field_name="workflow_name",
200+
required=False,
201+
)
202+
203+
def search(self):
204+
sqs = super().search()
205+
206+
if not self.is_valid():
207+
return self.no_query_found()
208+
209+
if self.cleaned_data["workflow"]:
210+
sqs = sqs.filter(workflow=self.cleaned_data["workflow"])
211+
212+
if self.cleaned_data["bool_match"]:
213+
sqs = sqs.filter(bool_match=self.cleaned_data["bool_match"])
214+
215+
return sqs
216+
217+
218+
class DeedSearchView(SearchView):
219+
template_name = 'search/search.html'
220+
# queryset = SearchQuerySet().all()
221+
form_class = DeedSearchForm
222+
223+
def get_context_data(self, **kwargs):
224+
data = super().get_context_data(**kwargs)
225+
data['all_workflows'] = ZooniverseWorkflow.objects.all()
226+
return data

racial_covenants_processor/urls.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
from apps.zoon.serializers import SubjectNoGeoViewSet, SubjectGeoViewSet
2424
from apps.parcel.serializers import CovenantNoGeoViewSet, CovenantGeoViewSet, ShpExportViewSet, GeoJSONExportViewSet, CSVExportViewSet
2525

26-
from apps.deed.views import DeedPageViewSet
26+
from apps.deed.views import DeedPageViewSet, DeedSearchView
2727

2828
# Routers provide an easy way of automatically determining the URL conf.
2929
router = routers.DefaultRouter()
@@ -53,6 +53,8 @@
5353

5454
path('api/', include(router.urls)),
5555
path('api-auth/', include('rest_framework.urls')),
56+
# TODO: delete this once we have transitioned to elasticsearch
57+
path('deed_search/', DeedSearchView.as_view(), name='deed_search_view'),
5658
# path('search/', include('haystack.urls')),
5759

5860
# path('__debug__/', include('debug_toolbar.urls')),

requirements.txt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ django-appconf==1.2.0; python_version >= '3.9'
3232
django-compressor==4.6.0; python_version >= '3.10'
3333
django-cotton==2.6.1; python_version >= '3.8' and python_version < '4'
3434
django-debug-toolbar==6.2.0; python_version >= '3.10'
35+
django-elasticsearch-dsl==8.2
3536
django-extensions==4.1; python_version >= '3.9'
3637
django-filter==25.2; python_version >= '3.10'
3738
django-haystack==3.3.0
@@ -42,6 +43,8 @@ django-storages==1.14.6; python_version >= '3.7'
4243
djangorestframework==3.16.1; python_version >= '3.9'
4344
djangorestframework-gis==1.2.0
4445
docutils==0.22.4; python_version >= '3.9'
46+
elasticsearch==8.19.3
47+
elasticsearch-dsl==8.18.0
4548
executing==2.2.1; python_version >= '3.8'
4649
fastjsonschema==2.21.2
4750
fiona==1.10.1; python_version >= '3.8'

0 commit comments

Comments
 (0)