tryton-upgrades/after/migration_project_work_task...

126 lines
4.0 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')