]> git.lizzy.rs Git - cheatdb.git/commitdiff
Redesign user list
authorrubenwardy <rw@rubenwardy.com>
Sun, 12 Jul 2020 19:59:06 +0000 (20:59 +0100)
committerrubenwardy <rw@rubenwardy.com>
Sun, 12 Jul 2020 20:02:50 +0000 (21:02 +0100)
app/blueprints/packages/packages.py
app/blueprints/users/profile.py
app/templates/users/list.html

index 0cb9b35ae51e39dd4497f2519de8b84a422debcb..90cb72f2909dfd9e0df3d441d01e74237f5d9f9f 100644 (file)
@@ -81,7 +81,7 @@ def list_all():
                topics = qb.buildTopicQuery().all()
 
        tags = db.session.query(func.count(Tags.c.tag_id), Tag) \
-               .select_from(Tag).outerjoin(Tags).group_by(Tag.id).order_by(db.asc(Tag.title))
+               .select_from(Tag).outerjoin(Tags).group_by(Tag.id).order_by(db.asc(Tag.title)).all()
 
        selected_tags = set(qb.tags)
 
index 7973368e1238fdcfd8a1acba646b5f208ae19708..5b78fb2f7bea3fb7a0e685ee996843c4523bdb3a 100644 (file)
@@ -28,6 +28,7 @@ from app.utils import randomString, loginUser, rank_required, nonEmptyOrNone, ad
 from app.tasks.forumtasks import checkForumAccount
 from app.tasks.emails import sendVerifyEmail, sendEmailRaw
 from app.tasks.phpbbparser import getProfile
+from sqlalchemy import func
 
 # Define the User profile form
 class UserProfileForm(FlaskForm):
@@ -43,7 +44,11 @@ class UserProfileForm(FlaskForm):
 
 @bp.route("/users/", methods=["GET"])
 def list_all():
-       users = User.query.order_by(db.desc(User.rank), db.asc(User.display_name)).all()
+       users = db.session.query(User, func.count(Package.id)) \
+                       .select_from(User).outerjoin(Package) \
+                       .order_by(db.desc(User.rank), db.asc(User.display_name)) \
+                       .group_by(User.id).all()
+
        return render_template("users/list.html", users=users)
 
 
index da3d120c840cb629ceac420a756c9c96ae47ba64..90f6227a102b39bed091509784fd0f782fe2a901 100644 (file)
@@ -1,20 +1,59 @@
 {% extends "base.html" %}
 
 {% block title %}
-       Users
+       {{ _("Users") }}
 {% endblock %}
 
 {% block content %}
-<ul class="userlist">
-       {% for user in users %}
-               <li>
-                       <a href="{{ url_for('users.profile', username=user.username) }}" class="{{ user.rank }}">
-                               {{ user.display_name }}
-                       </a> -
-                       {{ user.rank.getTitle() }}
-                       {% if current_user.is_authenticated %}
-                               - {{ user.packages.count() }} packages.
-                       {% endif %}
+<h1>{{ _("Users") }}</h1>
+
+<div class="userlist list-group">
+       <div class="list-group-item">
+               <div class="row text-muted">
+                       <div class="col-sm-2">
+                               {{ _("Rank") }}
+                       </div>
+
+                       <span class="col-sm">
+                               {{ _("Username") }}
+                       </span>
+
+                       <div class="col-sm-1 text-center">
+                               {{ _("Packages") }}
+                       </div>
+               </div>
+       </div>
+
+       {% for pair in users %}
+               {% set user = pair[0] %}
+               {% set count_pkgs = pair[1] %}
+
+               <a class="list-group-item list-group-item-action" href="{{ url_for('users.profile', username=user.username) }}">
+                       <div class="row">
+                               <div class="col-sm-2 {{ user.rank }}"
+                                               title="{{ _('Rank: %(rank)s.', rank=user.rank.getTitle()) }}">
+                                       {% if user.rank == user.rank.ADMIN %}
+                                               <i class="fas fa-user-cog mr-2"></i>
+                                       {% elif user.rank == user.rank.MODERATOR %}
+                                               <i class="fas fa-user-shield mr-2"></i>
+                                       {% elif user.rank == user.rank.EDITOR %}
+                                               <i class="fas fa-user-edit mr-2"></i>
+                                       {% else %}
+                                               <i class="fas fa-user mr-2"></i>
+                                       {% endif %}
+
+                                       {{ user.rank.getTitle() }}
+                               </div>
+
+                               <span class="col-sm {{ user.rank }}">
+                                       {{ user.display_name }}
+                               </span>
+
+                               <div class="col-sm-1 text-center">
+                                       <b>{{ count_pkgs }}</b>
+                               </div>
+                       </div>
+               </a>
        {% endfor %}
-</ul>
+</div>
 {% endblock %}