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
templates_packages_buildsdir = $(templates_packagesdir)/builds
+dist_templates_users_DATA = \
+ src/templates/users/show.html
+
+templates_usersdir = $(templatesdir)/users
+
# ------------------------------------------------------------------------------
#
dist_static_DATA = \
"""
Returns all custom repositories
"""
- repos = self.backend.repositories._get_repos("""
+ repos = self.backend.repos._get_repositories("""
SELECT
*
FROM
<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>
+++ /dev/null
-{% 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 %}
--- /dev/null
+{% 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 %}
# 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
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):