diff --git a/app/admin/routes.py b/app/admin/routes.py index 530fa333..579dc19d 100644 --- a/app/admin/routes.py +++ b/app/admin/routes.py @@ -1147,60 +1147,30 @@ def admin_users(): page = request.args.get('page', 1, type=int) search = request.args.get('search', '') local_remote = request.args.get('local_remote', '') + sort_by = request.args.get('sort_by', 'last_seen DESC') + last_seen = request.args.get('last_seen', 0, type=int) + + sort_by_btn = request.args.get('sort_by_btn', '') + if sort_by_btn: + return redirect(url_for('admin.admin_users', page=page, search=search, local_remote=local_remote, sort_by=sort_by_btn, last_seen=last_seen)) users = User.query.filter_by(deleted=False) if local_remote == 'local': users = users.filter_by(ap_id=None) - if local_remote == 'remote': + elif local_remote == 'remote': users = users.filter(User.ap_id != None) if search: users = users.filter(User.email.ilike(f"%{search}%")) - users = users.order_by(User.user_name).paginate(page=page, per_page=1000, error_out=False) + if last_seen > 0: + users = users.filter(User.last_seen > utcnow() - timedelta(days=last_seen)) + users = users.order_by(text('"user".' + sort_by)) + users = users.paginate(page=page, per_page=1000, error_out=False) - next_url = url_for('admin.admin_users', page=users.next_num) if users.has_next else None - prev_url = url_for('admin.admin_users', page=users.prev_num) if users.has_prev and page != 1 else None + next_url = url_for('admin.admin_users', page=users.next_num, search=search, local_remote=local_remote, sort_by=sort_by, last_seen=last_seen) if users.has_next else None + prev_url = url_for('admin.admin_users', page=users.prev_num, search=search, local_remote=local_remote, sort_by=sort_by, last_seen=last_seen) if users.has_prev and page != 1 else None return render_template('admin/users.html', title=_('Users'), next_url=next_url, prev_url=prev_url, users=users, - local_remote=local_remote, search=search, - moderating_communities=moderating_communities(current_user.get_id()), - joined_communities=joined_communities(current_user.get_id()), - menu_topics=menu_topics(), - site=g.site - ) - - -@bp.route('/users/trash', methods=['GET']) -@login_required -@permission_required('administer all users') -def admin_users_trash(): - - page = request.args.get('page', 1, type=int) - search = request.args.get('search', '') - local_remote = request.args.get('local_remote', '') - type = request.args.get('type', 'bad_rep') - - users = User.query.filter_by(deleted=False) - if local_remote == 'local': - users = users.filter_by(ap_id=None) - if local_remote == 'remote': - users = users.filter(User.ap_id != None) - if search: - users = users.filter(User.email.ilike(f"%{search}%")) - - if type == '' or type == 'bad_rep': - users = users.filter(User.last_seen > utcnow() - timedelta(days=7)) - users = users.filter(User.reputation < -10) - users = users.order_by(User.reputation).paginate(page=page, per_page=1000, error_out=False) - elif type == 'bad_attitude': - users = users.filter(User.last_seen > utcnow() - timedelta(days=7)) - users = users.filter(User.attitude < 0.0).filter(User.reputation < -10) - users = users.order_by(User.attitude).paginate(page=page, per_page=1000, error_out=False) - - next_url = url_for('admin.admin_users_trash', page=users.next_num, search=search, local_remote=local_remote, type=type) if users.has_next else None - prev_url = url_for('admin.admin_users_trash', page=users.prev_num, search=search, local_remote=local_remote, type=type) if users.has_prev and page != 1 else None - - return render_template('admin/users_trash.html', title=_('Problematic users'), next_url=next_url, prev_url=prev_url, users=users, - local_remote=local_remote, search=search, type=type, + local_remote=local_remote, search=search, sort_by=sort_by, last_seen=last_seen, moderating_communities=moderating_communities(current_user.get_id()), joined_communities=joined_communities(current_user.get_id()), menu_topics=menu_topics(), diff --git a/app/templates/admin/_nav.html b/app/templates/admin/_nav.html index dea6efd2..addf534b 100644 --- a/app/templates/admin/_nav.html +++ b/app/templates/admin/_nav.html @@ -6,7 +6,6 @@ {{ _('Communities') }} | {{ _('Topics') }} | {{ _('Users') }} | - {{ _('Watch') }} | {% if site.registration_mode == 'RequireApplication' %} {{ _('Registration applications') }} | {% endif %} diff --git a/app/templates/admin/users.html b/app/templates/admin/users.html index 17b0e90e..89acc5fa 100644 --- a/app/templates/admin/users.html +++ b/app/templates/admin/users.html @@ -11,44 +11,84 @@

{{ _('Users') }}

{{ _('Add local user') }} -
- - - - + +
+ + +
+
+ + +
+
+ + +
+
- - - - + - - - + + + + {% for user in users.items %} - - - - - - + + + {% endfor %} @@ -74,4 +114,4 @@
-{% endblock %} \ No newline at end of file +{% endblock %} diff --git a/app/templates/admin/users_trash.html b/app/templates/admin/users_trash.html deleted file mode 100644 index 4eae558c..00000000 --- a/app/templates/admin/users_trash.html +++ /dev/null @@ -1,77 +0,0 @@ -{% if theme() and file_exists('app/templates/themes/' + theme() + '/base.html') %} - {% extends 'themes/' + theme() + '/base.html' %} -{% else %} - {% extends "base.html" %} -{% endif %} -{% from 'bootstrap/form.html' import render_form %} -{% set active_child = 'admin_users_trash' %} - -{% block app_content %} -
-
-

{{ _('Users') }}

- {{ _('Add local user') }} -
- - - - - - - -
{{ _('Name') }}{{ _('Seen') }}{{ _('Attitude') }}{{ _('Reputation') }} + + {{ _('Banned') }}{{ _('Reports') }}{{ _('IP and country code') }}{{ _('Source') }} + + + + + + + + {{ _('Actions') }}
{{ render_username(user, add_domain=False) }}
{{ user.user_name }}{% if not user.is_local() %}@{{ user.ap_domain }}{% endif %}
{% if request.args.get('local_remote', '') == 'local' %} - {{ arrow.get(user.last_seen).humanize(locale=locale) }} - {% else %} - {{ user.last_seen }} - {% endif %} - {% if user.attitude != 1 %}{{ (user.attitude * 100) | round | int }}%{% endif %}{% if user.reputation %}R {{ user.reputation | round | int }}{% endif %} {{ 'Banned'|safe if user.banned }} {{ 'Banned posts'|safe if user.ban_posts }} {{ 'Banned comments'|safe if user.ban_comments }} {{ user.reports if user.reports > 0 }} {{ user.ip_address if user.ip_address }}
{{ user.ip_address_country if user.ip_address_country }}
{{ user.referrer if user.referrer }} Edit | - Delete + {% if user.attitude != 1 %}{{ (user.attitude * 100) | round | int }}%{% endif %}{% if user.reputation %}R {{ user.reputation | round | int }}{% endif %}{{ arrow.get(user.last_seen).humanize(locale=locale) }}Edit, + Delete, +
+ {% if user.banned %} + Ban, + {% else %} + Ban, + {% endif %} + Purge
- - - - - - - - - - - - {% for user in users.items %} - - - - - - - - - - - - {% endfor %} -
NameSeenAttitudeRepBannedReportsIPSourceActions
{{ render_username(user, add_domain=False) }}
- {{ user.user_name }}{% if not user.is_local() %}@{{ user.ap_domain }}{% endif %}
{% if request.args.get('local_remote', '') == 'local' %} - {{ arrow.get(user.last_seen).humanize(locale=locale) }} - {% else %} - {{ user.last_seen }} - {% endif %} - {% if user.attitude != 1 %}{{ (user.attitude * 100) | round | int }}%{% endif %}{% if user.reputation %}R {{ user.reputation | round | int }}{% endif %}{{ 'Banned'|safe if user.banned }} {{ user.reports if user.reports > 0 }} {{ user.ip_address if user.ip_address }} {{ user.referrer if user.referrer }} Edit | - Delete -
- -
- -
-
-
- {% include 'admin/_nav.html' %} -
-
-
-{% endblock %} \ No newline at end of file diff --git a/app/templates/base.html b/app/templates/base.html index a7467df1..ab2ad7b1 100644 --- a/app/templates/base.html +++ b/app/templates/base.html @@ -217,7 +217,6 @@
  • {{ _('Communities') }}
  • {{ _('Topics') }}
  • {{ _('Users') }}
  • -
  • {{ _('Monitoring - users') }}
  • {{ _('Monitoring - content') }}
  • {{ _('Monitoring - spammy content') }}
  • {{ _('Deleted content') }}
  • diff --git a/app/templates/user/show_profile.html b/app/templates/user/show_profile.html index 4d0f33cf..28a7304b 100644 --- a/app/templates/user/show_profile.html +++ b/app/templates/user/show_profile.html @@ -108,6 +108,8 @@ {% if user.is_instance_admin() or (user.is_local() and user.is_admin()) %}({{ _('Admin') }}){% endif %}
    {% if user.is_admin() or user.is_staff() %}{{ _('Role permissions') }}: {% if user.is_admin() %}{{ _('Admin') }}{% endif %} {% if user.is_staff() %}{{ _('Staff') }}{% endif %}
    {% endif %} {{ _('Joined') }}: {{ arrow.get(user.created).humanize(locale=locale) }}
    + {% if current_user.is_authenticated and current_user.is_admin() %}{{ _('Referer') }}: {{ user.referrer if user.referrer }}
    {% endif %} + {% if current_user.is_authenticated and current_user.is_admin() %}{{ _('IP and country code') }}: {{ user.ip_address if user.ip_address }}{% if user.ip_address_country %} ({{ user.ip_address_country }}){% endif %}
    {% endif %} {% if current_user.is_authenticated and current_user.is_admin() and user.last_seen %}{{ _('Active') }}: {{ arrow.get(user.last_seen).humanize(locale=locale) }}
    {% endif %} {% if user.bot %} {{ _('Bot Account') }}