Repository :
http://git.fedorahosted.org/cgit/copr.git
On branch : master
---------------------------------------------------------------
commit 906640441e831b246a7a0c9c5d8e43a02ea4caee
Author: Bohuslav Kabrda <bkabrda(a)redhat.com>
Date: Fri Dec 21 09:44:43 2012 +0100
Allow submitting initial packages for copr
---------------------------------------------------------------
coprs_frontend/coprs/forms.py | 3 ++
.../coprs/templates/coprs/_coprs_forms.html | 1 +
.../coprs/views/coprs_ns/coprs_general.py | 15 ++++++++++++-
.../tests/test_views/test_coprs_ns/test_general.py | 23 ++++++++++++++++++-
4 files changed, 39 insertions(+), 3 deletions(-)
diff --git a/coprs_frontend/coprs/forms.py b/coprs_frontend/coprs/forms.py
index 4fe86ac..69e6f69 100644
--- a/coprs_frontend/coprs/forms.py
+++ b/coprs_frontend/coprs/forms.py
@@ -86,6 +86,9 @@ class CoprForm(wtf.Form):
repos = wtf.TextAreaField('Repos',
validators = [UrlListValidator()],
filters = [StringListFilter()])
+ initial_pkgs = wtf.TextAreaField('Initial packages to build',
+ validators = [UrlListValidator()],
+ filters = [StringListFilter()])
@property
def chroots(self):
diff --git a/coprs_frontend/coprs/templates/coprs/_coprs_forms.html
b/coprs_frontend/coprs/templates/coprs/_coprs_forms.html
index 98e9b40..5f3baa4 100644
--- a/coprs_frontend/coprs/templates/coprs/_coprs_forms.html
+++ b/coprs_frontend/coprs/templates/coprs/_coprs_forms.html
@@ -10,6 +10,7 @@
{{ render_field(form.release) }}
{{ render_field(form.arches, size = 2) }}
{{ render_field(form.repos, rows = 10, cols = 50) }}
+ {{ render_field(form.initial_pkgs, rows = 10, cols = 50) }}
<dd><input type=submit value=Submit></dd>
</dl>
</form>
diff --git a/coprs_frontend/coprs/views/coprs_ns/coprs_general.py
b/coprs_frontend/coprs/views/coprs_ns/coprs_general.py
index 08dc164..f616ccc 100644
--- a/coprs_frontend/coprs/views/coprs_ns/coprs_general.py
+++ b/coprs_frontend/coprs/views/coprs_ns/coprs_general.py
@@ -12,6 +12,7 @@ from coprs.views.misc import login_required
from coprs.views.coprs_ns import coprs_ns
+from coprs.logic import builds_logic
from coprs.logic import coprs_logic
@coprs_ns.route('/', defaults = {'page': 1})
@@ -65,8 +66,20 @@ def copr_new():
created_on = int(time.time()))
coprs_logic.CoprsLogic.new(flask.g.user, copr, check_for_duplicates = False) #
form validation checks for duplicates
db.session.commit()
+ flask.flash('New copr was successfully created.')
+
+ if form.initial_pkgs.data:
+ build = models.Build(pkgs = form.initial_pkgs.data.replace('\n',
' '),
+ copr = copr,
+ chroots = copr.chroots,
+ repos = copr.repos,
+ user = flask.g.user,
+ submitted_on = int(time.time()))
+ # no need to check for authorization here
+ builds_logic.BuildsLogic.new(flask.g.user, build, copr, check_authorized =
False)
+ db.session.commit()
+ flask.flash('Initial packages were successfully submitted for
building.')
- flask.flash('New entry was successfully posted')
return flask.redirect(flask.url_for('coprs_ns.coprs_show'))
else:
return flask.render_template('coprs/add.html', form = form)
diff --git a/coprs_frontend/tests/test_views/test_coprs_ns/test_general.py
b/coprs_frontend/tests/test_views/test_coprs_ns/test_general.py
index 6a318bd..cf42e2c 100644
--- a/coprs_frontend/tests/test_views/test_coprs_ns/test_general.py
+++ b/coprs_frontend/tests/test_views/test_coprs_ns/test_general.py
@@ -58,6 +58,8 @@ class TestCoprsAllowed(CoprsTestCase):
assert r.data.count('<div class=copr>') == 1
class TestCoprNew(CoprsTestCase):
+ success_string = 'New copr was successfully created'
+
def test_copr_new_normal(self, f_users):
with self.tc as c:
with c.session_transaction() as s:
@@ -65,7 +67,10 @@ class TestCoprNew(CoprsTestCase):
r = c.post('/coprs/new/', data = {'name': 'foo',
'release': 'fedora-rawhide', 'arches': ['i386']},
follow_redirects = True)
assert self.models.Copr.query.filter(self.models.Copr.name ==
'foo').first()
- assert "New entry was successfully posted" in r.data
+ assert self.success_string in r.data
+
+ # make sure no initial build was submitted
+ assert self.models.Build.query.first() == None
def test_copr_new_exists_for_another_user(self, f_users, f_coprs):
with self.tc as c:
@@ -79,7 +84,7 @@ class TestCoprNew(CoprsTestCase):
r = c.post('/coprs/new/', data = {'name': self.c1.name,
'release': 'fedora-rawhide', 'arches': ['i386']},
follow_redirects = True)
self.db.session.add(self.c1)
assert len(self.models.Copr.query.filter(self.models.Copr.name ==
self.c1.name).all()) == foocoprs + 1
- assert "New entry was successfully posted" in r.data
+ assert self.success_string in r.data
def test_copr_new_exists_for_this_user(self, f_users, f_coprs):
with self.tc as c:
@@ -95,6 +100,20 @@ class TestCoprNew(CoprsTestCase):
assert len(self.models.Copr.query.filter(self.models.Copr.name ==
self.c1.name).all()) == foocoprs
assert "You already have copr named" in r.data
+ def test_copr_new_with_initial_pkgs(self, f_users):
+ with self.tc as c:
+ with c.session_transaction() as s:
+ s['openid'] = self.u1.openid_name
+
+ r = c.post('/coprs/new/', data = {'name': 'foo',
'release': 'fedora-rawhide', 'arches': ['i386'],
'initial_pkgs': ['http://f', 'http://b']}, follow_redirects =
True)
+ copr = self.models.Copr.query.filter(self.models.Copr.name ==
'foo').first()
+ assert copr
+ assert self.success_string in r.data
+
+ assert self.models.Build.query.first().copr == copr
+ assert copr.build_count == 1
+ assert 'Initial packages were successfully submitted' in r.data
+
class TestCoprDetail(CoprsTestCase):
def test_copr_detail_not_found(self):
r = self.tc.get('/coprs/detail/foo/bar/')