[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