From: Michael Tremer Date: Mon, 29 May 2023 12:36:36 +0000 (+0000) Subject: builders: Refactor creating new builders X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=1dd7d3a8c184167f38ea2eb858bd66f6ce141b85;p=pbs.git builders: Refactor creating new builders Signed-off-by: Michael Tremer --- diff --git a/Makefile.am b/Makefile.am index 5a038e89..5d7d067f 100644 --- a/Makefile.am +++ b/Makefile.am @@ -166,10 +166,10 @@ dist_templates_bugs_modules_DATA = \ templates_bugs_modulesdir = $(templates_bugsdir)/modules dist_templates_builders_DATA = \ + src/templates/builders/create.html \ src/templates/builders/delete.html \ src/templates/builders/edit.html \ src/templates/builders/index.html \ - src/templates/builders/new.html \ src/templates/builders/show.html templates_buildersdir = $(templatesdir)/builders diff --git a/src/templates/builders/create.html b/src/templates/builders/create.html new file mode 100644 index 00000000..5cf1a670 --- /dev/null +++ b/src/templates/builders/create.html @@ -0,0 +1,42 @@ +{% extends "../modal.html" %} + +{% block title %}{{ _("Create A New Builder") }}{% end block %} + +{% block breadcrumbs %} + +{% end block %} + +{% block modal_title %} +

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

+{% end block %} + +{% block modal %} +
+ {% raw xsrf_form_html() %} + + {# Hostname #} +
+ +
+ +
+
+ + {# Submit! #} +
+ +
+
+{% end block %} diff --git a/src/templates/builders/index.html b/src/templates/builders/index.html index fa101b6c..c839b813 100644 --- a/src/templates/builders/index.html +++ b/src/templates/builders/index.html @@ -45,7 +45,7 @@ {% end %} {% if current_user and current_user.is_admin() %} - + {{ _("Create Builder") }} {% end %} diff --git a/src/templates/builders/new.html b/src/templates/builders/new.html deleted file mode 100644 index b40b1e94..00000000 --- a/src/templates/builders/new.html +++ /dev/null @@ -1,47 +0,0 @@ -{% extends "../base.html" %} - -{% block title %}{{ _("Create new builder") }}{% end block %} - -{% block body %} - - -
-
-

- {{ _("Create a new builder") }} -

-
-
- -
-
-
- {% raw xsrf_form_html() %} -
-
- - - - {{ _("Enter the canonical hostname of the machine.") }} - -
- - -
-
-
-
-{% end block %} diff --git a/src/web/__init__.py b/src/web/__init__.py index 4e9878d3..9208ac2e 100644 --- a/src/web/__init__.py +++ b/src/web/__init__.py @@ -180,7 +180,7 @@ class Application(tornado.web.Application): # Builders (r"/builders", builders.IndexHandler), - (r"/builders/new", builders.BuilderNewHandler), + (r"/builders/create", builders.CreateHandler), (r"/builders/([A-Za-z0-9\-\.]+)", builders.ShowHandler), (r"/builders/([A-Za-z0-9\-\.]+)/delete", builders.BuilderDeleteHandler), (r"/builders/([A-Za-z0-9\-\.]+)/edit", builders.BuilderEditHandler), diff --git a/src/web/builders.py b/src/web/builders.py index 2b5c7833..0327d03f 100644 --- a/src/web/builders.py +++ b/src/web/builders.py @@ -88,23 +88,28 @@ class ShowHandler(base.BaseHandler): self.render("builders/show.html", builder=builder) -class BuilderNewHandler(base.BaseHandler): +class CreateHandler(base.BaseHandler): + @tornado.web.authenticated def get(self): - self.render("builders/new.html") + # Must be admin + if not self.current_user.is_admin(): + raise tornado.web.HTTPError(403) + + self.render("builders/create.html") @tornado.web.authenticated def post(self): - # Check permissions - if not builder.has_perm(self.current_user): + # Must be admin + if not self.current_user.is_admin(): raise tornado.web.HTTPError(403) - name = self.get_argument("name") + hostname = self.get_argument("hostname") # Create a new builder with self.db.transaction(): - builder = self.backend.builders.create(name, user=self.current_user) + builder = self.backend.builders.create(hostname, user=self.current_user) - self.redirect("/builders/%s" % builder.hostname) + self.redirect("/builders/%s/edit" % builder.hostname) class BuilderEditHandler(base.BaseHandler): @@ -114,6 +119,10 @@ class BuilderEditHandler(base.BaseHandler): if not builder: raise tornado.web.HTTPError(404, "Builder not found") + # Check permissions + if not builder.has_perm(self.current_user): + raise tornado.web.HTTPError(403) + self.render("builders/edit.html", builder=builder) @tornado.web.authenticated