diff --git a/line.py b/line.py index ae029d85d5..84afa61151 100644 --- a/line.py +++ b/line.py @@ -1,7 +1,7 @@ #This file is part of Tryton. The COPYRIGHT file at the top level of #this repository contains the full copyright notices and license terms. from trytond.model import ModelView, ModelSQL, fields -from trytond.wizard import Wizard +from trytond.wizard import Wizard, StateView, StateAction, Button from trytond.backend import FIELDS from trytond.pyson import Eval, PYSONEncoder, Date, Get from trytond.transaction import Transaction @@ -58,9 +58,9 @@ class Line(ModelSQL, ModelView): Line() -class EnterLinesInit(ModelView): - 'Enter Lines Init' - _name = 'timesheet.enter_lines.init' +class EnterLinesStart(ModelView): + 'Enter Lines' + _name = 'timesheet.line.enter.start' _description = __doc__ employee = fields.Many2One('company.employee', 'Employee', required=True, domain=[('company', '=', Get(Eval('context', {}), 'company'))]) @@ -74,55 +74,36 @@ class EnterLinesInit(ModelView): line_obj = Pool().get('timesheet.line') return line_obj.default_date() -EnterLinesInit() +EnterLinesStart() class EnterLines(Wizard): 'Enter Lines' - _name = 'timesheet.enter_lines' - states = { - 'init': { - 'result': { - 'type': 'form', - 'object': 'timesheet.enter_lines.init', - 'state': [ - ('end', 'Cancel', 'tryton-cancel'), - ('enter', 'Enter', 'tryton-ok', True), - ], - }, - }, - 'enter': { - 'result': { - 'type': 'action', - 'action': '_action_enter_lines', - 'state': 'end', - }, - } - } + _name = 'timesheet.line.enter' - def _action_enter_lines(self, data): - pool = Pool() - model_data_obj = pool.get('ir.model.data') - act_window_obj = pool.get('ir.action.act_window') - employee_obj = pool.get('company.employee') - act_window_id = model_data_obj.get_id('timesheet', 'act_line_form') - res = act_window_obj.read(act_window_id) - date = data['form']['date'] - date = Date(date.year, date.month, date.day) - res['pyson_domain'] = PYSONEncoder().encode([ - ('employee', '=', data['form']['employee']), - ('date', '=', date), + start = StateView('timesheet.line.enter.start', + 'timesheet.line_enter_start_view_form', [ + Button('Cancel', 'end', 'tryton-cancel'), + Button('Enter', 'enter', 'tryton-ok', default=True), ]) - res['pyson_context'] = PYSONEncoder().encode({ - 'employee': data['form']['employee'], - 'date': date, - }) + enter = StateAction('timesheet.act_line_form') - if data['form']['employee']: - employee = employee_obj.browse(data['form']['employee']) - res['name'] += " - " + employee.rec_name + def do_enter(self, session, action): + date = session.start.date + date = Date(date.year, date.month, date.day) + action['pyson_domain'] = PYSONEncoder().encode([ + ('employee', '=', session.start.employee.id), + ('date', '=', date), + ]) + action['pyson_context'] = PYSONEncoder().encode({ + 'employee': session.start.employee.id, + 'date': date, + }) + action['name'] += " - " + session.start.employee.rec_name + return action, {} - return res + def transition_enter(self, session): + return 'end' EnterLines() @@ -159,50 +140,36 @@ class HoursEmployee(ModelSQL, ModelView): HoursEmployee() -class OpenHoursEmployeeInit(ModelView): - 'Open Hours Employee Init' - _name = 'timesheet.open_hours_employee.init' +class OpenHoursEmployeeStart(ModelView): + 'Open Hours per Employee' + _name = 'timesheet.hours_employee.open.start' _description = __doc__ start_date = fields.Date('Start Date') end_date = fields.Date('End Date') -OpenHoursEmployeeInit() +OpenHoursEmployeeStart() class OpenHoursEmployee(Wizard): 'Open Hours per Employee' - _name = 'timesheet.open_hours_employee' - states = { - 'init': { - 'result': { - 'type': 'form', - 'object': 'timesheet.open_hours_employee.init', - 'state': [ - ('end', 'Cancel', 'tryton-cancel'), - ('open', 'Open', 'tryton-ok', True), - ], - }, - }, - 'open': { - 'result': { - 'type': 'action', - 'action': '_action_open', - 'state': 'end', - }, - }, - } + _name = 'timesheet.hours_employee.open' - def _action_open(self, data): - model_data_obj = Pool().get('ir.model.data') - act_window_obj = Pool().get('ir.action.act_window') - act_window_id = model_data_obj.get_id('timesheet', - 'act_hours_employee_form') - res = act_window_obj.read(act_window_id) - res['pyson_context'] = PYSONEncoder().encode({ - 'start_date': data['form']['start_date'], - 'end_date': data['form']['end_date'], - }) - return res + start = StateView('timesheet.hours_employee.open.start', + 'timesheet.hours_employee_open_start_view_form', [ + Button('Cancel', 'end', 'tryton-cancel'), + Button('Open', 'open_', 'tryton-ok', default=True), + ]) + open_ = StateAction('timesheet.act_hours_employee_form') + + def do_open_(self, session, action): + action['pyson_context'] = PYSONEncoder().encode({ + 'start_date': session.start.start_date, + 'end_date': session.start.end_date, + }) + return action, {} + + def transition_open_(self, session): + return 'end' OpenHoursEmployee() diff --git a/line.xml b/line.xml index 4b2e8e95c8..7c874f6548 100644 --- a/line.xml +++ b/line.xml @@ -81,8 +81,8 @@ this repository contains the full copyright notices and license terms. --> - - timesheet.enter_lines.init + + timesheet.line.enter.start form - + Enter Timesheet - timesheet.enter_lines + timesheet.line.enter - + timesheet.hours_employee @@ -172,8 +172,8 @@ this repository contains the full copyright notices and license terms. --> - - timesheet.open_hours_employee.init + + timesheet.hours_employee.open.start form ]]> - + Hours per Employee - timesheet.open_hours_employee + timesheet.hours_employee.open - + timesheet.hours_employee_weekly @@ -219,7 +219,7 @@ this repository contains the full copyright notices and license terms. --> + id="menu_hours_employee_open_weekly"/> timesheet.hours_employee_monthly @@ -247,6 +247,6 @@ this repository contains the full copyright notices and license terms. --> + id="menu_hours_employee_open_monthly"/> diff --git a/work.py b/work.py index 4e32e2a742..7aa647d6c0 100644 --- a/work.py +++ b/work.py @@ -1,7 +1,7 @@ #This file is part of Tryton. The COPYRIGHT file at the top level of #this repository contains the full copyright notices and license terms. from trytond.model import ModelView, ModelSQL, fields -from trytond.wizard import Wizard +from trytond.wizard import Wizard, StateView, StateAction, Button from trytond.pyson import PYSONEncoder, Not, Bool, Eval from trytond.transaction import Transaction from trytond.pool import Pool @@ -144,48 +144,36 @@ class Work(ModelSQL, ModelView): Work() -class OpenWorkInit(ModelView): - 'Open Work Init' - _name = 'timesheet.work.open.init' +class OpenWorkStart(ModelView): + 'Open Work' + _name = 'timesheet.work.open.start' _description = __doc__ from_date = fields.Date('From Date') to_date = fields.Date('To Date') -OpenWorkInit() + +OpenWorkStart() class OpenWork(Wizard): 'Open Work' _name = 'timesheet.work.open' - states = { - 'init': { - 'result': { - 'type': 'form', - 'object': 'timesheet.work.open.init', - 'state': [ - ('end', 'Cancel', 'tryton-cancel'), - ('open', 'Open', 'tryton-ok', True), - ], - }, - }, - 'open': { - 'result': { - 'type': 'action', - 'action': '_action_open_work', - 'state': 'end', - }, - }, - } - def _action_open_work(self, data): - model_data_obj = Pool().get('ir.model.data') - act_window_obj = Pool().get('ir.action.act_window') - act_window_id = model_data_obj.get_id('timesheet', 'act_work_hours_board') - res = act_window_obj.read(act_window_id) - res['pyson_context'] = PYSONEncoder().encode({ - 'from_date': data['form']['from_date'], - 'to_date': data['form']['to_date'], - }) - return res + start = StateView('timesheet.work.open.start', + 'timesheet.work_open_start_view_form', [ + Button('Cancel', 'end', 'tryton-cancel'), + Button('Open', 'open_', 'tryton-ok', default=True), + ]) + open_ = StateAction('timesheet.act_work_hours_board') + + def do_open_(self, session, action): + action['pyson_context'] = PYSONEncoder().encode({ + 'from_date': session.start.from_date, + 'to_date': session.start.to_date, + }) + return action, {} + + def transition_open_(self, session): + return 'end' OpenWork() @@ -193,43 +181,23 @@ OpenWork() class OpenWork2(OpenWork): _name = 'timesheet.work.open2' - def _action_open_work(self, data): - model_data_obj = Pool().get('ir.model.data') - act_window_obj = Pool().get('ir.action.act_window') - act_window_id = model_data_obj.get_id('timesheet', 'act_work_form2') - res = act_window_obj.read(act_window_id) - res['pyson_context'] = PYSONEncoder().encode({ - 'from_date': data['form']['from_date'], - 'to_date': data['form']['to_date'], - }) - return res + open_ = StateAction('timesheet.act_work_form2') OpenWork2() class OpenWorkGraph(Wizard): _name = 'timesheet.work.open_graph' - states = { - 'init': { - 'result': { - 'type': 'action', - 'action': '_action_open_work', - 'state': 'end', - }, - }, - } + start_state = 'open_' + open_ = StateAction('timesheet.act_work_form3') - def _action_open_work(self, data): + def do_open_(self, session, action): pool = Pool() - model_data_obj = pool.get('ir.model.data') - act_window_obj = pool.get('ir.action.act_window') work_obj = pool.get('timesheet.work') - act_window_id = model_data_obj.get_id('timesheet', 'act_work_form3') - res = act_window_obj.read(act_window_id) if 'active_id' in Transaction().context: work = work_obj.browse(Transaction().context['active_id']) - res['name'] = res['name'] + ' - ' + work.rec_name - return res + action['name'] = action['name'] + ' - ' + work.rec_name + return action, {} OpenWorkGraph() diff --git a/work.xml b/work.xml index dd996f3c3a..aeb139385c 100644 --- a/work.xml +++ b/work.xml @@ -177,8 +177,8 @@ this repository contains the full copyright notices and license terms. --> - - timesheet.work.open.init + + timesheet.work.open.start form