From 900b1de18aacaef2c34e4d60d08f41c57bc8f0d5 Mon Sep 17 00:00:00 2001 From: Simon de Haan Date: Tue, 3 Feb 2015 21:53:39 +0200 Subject: [PATCH 1/3] use unicore.distribute --- requirements.txt | 4 +++- springboard/config.py | 1 + springboard/views.py | 7 +++++++ 3 files changed, 11 insertions(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index f633c2a..f0f43a8 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,8 +1,10 @@ elastic-git>=0.3.3 unicore.content +unicore.google +unicore.distribute pyramid pyramid_jinja2 -pyramid_celery +pyramid_celery>=2.0.0rc4 pyyaml waitress python-dateutil diff --git a/springboard/config.py b/springboard/config.py index d0ddbf5..50d8ca5 100644 --- a/springboard/config.py +++ b/springboard/config.py @@ -4,4 +4,5 @@ def includeme(config): config.add_route('category', '/category/{uuid}/') config.add_route('page', '/page/{uuid}/') config.add_route('flat_page', '/{slug}/') + config.add_route('api_notify', '/api/notify/') config.scan(".views") diff --git a/springboard/views.py b/springboard/views.py index 26a5959..82f0697 100644 --- a/springboard/views.py +++ b/springboard/views.py @@ -7,6 +7,7 @@ from springboard.utils import parse_repo_name from unicore.content.models import Category, Page +from unicore.distribute.tasks import fastforward from slugify import slugify @@ -64,3 +65,9 @@ def flat_page(self): slug = self.request.matchdict['slug'] [page] = self.all_pages.filter(language=self.language, slug=slug) return self.context(page=page) + + @view_config(route_name='api_notify', renderer='json') + def api_notify(self): + fastforward.delay(self.workspace.working_dir, + self.workspace.index_prefix) + return {} From 72ed5fc971629b887385f92a60c9dfb64cf58d82 Mon Sep 17 00:00:00 2001 From: Simon de Haan Date: Wed, 4 Feb 2015 10:33:35 +0200 Subject: [PATCH 2/3] test for api_notify --- springboard/tests/test_views.py | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/springboard/tests/test_views.py b/springboard/tests/test_views.py index ccc3101..698da1b 100644 --- a/springboard/tests/test_views.py +++ b/springboard/tests/test_views.py @@ -3,6 +3,8 @@ from pyramid import testing +import mock + class TestViews(SpringboardTestCase): @@ -55,3 +57,16 @@ def test_flatpage(self): self.mk_request(matchdict={'slug': page.slug})) context = views.flat_page() self.assertEqual(context['page'].uuid, page.uuid) + + @mock.patch('unicore.distribute.tasks.fastforward.delay') + def test_api_notify(self, mock_delay): + request = self.mk_request() + request.method = 'POST' + + views = SpringboardViews(request) + response = views.api_notify() + mock_delay.assert_called_once() + (working_dir, index_prefix), _ = mock_delay.call_args_list[0] + self.assertEqual(response, {}) + self.assertEqual(working_dir, self.workspace.working_dir) + self.assertEqual(index_prefix, self.workspace.index_prefix) From 261e7bee910cec71ce78be4543e60d51b5132e0f Mon Sep 17 00:00:00 2001 From: Simon de Haan Date: Wed, 4 Feb 2015 10:47:11 +0200 Subject: [PATCH 3/3] POST only for the api_notify route --- springboard/config.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/springboard/config.py b/springboard/config.py index 50d8ca5..26e1fc9 100644 --- a/springboard/config.py +++ b/springboard/config.py @@ -4,5 +4,5 @@ def includeme(config): config.add_route('category', '/category/{uuid}/') config.add_route('page', '/page/{uuid}/') config.add_route('flat_page', '/{slug}/') - config.add_route('api_notify', '/api/notify/') + config.add_route('api_notify', '/api/notify/', request_method='POST') config.scan(".views")