[docs]class CampaignResourceMixin(object):
"""Methods for managing Campaign resources."""
[docs] def list_campaigns(self, site_id, **options):
"""Return list of campaigns for a site."""
return self.get(self._campaign_path(site_id), params=options).json()
[docs] def get_campaign(self, site_id, campaign_id):
"""Return details for a particular campaign.
>>> campaign = yola.get_campaign('site_id', 'campaign_id')
>>> campaign['name']
'My Campaign'
"""
return self.get(self._campaign_path(site_id, campaign_id)).json()
[docs] def delete_campaign(self, site_id, campaign_id):
"""Delete a campaign."""
self.delete(self._campaign_path(site_id, campaign_id))
[docs] def subscribe_to_campaign(self, site_id, campaign_id):
"""Subscribe to a campaign.
>>> params = {...}
>>> yola.subscribe_to_campaign('site_id', 'campaign_id', params)
See https://wl.qa.yola.net/sites/SITE_ID/campaigns/ for expected
params.
"""
self.post(self._campaign_path(site_id, campaign_id, 'subscribe'))
[docs] def cancel_campaign_subscription(self, site_id, campaign_id):
"""Cancel a campaign subscription."""
self.post(
self._campaign_path(site_id, campaign_id, 'cancel_subscription'))
def _campaign_path(self, site_id, *parts):
path = '/'.join(['sites', site_id, 'campaigns'] + list(parts))
return '/%s/' % path