Search is a view not an action

This commit is contained in:
Mouse Reeve 2020-05-03 21:13:43 -07:00
parent 07aab3806b
commit 7454fb7454
3 changed files with 23 additions and 21 deletions

View file

@ -68,13 +68,14 @@ urlpatterns = [
re_path(r'^shelf/%s/(?P<shelf_identifier>[\w-]+)(.json)?/?$' % username_regex, views.shelf_page), re_path(r'^shelf/%s/(?P<shelf_identifier>[\w-]+)(.json)?/?$' % username_regex, views.shelf_page),
re_path(r'^shelf/%s/(?P<shelf_identifier>[\w-]+)(.json)?/?$' % localname_regex, views.shelf_page), re_path(r'^shelf/%s/(?P<shelf_identifier>[\w-]+)(.json)?/?$' % localname_regex, views.shelf_page),
re_path(r'^search/?$', views.search),
# internal action endpoints # internal action endpoints
re_path(r'^logout/?$', actions.user_logout), re_path(r'^logout/?$', actions.user_logout),
re_path(r'^user-login/?$', actions.user_login), re_path(r'^user-login/?$', actions.user_login),
re_path(r'^register/?$', actions.register), re_path(r'^register/?$', actions.register),
re_path(r'^edit_profile/?$', actions.edit_profile), re_path(r'^edit_profile/?$', actions.edit_profile),
re_path(r'^search/?$', actions.search),
re_path(r'^import_data/?', actions.import_data), re_path(r'^import_data/?', actions.import_data),
re_path(r'^edit_book/(?P<book_id>\d+)/?', actions.edit_book), re_path(r'^edit_book/(?P<book_id>\d+)/?', actions.edit_book),
re_path(r'^upload_cover/(?P<book_id>\d+)/?', actions.upload_cover), re_path(r'^upload_cover/(?P<book_id>\d+)/?', actions.upload_cover),

View file

@ -1,6 +1,5 @@
''' views for actions you can take in the application ''' ''' views for actions you can take in the application '''
from io import BytesIO, TextIOWrapper from io import BytesIO, TextIOWrapper
import re
from PIL import Image from PIL import Image
from django.contrib.auth import authenticate, login, logout from django.contrib.auth import authenticate, login, logout
@ -10,7 +9,7 @@ from django.http import HttpResponseBadRequest, HttpResponseNotFound
from django.shortcuts import redirect from django.shortcuts import redirect
from django.template.response import TemplateResponse from django.template.response import TemplateResponse
from fedireads import forms, models, books_manager, outgoing from fedireads import forms, models, outgoing
from fedireads import goodreads_import from fedireads import goodreads_import
from fedireads.settings import DOMAIN from fedireads.settings import DOMAIN
from fedireads.views import get_user_from_username from fedireads.views import get_user_from_username
@ -346,22 +345,6 @@ def unfollow(request):
return redirect('/user/%s' % user_slug) return redirect('/user/%s' % user_slug)
@login_required
def search(request):
''' that search bar up top '''
query = request.GET.get('q')
if re.match(r'\w+@\w+.\w+', query):
# if something looks like a username, search with webfinger
results = [outgoing.handle_account_search(query)]
template = 'user_results.html'
else:
# just send the question over to book search
results = books_manager.search(query)
template = 'book_results.html'
return TemplateResponse(request, template, {'results': results})
@login_required @login_required
def clear_notifications(request): def clear_notifications(request):
''' permanently delete notification for user ''' ''' permanently delete notification for user '''

View file

@ -1,4 +1,6 @@
''' views for pages you can go to in the application ''' ''' views for pages you can go to in the application '''
import re
from django.contrib.auth.decorators import login_required from django.contrib.auth.decorators import login_required
from django.db.models import Avg, Q from django.db.models import Avg, Q
from django.http import HttpResponseBadRequest, HttpResponseNotFound,\ from django.http import HttpResponseBadRequest, HttpResponseNotFound,\
@ -8,8 +10,8 @@ from django.shortcuts import redirect
from django.template.response import TemplateResponse from django.template.response import TemplateResponse
from django.views.decorators.csrf import csrf_exempt from django.views.decorators.csrf import csrf_exempt
from fedireads import activitypub from fedireads import activitypub, outgoing
from fedireads import forms, models from fedireads import forms, models, books_manager
from fedireads import goodreads_import from fedireads import goodreads_import
from fedireads.books_manager import get_or_create_book from fedireads.books_manager import get_or_create_book
from fedireads.tasks import app from fedireads.tasks import app
@ -141,6 +143,22 @@ def get_activity_feed(user, filter_level, model=models.Status):
return activities return activities
@login_required
def search(request):
''' that search bar up top '''
query = request.GET.get('q')
if re.match(r'\w+@\w+.\w+', query):
# if something looks like a username, search with webfinger
results = [outgoing.handle_account_search(query)]
template = 'user_results.html'
else:
# just send the question over to book search
results = books_manager.search(query)
template = 'book_results.html'
return TemplateResponse(request, template, {'results': results})
def books_page(request): def books_page(request):
''' discover books ''' ''' discover books '''
recent_books = models.Work.objects recent_books = models.Work.objects