]> git.ipfire.org Git - pbs.git/commitdiff
releases: Fix creating a new release
authorMichael Tremer <michael.tremer@ipfire.org>
Tue, 11 Feb 2025 10:22:33 +0000 (10:22 +0000)
committerMichael Tremer <michael.tremer@ipfire.org>
Tue, 11 Feb 2025 10:22:33 +0000 (10:22 +0000)
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
src/buildservice/distros.py
src/templates/distros/releases/edit.html
src/web/distributions.py

index 8600e8d63fbf173c8c075e0234071f4577d0bfc1..c2154fa075563cef5b107f0880c9f03bde057315 100644 (file)
@@ -362,7 +362,7 @@ class Distro(database.Base, database.BackendMixin, database.SoftDeleteMixin):
 
                return await self.db.fetch_one(stmt)
 
-       async def create_release(self, name, user, stable=False):
+       async def create_release(self, name, **kwargs):
                """
                        Creates a new release
                """
@@ -375,8 +375,7 @@ class Distro(database.Base, database.BackendMixin, database.SoftDeleteMixin):
                        distro = self,
                        name   = name,
                        slug   = slug,
-                       user   = user,
-                       stable = stable,
+                       **kwargs,
                )
 
                # XXX create image jobs
index 3851807fb984978ec9997274fab171cae4dc2e94..58823b89970a396cfb1039b9e8685d92e2f26d80 100644 (file)
@@ -1,6 +1,14 @@
-{% extends "../../modal.html" %}
+{% extends "modal.html" %}
 
-{% block title %}{{ distro }} - {{ _("Create Release")}}{% end block %}
+{% block title %}
+       {{ distro }}
+       -
+       {% if release %}
+               {{ _("Edit Release") }}
+       {% else %}
+               {{ _("Create Release")}}
+       {% endif %}
+{% endblock %}
 
 {% block breadcrumbs %}
        <nav class="breadcrumb" aria-label="breadcrumbs">
                                <li class="is-active">
                                        <a href="#" aria-current="page">{{ _("Create") }}</a>
                                </li>
-                       {% end %}
+                       {% endif %}
                </ul>
        </nav>
-{% end block %}
+{% endblock %}
 
 {% block modal_title %}
        <h4 class="title is-4">
                        {{ _("Edit Release") }}
                {% else %}
                        {{ _("Create Release") }}
-               {% end %}
+               {% endif %}
        </h4>
+
        <h6 class="subtitle is-6">{{ distro }}</h6>
-{% end block %}
+{% endblock %}
 
 {% block modal %}
        <form method="POST" action="">
-               {% raw xsrf_form_html() %}
+               {{ xsrf_form_html() | safe }}
 
                {# Name #}
                <div class="field">
                        <label class="label">{{ _("Name") }}</label>
+
                        <div class="control">
                                <input class="input" type="text" name="name"
                                        placeholder="{{ _("Name") }}" required
-                                       {% if release %}value="{{ release.name }}"{% end %}>
+                                       {% if release %}value="{{ release.name }}"{% endif %}>
                        </div>
                </div>
 
                <div class="field">
                        <label class="checkbox">
                                <input type="checkbox" name="stable"
-                                               {% if release and release.stable %}checked{% end %}>
+                                               {% if release and release.stable %}checked{% endif %}>
                                        {{ _("Stable Release")}}
                        </label>
+
                        <p class="help">
                                {{ _("Check this box, if this release is a stable release") }}
                        </p>
                {# Announcement #}
                <div class="field">
                        <label class="label">{{ _("Announcement") }}</label>
+
                        <div class="control">
-                               <textarea class="input" name="announcement" placeholder="{{ _("Announcement") }}"
-                                       rows="16">{% if release %}{{ release.announcement }}{% end %}</textarea>
+                               <textarea class="textarea" name="announcement" placeholder="{{ _("Announcement") }}"
+                                       rows="16">{% if release %}{{ release.announcement }}{% endif %}</textarea>
                        </div>
                </div>
 
                                <button type="submit" class="button is-success is-fullwidth">
                                        {{ _("Create") }}
                                </button>
-                       {% end %}
+                       {% endif %}
                </div>
        </form>
-{% end block %}
+{% endblock %}
index 274fedde6cbe75990a9ad35d87d6923488a96ad7..6dc58a635a1d8cf1e9f75204ade5a8a9ea607980 100644 (file)
@@ -98,7 +98,7 @@ class ReleasesCreateHandler(base.BaseHandler):
                if not distro.has_perm(self.current_user):
                        raise tornado.web.HTTPError(403)
 
-               self.render("distros/releases/edit.html", release=None, distro=distro)
+               await self.render("distros/releases/edit.html", release=None, distro=distro)
 
        @base.authenticated
        async def post(self, distro_slug):
@@ -110,19 +110,15 @@ class ReleasesCreateHandler(base.BaseHandler):
                if not distro.has_perm(self.current_user):
                        raise tornado.web.HTTPError(403)
 
-               # Fetch arguments
-               name   = self.get_argument("name")
-               stable = self.get_argument_bool("stable")
-
-               with self.db.transaction():
-                       # Create the new release
-                       release = self.backend.distros.releases.create(
-                               distro=distro, name=name, stable=stable, user=self.current_user,
+               # Create the new release
+               async with await self.db.transaction():
+                       release = await distro.create_release(
+                               name         = self.get_argument("name"),
+                               stable       = self.get_argument_bool("stable"),
+                               created_by   = self.current_user,
+                               announcement = self.get_argument("announcement", None)
                        )
 
-                       # Store announcement
-                       release.announcement = self.get_argument("announcement", None)
-
                # Redirect to the new release page
                self.redirect(release.url)