示例#1
0
    def handle(self, *args, **options):

        client = adwords.AdWordsClient.LoadFromStorage()

        client.partial_failure = True

        # request a service object from the client object
        service = Budget.serviceobj(client)

        mutatestring_dellst = []

        # get a list of the budgets
        budgets = Budget.listbudgets(client)

        # create a list of delete dictionaries
        for budget in budgets:
            mutatestring_dellst.append(Budget.deldict(budget['budgetId']))

        # if there are no budgets in aw with status != remove, return
        if (len(mutatestring_dellst) == 0):
            print('Nothing to delete.')
            return

        # call mutate for the list of deletes
        rslts = service.mutate(mutatestring_dellst)

        # removes partial failure errors from rslts['value']
        rsltsvaluelst = []
        for budgetsuccess in rslts['value']:
            if budgetsuccess != "":
                rsltsvaluelst.append(budgetsuccess)
        rslts['value'] = rsltsvaluelst

        # prints the results of the clear operation
        print('Budget clear complete. Removed %s budgets.' %
              len(rslts['value']))
        print('Removed: ')

        # prints each budget that was successfully removed
        for budgetsuccess in rslts['value']:
            if budgetsuccess != "":
                print('%s %s Status: %s' %
                      (budgetsuccess['budgetId'], budgetsuccess['name'],
                       budgetsuccess['status']))

        if 'partialFailureErrors' in rslts:
            # prints each budget that threw an error
            print('Failed to remove: ')
            for budgeterror in rslts['partialFailureErrors']:
                print(
                    '%s %s Reason: %s' %
                    (budgets[int(budgeterror['fieldPath'][11:12])]['budgetId'],
                     budgets[int(budgeterror['fieldPath'][11:12])]['name'],
                     budgeterror['errorString']))
示例#2
0
def receiver_pre_delete(**kwargs):

    client = adwords.AdWordsClient.LoadFromStorage()
    service = Budget.serviceobj(client)

    instance = kwargs['instance']

    # this variable is set in the overridden delete method, if it is set to
    # false save is probably being called from Budget.addbudget
    # or Budget.removebudget, or specified by kwargs
    if (instance.sync_aw):

        mutatestring = Budget.deldict(instance.budgetid)

        rslts = service.mutate([mutatestring])

        if (rslts['value'][0]['status'] != 'REMOVED'):
            raise IOError(
                'Django Adwords did not successfully set the item to "REMOVED"'
            )