Toggling of Favorites, and frontend state display complete

This commit is contained in:
Raelon Masters
2020-07-21 23:25:26 -04:00
parent 337600a74e
commit 5ebaa22ee4
5 changed files with 34 additions and 11 deletions

View File

@@ -133,8 +133,7 @@ class Favorites(models.Model):
db_table = "favorites" db_table = "favorites"
def __str__(self): def __str__(self):
pass return self.book
# return self.book
book = models.ForeignKey(Books, on_delete=models.CASCADE) book = models.ForeignKey(Books, on_delete=models.CASCADE)
user = models.ForeignKey( user = models.ForeignKey(

View File

@@ -541,6 +541,10 @@ a.book_link {
padding: 5px 10px 5px 10px; padding: 5px 10px 5px 10px;
} }
.favorite {
color: #a7ff00 !important;
}
.controls { .controls {
cursor: pointer; cursor: pointer;
} }

View File

@@ -552,6 +552,9 @@ a.book_link {
font-size: x-large; font-size: x-large;
padding: 5px 10px 5px 10px; padding: 5px 10px 5px 10px;
} }
.favorite{
color: #a7ff00 !important;
}
.controls{ .controls{
cursor: pointer; cursor: pointer;
} }

View File

@@ -98,7 +98,11 @@
<li class="book_tags">Tags: {{ book.tags }}</li> <li class="book_tags">Tags: {{ book.tags }}</li>
<li class="book_controls"> <li class="book_controls">
<span class="favorite-button controls favorite_action"> <span class="favorite-button controls favorite_action">
<a href="{% url 'favorite' pk=book.pk %}" class="book_link"><i class="fas fa-thumbs-up icon"></i></a> {% if book.is_favorite %}
<a href="{% url 'favorite' pk=book.pk %}" class="book_link favorite"><i class="fas fa-thumbs-up icon"></i></a>
{% else %}
<a href="{% url 'favorite' pk=book.pk %}" class="book_link not_favorite"><i class="fas fa-thumbs-up icon"></i></a>
{% endif %}
</span> </span>
<span class="download-button controls"> <span class="download-button controls">
<a href="{% url 'download' pk=book.pk %}" class="book_link"><i class="fas fa-book icon"></i></a> <a href="{% url 'download' pk=book.pk %}" class="book_link"><i class="fas fa-book icon"></i></a>

View File

@@ -153,7 +153,7 @@ def prev_page(request, bookset, query=None, _limit=None, _order='title'):
) )
def book_set(_order, _limit=None, _set=1, _flip=False): def book_set(request, _order, _limit=None, _set=1, _flip=False):
""" """
Get books results by set # Get books results by set #
""" """
@@ -165,6 +165,15 @@ def book_set(_order, _limit=None, _set=1, _flip=False):
books = Books.objects.all().order_by(_order).reverse()[_set_min:_set_max] books = Books.objects.all().order_by(_order).reverse()[_set_min:_set_max]
else: else:
books = Books.objects.all().order_by(_order)[_set_min:_set_max] books = Books.objects.all().order_by(_order)[_set_min:_set_max]
try:
favorites = Favorites.objects.filter(user=request.user)
except Exception as e: breakpoint()
for book in books:
for favorite in favorites:
if book == favorite.book:
book.is_favorite = True
break
else: book.is_favorite = False
return books return books
@@ -221,9 +230,13 @@ def favorite(request, pk):
""" """
Add book to favorites bu primary key Add book to favorites bu primary key
""" """
f = Favorites(book=Books.objects.get(pk=pk)) _d = Favorites.objects.filter(user=request.user, book=Books.objects.get(pk=pk))
f.user = request.user if len(_d) == 1:
f.save() _d.delete()
return redirect('home')
_f = Favorites(book=Books.objects.get(pk=pk))
_f.user = request.user
_f.save()
return redirect('home') return redirect('home')
@@ -335,8 +348,8 @@ def payload(request, query, _set, _limit, _order, **kwargs):
_set_min = _set_max - _limit _set_min = _set_max - _limit
_now_showing = "%s-%s"%(_set_min, _set_max) _now_showing = "%s-%s"%(_set_min, _set_max)
if request.session['ascending']: if request.session['ascending']:
_r = book_set(_order, _limit, _set) _r = book_set(request, _order, _limit, _set)
else: _r = book_set(_order, _limit, _set, True) else: _r = book_set(request, _order, _limit, _set, True)
_r_len, _search = None, None _r_len, _search = None, None
except KeyError: except KeyError:
_set = int(_set) _set = int(_set)
@@ -373,8 +386,8 @@ def payload(request, query, _set, _limit, _order, **kwargs):
_results.count() _results.count()
except KeyError: except KeyError:
if request.session['ascending']: if request.session['ascending']:
_r = book_set(_order, _limit, _set) _r = book_set(request, _order, _limit, _set)
else: _r = book_set(_order, _limit, _set, True) else: _r = book_set(request, _order, _limit, _set, True)
_r_len, _search = None, None _r_len, _search = None, None
_bookstats, _collectionstats, _collectionobject = \ _bookstats, _collectionstats, _collectionobject = \