def tests_get_subscription(self): """Test retrieving subscriptions information. """ manager_root = ISubscriptionManager(self.root) manager_root.subscribability = SUBSCRIBABLE manager_root.subscribe("*****@*****.**") manager_folder = ISubscriptionManager(self.root.folder) manager_folder.subscribe("*****@*****.**") manager = ISubscriptionManager(self.root.folder.index) manager.subscribability = SUBSCRIBABLE manager.subscribe("*****@*****.**") self.assertEqual(manager.get_subscription("*****@*****.**"), None) subscription = manager.get_subscription("*****@*****.**") self.assertTrue(verifyObject(ISubscription, subscription)) self.assertEqual(subscription.email, "*****@*****.**") self.assertEqual(subscription.content, self.root) self.assertEqual(len(manager.get_subscriptions()), 3) manager_root.subscribability = NOT_SUBSCRIBABLE self.assertEqual(manager.get_subscription("*****@*****.**"), None) subscription = manager.get_subscription("*****@*****.**") self.assertTrue(verifyObject(ISubscription, subscription)) self.assertEqual(subscription.email, "*****@*****.**") self.assertEqual(subscription.content, self.root.folder.index) self.assertEqual(len(manager.get_subscriptions()), 1)
def request_subscription(self, content, email): # Send out request for subscription # NOTE: no doc string, so, not *publishable* TTW # if not self.are_subscriptions_enabled(): raise errors.NotSubscribableError() manager = ISubscriptionManager(content, None) # see if content is subscribable if manager is None or not manager.is_subscribable(): raise errors.NotSubscribableError() # validate address if not isValidMailAddress(email): raise errors.InvalidEmailaddressError() # check if not yet subscribed subscription = manager.get_subscription(email) if subscription is not None: # send an email informing about this situation self._send_confirmation( content, subscription.content, email, 'already_subscribed_template', 'confirm_subscription') raise errors.AlreadySubscribedError() # send confirmation email to emailaddress self._send_confirmation( content, content, email, 'subscription_confirmation_template', 'confirm_subscription')
def request_cancellation(self, content, email): # Send out request for cancellation of the subscription # NOTE: no doc string, so, not *publishable* TTW # manager = ISubscriptionManager(content, None) if manager is None: raise errors.NotSubscribableError() # validate address if not isValidMailAddress(email): raise errors.InvalidEmailaddressError() # check if indeed subscribed subscription = manager.get_subscription(email) if subscription is None: # send an email informing about this situation self._send_information(content, email, 'not_subscribed_template') raise errors.NotSubscribedError() self._send_confirmation( content, subscription.content, email, 'cancellation_confirmation_template', 'confirm_cancellation')