Add some APIs around subtask
still not finished
This commit is contained in:
@@ -6,7 +6,6 @@ from ActiveCollabAPI import AC_USER_AGENT, AC_API_VERSION
|
|||||||
|
|
||||||
|
|
||||||
class ACClient:
|
class ACClient:
|
||||||
|
|
||||||
base_url = None
|
base_url = None
|
||||||
account = None
|
account = None
|
||||||
token = None
|
token = None
|
||||||
@@ -29,14 +28,77 @@ class ACClient:
|
|||||||
return requests.get(self.base_url + '/' + url,
|
return requests.get(self.base_url + '/' + url,
|
||||||
headers=self.headers())
|
headers=self.headers())
|
||||||
|
|
||||||
|
def _delete(self, url):
|
||||||
|
return requests.delete(self.base_url + '/' + url,
|
||||||
|
headers=self.headers())
|
||||||
|
|
||||||
def _post(self, url, data):
|
def _post(self, url, data):
|
||||||
return requests.post(
|
return requests.post(
|
||||||
self.base_url + '/' + url,
|
self.base_url + '/' + url,
|
||||||
headers=self.headers(),
|
headers=self.headers(),
|
||||||
data=json.dumps(data))
|
data=json.dumps(data))
|
||||||
|
|
||||||
|
def _put(self, url, data):
|
||||||
|
return requests.put(
|
||||||
|
self.base_url + '/' + url,
|
||||||
|
headers=self.headers(),
|
||||||
|
data=json.dumps(data))
|
||||||
|
|
||||||
def get_info(self):
|
def get_info(self):
|
||||||
return self._get('info')
|
return self._get('info')
|
||||||
|
|
||||||
def get_projects(self):
|
def get_projects(self):
|
||||||
return self._get('projects')
|
return self._get('projects')
|
||||||
|
|
||||||
|
def get_project_task(self, project_id, task_id):
|
||||||
|
return self._get('projects/%d/tasks/%s' % (project_id, task_id))
|
||||||
|
|
||||||
|
def update_sub_task(self, subtask):
|
||||||
|
"""
|
||||||
|
NOT TESTED!
|
||||||
|
"""
|
||||||
|
project_id = subtask['project_id']
|
||||||
|
task_id = subtask['task_id']
|
||||||
|
subtask_id = subtask['id']
|
||||||
|
data = {
|
||||||
|
'single': subtask
|
||||||
|
}
|
||||||
|
return self._put('projects/%d/tasks/%s/subtasks/%s' %
|
||||||
|
(project_id, task_id, subtask_id),
|
||||||
|
data=data)
|
||||||
|
|
||||||
|
def delete_subtask(self, subtask):
|
||||||
|
project_id = subtask['project_id']
|
||||||
|
task_id = subtask['task_id']
|
||||||
|
subtask_id = subtask['id']
|
||||||
|
return self._delete('projects/%d/tasks/%s/subtasks/%s' %
|
||||||
|
(project_id, task_id, subtask_id))
|
||||||
|
|
||||||
|
def create_subtask(self, subtask):
|
||||||
|
project_id = subtask['project_id']
|
||||||
|
task_id = subtask['task_id']
|
||||||
|
return self._post('projects/%d/tasks/%s/subtasks' %
|
||||||
|
(project_id, task_id),
|
||||||
|
data=subtask)
|
||||||
|
|
||||||
|
def unassign_all_sub_task(self, task):
|
||||||
|
for subtask in task['subtasks']:
|
||||||
|
self.unassign_sub_task(subtask)
|
||||||
|
|
||||||
|
def unassign_sub_task(self, subtask):
|
||||||
|
return self.assign_sub_task(subtask, '')
|
||||||
|
|
||||||
|
def assign_sub_task(self, subtask, user_id: [int, str]):
|
||||||
|
project_id = subtask['project_id']
|
||||||
|
task_id = subtask['task_id']
|
||||||
|
subtask_id = subtask['id']
|
||||||
|
data = {
|
||||||
|
'assignee_id': user_id
|
||||||
|
}
|
||||||
|
return self._put('projects/%d/tasks/%s/subtasks/%s' %
|
||||||
|
(project_id, task_id, subtask_id),
|
||||||
|
data=data)
|
||||||
|
|
||||||
|
def get_project_task_subtask(self, project_id, task_id, subtask_id):
|
||||||
|
return self._get('projects/%d/tasks/%s/subtasks/%s' %
|
||||||
|
(project_id, task_id, subtask_id))
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
import configparser
|
import configparser
|
||||||
|
import copy
|
||||||
import logging
|
import logging
|
||||||
from pprint import pprint
|
from pprint import pprint
|
||||||
|
|
||||||
@@ -11,7 +12,6 @@ from ActiveCollabAPI.ACTokenAuthenticator import ACTokenAuthenticator
|
|||||||
# the only thing missing will be the response.body which is not logged.
|
# the only thing missing will be the response.body which is not logged.
|
||||||
from http.client import HTTPConnection
|
from http.client import HTTPConnection
|
||||||
|
|
||||||
|
|
||||||
HTTPConnection.debuglevel = 1
|
HTTPConnection.debuglevel = 1
|
||||||
|
|
||||||
logging.basicConfig() # you need to initialize logging, otherwise you will not see anything from requests
|
logging.basicConfig() # you need to initialize logging, otherwise you will not see anything from requests
|
||||||
@@ -31,7 +31,7 @@ if __name__ == "__main__":
|
|||||||
# 1. you need to login to get a session and a list of accounts
|
# 1. you need to login to get a session and a list of accounts
|
||||||
auth = ACAuthenticator()
|
auth = ACAuthenticator()
|
||||||
session = auth.login(username, password)
|
session = auth.login(username, password)
|
||||||
pprint(session)
|
# pprint(session)
|
||||||
user = session['user']
|
user = session['user']
|
||||||
# use first account
|
# use first account
|
||||||
account = auth.find_account(account_name)
|
account = auth.find_account(account_name)
|
||||||
@@ -42,8 +42,46 @@ if __name__ == "__main__":
|
|||||||
|
|
||||||
# 3. now you can query the API
|
# 3. now you can query the API
|
||||||
ac = ACClient(account, token)
|
ac = ACClient(account, token)
|
||||||
res = ac.get_projects()
|
|
||||||
pprint(res.json())
|
|
||||||
|
|
||||||
res = ac.get_info()
|
# get a list of all projects
|
||||||
pprint(res.json())
|
# 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 = 6274
|
||||||
|
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())
|
||||||
|
|
||||||
|
# # 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())
|
||||||
|
|||||||
Reference in New Issue
Block a user