]> git.ipfire.org Git - pbs.git/commitdiff
users: Refactor detail page
authorMichael Tremer <michael.tremer@ipfire.org>
Sat, 25 Jun 2022 13:49:53 +0000 (13:49 +0000)
committerMichael Tremer <michael.tremer@ipfire.org>
Sat, 25 Jun 2022 13:49:53 +0000 (13:49 +0000)
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Makefile.am
src/buildservice/users.py
src/templates/base.html
src/templates/user-profile.html [deleted file]
src/templates/users/show.html [new file with mode: 0644]
src/web/__init__.py
src/web/users.py

index d4a5a7f700b66e1b228262230ce60c282d7dc459..76dd36ed1e475098ceb1b16795b72ea271ee4462 100644 (file)
@@ -185,7 +185,6 @@ dist_templates_DATA = \
        src/templates/user-profile-builds.html \
        src/templates/user-profile-edit-fail.html \
        src/templates/user-profile-edit.html \
-       src/templates/user-profile.html \
        src/templates/user-profile-need-activation.html
 
 templatesdir = $(datadir)/templates
@@ -332,6 +331,11 @@ dist_templates_packages_builds_DATA = \
 
 templates_packages_buildsdir = $(templates_packagesdir)/builds
 
+dist_templates_users_DATA = \
+       src/templates/users/show.html
+
+templates_usersdir = $(templatesdir)/users
+
 # ------------------------------------------------------------------------------
 #
 dist_static_DATA = \
index 00af8a1fe5323f7bc4748e4febeacc4d530efbe9..e6b209aa338c0dc766461493b1aa766dc37a9b0d 100644 (file)
@@ -376,7 +376,7 @@ class User(base.DataObject):
                """
                        Returns all custom repositories
                """
