???
This commit is contained in:
parent
d57f677bd3
commit
14f14a2f33
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -174,9 +174,9 @@ class Book(models.Model):
|
|||||||
title = models.TextField()
|
title = models.TextField()
|
||||||
sort = models.TextField(blank=True, null=True)
|
sort = models.TextField(blank=True, null=True)
|
||||||
# This field type is a guess.
|
# This field type is a guess.
|
||||||
timestamp = models.TextField(blank=True, null=True)
|
timestamp = models.DateTimeField(blank=True, null=True)
|
||||||
# This field type is a guess.
|
# This field type is a guess.
|
||||||
pubdate = models.TextField(blank=True, null=True)
|
pubdate = models.DateTimeField(blank=True, null=True)
|
||||||
series_index = models.FloatField()
|
series_index = models.FloatField()
|
||||||
author_sort = models.TextField(blank=True, null=True)
|
author_sort = models.TextField(blank=True, null=True)
|
||||||
isbn = models.TextField(blank=True, null=True)
|
isbn = models.TextField(blank=True, null=True)
|
||||||
@ -185,7 +185,7 @@ class Book(models.Model):
|
|||||||
flags = models.IntegerField()
|
flags = models.IntegerField()
|
||||||
uuid = models.TextField(blank=True, null=True)
|
uuid = models.TextField(blank=True, null=True)
|
||||||
has_cover = models.BooleanField(blank=True, null=True)
|
has_cover = models.BooleanField(blank=True, null=True)
|
||||||
last_modified = models.TextField() # This field type is a guess.
|
last_modified = models.DateTimeField() # This field type is a guess.
|
||||||
authors = models.ManyToManyField(
|
authors = models.ManyToManyField(
|
||||||
Author,
|
Author,
|
||||||
through='BookAuthorLink',
|
through='BookAuthorLink',
|
||||||
|
@ -59,12 +59,19 @@
|
|||||||
|
|
||||||
<ul class="left">
|
<ul class="left">
|
||||||
<li><a href="{% url 'books' %}">Books</a></li>
|
<li><a href="{% url 'books' %}">Books</a></li>
|
||||||
<li><a class="dropdown-trigger" href="#!" data-target="dropdown-authors">Authors<i
|
<li><a class="dropdown-trigger" href={% url 'authors' %} data-target="dropdown-authors">Authors<i
|
||||||
class="material-icons right">arrow_drop_down</i></a></li>
|
class="material-icons right">arrow_drop_down</i></a></li>
|
||||||
<li><a class="dropdown-trigger" href="#!" data-target="dropdown-ratings">Ratings<i
|
<li><a class="dropdown-trigger" href={% url "ratings" %} data-target="dropdown-ratings">Ratings<i
|
||||||
class="material-icons right">arrow_drop_down</i></a></li>
|
class="material-icons right">arrow_drop_down</i></a></li>
|
||||||
<li><a class="dropdown-trigger" href="#!" data-target="dropdown-tags">Tags<i
|
<li><a class="dropdown-trigger" href={% url "tags" %} data-target="dropdown-tags">Tags<i
|
||||||
class="material-icons right">arrow_drop_down</i></a></li>
|
class="material-icons right">arrow_drop_down</i></a></li>
|
||||||
|
|
||||||
|
<li><a class="dropdown-trigger" href={% url "series" %} data-target="dropdown-series">Series<i
|
||||||
|
class="material-icons right">arrow_drop_down</i></a></li>
|
||||||
|
|
||||||
|
<li><a class="dropdown-trigger" href={% url "publishers" %} data-target="dropdown-pubishers">Publishers<i
|
||||||
|
class="material-icons right">arrow_drop_down</i></a></li>
|
||||||
|
|
||||||
<li><a href="{% url 'search' %}">Advanced search</a></li>
|
<li><a href="{% url 'search' %}">Advanced search</a></li>
|
||||||
<li>
|
<li>
|
||||||
<!-- stefan, this div. can we have this int the navbar? -->
|
<!-- stefan, this div. can we have this int the navbar? -->
|
||||||
@ -94,6 +101,17 @@
|
|||||||
{% endfor %}
|
{% endfor %}
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
|
<ul id="dropdown-series" class="dropdown-content">
|
||||||
|
{% for tag in unique_series %}
|
||||||
|
<li><a href="{{tag.get_absolute_url}}">{{tag}} ({{tag.num_books}})</a></li>
|
||||||
|
{% endfor %}
|
||||||
|
</ul>
|
||||||
|
<ul id="dropdown-pubishers" class="dropdown-content">
|
||||||
|
{% for pub in unique_publishers %}
|
||||||
|
<li><a href="{{pub.get_absolute_url}}">{{pub}} ({{pub.num_books}})</a></li>
|
||||||
|
{% endfor %}
|
||||||
|
</ul>
|
||||||
|
|
||||||
{% else %}
|
{% else %}
|
||||||
<li><a href="{% url 'sign-up'%}?next={{request.path}}">Sign up</a></li>
|
<li><a href="{% url 'sign-up'%}?next={{request.path}}">Sign up</a></li>
|
||||||
<li><a href="{% url 'login'%}?next={{request.path}}">Login</a></li>
|
<li><a href="{% url 'login'%}?next={{request.path}}">Login</a></li>
|
||||||
|
@ -16,6 +16,7 @@
|
|||||||
<th class="rating" onclick="sortTable(2)">Rating</th>
|
<th class="rating" onclick="sortTable(2)">Rating</th>
|
||||||
<th class="tags" onclick="sortTable(3)">Tags</th>
|
<th class="tags" onclick="sortTable(3)">Tags</th>
|
||||||
<th class="added" onclick="sortTable(4)">Added</th>
|
<th class="added" onclick="sortTable(4)">Added</th>
|
||||||
|
<th class="added" onclick="sortTable(5)">Published</th>
|
||||||
</tr>
|
</tr>
|
||||||
{% for book in book_list %}
|
{% for book in book_list %}
|
||||||
<tr>
|
<tr>
|
||||||
@ -30,7 +31,8 @@
|
|||||||
{{tag}},
|
{{tag}},
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</td>
|
</td>
|
||||||
<td>{{book.timestamp}}</td>
|
<td>{{book.timestamp | timesince}} ago</td> <!-- YES, very good sorting here.... // DEBUG fix js so it can sort this -->
|
||||||
|
<td>{{book.pubdate.year}}</td>
|
||||||
</tr>
|
</tr>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</table>
|
</table>
|
||||||
|
@ -0,0 +1,38 @@
|
|||||||
|
{% extends "base.html" %}
|
||||||
|
|
||||||
|
{% block content %}
|
||||||
|
|
||||||
|
<h1>{{Series}} </h1>
|
||||||
|
|
||||||
|
|
||||||
|
<table id="books" class="highlight centered">
|
||||||
|
<tr>
|
||||||
|
<!--When a header is clicked, run the sortTable function, with a parameter, 0 for sorting by names, 1 for sorting by country:-->
|
||||||
|
<th class="title" onclick="sortTable(0)">Title</th>
|
||||||
|
<th class="author" onclick="sortTable(1)">Author</th>
|
||||||
|
<th class="rating" onclick="sortTable(2)">Rating</th>
|
||||||
|
<th class="tags" onclick="sortTable(3)">Tags</th>
|
||||||
|
<th class="added" onclick="sortTable(4)">Added</th>
|
||||||
|
</tr>
|
||||||
|
{% for book in books %}
|
||||||
|
<tr>
|
||||||
|
<td><a href="{{ book.get_absolute_url }}">{{ book.title }}</a></td>
|
||||||
|
<td>{{book.author_sort}}</td>
|
||||||
|
<td> {% for rating in book.rating.all %}
|
||||||
|
{{rating}}
|
||||||
|
{% endfor %}
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
{% for tag in book.tags.all %}
|
||||||
|
{{tag}},
|
||||||
|
{% endfor %}
|
||||||
|
</td>
|
||||||
|
<td>{{book.timestamp}}</td>
|
||||||
|
</tr>
|
||||||
|
{% endfor %}
|
||||||
|
</table>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
{% endblock %}
|
@ -0,0 +1,17 @@
|
|||||||
|
{% extends "base.html" %}
|
||||||
|
|
||||||
|
{% block content %}
|
||||||
|
|
||||||
|
<h1>Author List</h1>
|
||||||
|
{% if series_list %}
|
||||||
|
<ul>
|
||||||
|
{% for series in series_list %}
|
||||||
|
<li>
|
||||||
|
<a href="{{ series.get_absolute_url }}">{{ series.name }}</a>
|
||||||
|
</li>
|
||||||
|
{% endfor %}
|
||||||
|
</ul>
|
||||||
|
{% else %}
|
||||||
|
<p>There are no series in the library.</p>
|
||||||
|
{% endif %}
|
||||||
|
{% endblock %}
|
@ -9,11 +9,14 @@ urlpatterns = [
|
|||||||
path('publishers/', views.PublisherListView.as_view(), name='publishers'),
|
path('publishers/', views.PublisherListView.as_view(), name='publishers'),
|
||||||
path('ratings/', views.RatingListView.as_view(), name='ratings'),
|
path('ratings/', views.RatingListView.as_view(), name='ratings'),
|
||||||
path('tags/', views.TagListView.as_view(), name='tags'),
|
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('book/<int:pk>', views.BookDetailView.as_view(), name='book-detail-view'),
|
||||||
path('publisher/<int:pk>', views.PublisherDetailView.as_view(), name='publisher-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('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('tag/<int:pk>', views.TagDetailView.as_view(), name='tag-detail-view'),
|
||||||
|
|
||||||
path('results/', views.ResultsView.as_view(), name='results'),
|
path('results/', views.ResultsView.as_view(), name='results'),
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
from django.shortcuts import render
|
from django.shortcuts import render
|
||||||
from django.views import generic
|
from django.views import generic
|
||||||
from .models import Author, Book, Comment, Rating, BookAuthorLink, Publisher, Tag, BookTagLink, BookRatingLink, Data, Identifier
|
from .models import Author, Book, Comment, Rating, BookAuthorLink, Publisher, Tag, BookTagLink, BookRatingLink, Data, Identifier, Series
|
||||||
from django.http import HttpResponseRedirect
|
from django.http import HttpResponseRedirect
|
||||||
from .forms import SearchForm, UserCreationForm
|
from .forms import SearchForm, UserCreationForm
|
||||||
from django.db import models
|
from django.db import models
|
||||||
@ -79,6 +79,9 @@ class PublisherListView(generic.ListView):
|
|||||||
class RatingListView(generic.ListView):
|
class RatingListView(generic.ListView):
|
||||||
model = Rating
|
model = Rating
|
||||||
|
|
||||||
|
class SeriesListView(generic.ListView): # make url entry and template, sometime
|
||||||
|
model = Series
|
||||||
|
|
||||||
|
|
||||||
class TagListView(generic.ListView):
|
class TagListView(generic.ListView):
|
||||||
model = Tag
|
model = Tag
|
||||||
@ -152,3 +155,15 @@ class TagDetailView(generic.DetailView):
|
|||||||
books = books.filter(tags=context["object"].id)
|
books = books.filter(tags=context["object"].id)
|
||||||
context['books'] = sorted(books, key=lambda x: x.title)
|
context['books'] = sorted(books, key=lambda x: x.title)
|
||||||
return context
|
return context
|
||||||
|
|
||||||
|
class SeriesDetailView(generic.DetailView):
|
||||||
|
model = Series
|
||||||
|
|
||||||
|
def get_context_data(self, **kwargs):
|
||||||
|
# Call the base implementation first to get the context
|
||||||
|
context = super(SeriesDetailView, self).get_context_data(**kwargs)
|
||||||
|
# Create any data and add it to the context
|
||||||
|
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
|
Loading…
Reference in New Issue
Block a user