New wizard design

This commit is contained in:
Cédric Krier committed 2012-01-02 18:10:18 +01:00
1 parent adb3959de6
commit cf9324f10a
4 files changed
+91 -156

No files matched your search

+47 -80
View File
@@ -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()
+14 -14
View File
@@ -81,8 +81,8 @@ this repository contains the full copyright notices and license terms. -->
<field name="group" ref="group_timesheet_admin"/>
</record>
<record model="ir.ui.view" id="enter_lines_init_view_form">
<field name="model">timesheet.enter_lines.init</field>
<record model="ir.ui.view" id="line_enter_start_view_form">
<field name="model">timesheet.line.enter.start</field>
<field name="type">form</field>
<field name="arch" type="xml">
<![CDATA[
@@ -96,12 +96,12 @@ this repository contains the full copyright notices and license terms. -->
</field>
</record>
<record model="ir.action.wizard" id="act_enter_lines">
<record model="ir.action.wizard" id="act_line_enter">
<field name="name">Enter Timesheet</field>
<field name="wiz_name">timesheet.enter_lines</field>
<field name="wiz_name">timesheet.line.enter</field>
</record>
<menuitem parent="menu_timesheet" action="act_enter_lines"
id="menu_enter_lines" sequence="20"/>
<menuitem parent="menu_timesheet" action="act_line_enter"
id="menu_line_enter" sequence="20"/>
<record model="ir.ui.view" id="hours_employee_view_tree">
<field name="model">timesheet.hours_employee</field>
@@ -172,8 +172,8 @@ this repository contains the full copyright notices and license terms. -->
<field name="group" ref="group_timesheet_admin"/>
</record>
<record model="ir.ui.view" id="open_hours_employee_init_view_form">
<field name="model">timesheet.open_hours_employee.init</field>
<record model="ir.ui.view" id="hours_employee_open_start_view_form">
<field name="model">timesheet.hours_employee.open.start</field>
<field name="type">form</field>
<field name="arch" type="xml">
<![CDATA[
@@ -186,12 +186,12 @@ this repository contains the full copyright notices and license terms. -->
]]>
</field>
</record>
<record model="ir.action.wizard" id="act_open_hours_employee">
<record model="ir.action.wizard" id="act_hours_employee_open">
<field name="name">Hours per Employee</field>
<field name="wiz_name">timesheet.open_hours_employee</field>
<field name="wiz_name">timesheet.hours_employee.open</field>
</record>
<menuitem parent="menu_reporting" action="act_open_hours_employee"
icon="tryton-list" id="menu_open_hours_employee"/>
<menuitem parent="menu_reporting" action="act_hours_employee_open"
icon="tryton-list" id="menu_hours_employee_open"/>
<record model="ir.ui.view" id="hours_employee_weekly_view_tree">
<field name="model">timesheet.hours_employee_weekly</field>
@@ -219,7 +219,7 @@ this repository contains the full copyright notices and license terms. -->
<field name="act_window" ref="act_hours_employee_weekly_form"/>
</record>
<menuitem parent="menu_reporting" action="act_hours_employee_weekly_form"
id="menu_open_hours_employee_weekly"/>
id="menu_hours_employee_open_weekly"/>
<record model="ir.ui.view" id="hours_employee_monthly_view_tree">
<field name="model">timesheet.hours_employee_monthly</field>
@@ -247,6 +247,6 @@ this repository contains the full copyright notices and license terms. -->
<field name="act_window" ref="act_hours_employee_monthly_form"/>
</record>
<menuitem parent="menu_reporting" action="act_hours_employee_monthly_form"
id="menu_open_hours_employee_monthly"/>
id="menu_hours_employee_open_monthly"/>
</data>
</tryton>
+28 -60
View File
@@ -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()
+2 -2
View File
@@ -177,8 +177,8 @@ this repository contains the full copyright notices and license terms. -->
<field name="act_window" ref="act_work_hours_board"/>
</record>
<record model="ir.ui.view" id="work_open_init_view_form">
<field name="model">timesheet.work.open.init</field>
<record model="ir.ui.view" id="work_open_start_view_form">
<field name="model">timesheet.work.open.start</field>
<field name="type">form</field>
<field name="arch" type="xml">
<![CDATA[