Repository :
http://git.fedorahosted.org/cgit/copr.git
On branch : master
---------------------------------------------------------------
commit 9e884983cae3f126b8c5be0da2314143ea5571c8
Author: Valentin Gologuzov <vgologuz(a)redhat.com>
Date: Thu Mar 19 21:39:29 2015 +0100
[frontend][api] Bug 1194592 - User is able to submit directory
---------------------------------------------------------------
frontend/coprs_frontend/coprs/forms.py | 12 ++++++++++--
.../coprs/views/api_ns/api_general.py | 2 +-
.../coprs/views/coprs_ns/coprs_builds.py | 15 ++++-----------
3 files changed, 15 insertions(+), 14 deletions(-)
diff --git a/frontend/coprs_frontend/coprs/forms.py
b/frontend/coprs_frontend/coprs/forms.py
index 76a8c21..b91600b 100644
--- a/frontend/coprs_frontend/coprs/forms.py
+++ b/frontend/coprs_frontend/coprs/forms.py
@@ -97,6 +97,13 @@ class StringListFilter(object):
return regex.sub(lambda x: '\n', result)
+class SrpmUrlListFilter(object):
+
+ def __call__(self, value):
+ return "\n".join(pkg for pkg in value.replace("\n", "
").split(" ")
+ if pkg.endswith(".src.rpm"))
+
+
class ValueToPermissionNumberFilter(object):
def __call__(self, value):
@@ -217,9 +224,10 @@ class BuildFormFactory(object):
pkgs = wtforms.TextAreaField(
"Pkgs",
validators=[
- wtforms.validators.Required(),
+ wtforms.validators.DataRequired(),
UrlListValidator()],
- filters=[StringListFilter()])
+ filters=[StringListFilter(),
+ SrpmUrlListFilter()])
memory_reqs = wtforms.IntegerField(
"Memory requirements",
diff --git a/frontend/coprs_frontend/coprs/views/api_ns/api_general.py
b/frontend/coprs_frontend/coprs/views/api_ns/api_general.py
index b8697b4..ed0c219 100644
--- a/frontend/coprs_frontend/coprs/views/api_ns/api_general.py
+++ b/frontend/coprs_frontend/coprs/views/api_ns/api_general.py
@@ -273,7 +273,7 @@ def copr_new_build(username, coprname):
elif form.validate_on_submit() and flask.g.user.can_build_in(copr):
# we're checking authorization above for now
# and also creating separate build for each package
- pkgs = form.pkgs.data.replace('\n', ' ').split("
")
+ pkgs = form.pkgs.data.split("\n")
ids = []
chroots = []
for chroot in copr.active_chroots:
diff --git a/frontend/coprs_frontend/coprs/views/coprs_ns/coprs_builds.py
b/frontend/coprs_frontend/coprs/views/coprs_ns/coprs_builds.py
index fe076f4..0cd4d56 100644
--- a/frontend/coprs_frontend/coprs/views/coprs_ns/coprs_builds.py
+++ b/frontend/coprs_frontend/coprs/views/coprs_ns/coprs_builds.py
@@ -96,16 +96,7 @@ def copr_new_build(username, coprname):
form = forms.BuildFormFactory.create_form_cls(copr.active_chroots)()
if form.validate_on_submit():
- pkgs = form.pkgs.data.replace("\n", " ").split("
")
-
- # validate (and skip bad) urls
- bad_urls = []
- for pkg in pkgs:
- if not re.match("^.*\.src\.rpm$", pkg):
- bad_urls.append(pkg)
- flask.flash("Bad url: {0} (skipped)".format(pkg))
- for bad_url in bad_urls:
- pkgs.remove(bad_url)
+ pkgs = form.pkgs.data.split("\n")
if not pkgs:
flask.flash("No builds submitted")
@@ -134,7 +125,9 @@ def copr_new_build(username, coprname):
flask.flash(str(e))
db.session.rollback()
else:
- flask.flash("Build was added")
+ for pkg in pkgs:
+ flask.flash("New build was created: {}".format(pkg))
+
db.session.commit()
return flask.redirect(flask.url_for("coprs_ns.copr_builds",