return list(builds)
+ def get_by_user(self, user, limit=None, offset=None):
+ """
+ Returns builds by a certain user
+ """
+ builds = self._get_builds("""
+ SELECT
+ *
+ FROM
+ builds
+ WHERE
+ deleted_at IS NULL
+ AND
+ owner_id = %s
+ ORDER BY
+ created_at DESC
+ LIMIT
+ %s
+ OFFSET
+ %s
+ """, user, limit, offset,
+ )
+
+ return list(builds)
+
async def create(self, repo, package, owner=None, group=None):
"""
Creates a new build based on the given distribution and package
</a>
<div class="navbar-dropdown is-boxed">
- <a class="navbar-item" href="/profile/builds">
+ <a class="navbar-item" href="/builds?user={{ current_user.name }}">
{{ _("My Builds") }}
</a>
+
<hr class="navbar-divider">
+
<a class="navbar-item" href="/logout">
{{ _("Logout") }}
</a>
</ul>
</nav>
- <h1 class="title">{{ _("Recent Builds") }}</h1>
+ <h1 class="title">
+ {% if user %}
+ {{ _("%s's Builds") % user }}
+ {% else %}
+ {{ _("Recent Builds") }}
+ {% end %}
+ </h1>
{# Render all builds #}
{% module BuildsList(builds) %}
class IndexHandler(base.BaseHandler):
def get(self):
+ # Filters
+ user = self.get_argument_user("user", None)
+
# Fetch the most recent builds
- builds = self.backend.builds.get_recent(limit=25)
+ if user:
+ builds = self.backend.builds.get_by_user(user, limit=25)
+ else:
+ builds = self.backend.builds.get_recent(limit=25)
- self.render("builds/index.html", builds=builds)
+ self.render("builds/index.html", builds=builds, user=user)
class ShowHandler(base.BaseHandler):
self.redirect("/users/%s" % user.name)
+class BuildsHandler(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("users/builds.html", user=user, builds=user.builds)
+
+
class ListModule(ui_modules.UIModule):
def render(self, users):
return self.render_string("users/modules/list.html", users=users)