2021-11-30 22:50:02 +01:00
#!/usr/bin/env python
2022-01-27 16:25:40 +01:00
# -*- encoding: utf-8 -*-
2021-11-30 22:50:02 +01:00
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 )
2021-12-03 12:51:10 +01:00
context [ ' language ' ] = ' en '
2021-11-30 22:50:02 +01:00
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 = { }
2021-12-03 12:51:10 +01:00
phase2status = { }
2021-11-30 22:50:02 +01:00
to_create = [ ]
to_write = [ ]
for row in cursor . fetchall ( ) :
task_phases [ row [ 0 ] ] = row [ 1 ]
# done
if row [ 0 ] in [ 4 ] :
status = Status ( 2 )
2021-12-03 12:51:10 +01:00
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 ( )
2021-11-30 22:50:02 +01:00
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 ]
2021-12-03 12:51:10 +01:00
status . types = [ ' project ' , ' task ' ]
2021-11-30 22:50:02 +01:00
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
2021-12-03 12:51:10 +01:00
status . save ( )
2021-11-30 22:50:02 +01:00
2021-12-03 12:51:10 +01:00
phase2status [ row [ 0 ] ] = status . id
2021-11-30 22:50:02 +01:00
2021-12-03 12:51:10 +01:00
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 )
2021-11-30 22:50:02 +01:00
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 ( )
2021-12-03 12:51:10 +01:00
# 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 ' )