-               repos = self.backend.repositories._get_repos("""
+               repos = self.backend.repos._get_repositories("""
                        SELECT
                                *
                        FROM
index b30e9589c6a35fb5e2f16111fa9984afbc944f5c..3a867f0fc3d94d1394b19f975d0abae777d4dfe0 100644 (file)
@@ -74,7 +74,7 @@
 
                                                                                <ul class="menu vertical">
                                                                                        <li>
-                                                                                               <a href="/profile">{{ _("My Profile") }}</a>
+                                                                                               <a href="/users/{{ current_user.name }}">{{ _("My Profile") }}</a>
                                                                                        </li>
                                                                                        <li>
                                                                                                <a href="/profile/builds">{{ _("My Builds") }}</a>
diff --git a/src/templates/user-profile.html b/src/templates/user-profile.html
deleted file mode 100644 (file)
index f0ded1e..0000000
+++ /dev/null
@@ -1,126 +0,0 @@
-{% extends "base.html" %}
-
-{% block title %}{{ user.realname }}{% end block %}
-
-{% block body %}
-       <div class="row">
-               <div class="col-12 col-sm-12 col-md-12 col-lg-12 col-xl-12">
-                       <nav aria-label="breadcrumb" role="navigation">
-                               <ol class="breadcrumb">
-                                       <li class="breadcrumb-item"><a href="/">{{ _("Home") }}</a></li>
-                                       <li class="breadcrumb-item">
-                                               <a href="/users">{{ _("Users") }}</a>
-                                       </li>
-                                       <li class="breadcrumb-item active">
-                                               <a href="/user/{{ user.name }}">{{ user.realname }}</a>
-                                       </li>
-
-                               </ol>
-                       </nav>
-               </div>
-       </div>
-
-       <div class="row">
-               <div class="col-12 col-sm-12 col-md-9 col-lg-10 col-xl-10">
-                       <h2 style="word-wrap: break-word;">
-                               {{ _("User") }}: {{ user.realname }}
-                       </h2>
-               </div>
-               <div class="col-12 col-sm-12 col-md-3 col-lg-2 col-xl-2 mb-2">
-                       <div class="dropdown">
-                               <button class="btn btn-block btn-light dropdown-toggle mb-2" type="button" id="dropdownMenuButton" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
-                                       {{ _("Actions") }}
-                               </button>
-                               <div class="dropdown-menu dropdown-menu-right" aria-labelledby="dropdownMenuButton">
-                                       {% if current_user == user or current_user.is_admin() %}
-                                               <a class="dropdown-item" href="/user/{{ user.name }}/edit">
-                                                       <i class="icon-edit"></i>
-                                                       {{ _("Edit profile") }}
-                                               </a>
-                                               <div class="dropdown-divider"></div>
-                                               <a class="dropdown-item" href="/user/{{ user.name }}/delete">
-                                                       <i class="icon-trash"></i>
-                                                       {{ _("Delete account") }}
-                                               </a>
-                                               {% if not current_user == user and current_user.is_admin() %}
-                                                       <div class="dropdown-divider"></div>
-                                                       <a class="dropdown-item" href="/user/{{ user.name }}/impersonate">{{ _("Impersonate User") }}</a>
-                                               {% end %}
-                                       {% end %}
-                               </div>
-                       </div>
-               </div>
-       </div>
-
-       <div class="row">
-               <div class="col-12 col-sm-12 col-md-4 col-lg-3 col-xl-3 mb-2">
-                       <div class="d-flex justify-content-center justify-content-md-start">
-                               <img class="img-fluid" src="{{ user.avatar(200) }}" alt="{{ user.name }}" />
-                       </div>
-               </div>
-               <div class="col-12 col-sm-12 col-md-8 col-lg-9 col-xl-9">
-                       <div class="table-responsive mb-2">
-                               <table class="table">
-                                       <tbody>
-                                               <tr>
-                                                       <td>{{ _("Username") }}</td>
-                                                       <td>{{ user.name }}</td>
-                                               </tr>
-                                               <tr>
-                                                       <td>{{ _("Email") }}</td>
-                                                       <td>
-                                                               <a href="mailto:{{ user.email }}">{{ user.email }}</a>
-                                                       </td>
-                                               </tr>
-                                               <tr>
-                                                       <td>{{ _("State") }}</td>
-                                                       <td>
-                                                               {% if user.is_admin() %}
-                                                                       {{ _("Admin") }}
-                                                               {% else %}
-                                                                       {{ _("User") }}
-                                                               {% end %}
-                                                       </td>
-                                               </tr>
-                                       </tbody>
-                               </table>
-                       </div>
-               </div>
-       </div>
-
-
-       {% if current_user == user or current_user.is_admin() %}
-               <div class="row">
-                       <div class="col-12 col-sm-12 col-md-12 col-lg-12 col-xl-12">
-                               <h3>{{ _("Permissions") }}</h3>
-                       </div>
-               </div>
-               <div class="row">
-                       <div class="col-12 col-sm-12 col-md-12 col-lg-12 col-xl-12">
-                               {% if user.is_admin() %}
-                                       <p>
-                                               {{ _("This user has administration rights.") }}
-                                               <i class="icon-star"></i>
-                                       </p>
-                               {% else %}
-                                       <div class="table-responsive">
-                                               <table class="table table-striped table-hover">
-                                                       <tr>
-                                                               <td>
-                                                                       {{ _("User is allowed to create scratch builds?") }}
-                                                               </td>
-                                                               <td>
-                                                                       {% if user.has_perm("create_scratch_builds") %}
-                                                                               {{ _("Yes") }}
-                                                                       {% else %}
-                                                                               {{ _("No") }}
-                                                                       {% end %}
-                                                               </td>
-                                                       </tr>
-                                               </table>
-                                       </div>
-                               {% end %}
-                       </div>
-               </div>
-       {% end %}
-{% end block %}
diff --git a/src/templates/users/show.html b/src/templates/users/show.html
new file mode 100644 (file)
index 0000000..8942766
--- /dev/null
@@ -0,0 +1,41 @@
+{% extends "../base.html" %}
+
+{% block title %}{{ _("Users") }} - {{ user }}{% end block %}
+
+{% block container %}
+       <nav aria-label="{{ _("You are here:") }}" role="navigation">
+               <ul class="breadcrumbs">
+                       <li>
+                               <a href="/">{{ _("Home") }}</a>
+                       </li>
+                       <li>
+                               <a href="/users">{{ _("Users") }}</a>
+                       </li>
+                       <li>
+                               <span class="show-for-sr">{{ _("Current") }}: </span> {{ user }}
+                       </li>
+               </ul>
+       </nav>
+
+       <h1>
+               {{ user }} <small>{{ user.name }}</small>
+       </h1>
+
+       <!-- <div class="grid-x grid-padding-x">
+               <div class="cell large-4">
+                       <img class="thumbnail" src="{{ user.avatar(200) }}" alt="{{ user }}" />
+               </div>
+       </div> -->
+
+       {% if current_user and current_user.is_admin() %}
+               <a class="secondary expanded button" href="mailto:{{ user.email }}">
+                       {{ _("Send an Email to %s") % user }}
+               </a>
+       {% end %}
+
+       {% if user.repos %}
+               <h4>{{ _("Repositories") }}</h4>
+
+               {% module ReposList(user.repos) %}
+       {% end %}
+{% end block %}
index 80d94149e15e5a6014a4d3973a44d2ca81aebfd5..5cee78b648ae6cd2f195789d9e8ef4669142e48c 100644 (file)
@@ -110,11 +110,10 @@ class Application(tornado.web.Application):
 
                        # User profiles
                        (r"/users", users.UsersHandler),
+                       (r"/users/(\w+)", users.ShowHandler),
                        (r"/user/(\w+)/impersonate", users.UserImpersonateHandler),
                        (r"/user/(\w+)/delete", users.UserDeleteHandler),
                        (r"/user/(\w+)/edit", users.UserEditHandler),
-                       (r"/user/(\w+)", users.UserHandler),
-                       (r"/profile", users.UserHandler),
                        (r"/profile/builds", users.UsersBuildsHandler),
 
                        # Packages
index feece909b237e8db8e6f22fcc1ac4d4103fe8ac8..f2b20cbf19716d5b5f880bde93f43cc441bdac67 100644 (file)
@@ -5,17 +5,13 @@ import tornado.web
 
 from . import base
 
-class UserHandler(base.BaseHandler):
-       @tornado.web.authenticated
-       def get(self, name=None):
-               user = self.current_user
-
-               if name:
-                       user = self.backend.users.get_by_name(name)
-                       if not user:
-                               raise tornado.web.HTTPError(404, "User does not exist: %s" % name)
+class ShowHandler(base.BaseHandler):
+       def get(self, name):
+               user = self.backend.users.get_by_name(name)
+               if not user:
+                       raise tornado.web.HTTPError(404, "Could not find user: %s" % name)
 
-               self.render("user-profile.html", user=user)
+               self.render("users/show.html", user=user)
 
 
 class UserImpersonateHandler(base.BaseHandler):