From: Michael Tremer Date: Tue, 21 Jan 2025 16:38:19 +0000 (+0000) Subject: builders: Fix creating/deleting builders X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=ccaa00f68c26b7af648df1c388c5eca8d3f79ffa;p=pbs.git builders: Fix creating/deleting builders Signed-off-by: Michael Tremer --- diff --git a/src/buildservice/builders.py b/src/buildservice/builders.py index 76496b76..0b680dc9 100644 --- a/src/buildservice/builders.py +++ b/src/buildservice/builders.py @@ -42,14 +42,13 @@ class Builders(base.Object): # Initialize stats self.stats = BuildersStats(self.backend) - async def create(self, name, user=None): + async def create(self, **kwargs): """ Creates a new builder """ builder = await self.db.insert( Builder, - name = name, - user = user, + **kwargs, ) return builder diff --git a/src/buildservice/database.py b/src/buildservice/database.py index 0a47080b..e19a5fa2 100644 --- a/src/buildservice/database.py +++ b/src/buildservice/database.py @@ -431,12 +431,12 @@ class SoftDeleteMixin: """ deleted_at = Column(DateTime(timezone=False), nullable=True) - def delete(self, user=None): + async def delete(self, deleted_by=None): """ Called to delete this object """ setattr(self, "deleted_at", sqlalchemy.func.current_timestamp()) # Optionally set deleted_by - if user: - setattr(self, "deleted_by", user) + if deleted_by: + setattr(self, "deleted_by", deleted_by) diff --git a/src/templates/builders/create.html b/src/templates/builders/create.html index 5cf1a670..133d5535 100644 --- a/src/templates/builders/create.html +++ b/src/templates/builders/create.html @@ -1,6 +1,6 @@ -{% extends "../modal.html" %} +{% extends "modal.html" %} -{% block title %}{{ _("Create A New Builder") }}{% end block %} +{% block title %}{{ _("Create A New Builder") }}{% endblock %} {% block breadcrumbs %} -{% end block %} +{% endblock %} {% block modal_title %}

{{ _("Create A New Builder") }}

-{% end block %} +{% endblock %} {% block modal %}
- {% raw xsrf_form_html() %} + {{ xsrf_form_html() | safe }} - {# Hostname #} + {# Name #}
- + +
- +
@@ -39,4 +40,4 @@
-{% end block %} +{% endblock %} diff --git a/src/templates/builders/delete.html b/src/templates/builders/delete.html index c22505bc..d158bdb6 100644 --- a/src/templates/builders/delete.html +++ b/src/templates/builders/delete.html @@ -1,6 +1,6 @@ -{% extends "../modal.html" %} +{% extends "modal.html" %} -{% block title %}{{ _("Delete Builder") }} - {{ builder }}{% end block %} +{% block title %}{{ _("Delete Builder") }} - {{ builder }}{% endblock %} {% block breadcrumbs %} -{% end block %} +{% endblock %} {% block modal_title %}

{{ _("Delete Builder") }}

{{ builder }}
-{% end block %} +{% endblock %} {% block modal %}
- {% raw xsrf_form_html() %} + {{ xsrf_form_html() | safe }}

@@ -40,4 +40,4 @@

-{% end block %} +{% endblock %} diff --git a/src/templates/events/macros.html b/src/templates/events/macros.html index 29a9659f..b52896d8 100644 --- a/src/templates/events/macros.html +++ b/src/templates/events/macros.html @@ -211,11 +211,11 @@ {% elif event.type == "mirror-offline" %} {{ _("Mirror Went Offline") }} {% elif event.type == "repository-build-added" %} - {{ _("Build has been added to repository %s") % event.repository }} + {{ _("Build has been added to repository %s") % event.repo }} {% elif event.type == "repository-build-moved" %} - {{ _("Build has been moved to repository %s") % event.repository }} + {{ _("Build has been moved to repository %s") % event.repo }} {% elif event.type == "repository-build-removed" %} - {{ _("Build has been removed from repository %s") % event.repository }} + {{ _("Build has been removed from repository %s") % event.repo }} {% elif event.type == "release-monitoring-created" %} {{ _("Release Monitoring has been enabled for %s") % event.package_name }} {% elif event.type == "release-monitoring-deleted" %} @@ -310,7 +310,7 @@ {# Builder #} {% if show_builder and event.builder %} - + {{ event.builder }} {% endif %} diff --git a/src/web/builders.py b/src/web/builders.py index fd778f2d..2637a6c7 100644 --- a/src/web/builders.py +++ b/src/web/builders.py @@ -100,28 +100,19 @@ class ShowHandler(base.BaseHandler): await self.render("builders/show.html", builder=builder, **args) -class CreateHandler(base.BaseHandler): - @base.authenticated +class CreateHandler(base.AdminHandler): async def get(self): - # Must be admin - if not self.current_user.is_admin(): - raise tornado.web.HTTPError(403) - - self.render("builders/create.html") + await self.render("builders/create.html") - @base.authenticated async def post(self): - # Must be admin - if not self.current_user.is_admin(): - raise tornado.web.HTTPError(403) - - hostname = self.get_argument("hostname") - # Create a new builder async with await self.db.transaction(): - builder = self.backend.builders.create(hostname, user=self.current_user) + builder = await self.backend.builders.create( + name = self.get_argument("name"), + created_by = await self.get_current_user(), + ) - self.redirect("/builders/%s/edit" % builder.hostname) + self.redirect("/builders/%s/edit" % builder.name) class EditHandler(base.BaseHandler): @@ -167,7 +158,7 @@ class EditHandler(base.BaseHandler): class DeleteHandler(base.BaseHandler): @base.authenticated async def get(self, name): - builder = self.backend.builders.get_by_name(name) + builder = await self.backend.builders.get_by_name(name) if not builder: raise tornado.web.HTTPError(404, "Builder not found: %s" % name) @@ -178,11 +169,11 @@ class DeleteHandler(base.BaseHandler): if not builder.has_perm(current_user): raise tornado.web.HTTPError(403) - self.render("builders/delete.html", builder=builder) + await self.render("builders/delete.html", builder=builder) @base.authenticated - async def post(self, hostname): - builder = self.backend.builders.get_by_name(hostname) + async def post(self, name): + builder = await self.backend.builders.get_by_name(name) if not builder: raise tornado.web.HTTPError(404, "Builder not found: %s" % hostname) @@ -195,7 +186,7 @@ class DeleteHandler(base.BaseHandler): # Delete the builder async with await self.db.transaction(): - await builder.delete(user=self.current_user) + await builder.delete(deleted_by=current_user) self.redirect("/builders")