Exemplo n.º 1
0
    def process(self,
                method,
                subject=None,
                create_draft=False,
                schedule=None,
                **data):
        settings = IFeedSettings(self.context)
        api_key = settings.mailchimp_api_key

        view = getMultiAdapter((self.context.aq_parent, self.request),
                               name="chimpfeed-campaign")

        params = self.makeParams(**data)
        rendered = view.template(**params).encode('utf-8')
        next_url = self.request.get('HTTP_REFERER') or self.action

        segments = view.getSegments(**params).items()
        if segments:
            segment_opts = {
                'match':
                'all',
                'conditions': [{
                    'field': 'interests-%s' % groupingid,
                    'op': 'one',
                    'value': groupids
                } for groupingid, groupids in segments[:10]]
            }

            if len(segments) > 10:
                count = len(segments) - 10
                IStatusMessage(self.request).addStatusMessage(
                    _(u"%d segments were ignored "
                      u"(Mailchimp limits this to 10)." % count), "warning")
        else:
            segment_opts = {}

        return self.createCampaign(api_key, method, subject, create_draft,
                                   schedule, rendered, next_url, segment_opts)
Exemplo n.º 2
0
    def process(self,
                method,
                subject=None,
                create_draft=False,
                schedule=None,
                interests=None,
                **data):
        settings = IFeedSettings(self.context)
        api_key = settings.mailchimp_api_key

        view = getMultiAdapter((self.context.aq_parent, self.request),
                               name="chimpfeed-newsletter-campaign")

        rendered = view.template().encode('utf-8')
        next_url = self.request.get('HTTP_REFERER') or self.action
        segment_conditions = self.getSegmentConditions(interests)

        return self.createCampaign(
            api_key, method, subject, create_draft, schedule, rendered,
            next_url, segment_conditions and {
                'match': 'any',
                'conditions': segment_conditions
            } or None)
Exemplo n.º 3
0
    def process(self, method, subject=None,
                create_draft=False, schedule=None, interests=None,
                **data):
        settings = IFeedSettings(self.context)
        api_key = settings.mailchimp_api_key

        view = getMultiAdapter(
            (self.context.aq_parent, self.request),
            name="chimpfeed-newsletter-campaign"
        )

        rendered = view.template().encode('utf-8')
        next_url = self.request.get('HTTP_REFERER') or self.action
        segment_conditions = self.getSegmentConditions(interests)

        return self.createCampaign(
            api_key, method, subject,
            create_draft, schedule, rendered, next_url,
            segment_conditions and {
                'match': 'any',
                'conditions': segment_conditions
            } or None
        )
Exemplo n.º 4
0
    def process(self, method, subject=None,
                create_draft=False, schedule=None, **data):
        settings = IFeedSettings(self.context)
        api_key = settings.mailchimp_api_key

        view = getMultiAdapter(
            (self.context.aq_parent, self.request), name="chimpfeed-campaign"
        )

        params = self.makeParams(**data)
        rendered = view.template(**params).encode('utf-8')
        next_url = self.request.get('HTTP_REFERER') or self.action

        segments = view.getSegments(**params).items()
        if segments:
            segment_opts = {
                'match': 'all',
                'conditions':
                [{'field': 'interests-%s' % groupingid,
                  'op':'one',
                  'value': groupids}
                 for groupingid, groupids in segments[:10]
                 ]}

            if len(segments) > 10:
                count = len(segments) - 10
                IStatusMessage(self.request).addStatusMessage(
                    _(u"%d segments were ignored "
                      u"(Mailchimp limits this to 10)." % count),
                    "warning"
                )
        else:
            segment_opts = {}

        return self.createCampaign(api_key, method, subject, create_draft,
                                   schedule, rendered, next_url, segment_opts)