65 lines
2.3 KiB
Python
65 lines
2.3 KiB
Python
import xmlrpc.client, datetime
|
|
|
|
url = "http://docker1.polo:8069/"
|
|
db = "PoloInformatico"
|
|
username = "busti@poloinformatico.it"
|
|
password = "p0l01nf."
|
|
|
|
common = xmlrpc.client.ServerProxy(f"{url}/xmlrpc/2/common")
|
|
uid = common.authenticate(db, username, password, {})
|
|
models = xmlrpc.client.ServerProxy(f"{url}/xmlrpc/2/object")
|
|
|
|
# 1) Create a project
|
|
project_id = models.execute_kw(db, uid, password, 'project.project', 'create', [{
|
|
'name': 'test_api',
|
|
}])
|
|
|
|
# helper to ensure a stage exists and is linked to this project
|
|
def ensure_stage(name, seq, fold=False):
|
|
sid = models.execute_kw(db, uid, password, 'project.task.type', 'search', [[
|
|
('name', '=', name),
|
|
'|', ('project_ids', '=', False), ('project_ids', 'in', [project_id]),
|
|
]], {'limit': 1})
|
|
if sid:
|
|
models.execute_kw(db, uid, password, 'project.task.type', 'write', [sid, {
|
|
'sequence': seq, 'fold': fold, 'project_ids': [(4, project_id)]
|
|
}])
|
|
return sid[0]
|
|
return models.execute_kw(db, uid, password, 'project.task.type', 'create', [{
|
|
'name': name, 'sequence': seq, 'fold': fold, 'project_ids': [(4, project_id)]
|
|
}])
|
|
|
|
# 2) Create stages (columns) and order columns via their 'sequence'
|
|
todo_id = ensure_stage('DOCUMENTI', 10)
|
|
doing_id = ensure_stage('DA FARE', 20)
|
|
done_id = ensure_stage('COMPLETATO', 90) # folded column
|
|
|
|
# 3) Create tasks and position them: choose stage via 'stage_id' and order via 'sequence'
|
|
task1 = models.execute_kw(db, uid, password, 'project.task', 'create', [{
|
|
'name': 'DOCUMENTI',
|
|
'project_id': project_id,
|
|
'stage_id': todo_id,
|
|
'sequence': 1, # lower = higher in the column
|
|
}])
|
|
|
|
task2 = models.execute_kw(db, uid, password, 'project.task', 'create', [{
|
|
'name': 'COMPUTO METRICO',
|
|
'project_id': project_id,
|
|
'stage_id': todo_id,
|
|
'sequence': 2, # lower = higher in the column
|
|
}])
|
|
|
|
task3 = models.execute_kw(db, uid, password, 'project.task', 'create', [{
|
|
'name': 'attività 1 da fare',
|
|
'project_id': project_id,
|
|
'stage_id': doing_id,
|
|
'sequence': 20,
|
|
}])
|
|
|
|
# move task2 to "In Progress" and place it just below task1
|
|
ref_seq = models.execute_kw(db, uid, password, 'project.task', 'read', [[task1], ['sequence']])[0]['sequence']
|
|
models.execute_kw(db, uid, password, 'project.task', 'write', [[task2], {
|
|
'stage_id': doing_id,
|
|
'sequence': ref_seq + 1
|
|
}])
|