[copr] master: Refactor adding build and adding copr into template. Based on patch from Pingou - thanks. (80c7b9c)
bkabrda at fedoraproject.org
bkabrda at fedoraproject.org
Wed Jan 23 15:16:49 UTC 2013
Repository : http://git.fedorahosted.org/cgit/copr.git
On branch : master
>---------------------------------------------------------------
commit 80c7b9c446a410636d1a9438b21a6f1f15b791a9
Author: Bohuslav Kabrda <bkabrda at redhat.com>
Date: Wed Jan 23 15:33:09 2013 +0100
Refactor adding build and adding copr into template. Based on patch from Pingou - thanks.
>---------------------------------------------------------------
coprs_frontend/coprs/logic/builds_logic.py | 15 +++++++++
coprs_frontend/coprs/logic/coprs_logic.py | 16 ++++++++++
.../coprs/views/coprs_ns/coprs_general.py | 31 +++++++++-----------
3 files changed, 45 insertions(+), 17 deletions(-)
diff --git a/coprs_frontend/coprs/logic/builds_logic.py b/coprs_frontend/coprs/logic/builds_logic.py
index 465db18..1fde575 100644
--- a/coprs_frontend/coprs/logic/builds_logic.py
+++ b/coprs_frontend/coprs/logic/builds_logic.py
@@ -55,6 +55,21 @@ class BuildsLogic(object):
return models.Build.query.filter(models.Build.id.in_(ids))
@classmethod
+ def add_build(cls, user, pkgs, copr):
+ build = models.Build(
+ pkgs=pkgs,
+ copr=copr,
+ repos=copr.repos,
+ chroots=' '.join(map(
+ lambda x: x.chroot_name, copr.mock_chroots)
+ ),
+ user=user,
+ submitted_on=int(time.time()))
+ # no need to check for authorization here
+ cls.new(user, build, copr, check_authorized=False)
+ return build
+
+ @classmethod
def new(cls, user, build, copr, check_authorized = True):
if check_authorized:
if not user.can_build_in(copr):
diff --git a/coprs_frontend/coprs/logic/coprs_logic.py b/coprs_frontend/coprs/logic/coprs_logic.py
index 917bf6e..4f93d35 100644
--- a/coprs_frontend/coprs/logic/coprs_logic.py
+++ b/coprs_frontend/coprs/logic/coprs_logic.py
@@ -1,3 +1,5 @@
+import time
+
from coprs import db
from coprs import exceptions
from coprs import helpers
@@ -23,6 +25,20 @@ class CoprsLogic(object):
return query
@classmethod
+ def add_copr(cls, user, name, repos, selected_chroots, description, instructions):
+ copr = models.Copr(name=name,
+ repos=repos,
+ owner=user,
+ description=description,
+ instructions=instructions,
+ created_on=int(time.time()))
+ CoprsLogic.new(user, copr,
+ check_for_duplicates=False) # form validation checks for duplicates
+ CoprsChrootLogic.new_from_names(user, copr,
+ selected_chroots)
+ return copr
+
+ @classmethod
def get_multiple(cls, user, **kwargs):
user_relation = kwargs.get('user_relation', None)
username = kwargs.get('username', None)
diff --git a/coprs_frontend/coprs/views/coprs_ns/coprs_general.py b/coprs_frontend/coprs/views/coprs_ns/coprs_general.py
index 80a8be2..15ac156 100644
--- a/coprs_frontend/coprs/views/coprs_ns/coprs_general.py
+++ b/coprs_frontend/coprs/views/coprs_ns/coprs_general.py
@@ -59,30 +59,27 @@ def copr_add():
@coprs_ns.route('/new/', methods=['POST'])
@login_required
def copr_new():
+ """ Receive information from the user on how to create its new copr
+ and create it accordingly.
+ """
form = forms.CoprFormFactory.create_form_cls()()
if form.validate_on_submit():
- copr = models.Copr(name = form.name.data,
- description = form.description.data,
- instructions = form.instructions.data,
- repos = form.repos.data.replace('\n', ' '),
- owner = flask.g.user,
- created_on = int(time.time()))
- coprs_logic.CoprsLogic.new(flask.g.user, copr, check_for_duplicates = False) # form validation checks for duplicates
- coprs_logic.CoprsChrootLogic.new_from_names(flask.g.user, copr, form.selected_chroots)
+ copr = coprs_logic.CoprsLogic.add_copr(flask.g.user,
+ name=form.name.data,
+ repos=form.repos.data.replace('\n', ' '),
+ selected_chroots=form.selected_chroots,
+ description=form.description.data,
+ instructions=form.instructions.data)
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,
- repos = copr.repos,
- chroots = ' '.join(map(lambda x: x.chroot_name, copr.mock_chroots)),
- 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)
+ builds_logic.BuildsLogic.add_build(flask.g.user,
+ pkgs=form.initial_pkgs.data.replace('\n', ' '),
+ copr=copr)
db.session.commit()
- flask.flash('Initial packages were successfully submitted for building.')
+ flask.flash('Initial packages were successfully submitted '
+ 'for building.')
return flask.redirect(flask.url_for('coprs_ns.copr_detail', username=flask.g.user.name, coprname=copr.name))
else:
More information about the copr-devel
mailing list