def api(api=api, **kwargs): try: return api(**kwargs) except greatape.MailChimpError, exc: # http://apidocs.mailchimp.com/api/1.3/exceptions.field.php if exc.code <= 0: logger.critical(exc) elif exc.code < 120: logger.warn(exc) elif exc.code < 200: logger.info(exc)
def api(api=api, **kwargs): logger.info("mailchimp(%s)" % (", ".join( "%s=%r" % item for item in kwargs.items()))) try: return api(**kwargs) except greatape.MailChimpError, exc: # http://apidocs.mailchimp.com/api/1.3/exceptions.field.php if exc.code <= 0: logger.critical(exc.msg) elif exc.code < 120: logger.warn(exc.msg) elif exc.code < 200: logger.info(exc.msg)
def api(api=api, **kwargs): logger.info("mailchimp(%s)" % (", ".join("%s=%r" % item for item in kwargs.items()))) try: return api(**kwargs) except greatape.MailChimpError, exc: # http://apidocs.mailchimp.com/api/1.3/exceptions.field.php if exc.code <= 0: logger.critical(exc.msg) elif exc.code < 120: logger.warn(exc.msg) elif exc.code < 200: logger.info(exc.msg)
def __call__(self, context): try: utility = getUtility(IApiUtility, context=context) except ComponentLookupError: site = getSite() utility = getUtility(IApiUtility, context=site) else: utility = utility.__of__(context) wrapped = ImplicitAcquisitionWrapper(self, utility) generator = wrapped.get_terms() terms = tuple(generator) try: return SimpleVocabulary(terms) except ValueError as e: logger.info(e.message) return SimpleVocabulary([])
def __call__(self, context): try: utility = getUtility(IApiUtility, context=context) except ComponentLookupError: site = getSite() utility = getUtility(IApiUtility, context=site) else: utility = utility.__of__(context) wrapped = ImplicitAcquisitionWrapper(self, utility) generator = wrapped.get_terms() terms = tuple(generator) try: return SimpleVocabulary(terms) except ValueError as e: logger.info(e.message) return SimpleVocabulary([])
def handleApply(self, action): data, errors = self.extractData() if errors: self.status = self.formErrorsMessage return settings = IFeedSettings(self.context) api_key = settings.mailchimp_api_key next_url = self.nextURL() try: list_id = (data.pop('list_id', None) or self.getContent().mailinglist) try: name = data.pop('name') except KeyError: name = '' email = data.pop('email') interests = data.pop('interests') content = self.getContent() preselected = getattr(content, 'preselected_interest_groups', None) if preselected: if not interests: interests = preselected else: interests = interests + preselected if api_key: api = greatape.MailChimp(api_key, debug=False) # Negotiate language language = negotiate(self.request) # Split full name into first (given) and last name. try: fname, lname = queryUtility( INameSplitter, name=language, default=GenericNameSplitter).split_name(name) except AttributeError: fname, lname = u'', u'' # Log subscription attempt. logger.info(("listSubscribe(%r, %r, %r, %r)" % (list_id, email, fname, lname)).encode('utf-8')) merge_vars = { 'FNAME': fname.encode('utf-8'), 'LNAME': lname.encode('utf-8'), 'GROUPINGS': [ dict( id=grouping_id, groups=",".join( group.encode('utf-8').replace(',', '\\,') for group in group_names), ) for (grouping_id, group_names ) in create_groupings(interests).items() ] } for name, value in data.items(): if value is not None: merge_vars[name.upper()] = value.encode('utf-8') try: result = api(method="listSubscribe", id=list_id, email_address=email, update_existing=True, replace_interests=False, merge_vars=merge_vars) except greatape.MailChimpError, exc: logger.warn(exc.msg) # ... is not a valid interest grouping id for the list if exc.code == 270: return IStatusMessage(self.request).addStatusMessage( _(u"There was a problem signing you up for " u"the selected interest groups. This could " u"mean that the subscription service is " u"configured incorrectly. Please contact " u"the webmaster."), "error", ) else: if result: next_url += ('?' in next_url and '&' or '?') + 'success=yes' return IStatusMessage(self.request).addStatusMessage( _(u"Thank you for signing up. We'll send you a " u"confirmation message by e-mail shortly."), "info") IStatusMessage(self.request).addStatusMessage( _( u"An error occurred while processing your " u"request to sign up for ${email}. " u"Please try again!", mapping={'email': email}), "error")
def handleApply(self, action): data, errors = self.extractData() if errors: self.status = self.formErrorsMessage return settings = IFeedSettings(self.context) api_key = settings.mailchimp_api_key next_url = self.nextURL() try: list_id = ( data.pop('list_id', None) or self.getContent().mailinglist ) try: name = data.pop('name') except KeyError: name = '' email = data.pop('email') interests = data.pop('interests') content = self.getContent() preselected = getattr(content, 'preselected_interest_groups', None) if preselected: if not interests: interests = preselected else: interests = interests + preselected if api_key: api = greatape.MailChimp(api_key, debug=False) # Negotiate language language = negotiate(self.request) # Split full name into first (given) and last name. try: fname, lname = queryUtility( INameSplitter, name=language, default=GenericNameSplitter ).split_name(name) except AttributeError: fname, lname = u'', u'' # Log subscription attempt. logger.info(("listSubscribe(%r, %r, %r, %r)" % ( list_id, email, fname, lname)).encode('utf-8')) merge_vars = { 'FNAME': fname.encode('utf-8'), 'LNAME': lname.encode('utf-8'), 'GROUPINGS': [ dict( id=grouping_id, groups=",".join( group. encode('utf-8'). replace(',', '\\,') for group in group_names ), ) for (grouping_id, group_names) in create_groupings(interests).items() ] } for name, value in data.items(): if value is not None: merge_vars[name.upper()] = value.encode('utf-8') try: result = api( method="listSubscribe", id=list_id, email_address=email, update_existing=True, replace_interests=False, merge_vars=merge_vars ) except greatape.MailChimpError, exc: logger.warn(exc.msg) # ... is not a valid interest grouping id for the list if exc.code == 270: return IStatusMessage(self.request).addStatusMessage( _(u"There was a problem signing you up for " u"the selected interest groups. This could " u"mean that the subscription service is " u"configured incorrectly. Please contact " u"the webmaster."), "error", ) else: if result: next_url += ('?' in next_url and '&' or '?') + 'success=yes' return IStatusMessage(self.request).addStatusMessage( _(u"Thank you for signing up. We'll send you a " u"confirmation message by e-mail shortly."), "info" ) IStatusMessage(self.request).addStatusMessage( _(u"An error occurred while processing your " u"request to sign up for ${email}. " u"Please try again!", mapping={'email': email}), "error")