def unSubscribe(self, subscriber_id, REQUEST=None): """The subscriber clicked the Unsubscribe button """ subscriber = self.getSubscriberById(subscriber_id) if subscriber is not None: charset = self.ploneCharset() subscriber_email = subscriber.email.strip() # Make and send the unsubscribe mail # REMOVE UnSubscribe Emmail Notification #mailMsg=email.Message.Message() #mailMsg["To"]=subscriber_email #mailMsg["From"]=self.authorEmail #mailMsg["Subject"]=str(Header(safe_unicode(self.unsubscribeMailSubject), 'utf8')) #mailMsg["Date"]=email.Utils.formatdate(localtime=1) #mailMsg["Message-ID"]=email.Utils.make_msgid() #mailMsg["Mime-version"]="1.0" # #bodyText = self.unsubscribeMailTemplate % {'email': subscriber_email} #mailMsg["Content-type"]="text/plain" #mailMsg.set_payload(safe_unicode(bodyText).encode(charset), charset) #mailMsg.epilogue="\n" # To ensure that message ends with newline # #self.sendmail(self.authorEmail, (subscriber_email,), mailMsg, subject = mailMsg['subject']) parent = subscriber.aq_parent parent.manage_delObjects([subscriber_id,]) newSecurityManager(REQUEST, ownerOfObject(self)) if REQUEST is not None: REQUEST.RESPONSE.redirect(self.absolute_url() + '/NewsletterTheme_unsubscribed') return
def unSubscribe(self, subscriber_id, REQUEST=None): """The subscriber clicked the Unsubscribe button """ subscriber = self.getSubscriberById(subscriber_id) mtool = getToolByName(self, 'portal_membership') checkPermission = mtool.checkPermission can_access_theme = checkPermission(permissions.View, self) newSecurityManager(REQUEST, ownerOfObject(self)) if subscriber is not None: parent = subscriber.aq_parent parent.manage_delObjects([subscriber_id,]) if REQUEST is not None: # Check if we have access to the newsletter theme if can_access_theme: REQUEST.RESPONSE.redirect(self.absolute_url() + '/NewsletterTheme_unsubscribed') else: portal_url = getToolByName(self, 'portal_url')() plone_utils = getToolByName(self, 'plone_utils') plone_utils.addPortalMessage(_('unsubscribe_success_message', default=u"You have been successfully unsubscribed from this newsletter.")) REQUEST.RESPONSE.redirect(portal_url) return
def subscribeFormProcess(self, REQUEST=None): """Handles NewsletterTheme_subscribeForm""" if REQUEST is None: REQUEST = self.REQUEST errors = {} data = {} charset = self.ploneCharset() if REQUEST.form.has_key('email'): # Form submitted emailaddress = REQUEST.form.get('email', '').strip() data['email'] = emailaddress if not emailaddress: errors['email'] = translate(_('input_required', default=u'Input is required but no input given'), context=REQUEST) return data, errors if not checkMailAddress(self, emailaddress): errors['email'] = translate(_('invalid_email_address', default=u'This is not a valid mail address'), context=REQUEST) return data, errors format = REQUEST.form.get('format', self.default_format) data['format'] = format if self.alreadySubscriber(emailaddress): errors['email'] = translate(_('already_subscribed', default=u'There is already a subscriber with this address'), context=REQUEST) if not errors: # Creating the new account self._subscribersCount += 1 newId = self._getRandomIdForSubscriber() # Continue method as owner of this object for "invokeFactory" security checkings. # (creating new objects through invokeFactory is not possible as anonymous because an owner is required) oldSecurityManager = getSecurityManager() newSecurityManager(REQUEST, ownerOfObject(self)) newSubscriber = self.createSubscriberObject(newId) newSubscriber.edit(format=format, active=0, email=emailaddress) setSecurityManager(oldSecurityManager) # Make URL for editing this object subscriberEditUrl = newSubscriber.absolute_url() + '/Subscriber_editForm' # :( FIXME #actions_tool = getToolByName(self, 'portal_actions') #actions = actions_tool.listFilteredActionsFor(object=newSubscriber) #subscriberEditUrl = [action['url'] for action in actions['object'] # if action['id'] == 'edit'][0] # Make and send the activation mail """ mailBody = ("From: %s\r\n" "To: %s\r\n" "Content-Type: text/plain; charset=%s\r\n" "Subject: %s\r\n\r\n") mailBody = mailBody % (self.authorEmail, data['email'], self.ploneCharset(), self.activationMailSubject) mailBody += self.activationMailTemplate % {'url': self.absolute_url() + '?active=%s&format=%s' % (newId, format), 'email': emailaddress} """ mailMsg=email.Message.Message() mailMsg["To"]=data['email'] mailMsg["From"]=self.authorEmail mailMsg["Subject"]=str(Header(safe_unicode(self.activationMailSubject), 'utf8')) mailMsg["Date"]=email.Utils.formatdate(localtime=1) mailMsg["Message-ID"]=email.Utils.make_msgid() mailMsg["Mime-version"]="1.0" bodyText = self.activationMailTemplate % {'url': self.absolute_url() + '?active=%s&format=%s' % (newId, format), 'email': emailaddress} mailMsg["Content-type"]="text/plain" mailMsg.set_payload(safe_unicode(bodyText).encode(charset), charset) #mailMsg.preamble="Mime message\n" mailMsg.epilogue="\n" # To ensure that message ends with newline try: self.sendmail(self.authorEmail, (emailaddress,), mailMsg, subject = mailMsg['subject']) except Exception, e: # The email could not be sent, probably the specified address doesn't exist errors['email'] = translate('Email could not be sent. Error message is: ${error}', mapping={'error':str(e)}, context=self) data['email'] = emailaddress data['format'] = self.default_format transaction.abort() return data, errors if self.notify: # Notify the NewsletterTheme owner """mailBody = ("From: %s\r\n" "To: %s\r\n" "Content-Type: text/plain; charset=%s\r\n" "Subject: %s : %s\r\n\r\n" "%s\n%s") mailBody = mailBody % (self.authorEmail, self.testEmail, self.ploneCharset(), self.title, translate("Newsletter new subscriber", domain='plonegazette', context=REQUEST), translate("See the new account at...", domain='plonegazette', context=REQUEST), subscriberEditUrl) subject = "Subject: %s : %s" % (self.title, translate("Newsletter new subscriber", domain='plonegazette', context=REQUEST)) """ subject = "%s : %s" % (self.title, translate("Newsletter new subscriber", domain='plonegazette', context=REQUEST)) mailMsg=email.Message.Message() mailMsg["To"]=self.testEmail mailMsg["From"]=self.authorEmail mailMsg["Subject"]=str(Header(safe_unicode(subject), 'utf8')) mailMsg["Date"]=email.Utils.formatdate(localtime=1) mailMsg["Message-ID"]=email.Utils.make_msgid() mailMsg["Mime-version"]="1.0" bodyText = "%s\n%s" % (translate("See the new account at...", context=REQUEST, domain='plonegazette'), subscriberEditUrl) mailMsg["Content-type"]="text/plain" #mailMsg.set_charset(charset) mailMsg.set_payload(safe_unicode(bodyText).encode(charset), charset) #mailMsg.preamble="Mime message\n" mailMsg.epilogue="\n" # To ensure that message ends with newline self.sendmail(self.authorEmail, (self.testEmail,), mailMsg, subject = mailMsg['subject']) data['success'] = 1