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

@ -80,6 +80,12 @@ DEBUG_TOOLBAR_PANELS = [
########################################################################
## DERUG ##
# SILKY_PYTHON_PROFILER = True
# SILKY_PYTHON_PROFILER_BINARY = True
# SILKY_PYTHON_PROFILER_RESULT_PATH = BASE_DIR + "/profiler"
# SILKY_META = True
LOGIN_REDIRECT_URL = '/books'
# Application definition
@ -92,14 +98,14 @@ INSTALLED_APPS = [
'django.contrib.messages',
'django.contrib.staticfiles',
"library",
# "silk",
# "silk", # DEBUG/profilling purposes
# 'debug_toolbar', # DEBUG purposes
]
MIDDLEWARE = [
# 'silk.middleware.SilkyMiddleware', # DEBUG/profiling purposes
# 'debug_toolbar.middleware.DebugToolbarMiddleware', # DEBUG purposes
'django.middleware.cache.UpdateCacheMiddleware', # cache
# 'django.middleware.cache.UpdateCacheMiddleware', # cache
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
@ -107,8 +113,11 @@ MIDDLEWARE = [
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
'django.middleware.cache.FetchFromCacheMiddleware', # cache
# 'django.middleware.cache.FetchFromCacheMiddleware', # cache
]
## ##
########################################################################
ROOT_URLCONF = 'CalibreWebCompanion.urls'

View File

@ -22,6 +22,7 @@ from django.conf import settings
from django.urls import include, path
urlpatterns = [
path('admin/', admin.site.urls),
path('accounts/', include('django.contrib.auth.urls')),
@ -31,7 +32,7 @@ urlpatterns = [
# if settings.DEBUG: # DEBUG purposes
# urlpatterns+= [path('silk/', include('silk.urls', namespace='silk'))]
# urlpatterns+= [path('silk/', include('silk.urls', namespace='silk'))]
# import debug_toolbar
# urlpatterns = [
# path('__debug__/', include(debug_toolbar.urls)),

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