Skip to content

Commit

Permalink
Merge pull request OCA#229 from gcoudu/bso_mailchimp
Browse files Browse the repository at this point in the history
BSO Mailchimp Webhooks
  • Loading branch information
nbessi committed Aug 8, 2018
2 parents f487d48 + 91fee81 commit 601ef0d
Show file tree
Hide file tree
Showing 2 changed files with 29 additions and 24 deletions.
29 changes: 27 additions & 2 deletions odoo/local-src/bso_mailchimp/models/mailchimp_list.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,8 @@
from datetime import datetime

from mailchimp3.helpers import get_subscriber_hash
from odoo import fields, models, api

from odoo import fields, models, api
from . import mailchimp_client

_logger = logging.getLogger(__name__)
Expand Down Expand Up @@ -129,13 +129,15 @@ def _update_action_window_context(self):
@api.model
def create(self, values):
record = super(MailchimpList, self).create(values)
client = self.env['mailchimp.client'].get_client()
if 'mailchimp_ref' in values:
record._create_webhook(client)
return record # Values are coming from Mailchimp -> Don't update

client = self.env['mailchimp.client'].get_client()
mailchimp_ref = record._create_list(client)
record.write({'mailchimp_ref': mailchimp_ref})
record._create_update_members(client)
record._create_webhook(client)

return record

Expand Down Expand Up @@ -244,3 +246,26 @@ def _create_update_members(self, client):
"update_existing": True
}
client.lists.update_members(self.mailchimp_ref, data)

def _create_webhook(self, client):
conf = self.env['ir.config_parameter']
webhook_url = conf.get_param('mailchimp.webhook_url')
if not webhook_url:
return
webhooks = client.lists.webhooks.all(list_id=self.mailchimp_ref)
if webhook_url in [w.get('url') for w in webhooks.get('webhooks', [])]:
return
data = {
"url": webhook_url,
"events": {
"subscribe": True,
"unsubscribe": True,
"campaign": True,
},
"sources": {
"user": True,
"admin": True,
"api": False
}
}
client.lists.webhooks.create(self.mailchimp_ref, data)
24 changes: 2 additions & 22 deletions odoo/local-src/bso_mailchimp/models/mailchimp_settings.py
Original file line number Diff line number Diff line change
Expand Up @@ -306,26 +306,6 @@ def update_counts(self):

@api.multi
def set_webhooks(self):
conf = self.env['ir.config_parameter']
webhook_url = conf.get_param('mailchimp.webhook_url')
if not webhook_url:
return
client = self.env['mailchimp.client'].get_client()
for list_id in self.env['mailchimp.list'].search([]):
self._create_webhook(webhook_url, list_id.mailchimp_ref, client)

def _create_webhook(self, webhook_url, list_ref, client):
data = {
"url": webhook_url,
"events": {
"subscribe": True,
"unsubscribe": True,
"campaign": True,
},
"sources": {
"user": True,
"admin": True,
"api": False
}
}
client.lists.webhooks.create(list_ref, data)
for mailchimp_list in self.env['mailchimp.list'].search([]):
mailchimp_list._create_webhook(client)

0 comments on commit 601ef0d

Please sign in to comment.