add: orders in administration

This commit is contained in:
Benoît Latinier 2016-11-13 23:20:47 +01:00
parent 3212bf762f
commit e3fddf4ae8
3 changed files with 35 additions and 11 deletions

View File

@ -110,7 +110,7 @@ class Comments:
return dict(comment_count) return dict(comment_count)
def fetchall(self, mode=5, after=0, parent='any', order_by='id', def fetchall(self, mode=5, after=0, parent='any', order_by='id',
limit=100, page=0): limit=100, page=0, asc=1):
""" """
Return comments for admin with :param:`mode`. Return comments for admin with :param:`mode`.
""" """
@ -138,10 +138,16 @@ class Comments:
# custom sanitization # custom sanitization
if order_by not in ['id', 'created', 'modified', 'likes', 'dislikes', 'tid']: if order_by not in ['id', 'created', 'modified', 'likes', 'dislikes', 'tid']:
order_by = 'id' sql.append('ORDER BY ')
sql.append('ORDER BY ') sql.append("comments.created")
sql.append('comments.' + order_by + ", comments.created") if not asc:
sql.append(' DESC') sql.append(' DESC')
else:
sql.append('ORDER BY ')
sql.append('comments.' + order_by)
if not asc:
sql.append(' DESC')
sql.append(", comments.created")
if limit: if limit:
sql.append('LIMIT ?,?') sql.append('LIMIT ?,?')

View File

@ -61,17 +61,17 @@ function delete_com(com_id, hash) {
<div class="outer"> <div class="outer">
<div class="filters"> <div class="filters">
<div class="mode"> <div class="mode">
<a href="?mode=1&page={{page}}"> <a href="?mode=1&page={{page}}&order_by={{order_by}}">
<span class="label label-valid {% if mode == 1 %}active{% endif %}"> <span class="label label-valid {% if mode == 1 %}active{% endif %}">
Valid ({{counts.get(1, 0)}}) Valid ({{counts.get(1, 0)}})
</span> </span>
</a> </a>
<a href="?mode=2&page={{page}}"> <a href="?mode=2&page={{page}}&order_by={{order_by}}">
<span class="label label-pending {% if mode == 2 %}active{% endif %}"> <span class="label label-pending {% if mode == 2 %}active{% endif %}">
Pending ({{counts.get(2, 0)}}) Pending ({{counts.get(2, 0)}})
</span> </span>
</a> </a>
<a href="?mode=4&page={{page}}"> <a href="?mode=4&page={{page}}&order_by={{order_by}}">
<span class="label label-staled {% if mode == 4 %}active{% endif %}"> <span class="label label-staled {% if mode == 4 %}active{% endif %}">
Staled ({{counts.get(4, 0)}}) Staled ({{counts.get(4, 0)}})
</span> </span>
@ -93,8 +93,24 @@ function delete_com(com_id, hash) {
» »
</a> </a>
{% endif %} {% endif %}
/ {{ max_page }}
</div> </div>
</div> </div>
<div class="filters order">
Order:
{% for order in ['id', 'created', 'modified', 'likes', 'dislikes'] %}
<a href="?mode={{mode}}&page={{page}}&order_by={{order}}&asc={{1 - asc}}">
<span class="label label-valid {% if order == order_by %}active{% endif %}">
{{ order }}
{% if order == order_by %}
{% if asc %} ↑ {% else %} ↓ {% endif %}
{% else %}
{% endif %}
</span>
</a>
{% endfor %}
</div>
</div> </div>
<main> <main>
{% set thread_id = "no_id" %} {% set thread_id = "no_id" %}

View File

@ -520,11 +520,13 @@ class API(object):
return render_template('login.html') return render_template('login.html')
page_size = 100 page_size = 100
page = int(req.args.get('page', 0)) page = int(req.args.get('page', 0))
order_by = req.args.get('order_by', "id") order_by = req.args.get('order_by', None)
asc = int(req.args.get('asc', 1))
mode = int(req.args.get('mode', 2)) mode = int(req.args.get('mode', 2))
comments = self.comments.fetchall(mode=mode, page=page, comments = self.comments.fetchall(mode=mode, page=page,
limit=page_size, limit=page_size,
order_by=order_by) order_by=order_by,
asc=asc)
comments_enriched = [] comments_enriched = []
for comment in list(comments): for comment in list(comments):
comment['hash'] = self.isso.sign(comment['id']) comment['hash'] = self.isso.sign(comment['id'])
@ -535,4 +537,4 @@ class API(object):
page=int(page), mode=int(mode), page=int(page), mode=int(mode),
conf=self.conf, max_page=max_page, conf=self.conf, max_page=max_page,
counts=comment_mode_count, counts=comment_mode_count,
order_by=order_by) order_by=order_by, asc=asc)