From a1a79be57033806642c0248b42a3ea55604d60a3 Mon Sep 17 00:00:00 2001 From: Sergey Fedoseev Date: Tue, 11 Feb 2014 00:02:54 +0600 Subject: [PATCH] add the ability to disable subscribers Closes-Bug: #1278014 Change-Id: I2fda89edb4f579dcb4a83b7872a3bc663a09ba84 --- requirements.txt | 4 +- .../dashboards/project/subscribers/tables.py | 30 ++++++++++++- .../dashboards/project/subscribers/tests.py | 42 +++++++++++++++++++ 3 files changed, 73 insertions(+), 3 deletions(-) diff --git a/requirements.txt b/requirements.txt index da20fd6..fad7239 100644 --- a/requirements.txt +++ b/requirements.txt @@ -9,5 +9,5 @@ horizon>=2013.2 -f http://tarballs.kickstand-project.org/python-payloadclient/python-payloadclient-0.0.1a2.tar.gz#egg=python-payloadclient-0.0.1a2 python-payloadclient>=0.0.1a2 --f http://tarballs.kickstand-project.org/python-ripcordclient/python-ripcordclient-0.0.1a1.tar.gz#egg=python-ripcordclient-0.0.1a1 -python-ripcordclient>=0.0.1a1 +-f http://tarballs.kickstand-project.org/python-ripcordclient/python-ripcordclient-0.0.1a2.tar.gz#egg=python-ripcordclient-0.0.1a2 +python-ripcordclient>=0.0.1a2 diff --git a/wildcard/dashboards/project/subscribers/tables.py b/wildcard/dashboards/project/subscribers/tables.py index 9ca55a9..38ad88f 100644 --- a/wildcard/dashboards/project/subscribers/tables.py +++ b/wildcard/dashboards/project/subscribers/tables.py @@ -34,6 +34,29 @@ class EditSubscriberLink(tables.LinkAction): classes = ("ajax-modal", "btn-edit") +class ToggleEnabled(tables.BatchAction): + name = "toggle" + action_present = (_("Enable"), _("Disable")) + action_past = (_("Enabled"), _("Disabled")) + data_type_singular = _("Subscriber") + data_type_plural = _("Subscribers") + classes = ("btn-toggle",) + + def allowed(self, request, subscriber=None): + if subscriber: + self.disabled = subscriber.disabled + self.current_present_action = int(not self.disabled) + return True + + def action(self, request, obj_id): + api.ripcord.subscriber_update( + request, + obj_id, + disabled=not self.disabled + ) + self.current_past_action = int(not self.disabled) + + class DeleteSubscribersAction(tables.DeleteAction): data_type_singular = _("Subscriber") data_type_plural = _("Subscribers") @@ -52,11 +75,16 @@ class SubscribersTable(tables.DataTable): ) domain = tables.Column('domain', verbose_name=_("Domain")) rpid = tables.Column('rpid', verbose_name=_("Remote Party ID")) + disabled = tables.Column("disabled", verbose_name=_("Disabled")) class Meta: name = "subscribers" verbose_name = _("Subscribers") - row_actions = (EditSubscriberLink, DeleteSubscribersAction) + row_actions = ( + EditSubscriberLink, + ToggleEnabled, + DeleteSubscribersAction, + ) table_actions = (CreateSubscriberLink, DeleteSubscribersAction) def get_object_id(self, datum): diff --git a/wildcard/dashboards/project/subscribers/tests.py b/wildcard/dashboards/project/subscribers/tests.py index 99b198c..29c062b 100644 --- a/wildcard/dashboards/project/subscribers/tests.py +++ b/wildcard/dashboards/project/subscribers/tests.py @@ -122,3 +122,45 @@ def test_delete(self): res = self.client.post(INDEX_URL, form_data) self.assertRedirectsNoFollow(res, INDEX_URL) + + @test.create_stubs({api.ripcord: ('subscriber_update', 'subscriber_list')}) + def test_enable_subscriber(self): + subscriber = self.subscribers.get(uuid='1') + subscriber.disabled = True + + api.ripcord.subscriber_list( + IsA(http.HttpRequest), + ).AndReturn(self.subscribers.list()) + api.ripcord.subscriber_update( + IsA(http.HttpRequest), + subscriber.uuid, + disabled=False + ).AndReturn(None) + + self.mox.ReplayAll() + + formData = {'action': 'subscribers__toggle__%s' % subscriber.uuid} + res = self.client.post(INDEX_URL, formData) + + self.assertRedirectsNoFollow(res, INDEX_URL) + + @test.create_stubs({api.ripcord: ('subscriber_update', 'subscriber_list')}) + def test_disable_subscriber(self): + subscriber = self.subscribers.get(uuid="1") + subscriber.disabled = False + + api.ripcord.subscriber_list( + IsA(http.HttpRequest), + ).AndReturn(self.subscribers.list()) + api.ripcord.subscriber_update( + IsA(http.HttpRequest), + subscriber.uuid, + disabled=True + ).AndReturn(None) + + self.mox.ReplayAll() + + formData = {'action': 'subscribers__toggle__%s' % subscriber.uuid} + res = self.client.post(INDEX_URL, formData) + + self.assertRedirectsNoFollow(res, INDEX_URL)