2017-01-23 6 views
0

Ich verwende ein Skript, das ich aus dem Internet heruntergeladen habe, um auf unsere Service-API zuzugreifen. Ich versuche, die Funktion auszuführen, aber immer Fehler zu erhalten, egal was ich versuche zu tun.Neuling in Python [2.7] Funktion funktioniert nicht

from PyBambooHR import PyBambooHR 

bamboo = PyBambooHR(subdomain='domain', api_key='apicode') 
changes = bamboo.get_employee_changes() 

Als ich das laufen lasse, erhalte ich folgende Fehlermeldung:

ValueError: Error: since argument must be a datetime.datetime instance

Nun, egal, was ich als Argumente gesetzt, habe ich noch Fehler bekommen. Ich habe auch versucht, die Syntax von:

def get_employee_changes(self, since=None): 
    """ 
    Returns a list of dictionaries, each with id, action, and lastChanged keys, representing 
    the employee records that have changed since the datetime object passed in the since= argument. 

    @return List of dictionaries, each with id, action, and lastChanged keys. 
    """ 
    if not isinstance(since, datetime.datetime): 
     raise ValueError("Error: since argument must be a datetime.datetime instance") 

    url = self.base_url + 'employees/changed/' 
    params = {'since': since.strftime('%Y-%m-%dT%H:%M:%SZ')} 
    r = requests.get(url, params=params, headers=self.headers, auth=(self.api_key, '')) 
    r.raise_for_status() 

    return utils.transform_change_list(r.content) 

Danke für Ihre Hilfe

+3

Offenbar obwohl der Parameter einen Standardwert zu haben scheint, Sie ** kann nicht * * rufe einfach 'bamboo.get_employee_changes()' auf; Sie müssen ein Datum angeben, an dem Sie Änderungen sehen möchten. Es ist nicht klar, warum die Betreuer diesen nutzlosen Standard zur Verfügung gestellt haben. – jonrsharpe

+2

Ich kann nicht verstehen, warum jemand eine Funktion mit einem Standardwert definiert und dann eine Ausnahme auslöst, wenn der Standardwert verwendet wird oder warum sie einen Ausnahmefall sucht und dann eine Ausnahme auslöst, anstatt nur die Aufgabe zu versuchen und lass es seine eigene Ausnahme auslösen. – TigerhawkT3

+0

Das ist so ein seltsames Standardargument. – miradulo

Antwort

0

Wie Sie sehen, dass Funktion ein Parameter seit vom Typ Datetime ist: https://www.bamboohr.com/api/documentation/changes.php

Die Funktion ist. datetime erwartet.

import datetime 
changes = bamboo.get_employee_changes(since=datetime.datetime.now() - datetime.timedelta(days=365)) 

sollte Ihnen die Änderungen seit dem letzten Jahr

+0

Danke, Matthias. Klappt wunderbar :) – user347977

0

Geben Sie eine Variable vom Typ datetime.datetime beim Aufruf der Funktion bamboo.get_employee_changes()

Verwandte Themen