def get_keywords(modeladmin, request, queryset): ai = Adwords_interactor() for temp_adgroup in queryset: adgroup_keywords = ai.get_ad_group_keywords( ad_group_id = temp_adgroup.id ) for temp_keyword in adgroup_keywords: try: Keyword.objects.get(id=temp_keyword['criterion']['id']) except Keyword.DoesNotExist: kw = Keyword( adgroup = temp_adgroup, id = temp_keyword['criterion']['id'], text = temp_keyword['criterion']['text'], type = temp_keyword['criterion']['type'], match_type = temp_keyword['criterion']['matchType'], stats = temp_keyword.get('stats',0), adgroupcriterion_type = temp_keyword['AdGroupCriterion_Type'], criterion_use = temp_keyword['criterionUse'], criterion_type = temp_keyword['criterion']['type'], ) kw.save()
def load_csv_file(self,csv_file): client = Client.objects.get( name = 'ATC' ) header = [] cur_campaign = None cur_adgroup = None temp_time = datetime.datetime.now() csv_reader = csv.reader( self.stream_lines(csv_file), dialect = 'excel-tab', delimiter = '\t', quotechar = '|' ) for linenumber, row in enumerate( csv_reader ): try: if linenumber % 10000 == 0 : #endtime = datetime.datetime.now() #print endtime - sttime print "="*70,"timetaken:",datetime.datetime.now()-temp_time,"lno",linenumber temp_time = datetime.datetime.now() transaction.commit() if row: if linenumber == 0: # headers store them for post processing header = row else: cur_row_type = self._get_row_type( row, header ) print cur_row_type if cur_row_type in [ self.ROWTYPE_CAMPAIGN, self.ROWTYPE_ADGROUP, self.ROWTYPE_KEYWORD, self.ROWTYPE_NEGATIVEKEYWORD, self.ROWTYPE_AD ] : try: if not cur_campaign or cur_campaign.name != row[header.index( 'campaign' )]: cur_campaign = Campaign.objects.get( name = row[header.index( 'campaign' )] , client = client ) if cur_campaign.status != row[header.index( 'campaign status' )]: cur_campaign.status = row[header.index( 'campaign status' )] cur_campaign.save() except Campaign.DoesNotExist: cur_campaign = Campaign( client = client, name = row[header.index( 'campaign' )], status = row[header.index( 'campaign status' )] ) cur_campaign.save() transaction.commit() if cur_row_type == self.ROWTYPE_CAMPAIGN: if cur_campaign.daily_budget != row[header.index('campaign daily budget')] : # record change rc = Record_change(what_changed = "campaign::"+cur_campaign.name, changed_from = cur_campaign.daily_budget, changed_to = row[header.index('campaign daily budget')] ) rc.save() # now do the change :) cur_campaign.daily_budget = row[header.index('campaign daily budget')] cur_campaign.save() if cur_row_type in [ self.ROWTYPE_ADGROUP, self.ROWTYPE_AD, self.ROWTYPE_KEYWORD, self.ROWTYPE_NEGATIVEKEYWORD, ] : try: if not cur_adgroup or cur_adgroup.name != row[header.index( 'ad group' )]: cur_adgroup = Adgroup.objects.get( campaign = cur_campaign, name = row[header.index( 'ad group' )] ) is_dirty = False if cur_row_type == self.ROWTYPE_ADGROUP: if row[header.index( 'max cpc' )] and cur_adgroup.max_cpc != row[header.index( 'max cpc' )]: cur_adgroup.max_cpc = "0"+row[header.index( 'max cpc' )] is_dirty = True if row[header.index( 'cpa bid' )] and cur_adgroup.cpa_bid != row[header.index( 'cpa bid' )]: cur_adgroup.cpa_bid = "0"+row[header.index( 'cpa bid' )] is_dirty = True if cur_row_type == self.ROWTYPE_ADGROUP: if row[header.index( 'adgroup status' )] and cur_adgroup.status != row[header.index( 'adgroup status' )]: cur_adgroup.status = row[header.index( 'adgroup status' )] is_dirty = True if is_dirty: cur_adgroup.save() except Adgroup.DoesNotExist: cur_adgroup = Adgroup( campaign = cur_campaign, name = row[header.index( 'ad group' )], max_cpc = "0"+row[header.index( 'max cpc' )], ) if cur_row_type == self.ROWTYPE_ADGROUP: cur_adgroup.status = row[header.index( 'adgroup status' )] cur_adgroup.save() transaction.commit() if cur_row_type in [ self.ROWTYPE_KEYWORD, self.ROWTYPE_NEGATIVEKEYWORD ]: # print "\t\t\t\tkeyword", row[header.index( 'max cpc' )], row[header.index( 'Keyword' )] # create keyword try: cur_keyword = Keyword.objects.get( text = row[header.index( 'keyword' )] ) except Keyword.DoesNotExist: cur_keyword = Keyword( text = row[header.index( 'keyword' )] ) cur_keyword.save() # create/update criterion try: cur_criterion = Criterion.objects.get( adgroup = cur_adgroup, keyword = cur_keyword , type = row[header.index('criterion type')] ) # if cur_criterion.firstpage_cpc != row[header.index('first page cpc')] or cur_criterion.topofpage_cpc != row[header.index('top of page cpc')] or cur_criterion.quality_score != row[header.index('quality score')] or cur_criterion.status != row[header.index('status')] or cur_criterion.approval_status != row[header.index('approval status')]: # if cur_criterion.quality_score != row[header.index('quality score')]: # rc = Record_change(what_changed="quality score", # changed_from = cur_criterion.quality_score, # changed_to = row[header.index('quality score')]) # rc.save() # # cur_criterion.firstpage_cpc = "0"+row[header.index('first page cpc')] # cur_criterion.topofpage_cpc = "0"+row[header.index('top Of page cpc')] # cur_criterion.quality_score = "0"+row[header.index('quality score')] # cur_criterion.status = row[header.index('status')] # cur_criterion.approval_status = row[header.index('approval status')] # cur_criterion.save() except Criterion.DoesNotExist: cur_criterion = Criterion( adgroup = cur_adgroup, keyword = cur_keyword , type = row[header.index('criterion type')] ) cur_criterion.firstpage_cpc = "0"+row[header.index('first page cpc')] cur_criterion.topofpage_cpc = "0"+row[header.index('top of page cpc')] cur_criterion.quality_score = "0"+row[header.index('quality score')] cur_criterion.match_type = row[header.index( 'criterion type' )] if cur_row_type == self.ROWTYPE_KEYWORD: cur_criterion.status = row[header.index('status')] cur_criterion.approval_status = row[header.index('approval status')] cur_criterion.save() if cur_row_type == self.ROWTYPE_AD: try: cur_ad = Ad.objects.get(adgroup = cur_adgroup, headline = row[header.index('headline')], description_line1 = row[header.index('description line 1')], description_line2 = row[header.index('description line 2')], display_url = row[header.index('display url')] , destination_url = row[header.index('destination url')], ) if cur_ad.approval_status != row[header.index('approval status')]: cur_ad.approval_status = row[header.index('Approval Status')] cur_ad.save() except Ad.DoesNotExist: cur_ad = Ad(adgroup = cur_adgroup, headline = row[header.index('headline')], description_line1 = row[header.index('description line 1')], description_line2 = row[header.index('description line 2')], display_url = row[header.index('display url')] , destination_url = row[header.index('destination url')], ) if cur_row_type == self.ROWTYPE_AD: cur_ad.approval_status = row[header.index('approval status')] cur_ad.save() pass if not cur_row_type: if row[header.index('order')] or row[header.index('id')] or row[header.index('company_name')]: continue print datetime.datetime.now(), linenumber, row except Exception as e: print "error::",e,":header::", header,":row::", row transaction.commit() csv_file.close()