Esempio n. 1
0
class Toggls():

    def __init__(self, key):
        self.toggl = Toggl()
        self.toggl.setAPIKey(key)

    def get_Workspaces(self):
        return self.toggl.getWorkspaces()

    def getprojectsinworkspace(self, id):
        urls = "https://www.toggl.com/api/v8/workspaces/" + str(id) + "/projects"
        return self.toggl.request(urls)

    def get_workspace(self, name):
        return self.toggl.getWorkspace(name)

    def make_time_entry(self, pid, workout):
        start = workout[1][6:10] + "-" + workout[1][:2] + "-" + workout[1][3:5] + "T" + workout[1][12:] + ".000Z"
        time = float(workout[2][0])*60*60 + float(workout[2][2:4])*60 + float(workout[2][5:7])
        url = 'https://www.toggl.com/api/v8/time_entries'
        data = {
            "time_entry":
                {
                    "description":"Workout",
                    "tags":[""],
                    "duration": time,
                    "start": start,
                    "pid": pid,
                    "created_with":"api"
                }
        }
        return self.toggl.postRequest(url, parameters=data)
Esempio n. 2
0
def toggl_add_entries(entries: List[TglStandardEntry],
                      tasks: List[TglTask],
                      token=None):
    toggl = Toggl()
    if token is None:
        token = os.getenv("TOGGL_API_TOKEN")
    toggl.setAPIKey(token)

    taskmap = {}
    for t in tasks:
        k = t.project_name, t.task_name
        v = t.project_id, t.task_id
        taskmap[k] = v

    togglentries = []
    for i, entry in enumerate(entries, start=1):
        try:
            try:
                pid, tid = taskmap[(entry.project, entry.task)]
            except KeyError:
                raise ConvertingError(
                    f"{entry.project}, {entry.task} not found")
            togglentry = {
                "description": entry.description,
                "pid": pid,
                "tid": tid if tid else None,
                "start": entry.start.astimezone().isoformat(),
                "duration": entry.duration.seconds,
                "created_with": "easytrack",
            }
            togglentries.append(togglentry)
        except ConvertingError as e:
            e.i = i
            e.line = e
            raise

    for i, togglentry in enumerate(togglentries, start=1):
        try:
            try:
                print(i, '/', len(togglentries))
                time.sleep(2)
                resp = toggl.postRequest(Endpoints.TIME_ENTRIES,
                                         {"time_entry": togglentry})
            except urllib.error.HTTPError as e:
                raise TogglError(body=e.fp.read().decode(), underlying=e)
            resp = toggl.decodeJSON(resp)
            if resp.get("data") is None:
                raise ConvertingError(f"data not found in resp {resp}")
        except ConvertingError as e:
            e.i = i
            e.line = e
            raise
Esempio n. 3
0
    start_time_dt = strip_and_datetime(event[1])
    end_time_dt = strip_and_datetime(event[2])

    # Convert to unix
    start_time_ts = time.mktime(start_time_dt.timetuple())
    end_time_ts = time.mktime(end_time_dt.timetuple())

    # Calculate time in hours and minutes
    hourduration = int(end_time_ts - start_time_ts) / 3600

    month = int(event[1][5:7])
    day = int(event[1][8:10])
    hour = int(event[1][11:13])

    data = {
        "time_entry": {
            "description": event[0],
            "start": event[1],
            "duration": int(hourduration * 3600),
            "pid": projectid,
            "created_with": "gcal-to-toggl"
        }
    }

    pprint(data)

    response = toggl.postRequest("https://www.toggl.com/api/v8/time_entries",
                                 parameters=data)

    print(response)