Add a search form to the index
This commit is contained in:
parent
4f92cbf450
commit
c12f637d17
3 changed files with 19 additions and 1 deletions
|
@ -7,6 +7,15 @@
|
|||
{% endblock header %}
|
||||
|
||||
{% block main %}
|
||||
|
||||
<form id="search" method="GET" action="{% url 'search' %}">
|
||||
<label for="query">Search</label>
|
||||
<input type="search" id="query" name="query" list="slugs">
|
||||
<datalist id="slugs">
|
||||
{% for think in thinks %}<option value="{{think.slug}}"/>{% endfor %}
|
||||
</datalist>
|
||||
</form>
|
||||
|
||||
<section id="templates">
|
||||
<h2>Templates</h2>
|
||||
<ul id="templates-list">
|
||||
|
|
|
@ -18,5 +18,6 @@ urlpatterns = [
|
|||
path('think/<slug:slug>/jj/commit', JJCommitView.as_view(), name='jj_commit'),
|
||||
path('new', CreateThinkView.as_view(), name='new_think'),
|
||||
path('new/<slug:slug>', RemixThinkView.as_view(), name='remix_think'),
|
||||
path('search', search, name='search'),
|
||||
]
|
||||
|
||||
|
|
|
@ -4,6 +4,7 @@ from django.http import HttpResponse, JsonResponse
|
|||
from django.shortcuts import render, redirect
|
||||
from django.views import generic
|
||||
from django.urls import reverse
|
||||
from django.utils.timezone import now
|
||||
from itertools import groupby
|
||||
import json
|
||||
import mimetypes
|
||||
|
@ -32,6 +33,10 @@ class ThinkMixin(LoginRequiredMixin):
|
|||
model = Think
|
||||
context_object_name = 'think'
|
||||
|
||||
def search(request, *args, **kwargs):
|
||||
query = request.GET.get('query','')
|
||||
think = Think.objects.get(slug__icontains=query)
|
||||
return redirect(think.get_absolute_url())
|
||||
|
||||
class IndexView(ThinkMixin, generic.ListView):
|
||||
template_name = 'thinks/index.html'
|
||||
|
@ -41,7 +46,7 @@ class IndexView(ThinkMixin, generic.ListView):
|
|||
|
||||
context['templates'] = Think.objects.filter(is_template=True)
|
||||
|
||||
context['recent_thinks'] = Think.objects.filter(is_template=False).order_by('-creation_time')[:3]
|
||||
context['recent_thinks'] = Think.objects.all().order_by('-last_edited', '-creation_time')[:3]
|
||||
|
||||
context['thinks'] = sorted(Think.objects.filter(is_template=False), key=lambda t: (t.category if t.category else '', -t.creation_time.timestamp()))
|
||||
|
||||
|
@ -100,6 +105,9 @@ class ThinkView(ThinkMixin, generic.DetailView):
|
|||
|
||||
think = self.object
|
||||
|
||||
think.last_edited = now()
|
||||
think.save(update_fields=('last_edited',))
|
||||
|
||||
root = think.root
|
||||
|
||||
strpath = self.request.GET.get('path')
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue