New wizard design
This commit is contained in:
1 parent
adb3959de6
commit
cf9324f10a
4 files changed
+91
-156
No files matched your search
@@ -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()
|
||||
|
||||
|
||||
@@ -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>
|
||||
@@ -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()
|
||||
@@ -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[
|
||||
|
||||
Reference in new issue
Block a user