SciPost Code Repository

Skip to content
Snippets Groups Projects
Commit c9409661 authored by Jean-Sébastien Caux's avatar Jean-Sébastien Caux
Browse files

Add filter in Topic list

parent 30df8890
No related branches found
No related tags found
No related merge requests found
...@@ -12,11 +12,19 @@ ...@@ -12,11 +12,19 @@
<div class="row"> <div class="row">
<div class="col-12"> <div class="col-12">
<h3 class="highlight">Topics</h3> <h3 class="highlight">Topics</h3>
{% if perms.scipost.can_manage_ontology %}
<ul> <ul>
{% if perms.scipost.can_manage_ontology %}
<li><a href="{% url 'ontology:topic_create' %}">Add a Topic</a></li> <li><a href="{% url 'ontology:topic_create' %}">Add a Topic</a></li>
{% endif %}
<li>
<ul class="list-inline">
<li class="list-inline-item">Filter to Topic name containing:</li>
<li class="list-inline-item">
<form action="" method="get">{{ searchform }}
</li>
<li class="list-inline-item"><input class="btn btn-outline-secondary" type="submit" value="Submit"></form></li>
</ul>
</ul> </ul>
{% endif %}
</div> </div>
</div> </div>
......
...@@ -12,6 +12,7 @@ from django.views.generic.list import ListView ...@@ -12,6 +12,7 @@ from django.views.generic.list import ListView
from .models import Topic, RelationAsym, RelationSym from .models import Topic, RelationAsym, RelationSym
from scipost.forms import SearchTextForm
from scipost.mixins import PaginationMixin, PermissionsMixin from scipost.mixins import PaginationMixin, PermissionsMixin
...@@ -45,6 +46,22 @@ class TopicListView(PaginationMixin, ListView): ...@@ -45,6 +46,22 @@ class TopicListView(PaginationMixin, ListView):
model = Topic model = Topic
paginate_by = 25 paginate_by = 25
def get_queryset(self):
"""
Return a queryset of Topics using optional GET data.
"""
queryset = Topic.objects.all()
if self.request.GET.get('text'):
queryset = queryset.filter(name__icontains=self.request.GET['text'])
return queryset
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
context.update({
'searchform': SearchTextForm(initial={'text': self.request.GET.get('text')}),
})
return context
class TopicDetailView(DetailView): class TopicDetailView(DetailView):
model = Topic model = Topic
......
...@@ -57,7 +57,3 @@ class ProfileEmailForm(forms.ModelForm): ...@@ -57,7 +57,3 @@ class ProfileEmailForm(forms.ModelForm):
"""Save to a profile.""" """Save to a profile."""
self.instance.profile = self.profile self.instance.profile = self.profile
return super().save() return super().save()
class SearchTextForm(forms.Form):
text = forms.CharField(label='')
...@@ -15,12 +15,13 @@ from guardian.decorators import permission_required ...@@ -15,12 +15,13 @@ from guardian.decorators import permission_required
from scipost.constants import SCIPOST_SUBJECT_AREAS from scipost.constants import SCIPOST_SUBJECT_AREAS
from scipost.mixins import PermissionsMixin, PaginationMixin from scipost.mixins import PermissionsMixin, PaginationMixin
from scipost.models import Contributor from scipost.models import Contributor
from scipost.forms import SearchTextForm
from invitations.models import RegistrationInvitation from invitations.models import RegistrationInvitation
from submissions.models import RefereeInvitation from submissions.models import RefereeInvitation
from .models import Profile, ProfileEmail from .models import Profile, ProfileEmail
from .forms import ProfileForm, ProfileEmailForm, SearchTextForm from .forms import ProfileForm, ProfileEmailForm
......
...@@ -431,6 +431,13 @@ def get_date_filter_choices(): ...@@ -431,6 +431,13 @@ def get_date_filter_choices():
return months, years return months, years
class SearchTextForm(forms.Form):
"""
Simple text-based search form.
"""
text = forms.CharField(label='')
class SearchForm(HayStackSearchForm): class SearchForm(HayStackSearchForm):
# The date filters don't function well... # The date filters don't function well...
start = forms.DateField(widget=MonthYearWidget(), required=False) # Month start = forms.DateField(widget=MonthYearWidget(), required=False) # Month
......
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