added benchmarking

This commit is contained in:
MassiveAtoms
2020-07-17 00:48:54 -03:00
parent 017e473b4d
commit d56911901b
12 changed files with 376 additions and 18 deletions

View File

@ -10,19 +10,20 @@ urlpatterns = [
path('ratings/', views.RatingListView.as_view(), name='ratings'),
path('tags/', views.TagListView.as_view(), name='tags'),
path('series/', views.SeriesListView.as_view(), name='series'),
path('author/<int:pk>', views.AuthorDetailView.as_view(), name='author-detail-view'),
path('author/<int:pk>', views.AuthorDetailView.as_view(),
name='author-detail-view'),
path('book/<int:pk>', views.BookDetailView.as_view(), name='book-detail-view'),
path('publisher/<int:pk>', views.PublisherDetailView.as_view(), name='publisher-detail-view'),
path('rating/<int:pk>', views.RatingDetailView.as_view(), name='rating-detail-view'),
path('series/<int:pk>', views.SeriesDetailView.as_view(), name='series-detail-view'),
path('publisher/<int:pk>', views.PublisherDetailView.as_view(),
name='publisher-detail-view'),
path('rating/<int:pk>', views.RatingDetailView.as_view(),
name='rating-detail-view'),
path('series/<int:pk>', views.SeriesDetailView.as_view(),
name='series-detail-view'),
path('tag/<int:pk>', views.TagDetailView.as_view(), name='tag-detail-view'),
path('results/', views.ResultsView.as_view(), name='results'),
path('search/', views.SearchView.as_view(), name='search'),
path('accounts/sign_up/',views.sign_up,name="sign-up")
path('accounts/sign_up/', views.sign_up, name="sign-up")
]
]

View File

@ -10,6 +10,9 @@ from django.contrib.auth import login
from django.contrib.auth.decorators import login_required
# might be helpful for vary headers later
from django.utils.decorators import method_decorator
@login_required
def index(request):
@ -31,6 +34,9 @@ def sign_up(request):
class SearchView(generic.TemplateView):
template_name = 'search.html'
def dispatch(self, *args, **kwargs):
return super(SearchView, self).dispatch(*args, **kwargs)
class ResultsView(generic.ListView): # no clue if this is secure.
# according to this https://stackoverflow.com/questions/13574043/how-do-django-forms-sanitize-text-input-to-prevent-sql-injection-xss-etc
@ -38,6 +44,9 @@ class ResultsView(generic.ListView): # no clue if this is secure.
model = Book
template_name = 'results.html'
def dispatch(self, *args, **kwargs):
return super(ResultsView, self).dispatch(*args, **kwargs)
def get_queryset(self): # new
title = self.request.GET.get('title')
author = self.request.GET.get('author')
@ -52,8 +61,8 @@ class ResultsView(generic.ListView): # no clue if this is secure.
books = books.filter(identifier__val=identifier)
if generic:
books = books.filter(
Q(sort__icontains=generic) |
Q(author_sort__icontains=generic) |
Q(sort__icontains=generic) |
Q(author_sort__icontains=generic) |
Q(identifier__val=generic)
)
return books
@ -62,10 +71,16 @@ class ResultsView(generic.ListView): # no clue if this is secure.
class AuthorListView(generic.ListView):
model = Author
def dispatch(self, *args, **kwargs):
return super(AuthorListView, self).dispatch(*args, **kwargs)
class BookListView(generic.ListView):
model = Book
def dispatch(self, *args, **kwargs):
return super(BookListView, self).dispatch(*args, **kwargs)
def get_queryset(self):
# Annotate the books with ratings, tags, etc
# books = Book.objects.annotate(
@ -76,21 +91,37 @@ class BookListView(generic.ListView):
class PublisherListView(generic.ListView):
model = Publisher
def dispatch(self, *args, **kwargs):
return super(PublisherListView, self).dispatch(*args, **kwargs)
class RatingListView(generic.ListView):
model = Rating
class SeriesListView(generic.ListView): # make url entry and template, sometime
def dispatch(self, *args, **kwargs):
return super(RatingListView, self).dispatch(*args, **kwargs)
class SeriesListView(generic.ListView): # make url entry and template, sometime
model = Series
def dispatch(self, *args, **kwargs):
return super(SeriesListView, self).dispatch(*args, **kwargs)
class TagListView(generic.ListView):
model = Tag
def dispatch(self, *args, **kwargs):
return super(TagListView, self).dispatch(*args, **kwargs)
class AuthorDetailView(generic.DetailView):
model = Author
def dispatch(self, *args, **kwargs):
return super(AuthorDetailView, self).dispatch(*args, **kwargs)
def get_context_data(self, **kwargs):
# Call the base implementation first to get the context
context = super(AuthorDetailView, self).get_context_data(**kwargs)
@ -104,6 +135,9 @@ class AuthorDetailView(generic.DetailView):
class BookDetailView(generic.DetailView):
model = Book
def dispatch(self, *args, **kwargs):
return super(BookDetailView, self).dispatch(*args, **kwargs)
def get_context_data(self, **kwargs):
# Call the base implementation first to get the context
context = super(BookDetailView, self).get_context_data(**kwargs)
@ -122,6 +156,9 @@ class BookDetailView(generic.DetailView):
class PublisherDetailView(generic.DetailView):
model = Publisher
def dispatch(self, *args, **kwargs):
return super(PublisherDetailView, self).dispatch(*args, **kwargs)
def get_context_data(self, **kwargs):
# Call the base implementation first to get the context
context = super(PublisherDetailView, self).get_context_data(**kwargs)
@ -135,6 +172,9 @@ class PublisherDetailView(generic.DetailView):
class RatingDetailView(generic.DetailView):
model = Rating
def dispatch(self, *args, **kwargs):
return super(RatingDetailView, self).dispatch(*args, **kwargs)
def get_context_data(self, **kwargs):
# Call the base implementation first to get the context
context = super(RatingDetailView, self).get_context_data(**kwargs)
@ -148,6 +188,9 @@ class RatingDetailView(generic.DetailView):
class TagDetailView(generic.DetailView):
model = Tag
def dispatch(self, *args, **kwargs):
return super(TagDetailView, self).dispatch(*args, **kwargs)
def get_context_data(self, **kwargs):
# Call the base implementation first to get the context
context = super(TagDetailView, self).get_context_data(**kwargs)
@ -157,9 +200,13 @@ class TagDetailView(generic.DetailView):
context['books'] = sorted(books, key=lambda x: x.title)
return context
class SeriesDetailView(generic.DetailView):
model = Series
def dispatch(self, *args, **kwargs):
return super(SeriesDetailView, self).dispatch(*args, **kwargs)
def get_context_data(self, **kwargs):
# Call the base implementation first to get the context
context = super(SeriesDetailView, self).get_context_data(**kwargs)
@ -167,4 +214,4 @@ class SeriesDetailView(generic.DetailView):
books = Book.objects.prefetch_related("tags", "ratings")
books = books.filter(series=context["object"].id)
context['books'] = sorted(books, key=lambda x: x.title)
return context
return context