mirror of
https://github.com/th3r00t/pyShelf.git
synced 2026-04-28 01:59:35 -04:00
Setup new views to cover login, logout, & registration backend.
This commit is contained in:
@@ -1,4 +1,3 @@
|
||||
import json
|
||||
import os
|
||||
from base64 import b64decode, b64encode
|
||||
from pathlib import Path
|
||||
@@ -6,10 +5,11 @@ from pathlib import Path
|
||||
from backend.lib.config import Config
|
||||
from django.db import models
|
||||
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.contrib.auth import login, authenticate, logout
|
||||
import json
|
||||
|
||||
from .forms import SignUpForm, UserLoginForm
|
||||
from .models import Books, Collections, Navigation
|
||||
|
||||
config = Config(Path("../"))
|
||||
@@ -28,6 +28,38 @@ def index(request, query=None, _set=1, _limit=None, _order='title'):
|
||||
_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'):
|
||||
"""
|
||||
Reset Search Queries & Return Home
|
||||
@@ -38,6 +70,8 @@ def home(request, query=None, _set=1, _limit=None, _order='title'):
|
||||
"index.html",
|
||||
_payload
|
||||
)
|
||||
|
||||
|
||||
def show_collection(request, _collection, _colset):
|
||||
try:
|
||||
_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'):
|
||||
"""
|
||||
Goto next page in bookset
|
||||
@@ -73,6 +108,7 @@ def flip_sort(request, bookset=1, query=None, _limit=None, _order='title'):
|
||||
_payload,
|
||||
)
|
||||
|
||||
|
||||
def next_page(request, bookset, query=None, _limit=None, _order='title'):
|
||||
"""
|
||||
Goto next page in bookset
|
||||
@@ -88,6 +124,7 @@ def next_page(request, bookset, query=None, _limit=None, _order='title'):
|
||||
_payload,
|
||||
)
|
||||
|
||||
|
||||
def prev_page(request, bookset, query=None, _limit=None, _order='title'):
|
||||
"""
|
||||
Goto previous page in bookset
|
||||
@@ -107,6 +144,7 @@ def prev_page(request, bookset, query=None, _limit=None, _order='title'):
|
||||
_payload,
|
||||
)
|
||||
|
||||
|
||||
def book_set(_order, _limit=None, _set=1, _flip=False):
|
||||
"""
|
||||
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]
|
||||
return books
|
||||
|
||||
|
||||
def collection(_collection, _set, _limit=None):
|
||||
"""
|
||||
Get books by collection id
|
||||
@@ -136,6 +175,7 @@ def collection(_collection, _set, _limit=None):
|
||||
_books.append(c.book_id_id)
|
||||
return Books.objects.filter(id__in=_books)
|
||||
|
||||
|
||||
def book_set_as_dict(_limit=None, _set=1):
|
||||
if _limit is None:
|
||||
_limit = 20
|
||||
@@ -155,6 +195,7 @@ def book_set_as_dict(_limit=None, _set=1):
|
||||
}
|
||||
return json.dumps(_set)
|
||||
|
||||
|
||||
def download(request, pk):
|
||||
"""
|
||||
Download book by primary key
|
||||
@@ -167,6 +208,7 @@ def download(request, pk):
|
||||
response["Content-Disposition"] = "attachment; filename=%s" % _fn
|
||||
return response
|
||||
|
||||
|
||||
def favorite(request, pk):
|
||||
"""
|
||||
Favorite book by primary key
|
||||
@@ -179,6 +221,7 @@ def favorite(request, pk):
|
||||
response["Content-Disposition"] = "attachment; filename=%s" % _fn
|
||||
return response
|
||||
|
||||
|
||||
def share(request, pk):
|
||||
"""
|
||||
Share book by primary key
|
||||
@@ -191,6 +234,7 @@ def share(request, pk):
|
||||
response["Content-Disposition"] = "attachment; filename=%s" % _fn
|
||||
return response
|
||||
|
||||
|
||||
def info(request, pk):
|
||||
"""
|
||||
Share book by primary key
|
||||
@@ -203,12 +247,14 @@ def info(request, pk):
|
||||
response["Content-Disposition"] = "attachment; filename=%s" % _fn
|
||||
return response
|
||||
|
||||
|
||||
def hr_name(book):
|
||||
"""
|
||||
Nicer file names
|
||||
"""
|
||||
return "{0}{1}".format(slugify(book.title), os.path.splitext(book.file_name)[1])
|
||||
|
||||
|
||||
def format_list(list_in):
|
||||
formated_list, formated_list_key, x = [], [], 0
|
||||
for i in list_in:
|
||||
@@ -222,6 +268,7 @@ def format_list(list_in):
|
||||
else:
|
||||
x = 0
|
||||
|
||||
|
||||
def menu(which, _set=1, parent=None):
|
||||
if which == "collections":
|
||||
collection_list = collections
|
||||
@@ -253,6 +300,7 @@ def menu(which, _set=1, parent=None):
|
||||
navigation_list = Navigation.objects.all()
|
||||
return navigation_list
|
||||
|
||||
|
||||
def collections_list():
|
||||
collection_key = []
|
||||
for i in collections:
|
||||
@@ -260,6 +308,7 @@ def collections_list():
|
||||
collection_key.append(i.collection)
|
||||
return json.dumps(list(set(collection_key)))
|
||||
|
||||
|
||||
def payload(request, query, _set, _limit, _order, **kwargs):
|
||||
"""
|
||||
Return formatted data to template
|
||||
@@ -267,7 +316,7 @@ def payload(request, query, _set, _limit, _order, **kwargs):
|
||||
still beautiful
|
||||
"""
|
||||
try: request.session['ascending']
|
||||
except KeyError: request.session['ascending'] = bool
|
||||
except KeyError: request.session['ascending'] = True
|
||||
try:
|
||||
if kwargs['flip_sort']:
|
||||
request.session['ascending'] = not request.session['ascending']
|
||||
@@ -309,7 +358,7 @@ def payload(request, query, _set, _limit, _order, **kwargs):
|
||||
_results.count()
|
||||
else:
|
||||
try:
|
||||
query = request.session['cached_query']
|
||||
query = request.session['cached_query'] # Is there a cached query?
|
||||
if query == None: raise KeyError
|
||||
if request.session['ascending']:
|
||||
_results = Books().generic_search(query)
|
||||
@@ -324,11 +373,10 @@ def payload(request, query, _set, _limit, _order, **kwargs):
|
||||
_r_len, _search = None, None
|
||||
|
||||
_bookstats, _collectionstats, _collectionobject = \
|
||||
Books.objects.all().count, Collections.objects.all().count, \
|
||||
Books.objects.all().count(), Collections.objects.all().count(), \
|
||||
collections_list()
|
||||
|
||||
if (_r_len): _btotal = _r_len
|
||||
else: _btotal = _bookstats
|
||||
if (_r_len): _btotal = str(_r_len)
|
||||
else: _btotal = str(_bookstats)
|
||||
|
||||
return {
|
||||
"Books": _r,
|
||||
|
||||
Reference in New Issue
Block a user