From: Michael Tremer Date: Fri, 24 Jun 2022 15:18:12 +0000 (+0000) Subject: repos: Make configuration downloadable X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=fa274c8289bbed266e27934661ab13a6fbd439ff;p=pbs.git repos: Make configuration downloadable Signed-off-by: Michael Tremer --- diff --git a/src/buildservice/jobs.py b/src/buildservice/jobs.py index 63235e63..a070406d 100644 --- a/src/buildservice/jobs.py +++ b/src/buildservice/jobs.py @@ -540,7 +540,7 @@ class Job(base.DataObject): # Then add all repositories for this build. for repo in self.get_build_repos(): - conf = repo.get_conf(local=local) + conf = repo.get_config(local=local) confs.append(conf) return "\n\n".join(confs) diff --git a/src/buildservice/repository.py b/src/buildservice/repository.py index 8c30a2e6..67838bb3 100644 --- a/src/buildservice/repository.py +++ b/src/buildservice/repository.py @@ -196,9 +196,9 @@ class Repository(base.DataObject): "mirrorlist?arch=%{arch}" )) - def get_conf(self, local=False): + def get_config(self, local=False): lines = [ - "[repo:%s]" % self.identifier, + "[repo:%s]" % self.slug, "description = %s - %s" % (self.distro.name, self.summary), "enabled = 1", "baseurl = %s/%%{arch}" % (self.path if local else self.url), @@ -445,16 +445,16 @@ class RepositoryAux(base.DataObject): return self.data.url @property - def identifier(self): + def slug(self): return self.name.lower() @property def distro(self): return self.pakfire.distros.get_by_id(self.data.distro_id) - def get_conf(self, local=False): + def get_config(self, local=False): lines = [ - "[repo:%s]" % self.identifier, + "[repo:%s]" % self.slug, "description = %s - %s" % (self.distro.name, self.name), "enabled = 1", "baseurl = %s" % self.url, diff --git a/src/templates/repos/show.html b/src/templates/repos/show.html index 9644997c..1110742f 100644 --- a/src/templates/repos/show.html +++ b/src/templates/repos/show.html @@ -33,6 +33,10 @@ {% end %} + + {{ _("Download Configuration") }} + +
{{ _("Statistics") }}
diff --git a/src/web/__init__.py b/src/web/__init__.py index c1f7e984..cef1554b 100644 --- a/src/web/__init__.py +++ b/src/web/__init__.py @@ -157,10 +157,9 @@ class Application(tornado.web.Application): (r"/distros", distributions.IndexHandler), (r"/distros/([A-Za-z0-9\-\.]+)", distributions.ShowHandler), (r"/distros/([A-Za-z0-9\-\.]+)/repos/([A-Za-z0-9\-]+)", repos.ShowHandler), + (r"/distros/([A-Za-z0-9\-\.]+)/repos/([A-Za-z0-9\-]+)\.repo", repos.ConfigHandler), (r"/distros/([A-Za-z0-9\-\.]+)/repos/([A-Za-z0-9\-]+)/builds", repos.BuildsHandler), - (r"/distro/([A-Za-z0-9\-\.]+)/repo/([A-Za-z0-9\-]+)\.repo", - RepositoryConfHandler), (r"/distro/([A-Za-z0-9\-\.]+)/repo/([A-Za-z0-9\-]+)/mirrorlist", RepositoryMirrorlistHandler), (r"/distro/([A-Za-z0-9\-\.]+)/repo/([A-Za-z0-9\-]+)/edit", diff --git a/src/web/handlers.py b/src/web/handlers.py index 802dd8f6..caa17a15 100644 --- a/src/web/handlers.py +++ b/src/web/handlers.py @@ -49,26 +49,6 @@ class RepositoryEditHandler(base.BaseHandler): self.render("repository-edit.html", distro=distro, repo=repo) -class RepositoryConfHandler(base.BaseHandler): - def get(self, distro, repo): - distro = self.backend.distros.get_by_slug(distro) - if not distro: - raise tornado.web.HTTPError(404) - - repo = distro.get_repo(repo) - if not repo: - raise tornado.web.HTTPError(404) - - # This is a plaintext file. - self.set_header("Content-Type", "text/plain") - - # Write the header. - self.write("# Downloaded from the pakfire build service on %s.\n\n" \ - % datetime.datetime.utcnow()) - self.write(repo.get_conf()) - self.finish() - - class RepositoryMirrorlistHandler(base.BaseHandler): def get(self, distro, repo): distro = self.backend.distros.get_by_slug(distro) diff --git a/src/web/repos.py b/src/web/repos.py index d3b9dfda..0c3cfd48 100644 --- a/src/web/repos.py +++ b/src/web/repos.py @@ -54,6 +54,28 @@ class BuildsHandler(base.BaseHandler): self.render("repos/builds.html", repo=repo, distro=repo.distro) +class ConfigHandler(base.BaseHandler): + def get(self, distro_slug, repo_slug): + # Find the distribution + distro = self.backend.distros.get_by_slug(distro_slug) + if not distro: + raise tornado.web.HTTPError(404, "Could not find distro: %s" % distro_slug) + + # Find the repository + repo = distro.get_repo(repo_slug) + if not repo: + raise tornado.web.HTTPError(404, "Could not find repo: %s" % repo_slug) + + # This is plain text + self.set_header("Content-Type", "text/plain") + + # Generate configuration + config = repo.get_config() + + # Send it to the client + self.finish(config) + + class ListModule(ui_modules.UIModule): def render(self, repos): return self.render_string("repos/modules/list.html", repos=repos)