diff --git a/cps/render_template.py b/cps/render_template.py index 1476a3ad..51e4db95 100644 --- a/cps/render_template.py +++ b/cps/render_template.py @@ -42,10 +42,16 @@ def get_sidebar_config(kwargs=None): sidebar.append({"glyph": "glyphicon-fire", "text": _('Hot Books'), "link": 'web.books_list', "id": "hot", "visibility": constants.SIDEBAR_HOT, 'public': True, "page": "hot", "show_text": _('Show Hot Books'), "config_show": True}) - sidebar.append({"glyph": "glyphicon-download", "text": _('Downloaded Books'), "link": 'web.download_list', - "id": "download", "visibility": constants.SIDEBAR_DOWNLOAD, 'public': (not g.user.is_anonymous), - "page": "download", "show_text": _('Show Downloaded Books'), - "config_show": content}) + if current_user.role_admin(): + sidebar.append({"glyph": "glyphicon-download", "text": _('Downloaded Books'), "link": 'web.download_list', + "id": "download", "visibility": constants.SIDEBAR_DOWNLOAD, 'public': (not g.user.is_anonymous), + "page": "download", "show_text": _('Show Downloaded Books'), + "config_show": content}) + else: + sidebar.append({"glyph": "glyphicon-download", "text": _('Downloaded Books'), "link": 'web.books_list', + "id": "download", "visibility": constants.SIDEBAR_DOWNLOAD, 'public': (not g.user.is_anonymous), + "page": "download", "show_text": _('Show Downloaded Books'), + "config_show": content}) sidebar.append( {"glyph": "glyphicon-star", "text": _('Top Rated Books'), "link": 'web.books_list', "id": "rated", "visibility": constants.SIDEBAR_BEST_RATED, 'public': True, "page": "rated", diff --git a/cps/static/js/filter_grid.js b/cps/static/js/filter_grid.js index d57d155f..623ffdc1 100644 --- a/cps/static/js/filter_grid.js +++ b/cps/static/js/filter_grid.js @@ -15,6 +15,8 @@ * along with this program. If not, see . */ +var direction = $("#asc").data('order'); // 0=Descending order; 1= ascending order + var $list = $("#list").isotope({ itemSelector: ".book", layoutMode: "fitRows", @@ -24,6 +26,9 @@ var $list = $("#list").isotope({ }); $("#desc").click(function() { + if (direction === 0) { + return; + } var page = $(this).data("id"); $.ajax({ method:"post", @@ -39,6 +44,9 @@ $("#desc").click(function() { }); $("#asc").click(function() { + if (direction === 1) { + return; + } var page = $(this).data("id"); $.ajax({ method:"post", diff --git a/cps/static/js/filter_list.js b/cps/static/js/filter_list.js index ef7639fa..b8f79f4e 100644 --- a/cps/static/js/filter_list.js +++ b/cps/static/js/filter_list.js @@ -15,7 +15,7 @@ * along with this program. If not, see . */ -var direction = 0; // Descending order +var direction = $("#asc").data('order'); // 0=Descending order; 1= ascending order var sort = 0; // Show sorted entries $("#sort_name").click(function() { diff --git a/cps/templates/grid.html b/cps/templates/grid.html index 9724e31d..6b03d89c 100644 --- a/cps/templates/grid.html +++ b/cps/templates/grid.html @@ -8,8 +8,8 @@ {% endif %} {% endif %} - - + + {% if charlist|length %} {% endif %} diff --git a/cps/templates/list.html b/cps/templates/list.html index 53a712d1..1e171ca5 100644 --- a/cps/templates/list.html +++ b/cps/templates/list.html @@ -8,8 +8,8 @@ {% endif %} {% endif %} - - + + {% if charlist|length %} {% endif %} diff --git a/cps/web.py b/cps/web.py index 8a8bed93..b21224d1 100644 --- a/cps/web.py +++ b/cps/web.py @@ -463,7 +463,10 @@ def render_hot_books(page): def render_downloaded_books(page, order, user_id): - user_id = int(user_id) + if current_user.role_admin(): + user_id = int(user_id) + else: + user_id = current_user.id if current_user.check_visibility(constants.SIDEBAR_DOWNLOAD): if current_user.show_detail_random(): random = calibre_db.session.query(db.Books).filter(calibre_db.common_filters()) \ @@ -486,6 +489,7 @@ def render_downloaded_books(page, order, user_id): random=random, entries=entries, pagination=pagination, + id=user_id, title=_(u"Downloaded books by %(user)s",user=user.name), page="download") else: @@ -799,8 +803,10 @@ def author_list(): if current_user.check_visibility(constants.SIDEBAR_AUTHOR): if current_user.get_view_property('author', 'dir') == 'desc': order = db.Authors.sort.desc() + order_no = 0 else: order = db.Authors.sort.asc() + order_no = 1 entries = calibre_db.session.query(db.Authors, func.count('books_authors_link.book').label('count')) \ .join(db.books_authors_link).join(db.Books).filter(calibre_db.common_filters()) \ .group_by(text('books_authors_link.author')).order_by(order).all() @@ -810,7 +816,7 @@ def author_list(): for entry in entries: entry.Authors.name = entry.Authors.name.replace('|', ',') return render_title_template('list.html', entries=entries, folder='web.books_list', charlist=charlist, - title=u"Authors", page="authorlist", data='author') + title=u"Authors", page="authorlist", data='author', order=order_no) else: abort(404) @@ -818,9 +824,11 @@ def author_list(): @login_required_if_no_ano def download_list(): if current_user.get_view_property('download', 'dir') == 'desc': - order = ub.User.name.desc() # ToDo + order = ub.User.name.desc() + order_no = 0 else: - order = ub.User.name.asc() # ToDo + order = ub.User.name.asc() + order_no = 1 if current_user.check_visibility(constants.SIDEBAR_DOWNLOAD) and current_user.role_admin(): entries = ub.session.query(ub.User, func.count(ub.Downloads.book_id).label('count'))\ .join(ub.Downloads).group_by(ub.Downloads.user_id).order_by(order).all() @@ -828,7 +836,7 @@ def download_list(): .filter(ub.User.role.op('&')(constants.ROLE_ANONYMOUS) != constants.ROLE_ANONYMOUS) \ .group_by(func.upper(func.substr(ub.User.name, 1, 1))).all() return render_title_template('list.html', entries=entries, folder='web.books_list', charlist=charlist, - title=_(u"Downloads"), page="downloadlist", data="download") + title=_(u"Downloads"), page="downloadlist", data="download", order=order_no) else: abort(404) @@ -838,8 +846,10 @@ def download_list(): def publisher_list(): if current_user.get_view_property('publisher', 'dir') == 'desc': order = db.Publishers.name.desc() + order_no = 0 else: order = db.Publishers.name.asc() + order_no = 1 if current_user.check_visibility(constants.SIDEBAR_PUBLISHER): entries = calibre_db.session.query(db.Publishers, func.count('books_publishers_link.book').label('count')) \ .join(db.books_publishers_link).join(db.Books).filter(calibre_db.common_filters()) \ @@ -848,7 +858,7 @@ def publisher_list(): .join(db.books_publishers_link).join(db.Books).filter(calibre_db.common_filters()) \ .group_by(func.upper(func.substr(db.Publishers.name, 1, 1))).all() return render_title_template('list.html', entries=entries, folder='web.books_list', charlist=charlist, - title=_(u"Publishers"), page="publisherlist", data="publisher") + title=_(u"Publishers"), page="publisherlist", data="publisher", order=order_no) else: abort(404) @@ -859,8 +869,10 @@ def series_list(): if current_user.check_visibility(constants.SIDEBAR_SERIES): if current_user.get_view_property('series', 'dir') == 'desc': order = db.Series.sort.desc() + order_no = 0 else: order = db.Series.sort.asc() + order_no = 1 if current_user.get_view_property('series', 'series_view') == 'list': entries = calibre_db.session.query(db.Series, func.count('books_series_link.book').label('count')) \ .join(db.books_series_link).join(db.Books).filter(calibre_db.common_filters()) \ @@ -879,7 +891,8 @@ def series_list(): .group_by(func.upper(func.substr(db.Series.sort, 1, 1))).all() return render_title_template('grid.html', entries=entries, folder='web.books_list', charlist=charlist, - title=_(u"Series"), page="serieslist", data="series", bodyClass="grid-view") + title=_(u"Series"), page="serieslist", data="series", bodyClass="grid-view", + order=order_no) else: abort(404) @@ -890,14 +903,16 @@ def ratings_list(): if current_user.check_visibility(constants.SIDEBAR_RATING): if current_user.get_view_property('ratings', 'dir') == 'desc': order = db.Ratings.rating.desc() + order_no = 0 else: order = db.Ratings.rating.asc() + order_no = 1 entries = calibre_db.session.query(db.Ratings, func.count('books_ratings_link.book').label('count'), (db.Ratings.rating / 2).label('name')) \ .join(db.books_ratings_link).join(db.Books).filter(calibre_db.common_filters()) \ .group_by(text('books_ratings_link.rating')).order_by(order).all() return render_title_template('list.html', entries=entries, folder='web.books_list', charlist=list(), - title=_(u"Ratings list"), page="ratingslist", data="ratings") + title=_(u"Ratings list"), page="ratingslist", data="ratings", order=order_no) else: abort(404) @@ -908,15 +923,17 @@ def formats_list(): if current_user.check_visibility(constants.SIDEBAR_FORMAT): if current_user.get_view_property('ratings', 'dir') == 'desc': order = db.Data.format.desc() + order_no = 0 else: order = db.Data.format.asc() + order_no = 1 entries = calibre_db.session.query(db.Data, func.count('data.book').label('count'), db.Data.format.label('format')) \ .join(db.Books).filter(calibre_db.common_filters()) \ .group_by(db.Data.format).order_by(order).all() return render_title_template('list.html', entries=entries, folder='web.books_list', charlist=list(), - title=_(u"File formats list"), page="formatslist", data="formats") + title=_(u"File formats list"), page="formatslist", data="formats", order=order_no) else: abort(404) @@ -956,8 +973,10 @@ def category_list(): if current_user.check_visibility(constants.SIDEBAR_CATEGORY): if current_user.get_view_property('category', 'dir') == 'desc': order = db.Tags.name.desc() + order_no = 0 else: order = db.Tags.name.asc() + order_no = 1 entries = calibre_db.session.query(db.Tags, func.count('books_tags_link.book').label('count')) \ .join(db.books_tags_link).join(db.Books).order_by(order).filter(calibre_db.common_filters()) \ .group_by(text('books_tags_link.tag')).all() @@ -965,7 +984,7 @@ def category_list(): .join(db.books_tags_link).join(db.Books).filter(calibre_db.common_filters()) \ .group_by(func.upper(func.substr(db.Tags.name, 1, 1))).all() return render_title_template('list.html', entries=entries, folder='web.books_list', charlist=charlist, - title=_(u"Categories"), page="catlist", data="category") + title=_(u"Categories"), page="catlist", data="category", order=order_no) else: abort(404)