[copr] master: Add copr_created signal (045dce0)

bkabrda at fedoraproject.org bkabrda at fedoraproject.org
Fri Feb 15 14:09:15 UTC 2013


Repository : http://git.fedorahosted.org/cgit/copr.git

On branch  : master

>---------------------------------------------------------------

commit 045dce0b7b5ad547b803bdbe10892134ca8868d8
Author: Bohuslav Kabrda <bkabrda at redhat.com>
Date:   Fri Feb 15 15:08:42 2013 +0100

    Add copr_created signal


>---------------------------------------------------------------

 coprs_frontend/coprs/logic/coprs_logic.py          |    2 ++
 coprs_frontend/coprs/signals.py                    |    1 +
 .../tests/test_views/test_coprs_ns/test_general.py |   16 ++++++++++++++++
 3 files changed, 19 insertions(+), 0 deletions(-)

diff --git a/coprs_frontend/coprs/logic/coprs_logic.py b/coprs_frontend/coprs/logic/coprs_logic.py
index 0a1d373..f124006 100644
--- a/coprs_frontend/coprs/logic/coprs_logic.py
+++ b/coprs_frontend/coprs/logic/coprs_logic.py
@@ -4,6 +4,7 @@ from coprs import db
 from coprs import exceptions
 from coprs import helpers
 from coprs import models
+from coprs import signals
 from coprs import whoosheers
 
 class CoprsLogic(object):
@@ -80,6 +81,7 @@ class CoprsLogic(object):
         if check_for_duplicates and cls.exists_for_current_user(user, copr.name).all():
             raise exceptions.DuplicateException(
                 'Copr: "{0}" already exists'.format(copr.name))
+        signals.copr_created.send(cls, copr=copr)
         db.session.add(copr)
 
     @classmethod
diff --git a/coprs_frontend/coprs/signals.py b/coprs_frontend/coprs/signals.py
index cc9b996..47c990c 100644
--- a/coprs_frontend/coprs/signals.py
+++ b/coprs_frontend/coprs/signals.py
@@ -3,3 +3,4 @@ import blinker
 coprs_signals = blinker.Namespace()
 
 build_finished = coprs_signals.signal('build-finished')
+copr_created = coprs_signals.signal('copr-created')
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 f57ecde..572bfef 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
@@ -1,5 +1,7 @@
 import flask
 
+from coprs.signals import copr_created
+
 from tests.coprs_test_case import CoprsTestCase
 
 class TestCoprsShow(CoprsTestCase):
@@ -72,6 +74,20 @@ class TestCoprNew(CoprsTestCase):
             # make sure no initial build was submitted
             assert self.models.Build.query.first() == None
 
+    def test_copr_new_emits_signal(self, f_users, f_mock_chroots, f_db):
+        with self.tc as c:
+            with c.session_transaction() as s:
+                s['openid'] = self.u1.openid_name
+            # TODO: this should probably be mocked...
+            signals_received = []
+            def test_receiver(sender, **kwargs):
+                signals_received.append(kwargs['copr'])
+            copr_created.connect(test_receiver)
+            r = c.post('/coprs/new/', data={'name': 'foo', 'fedora-rawhide-i386': 'y', 'arches': ['i386']}, follow_redirects=True)
+            assert len(signals_received) == 1
+            assert signals_received[0].name == 'foo'
+
+
     def test_copr_new_exists_for_another_user(self, f_users, f_coprs, f_mock_chroots, f_db):
         with self.tc as c:
             with c.session_transaction() as s:



More information about the copr-devel mailing list