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