templates_modulesdir = $(templatesdir)/modules
-dist_templates_modules_changelog_DATA = \
- src/templates/modules/changelog/entry.html \
- src/templates/modules/changelog/index.html
-
-templates_modules_changelogdir = $(templates_modulesdir)/changelog
-
dist_templates_modules_jobs_DATA = \
src/templates/modules/jobs/list.html \
src/templates/modules/jobs/status.html
templates_modules_selectdir = $(templates_modulesdir)/select
dist_templates_packages_DATA = \
- src/templates/packages/changelog.html \
src/templates/packages/index.html \
src/templates/packages/view-file.html
return build
- def get_changelog(self, name, limit=5, offset=0):
- query = "SELECT builds.* FROM builds \
- JOIN packages ON builds.pkg_id = packages.id \
- WHERE \
- builds.type = %s \
- AND \
- packages.name = %s"
- args = ["release", name,]
-
- query += " ORDER BY builds.time_created DESC"
-
- query += " LIMIT %s OFFSET %s"
- args += [offset, limit]
-
- builds = []
- for b in self.db.query(query, *args):
- b = Build(self.backend, b.id, b)
- builds.append(b)
-
- builds.sort(reverse=True)
-
- return builds
-
def get_comments(self, limit=10, offset=None, user=None):
query = "SELECT * FROM builds_comments \
JOIN users ON builds_comments.user_id = users.id"
+++ /dev/null
-<div class="card mb-3
- {% if build.type == "release" and build.repo %}
- {% if build.repo.type == "stable" %}
- border-success
- {% elif build.repo.type == "unstable" %}
- border-danger
- {% elif build.repo.type == "testing" %}
- border-warning
- {% end %}
- {% elif build.type == "scratch" %}
- border-secondary
- {% end %}
- "
- style="width:100%;">
- {% if build.type == "release" and build.repo %}
- {% if build.repo.type == "stable" %}
- <div class="card-header text-success">
- <a href="/distro/{{ build.repo.distro.identifier }}/repo/{{ build.repo.name }}">
- {{ build.repo.distro.name }} ‐ {{ build.repo.name }}
- </a>
- </div>
- {% elif build.repo.type == "unstable" %}
- <div class="card-header text-danger">
- <a href="/distro/{{ build.repo.distro.identifier }}/repo/{{ build.repo.name }}">
- {{ build.repo.distro.name }} ‐ {{ build.repo.name }}
- </a>
- </div>
- {% elif build.repo.type == "testing" %}
- <div class="card-header text-warning">
- <a href="/distro/{{ build.repo.distro.identifier }}/repo/{{ build.repo.name }}">
- {{ build.repo.distro.name }} ‐ {{ build.repo.name }}
- </a>
- </div>
- {% end %}
- {% elif build.type == "scratch" %}
- <div class="card-header text-secondary">
- {{ _("Scratch build") }}
- </div>
- {% end %}
-
- <div class="card-body">
- <h4 class="card-title">
- <a href="/build/{{ build.uuid }}">
- {% if build.is_broken() %}
- <s>{{ build.name }}</s>
- {% else %}
- {{ build.name }}
- {% end %}
- </a>
- </h4>
-
- <hr>
-
- {% if build.type == "release" %}
- {% if build.commit %}
- {% module CommitMessage(build.commit) %}
-
- <hr>
-
- <p class="muted">
- {{ _("Author") }} {% module LinkToUser(build.commit.author) %}
- </p>
- {% else %}
- <p class="muted">
- {{ _("No commit message.") }}
- </p>
- {% end %}
-
- {% elif build.type == "scratch" %}
- <p class="muted">
- {{ _("Owner") }} {% module LinkToUser(build.owner) %}
- </p>
- {% end %}
- </div>
- <div class="card-footer text-muted text-right">
- {{ locale.format_date(build.created, shorter=True) }}
- </div>
-
-</div>
+++ /dev/null
-{% for b in builds %}
- {% module ChangelogEntry(b) %}
-{% end %}
-
{% end %}
{% end %}
- <div class="row">
- <div class="col-12 col-sm-12 col-md-6 col-lg-6 col-xl-6">
- {% module Changelog(builds=builds) %}
-
- <h5 class="text-center">
- <a href="/package/{{ name }}/changelog">{{ _("Full changelog") }}</a>
- </h5>
- </div>
- </div>
-
{% if bugs %}
<div class="row">
<div class="col-12 col-sm-12 col-md-6 col-lg-6 col-xl-6">
+++ /dev/null
-{% extends "../base.html" %}
-
-{% block title %}{{ _("Changelog of %s") % name }}{% 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="/packages">{{ _("Packages") }}</a></li>
- <li class="breadcrumb-item"><a href="/package/{{ name }}">{{ name }}</a></li>
- <li class="breadcrumb-item active"> <a href="/package/{{ name }}/changelog">{{ _("Changelog") }}</a></li>
- </ol>
- </nav>
- </div>
- </div>
-
- <div class="row">
- <div class="col-12 col-sm-12 col-md-12 col-lg-12 col-xl-12">
- <h2 style="word-wrap: break-word;">
- {{ name }}
- <br>
- <small>{{ _("Changelog") }}</small>
- </h2>
- </div>
- </div>
- <div class="row">
- <div class="col-12 col-sm-12 col-md-12 col-lg-12 col-xl-12">
- {% module Changelog(builds=builds) %}
- </div>
- </div>
-
- <div class="row">
- <div class="col-12 col-sm-12 col-md-12 col-lg-12 col-xl-12">
- <nav>
- <ul class="pagination justify-content-center">
- {% if have_prev %}
- <li class="page-item">
- <a class="page-link" href="?offset={{ offset - limit }}&limit={{ limit }}">← {{ _("Newer") }}</a>
- </li>
- {% else %}
- <li class="page-item disabled">
- <a class="page-link" href="#">← {{ _("Newer") }}</a>
- </li>
- {% end %}
- {% if have_next %}
- <li class="page-item">
- <a class="page-link" href="?offset={{ offset + limit }}&limit={{ limit }}">{{ _("Older") }} →</a>
- </li>
- {% else %}
- <li class="page-item disabled">
- <a class="page-link" href="#">{{ _("Older") }} →</a>
- </li>
- {% end %}
- </ul>
- </nav>
- </div>
- </div>
-{% end block %}
"BuildOffset" : ui_modules.BuildOffsetModule,
"BuildTable" : ui_modules.BuildTableModule,
- # Changelog
- "Changelog" : ui_modules.ChangelogModule,
- "ChangelogEntry" : ui_modules.ChangelogEntryModule,
-
# Jobs
"JobsList" : ui_modules.JobsListModule,
"JobsStatus" : ui_modules.JobsStatusModule,
(r"/package/([\w]{8}-[\w]{4}-[\w]{4}-[\w]{4}-[\w]{12})/view(.*)", packages.PackageFileViewHandler),
(r"/packages/([\w\-\+]+)", packages.PackageNameHandler),
(r"/package/([\w\-\+]+)/builds/scratch", packages.PackageScratchBuildsHandler),
- (r"/package/([\w\-\+]+)/changelog", packages.PackageChangelogHandler),
(r"/package/([\w\-\+]+)/properties", packages.PackagePropertiesHandler),
# Files
pkg=latest_build.pkg)
-class PackageChangelogHandler(base.BaseHandler):
- def get(self, name):
- limit = self.get_argument("limit", 10)
- try:
- limit = int(limit)
-
- except ValueError:
- limit = 10
-
- offset = self.get_argument("offset", 0)
- try:
- offset = int(offset)
- except ValueError:
- offset = 0
-
- # Get one more build than requested to find out if there are more items
- # to display (next button).
- builds = self.backend.builds.get_changelog(name, limit=limit + 1, offset=offset)
-
- if len(builds) >= limit:
- have_next = True
- else:
- have_next = False
-
- if offset < limit:
- have_prev = False
- else:
- have_prev = True
-
- # Clip list to limit.
- builds = builds[:limit]
-
- self.render("packages/changelog.html", name=name, builds=builds,
- limit=limit, offset=offset, have_prev=have_prev, have_next=have_next)
-
-
class PackageDetailHandler(base.BaseHandler):
def get(self, uuid):
pkg = self.backend.packages.get_by_uuid(uuid)
pkg=pkg, bugs=bugs)
-class ChangelogModule(UIModule):
- def render(self, name=None, builds=None, *args, **kwargs):
- if not builds:
- builds = self.backend.builds.get_changelog(name, *args, **kwargs)
-
- return self.render_string("modules/changelog/index.html", builds=builds)
-
-
-class ChangelogEntryModule(UIModule):
- def render(self, build):
- return self.render_string("modules/changelog/entry.html", build=build)
-
-
class CommitsTableModule(UIModule):
def render(self, distro, source, commits, full_format=True):
return self.render_string("modules/commits-table.html",