Example #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']))
Example #2
0
def receiver_pre_save(**kwargs):

    #print ( kwargs )

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

    instance = kwargs['instance']

    # save updates an existing item or instantiates a new item
    # save determines which one based on whether the object
    # has a budgetid != None

    # this variable is set in the overridden save 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):

        # we are adding a new item
        if (instance.id == None):

            # create the mutate string
            mutatestring = Budget.adddict(instance.budgetname,
                                          instance.budgetamount,
                                          instance.budgetdeliverymethod,
                                          instance.budgetstatus)

            rslts = service.mutate([mutatestring])

            instance.budgetid = rslts['value'][0]['budgetId']

        # we are modifying an item
        else:

            # create the mutate string
            mutatestring = Budget.modifydict(instance.budgetid,
                                             instance.budgetname,
                                             instance.budgetamount,
                                             instance.budgetdeliverymethod,
                                             instance.budgetstatus)

            rslts = service.mutate([mutatestring])
Example #3
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"'
            )