Пример #1
0
 def subscriberInfo(self, folder):
     """ get info for all subscribers of the newsletter """
     logger = getLogger('subscriber export')
     info = []
     for subscriber in folder.objectValues('Subscriber'):
         si = ISubscriberInfo(subscriber)
         if si.isActive():
             try:
                 data = si.getInfo()
             except KeyError:
                 logger.error('cannot get info for subscriber %r', subscriber)
                 continue
             for key, value in data.items():
                 key = field_map.get(key, key)
                 if isinstance(value, basestring):
                     try:
                         data[key] = safe_unicode(value).encode('iso-8859-1')
                     except UnicodeEncodeError:
                         logger.error('cannot encode info for subscriber %r', subscriber)
             info.append(data)
     return info
Пример #2
0
    errors['email'] = translate(msgid='email_required',
        default='Please enter a mail address.', domain='plonegazette')
elif context.alreadySubscriber(request.form.get('email')):
    errors['email'] = translate(msgid='already_subscriber',
        default='There is already a subscriber with this address', domain='plonegazette')

if errors:
    return request.form.copy(), errors

data, errors = context.subscribeFormProcess(request)

wftool = getToolByName(context, 'portal_workflow')
portal = getToolByName(context, 'portal_url').getPortalObject()
# TODO: the nlpath is hardcoded for now, should be made dynamic
nlpath= 'service/newsletter/sifatipp-karriere'
newsletter = portal.restrictedTraverse(nlpath)
validChars = [c for c in string.letters + string.digits if ord(c) < 128]
newId = ''.join([random.choice(validChars) for x in range(5)])
subscriber = newsletter.createSubscriberObject(newId)
subscriber.edit(active=True, email=request.form.get('email'))
info = ISubscriberInfo(subscriber)
info.setInfo(firstName=get('firstName'),
    lastName=get('lastName'),
    salutation=get('salutation'))
wftool.doActionFor(subscriber, 'publish')

return data, errors