def create_campaign(self, campaign_json): """ Create a new campaign """ campaign = Campaign(json_input=campaign_json) prepid = campaign.get_prepid() campaigns_db = Database('campaigns') if campaigns_db.get(prepid): raise Exception('Campaign with prepid "%s" already exists' % (prepid)) if self.__check_campaign(campaign): campaigns_db.save(campaign) return campaign else: self.logger.error('Error while checking campaign %s', prepid) return None
def update_campaign(self, campaign_json): """ Update a campaign with given json """ new_campaign = Campaign(json_input=campaign_json) prepid = new_campaign.get_prepid() campaigns_db = Database('campaigns') old_campaign = campaigns_db.get(prepid) if not old_campaign: raise Exception('Campaign with prepid does not "%s" exist' % (prepid)) old_campaign = Campaign(json_input=old_campaign) # Move over history, so it could not be overwritten new_campaign.set('history', old_campaign.get('history')) changed_values = self.get_changed_values(old_campaign, new_campaign) new_campaign.add_history('update', changed_values, None) if self.__check_campaign(new_campaign): campaigns_db.save(new_campaign) return new_campaign else: self.logger.error('Error while checking campaign %s', prepid) return None