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
"""
distro = self,
name = name,
slug = slug,
- user = user,
- stable = stable,
+ **kwargs,
)
# XXX create image jobs
-{% 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 %}
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):
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)