Setup new views to cover login, logout, & registration backend.

This commit is contained in:
Raelon Masters
2020-07-18 02:29:34 -04:00
parent 37fb8fcf58
commit dfe8f857f5

View File

@@ -1,4 +1,3 @@
import json
import os import os
from base64 import b64decode, b64encode from base64 import b64decode, b64encode
from pathlib import Path from pathlib import Path
@@ -6,10 +5,11 @@ from pathlib import Path
from backend.lib.config import Config from backend.lib.config import Config
from django.db import models from django.db import models
from django.http import JsonResponse from django.http import JsonResponse
from django.shortcuts import HttpResponse, render # render_to_response from django.shortcuts import HttpResponse, render, redirect # render_to_response
from django.utils.text import slugify from django.utils.text import slugify
from django.contrib.auth import login, authenticate, logout
import json import json
from .forms import SignUpForm, UserLoginForm
from .models import Books, Collections, Navigation from .models import Books, Collections, Navigation
config = Config(Path("../")) config = Config(Path("../"))
@@ -28,6 +28,38 @@ def index(request, query=None, _set=1, _limit=None, _order='title'):
_payload _payload
) )
def signup(request):
if request.method == 'POST':
form = SignUpForm(request.POST)
if form.is_valid():
form.save()
username = form.cleaned_data.get('username')
raw_password = form.cleaned_data.get('password1')
user = authenticate(username=username, password=raw_password)
login(request, user)
return redirect('home')
else:
form = SignUpForm()
return render(request, 'signup.html', {'form': form})
def userlogin(request):
if request.method == 'POST':
username = request.POST['username']
password = request.POST['password']
user = authenticate(request, username=username, password=password)
if user is not None: return redirect('home')
else: form = UserLoginForm()
return render(request, 'login.html', {'form': form})
def userlogout(request):
logout(request)
return render(request, 'login.html', {'form': UserLoginForm()})
def home(request, query=None, _set=1, _limit=None, _order='title'): def home(request, query=None, _set=1, _limit=None, _order='title'):
""" """
Reset Search Queries & Return Home Reset Search Queries & Return Home
@@ -38,6 +70,8 @@ def home(request, query=None, _set=1, _limit=None, _order='title'):
"index.html", "index.html",
_payload _payload
) )
def show_collection(request, _collection, _colset): def show_collection(request, _collection, _colset):
try: try:
_set = int(_colset) + 1 _set = int(_colset) + 1
@@ -60,6 +94,7 @@ def show_collection(request, _collection, _colset):
}, },
) )
def flip_sort(request, bookset=1, query=None, _limit=None, _order='title'): def flip_sort(request, bookset=1, query=None, _limit=None, _order='title'):
""" """
Goto next page in bookset Goto next page in bookset
@@ -73,6 +108,7 @@ def flip_sort(request, bookset=1, query=None, _limit=None, _order='title'):
_payload, _payload,
) )
def next_page(request, bookset, query=None, _limit=None, _order='title'): def next_page(request, bookset, query=None, _limit=None, _order='title'):
""" """
Goto next page in bookset Goto next page in bookset
@@ -88,6 +124,7 @@ def next_page(request, bookset, query=None, _limit=None, _order='title'):
_payload, _payload,
) )
def prev_page(request, bookset, query=None, _limit=None, _order='title'): def prev_page(request, bookset, query=None, _limit=None, _order='title'):
""" """
Goto previous page in bookset Goto previous page in bookset
@@ -107,6 +144,7 @@ def prev_page(request, bookset, query=None, _limit=None, _order='title'):
_payload, _payload,
) )
def book_set(_order, _limit=None, _set=1, _flip=False): def book_set(_order, _limit=None, _set=1, _flip=False):
""" """
Get books results by set # Get books results by set #
@@ -121,6 +159,7 @@ def book_set(_order, _limit=None, _set=1, _flip=False):
books = Books.objects.all().order_by(_order)[_set_min:_set_max] books = Books.objects.all().order_by(_order)[_set_min:_set_max]
return books return books
def collection(_collection, _set, _limit=None): def collection(_collection, _set, _limit=None):
""" """
Get books by collection id Get books by collection id
@@ -136,6 +175,7 @@ def collection(_collection, _set, _limit=None):
_books.append(c.book_id_id) _books.append(c.book_id_id)
return Books.objects.filter(id__in=_books) return Books.objects.filter(id__in=_books)
def book_set_as_dict(_limit=None, _set=1): def book_set_as_dict(_limit=None, _set=1):
if _limit is None: if _limit is None:
_limit = 20 _limit = 20
@@ -155,6 +195,7 @@ def book_set_as_dict(_limit=None, _set=1):
} }
return json.dumps(_set) return json.dumps(_set)
def download(request, pk): def download(request, pk):
""" """
Download book by primary key Download book by primary key
@@ -167,6 +208,7 @@ def download(request, pk):
response["Content-Disposition"] = "attachment; filename=%s" % _fn response["Content-Disposition"] = "attachment; filename=%s" % _fn
return response return response
def favorite(request, pk): def favorite(request, pk):
""" """
Favorite book by primary key Favorite book by primary key
@@ -179,6 +221,7 @@ def favorite(request, pk):
response["Content-Disposition"] = "attachment; filename=%s" % _fn response["Content-Disposition"] = "attachment; filename=%s" % _fn
return response return response
def share(request, pk): def share(request, pk):
""" """
Share book by primary key Share book by primary key
@@ -191,6 +234,7 @@ def share(request, pk):
response["Content-Disposition"] = "attachment; filename=%s" % _fn response["Content-Disposition"] = "attachment; filename=%s" % _fn
return response return response
def info(request, pk): def info(request, pk):
""" """
Share book by primary key Share book by primary key
@@ -203,12 +247,14 @@ def info(request, pk):
response["Content-Disposition"] = "attachment; filename=%s" % _fn response["Content-Disposition"] = "attachment; filename=%s" % _fn
return response return response
def hr_name(book): def hr_name(book):
""" """
Nicer file names Nicer file names
""" """
return "{0}{1}".format(slugify(book.title), os.path.splitext(book.file_name)[1]) return "{0}{1}".format(slugify(book.title), os.path.splitext(book.file_name)[1])
def format_list(list_in): def format_list(list_in):
formated_list, formated_list_key, x = [], [], 0 formated_list, formated_list_key, x = [], [], 0
for i in list_in: for i in list_in:
@@ -222,6 +268,7 @@ def format_list(list_in):
else: else:
x = 0 x = 0
def menu(which, _set=1, parent=None): def menu(which, _set=1, parent=None):
if which == "collections": if which == "collections":
collection_list = collections collection_list = collections
@@ -253,6 +300,7 @@ def menu(which, _set=1, parent=None):
navigation_list = Navigation.objects.all() navigation_list = Navigation.objects.all()
return navigation_list return navigation_list
def collections_list(): def collections_list():
collection_key = [] collection_key = []
for i in collections: for i in collections:
@@ -260,6 +308,7 @@ def collections_list():
collection_key.append(i.collection) collection_key.append(i.collection)
return json.dumps(list(set(collection_key))) return json.dumps(list(set(collection_key)))
def payload(request, query, _set, _limit, _order, **kwargs): def payload(request, query, _set, _limit, _order, **kwargs):
""" """
Return formatted data to template Return formatted data to template
@@ -267,7 +316,7 @@ def payload(request, query, _set, _limit, _order, **kwargs):
still beautiful still beautiful
""" """
try: request.session['ascending'] try: request.session['ascending']
except KeyError: request.session['ascending'] = bool except KeyError: request.session['ascending'] = True
try: try:
if kwargs['flip_sort']: if kwargs['flip_sort']:
request.session['ascending'] = not request.session['ascending'] request.session['ascending'] = not request.session['ascending']
@@ -309,7 +358,7 @@ def payload(request, query, _set, _limit, _order, **kwargs):
_results.count() _results.count()
else: else:
try: try:
query = request.session['cached_query'] query = request.session['cached_query'] # Is there a cached query?
if query == None: raise KeyError if query == None: raise KeyError
if request.session['ascending']: if request.session['ascending']:
_results = Books().generic_search(query) _results = Books().generic_search(query)
@@ -324,11 +373,10 @@ def payload(request, query, _set, _limit, _order, **kwargs):
_r_len, _search = None, None _r_len, _search = None, None
_bookstats, _collectionstats, _collectionobject = \ _bookstats, _collectionstats, _collectionobject = \
Books.objects.all().count, Collections.objects.all().count, \ Books.objects.all().count(), Collections.objects.all().count(), \
collections_list() collections_list()
if (_r_len): _btotal = str(_r_len)
if (_r_len): _btotal = _r_len else: _btotal = str(_bookstats)
else: _btotal = _bookstats
return { return {
"Books": _r, "Books": _r,