mirror of
https://github.com/NaN-tic/tryton-upgrades.git
synced 2023-12-14 03:32:55 +01:00
125 lines
4 KiB
Python
Executable file
125 lines
4 KiB
Python
Executable file
#!/usr/bin/env python
|
|
# -*- encoding: utf-8 -*-
|
|
import sys
|
|
|
|
dbname = sys.argv[1]
|
|
config_file = sys.argv[2]
|
|
from trytond.config import config as CONFIG
|
|
CONFIG.update_etc(config_file)
|
|
|
|
from trytond.pool import Pool
|
|
from trytond.transaction import Transaction
|
|
import logging
|
|
|
|
Pool.start()
|
|
pool = Pool(dbname)
|
|
pool.init()
|
|
|
|
context = {}
|
|
|
|
logger = logging.getLogger(__name__)
|
|
logger.setLevel(logging.DEBUG)
|
|
ch = logging.StreamHandler(sys.stdout)
|
|
ch.setLevel(logging.DEBUG)
|
|
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
|
|
ch.setFormatter(formatter)
|
|
logger.addHandler(ch)
|
|
|
|
context['language'] = 'en'
|
|
with Transaction().start(dbname, 0, context=context) as transaction:
|
|
pool = Pool()
|
|
Status = pool.get('project.work.status')
|
|
Tracker = pool.get('project.work.tracker')
|
|
Field = pool.get('ir.model.field')
|
|
|
|
cursor = transaction.connection.cursor()
|
|
|
|
# reset values
|
|
query = 'select id, name, galatea, sequence, invoiceable, role, comment from project_work_task_phase';
|
|
cursor.execute(query)
|
|
|
|
task_phases = {}
|
|
phase2status = {}
|
|
to_create = []
|
|
to_write = []
|
|
for row in cursor.fetchall():
|
|
task_phases[row[0]] = row[1]
|
|
# done
|
|
if row[0] in [4]:
|
|
status = Status(2)
|
|
status.galatea = row[2]
|
|
status.sequence = row[3]
|
|
status.invoiceable = row[4]
|
|
status.role = row[5]
|
|
status.comment = row[6]
|
|
status.types = ['project', 'task']
|
|
status.save()
|
|
else:
|
|
status = Status()
|
|
status.name = row[1]
|
|
status.galatea = row[2]
|
|
status.sequence = row[3]
|
|
status.invoiceable = row[4]
|
|
status.role = row[5]
|
|
status.comment = row[6]
|
|
status.types = ['project', 'task']
|
|
|
|
trackers = []
|
|
query = 'select tracker from "project_work_task_phase-project_work_tracker" where task_phase = %s' % (row[0]);
|
|
cursor.execute(query)
|
|
for row2 in cursor.fetchall():
|
|
tracker = Tracker(row2[0])
|
|
trackers.append(tracker)
|
|
if trackers:
|
|
status.required_effort = trackers
|
|
status.save()
|
|
|
|
phase2status[row[0]] = status.id
|
|
|
|
query = 'select id, phase from project_work_workflow_line';
|
|
cursor.execute(query)
|
|
for row3 in cursor.fetchall():
|
|
status_id = phase2status[row3[1]]
|
|
query = 'UPDATE project_work_workflow_line set status = %s where id = %s' % (status_id, row3[0]);
|
|
cursor.execute(query)
|
|
|
|
status = dict((x.name, x.id) for x in Status.search([]))
|
|
for phase_id, phase_name in task_phases.items():
|
|
if phase_name == 'Finished':
|
|
phase_name = 'Done'
|
|
status_id = status[phase_name]
|
|
query = 'UPDATE project_work set status = %s where task_phase = %s' % (status_id, phase_id);
|
|
cursor.execute(query)
|
|
transaction.commit()
|
|
|
|
# locales
|
|
for lang in ('ca', 'es'):
|
|
context['language'] = lang
|
|
with Transaction().start(dbname, 0, context=context) as transaction:
|
|
pool = Pool()
|
|
Status = pool.get('project.work.status')
|
|
Tracker = pool.get('project.work.tracker')
|
|
Field = pool.get('ir.model.field')
|
|
|
|
cursor = transaction.connection.cursor()
|
|
|
|
# reset values
|
|
query = 'select id, name, galatea, sequence, invoiceable, role, comment from project_work_task_phase';
|
|
cursor.execute(query)
|
|
|
|
to_write = []
|
|
for row4 in cursor.fetchall():
|
|
if row4[0] in [4]:
|
|
continue
|
|
status_id = phase2status[row4[0]]
|
|
query = "select id, src, value, name res_id from ir_translation where name = 'project.work.task_phase,name' and res_id = %s and lang = '%s'" % (row4[0], lang);
|
|
cursor.execute(query)
|
|
vals = cursor.fetchone()
|
|
if vals:
|
|
status = Status(status_id)
|
|
status.name = vals[2]
|
|
status.save()
|
|
|
|
transaction.commit()
|
|
|
|
logger.info('Done')
|