def fields_for_update(self): fields = self.fields_for_create() for field in ['campaign_id', 'cost_type']: if field in fields: fields.pop(field) fields.update(ad_id=int(self.remote_id)) return fields
def fields_for_create(self): fields = dict(name=self.name) if self.day_limit: fields.update(day_limit=self.day_limit) if self.all_limit: fields.update(all_limit=self.all_limit) return fields
def fields_for_update(self): ''' TODO: add dropping start_time, stop_time http://vk.com/developers.php?oid=-1&p=ads.updateCampaigns ''' fields = self.fields_for_create() if 'client_id' in fields: fields.pop('client_id') fields.update(campaign_id=self.remote_id) return fields
def prepare_update_params_distinct(self, **kwargs): ''' Return dict with distinct set of fields for update ''' old = self.__class__.objects.get(remote_id=self.remote_id) fields_new = self.prepare_update_params(**kwargs).items() fields_old = old.prepare_update_params(**kwargs).items() fields = dict(set(fields_new).difference(set(fields_old))) fields.update(dict([(k,v) for k,v in fields_new if k in self.fields_required_for_update])) return fields
def prepare_update_params_distinct(self, **kwargs): ''' Return dict with distinct set of fields for update ''' old = self.__class__.objects.get(remote_id=self.remote_id) fields_new = self.prepare_update_params(**kwargs).items() fields_old = old.prepare_update_params(**kwargs).items() fields = dict(set(fields_new).difference(set(fields_old))) fields.update( dict([(k, v) for k, v in fields_new if k in self.fields_required_for_update])) return fields
def fields_for_create(self): fields = dict(name=self.name, status=int(self.status)) if self.client: fields.update(client_id=self.client.remote_id) if self.day_limit: fields.update(day_limit=self.day_limit) if self.all_limit: fields.update(all_limit=self.all_limit) if self.start_time: fields.update(start_time=int(time.mktime(self.start_time.timetuple()))) if self.stop_time: fields.update(stop_time=int(time.mktime(self.stop_time.timetuple()))) return fields
def fields_for_create(self): fields = dict( campaign_id=int(self.campaign.remote_id), cost_type=self.cost_type, title=self.layout.title, link_url=self.layout.link_url, status=int(self.status) ) if self.image: if not self.image.hash: self.image.upload() fields.update( hash=self.image.hash, photo_hash=self.image.photo_hash, photo=self.image.photo, server=self.image.server ) if self.cost_type == 0: fields.update(cpc=float(self.cpc) / 100 if self.cpc else 0) elif self.cost_type == 1: fields.update(cpm=float(self.cpm) / 100 if self.cpm else 0) if self.name: fields.update(name=self.name) if self.all_limit: fields.update(all_limit=self.all_limit) if self.layout.description: fields.update(description=self.layout.description) if self.layout.link_domain: fields.update(link_domain=self.layout.link_domain) # TODO: оттестировать, потому что объявления с disclaimer==True он принудительно обновляет после каждого get запроса # if self.disclaimer: # fields.update(disclaimer = self.disclaimer) # targeting fields.update( sex=self.targeting.sex, age_from=self.targeting.age_from, age_to=self.targeting.age_to, country=self.targeting.country, school_from=self.targeting.school_from, school_to=self.targeting.school_to, uni_from=self.targeting.uni_from, uni_to=self.targeting.uni_to, travellers=int(self.targeting.travellers == 'on') ) if self.targeting.tags: fields.update(tags=self.targeting.tags) if self.targeting.birthday: fields.update(birthday=self.targeting.birthday) for field in ['cities', 'cities_not', 'statuses', 'group_types', 'groups', 'districts', 'stations', 'streets', 'schools', 'positions', 'religions', 'interests', 'browsers']: if getattr(self.targeting, field): fields[field] = getattr(self.targeting, field) return fields
def fields_for_update(self): fields = self.fields_for_create() fields.update(client_id=self.remote_id) return fields