98 lines
3.0 KiB
Python
98 lines
3.0 KiB
Python
import configparser
|
|
import copy
|
|
import logging
|
|
from pprint import pprint
|
|
|
|
from ActiveCollabAPI.ACAuthenticator import ACAuthenticator
|
|
from ActiveCollabAPI.ACClient import ACClient
|
|
from ActiveCollabAPI.ACTokenAuthenticator import ACTokenAuthenticator
|
|
|
|
# Enabling debugging at http.client level (requests->urllib3->http.client)
|
|
# you will see the REQUEST, including HEADERS and DATA, and RESPONSE with HEADERS but without DATA.
|
|
# the only thing missing will be the response.body which is not logged.
|
|
from http.client import HTTPConnection
|
|
|
|
HTTPConnection.debuglevel = 1
|
|
|
|
logging.basicConfig() # you need to initialize logging, otherwise you will not see anything from requests
|
|
logging.getLogger().setLevel(logging.DEBUG)
|
|
requests_log = logging.getLogger("urllib3")
|
|
requests_log.setLevel(logging.DEBUG)
|
|
requests_log.propagate = True
|
|
|
|
if __name__ == "__main__":
|
|
config = configparser.ConfigParser()
|
|
config.read('config.ini')
|
|
|
|
username = config['LOGIN']['username']
|
|
password = config['LOGIN']['password']
|
|
account_name = config['LOGIN']['account_name']
|
|
|
|
# 1. you need to login to get a session and a list of accounts
|
|
auth = ACAuthenticator()
|
|
session = auth.login(username, password)
|
|
pprint(session)
|
|
user = session['user']
|
|
# use first account
|
|
account = auth.find_account(account_name)
|
|
|
|
# 2. you need to get a token for this account
|
|
# token = ACTokenAuthenticator(account, user).issue_token_intent()
|
|
# pprint(token)
|
|
|
|
# 3. now you can query the API
|
|
# ac = ACClient(account, token)
|
|
|
|
# get a list of all projects
|
|
# res = ac.get_projects()
|
|
# pprint(res.json())
|
|
|
|
# get task with sub tasks
|
|
# https://app.activecollab.com/416910/projects/310/tasks/6274
|
|
# project_id = 310
|
|
# task_id = 6281
|
|
# task_res = ac.get_project_task(project_id, task_id)
|
|
# pprint(task_res.json())
|
|
# task = task_res.json()
|
|
# res = ac.unassign_all_sub_task(task)
|
|
|
|
# create a new subtask for the task without assignment
|
|
# subtask = {
|
|
# "task_id": task_id,
|
|
# "project_id": project_id,
|
|
# "assignee_id": "",
|
|
# "body": "test qqq"
|
|
# }
|
|
# res = ac.create_subtask(subtask)
|
|
# pprint(res.json())
|
|
|
|
# # bulk create subtasks
|
|
subtask_texts = []
|
|
with open("sub-tasks.txt", "r", encoding="utf-8") as fh:
|
|
for line in fh:
|
|
subtask_texts.append(line.rstrip('\n'))
|
|
# create
|
|
# for text in subtask_texts:
|
|
# subtask['body'] = text
|
|
# ac.create_subtask(subtask)
|
|
|
|
# # unassign a single subtask
|
|
# subtask_id = 12203
|
|
# subtask_res = ac.get_project_task_subtask(project_id, task_id, subtask_id)
|
|
# # pprint(subtask_res.json())
|
|
# subtask = subtask_res.json()['single']
|
|
# res = ac.unassign_sub_task(subtask)
|
|
# pprint(res.json())
|
|
|
|
# delete a subtask
|
|
# subtask = {
|
|
# "task_id": task_id,
|
|
# "project_id": project_id,
|
|
# "id": 13764
|
|
# }
|
|
# res = ac.delete_subtask(subtask)
|
|
# pprint(res.json())
|
|
|
|
# res = ac.get_info()
|
|
# pprint(res.json())
|