]> git.ipfire.org Git - pbs.git/commitdiff
builders: Fix creating/deleting builders
authorMichael Tremer <michael.tremer@ipfire.org>
Tue, 21 Jan 2025 16:38:19 +0000 (16:38 +0000)
committerMichael Tremer <michael.tremer@ipfire.org>
Tue, 21 Jan 2025 16:38:19 +0000 (16:38 +0000)
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
src/buildservice/builders.py
src/buildservice/database.py
src/templates/builders/create.html
src/templates/builders/delete.html
src/templates/events/macros.html
src/web/builders.py

index 76496b760ee96caaddf5edef297ed2774f386794..0b680dc9140a35752b57b8704c9f3f7cab7da096 100644 (file)
@@ -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
index 0a47080bf654477fa3cd30d938d3281ac273e3cc..e19a5fa260b2cbdb589ced55a97fba04dfdcd9ff 100644 (file)
@@ -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)
index 5cf1a670788d7136cb9e2e03132e36159c4b1757..133d5535efbfd9b4434a9c37007d9093db32ae19 100644 (file)
@@ -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 %}
        <nav class="breadcrumb" aria-label="breadcrumbs">
                        </li>
                </ul>
        </nav>
-{% end block %}
+{% endblock %}
 
 {% block modal_title %}
        <h4 class="title is-4">{{ _("Create A New Builder") }}</h4>
-{% end block %}
+{% endblock %}
 
 {% block modal %}
        <form method="POST" action="">
-               {% raw xsrf_form_html() %}
+               {{ xsrf_form_html() | safe }}
 
-               {# Hostname #}
+               {# Name #}
                <div class="field">
-                       <label class="label">{{ _("Hostname") }}</label>
+                       <label class="label">{{ _("Name") }}</label>
+
                        <div class="control">
-                               <input class="input" type="fqdn" name="hostname"
-                                       placeholder="{{ _("Hostname") }}" required>
+                               <input class="input" type="fqdn" name="name"
+                                       placeholder="{{ _("Name") }}" required>
                        </div>
                </div>
 
@@ -39,4 +40,4 @@
                        </button>
                </div>
        </form>
-{% end block %}
+{% endblock %}
index c22505bcf60192461e76c2300c28c6c7d73167a8..d158bdb61b130ebeea1d474eb9dfbd8efb0755a6 100644 (file)
@@ -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 %}
        <nav class="breadcrumb" aria-label="breadcrumbs">
@@ -9,23 +9,23 @@
                                <a href="/builders">{{ _("Builders") }}</a>
                        </li>
                        <li>
-                               <a href="/builders/{{ builder.hostname }}">{{ builder }}</a>
+                               <a href="/builders/{{ builder.name }}">{{ builder }}</a>
                        </li>
                        <li class="is-active">
                                <a href="#" aria-current="page">{{ _("Delete") }}</a>
                        </li>
                </ul>
        </nav>
-{% end block %}
+{% endblock %}
 
 {% block modal_title %}
        <h4 class="title is-4">{{ _("Delete Builder") }}</h4>
        <h6 class="subtitle is-6">{{ builder }}</h6>
-{% end block %}
+{% endblock %}
 
 {% block modal %}
        <form method="POST" action="">
-               {% raw xsrf_form_html() %}
+               {{ xsrf_form_html() | safe }}
 
                <div class="content">
                        <p>
@@ -40,4 +40,4 @@
                        </button>
                </div>
        </form>
-{% end block %}
+{% endblock %}
index 29a9659f48b60633b7446e0c5e0710f53bc48379..b52896d8ab259fd2e76d726a48fced16dd287481 100644 (file)
                                        {% 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" %}
 
                                        {# Builder #}
                                        {% if show_builder and event.builder %}
-                                               <a class="level-item" href="/builders/{{ event.builder.hostname }}">
+                                               <a class="level-item" href="/builders/{{ event.builder.name }}">
                                                        {{ event.builder }}
                                                </a>
                                        {% endif %}
index fd778f2d55b3203a1639aab795125c8875db8704..2637a6c74e176e3f826346caf633652b40a5977d 100644 (file)
@@ -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")