10
10
from datetime import datetime
12
def loadProjectsTasks(fileName,HOST,PORT,DB,USER,PASS):
13
def loadProjectsTasks(fileName, HOST, PORT, DB, USER, PASS):
17
18
''' Objects needed for rpc calls '''
18
url ='http://%s:%d/xmlrpc/' % (HOST,PORT)
19
url = 'http://%s:%d/xmlrpc/' % (HOST, PORT)
19
20
common_proxy = xmlrpclib.ServerProxy(url+'common')
20
21
object_proxy = xmlrpclib.ServerProxy(url+'object')
21
22
wizard_proxy = xmlrpclib.ServerProxy(url+'wizard')
22
23
workflow_proxy = xmlrpclib.ServerProxy(url+'workflow')
23
uid = common_proxy.login(DB,USER,PASS)
24
uid = common_proxy.login(DB, USER, PASS)
28
29
if isinstance(cadena, str):
29
30
return cadena and cadena.encode('ascii', 'ignore').strip() or None
35
36
if not d[k] is None:
39
40
def readSheet(fileName, nSheet):
41
book = xlrd.open_workbook(fileName,formatting_info=True)
42
book = xlrd.open_workbook(fileName, formatting_info=True)
42
43
sheet = book.sheet_by_index(nSheet)
44
45
for T in range(sheet.nrows):
45
46
values.append([clean(v) for v in sheet.row_values(T)])
49
50
def searchTasks(project_id, tasks):
70
71
for issue in issues:
71
72
if issue[0] != 'ID':
73
user_mail = object_proxy.execute(DB, uid, PASS, 'res.users', 'read', int(issue[4]), ['user_email'])
74
user_mail = object_proxy.execute(
75
DB, uid, PASS, 'res.users', 'read', int(issue[4]), ['user_email'])
75
77
user_mail['user_email'] = None
76
addr = issue[7] and (int(issue[7])==3 and ID_ADDR or int(issue[7])) or None
78
addr = issue[7] and (int(issue[
79
7]) == 3 and ID_ADDR or int(issue[7])) or None
78
'name' : issue[1].encode('ascii','ignore'),
81
'name': issue[1].encode('ascii', 'ignore'),
79
82
'categ_id': int(issue[3]),
80
83
'project_id': int(issue[2]),
81
84
'assigned_to': issue[4] and int(issue[4]) or None,
83
86
'partner_id': int(issue[6]),
84
87
'partner_address_id': addr,
86
'description': issue[8].encode('ascii','ignore'),
89
'description': issue[8].encode('ascii', 'ignore'),
87
90
'email_from': issue[4] and user_mail['user_email'] or None,
90
93
values_issue = cleanDict(values_issue)
91
project_id = object_proxy.execute(DB, uid, PASS, 'project.issue', 'create', values_issue)
94
project_id = object_proxy.execute(
95
DB, uid, PASS, 'project.issue', 'create', values_issue)
94
object_proxy.execute(DB, uid, PASS, 'project.issue', 'write', [project_id], {'assigned_to': int(issue[4]), 'user_id': int(issue[4])})
98
object_proxy.execute(DB, uid, PASS, 'project.issue', 'write', [
99
project_id], {'assigned_to': int(issue[4]), 'user_id': int(issue[4])})
95
100
project_tasks = searchTasks(int(issue[0]), tasks)
97
102
for task in project_tasks:
99
104
'name': values_issue['name'],
100
105
'project_id': values_issue['project_id'],
101
'assigned_to':values_issue['assigned_to'],
102
'user_id':values_issue['assigned_to'],
106
'assigned_to': values_issue['assigned_to'],
107
'user_id': values_issue['assigned_to'],
103
108
'planned_hours': task[2],
104
109
'remaining_hours': task[3],
105
110
'type_id': values_issue['type_id'],
106
111
'partner_id': values_issue['partner_id'],
108
'date_start':datetime.now().strftime("%Y/%m/%d %H:%M:%S"),
109
'date_end':datetime.now().strftime("%Y/%m/%d %H:%M:%S"),
113
'date_start': datetime.now().strftime("%Y/%m/%d %H:%M:%S"),
114
'date_end': datetime.now().strftime("%Y/%m/%d %H:%M:%S"),
110
115
'description': values_issue['description'],
112
117
values_tasks = cleanDict(values_tasks)
113
task_id = object_proxy.execute(DB, uid, PASS, 'project.task', 'create', values_tasks)
118
task_id = object_proxy.execute(
119
DB, uid, PASS, 'project.task', 'create', values_tasks)
115
object_proxy.execute(DB, uid, PASS, 'project.issue', 'write', [project_id], {'task_id': task_id})
121
object_proxy.execute(DB, uid, PASS, 'project.issue', 'write', [
122
project_id], {'task_id': task_id})
116
123
task_works = searchWorks(int(task[0]), works)
118
125
for work in task_works:
120
'name': work[1].encode('ascii','ignore'),
122
'date' : datetime.now().strftime("%Y/%m/%d %H:%M:%S"),
127
'name': work[1].encode('ascii', 'ignore'),
129
'date': datetime.now().strftime("%Y/%m/%d %H:%M:%S"),
123
130
'user_id': values_issue['assigned_to'],
124
131
'task_id': task_id,
126
work_id = object_proxy.execute(DB, uid, PASS, 'project.task.work', 'create', values_works)
133
work_id = object_proxy.execute(
134
DB, uid, PASS, 'project.task.work', 'create', values_works)
128
object_proxy.execute(DB, uid, PASS, 'project.task', 'write', [task_id], {'state': task[4]})
129
object_proxy.execute(DB, uid, PASS, 'project.issue', 'write', [project_id], {'state': issue[9]})
136
object_proxy.execute(DB, uid, PASS, 'project.task', 'write', [
137
task_id], {'state': task[4]})
138
object_proxy.execute(DB, uid, PASS, 'project.issue', 'write', [
139
project_id], {'state': issue[9]})