def available(self): if (checkPermission("cmf.ModifyPortalContent", self.context) or checkPermission("cmf.ReviewPortalContent", self.context) ) and (INewsletterIssue.providedBy(self.context) or INewsletter.providedBy(self.context)): return True return False
def unsubscribe(self): """ """ if protect is not None: alsoProvides(self.request, protect.interfaces.IDisableCSRFProtection) putils = getToolByName(self.context, "plone_utils") uid = self.request.get("subscriber") newsletter = self.context if not INewsletter.providedBy(newsletter): putils.addPortalMessage( _("Please use the correct unsubscribe url!"), "error") return self.request.response.redirect( api.portal.get_navigation_root(self).absolute_url()) # We do the deletion as the owner of the newsletter object # so that this is possible without login. owner = newsletter.getWrappedOwner() newSecurityManager(newsletter, owner) subscriber = api.content.get(UID=uid) if subscriber is None or not INewsletterSubscriber.providedBy( subscriber): putils.addPortalMessage(_("An error occured"), "error") else: del newsletter[subscriber.id] putils.addPortalMessage(_("You have been unsubscribed.")) return self.request.response.redirect( api.portal.get_navigation_root(self).absolute_url())
def test_ct_newsletter_factory(self): fti = queryUtility(IDexterityFTI, name='Newsletter') factory = fti.factory obj = createObject(factory) self.assertTrue( INewsletter.providedBy(obj), u'INewsletter not provided by {0}!'.format( obj, ), )
def test_ct_newsletter_adding(self): setRoles(self.portal, TEST_USER_ID, ['Contributor']) obj = api.content.create( container=self.portal, type='Newsletter', id='newsletter', ) self.assertTrue( INewsletter.providedBy(obj), u'INewsletter not provided by {0}!'.format( obj.id, ), ) parent = obj.__parent__ self.assertIn('newsletter', parent.objectIds()) # check that deleting the object works too api.content.delete(obj=obj) self.assertNotIn('newsletter', parent.objectIds())
def __call__(self): """ """ alsoProvides(self.request, protect.interfaces.IDisableCSRFProtection) uid = self.request.get("subscriber") newsletter = self.context if not INewsletter.providedBy(newsletter): api.portal.show_message( message=_("Please use the correct unsubscribe url!"), request=self.request, type="error", ) return self.request.response.redirect( api.portal.get_navigation_root(self).absolute_url() ) # We do the deletion as the owner of the newsletter object # so that this is possible without login. owner = newsletter.getWrappedOwner() newSecurityManager(newsletter, owner) subscriber = api.content.get(UID=uid) if subscriber is None or not INewsletterSubscriber.providedBy(subscriber): api.portal.show_message( message=_("An error occured"), request=self.request, type="error", ) else: del newsletter[subscriber.id] api.portal.show_message( message=_("You have been unsubscribed."), request=self.request, type="info", ) return self.request.response.redirect( api.portal.get_navigation_root(self).absolute_url() )
def test_create_newsletter(self): self.assertTrue(INewsletter.providedBy(self.newsletter))