Repository : http://git.fedorahosted.org/cgit/copr.git
On branch : master
commit 906640441e831b246a7a0c9c5d8e43a02ea4caee Author: Bohuslav Kabrda bkabrda@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%27%5D%7D, 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/')
copr-devel@lists.stg.fedorahosted.org