Rename work_type into work
This commit is contained in:
1 parent
3f74394520
commit
577422b85d
6 files changed
+129
-128
No files matched your search
+1
-1
@@ -23,5 +23,5 @@
|
||||
#
|
||||
##############################################################################
|
||||
|
||||
from work_type import *
|
||||
from work import *
|
||||
from line import *
|
||||
+1
-1
@@ -13,7 +13,7 @@
|
||||
],
|
||||
'xml': [
|
||||
'timesheet.xml',
|
||||
'work_type.xml',
|
||||
'work.xml',
|
||||
'line.xml',
|
||||
],
|
||||
}
|
||||
@@ -14,7 +14,7 @@ class Line(OSV):
|
||||
select=1)
|
||||
date = fields.Date('Date', required=True, select=1)
|
||||
hours = fields.Float('Hours', digits=(16, 2), required=True)
|
||||
work_type = fields.Many2One('timesheet.work_type', 'Work Type',
|
||||
work = fields.Many2One('timesheet.work', 'Work Type',
|
||||
required=True, select=1, domain=[('type', '!=', 'view')])
|
||||
description = fields.Char('Description')
|
||||
|
||||
|
||||
@@ -13,8 +13,8 @@
|
||||
<field name="date"/>
|
||||
<label name="hours"/>
|
||||
<field name="hours" widget="float_time"/>
|
||||
<label name="work_type"/>
|
||||
<field name="work_type"/>
|
||||
<label name="work"/>
|
||||
<field name="work"/>
|
||||
<label name="description"/>
|
||||
<field name="description"/>
|
||||
</form>
|
||||
@@ -30,7 +30,7 @@
|
||||
<field name="employee" select="1"/>
|
||||
<field name="date" select="1"/>
|
||||
<field name="hours" widget="float_time" sum="Hours"/>
|
||||
<field name="work_type" select="1" width="300"/>
|
||||
<field name="work" select="1" width="300"/>
|
||||
<field name="description"/>
|
||||
</tree>
|
||||
]]>
|
||||
|
||||
+48
-47
@@ -1,20 +1,20 @@
|
||||
"Work Type"
|
||||
"Work"
|
||||
|
||||
from trytond.osv import fields, OSV
|
||||
from trytond.wizard import Wizard, WizardOSV
|
||||
|
||||
|
||||
class WorkType(OSV):
|
||||
'Work Type'
|
||||
_name = 'timesheet.work_type'
|
||||
class Work(OSV):
|
||||
'Work'
|
||||
_name = 'timesheet.work'
|
||||
_description = __doc__
|
||||
|
||||
name = fields.Char('Name', required=True)
|
||||
complete_name = fields.Function('get_complete_name', type='char',
|
||||
string='Name')
|
||||
active = fields.Boolean('Active')
|
||||
parent = fields.Many2One('timesheet.work_type', 'Parent', select=2)
|
||||
childs = fields.One2Many('timesheet.work_type', 'parent', 'Childs')
|
||||
parent = fields.Many2One('timesheet.work', 'Parent', select=2)
|
||||
childs = fields.One2Many('timesheet.work', 'parent', 'Childs')
|
||||
hours = fields.Function('get_hours', digits=(16, 2), string='Hours')
|
||||
type = fields.Selection([
|
||||
('view', 'View'),
|
||||
@@ -22,10 +22,10 @@ class WorkType(OSV):
|
||||
], 'Type', required=True, select=1)
|
||||
|
||||
def __init__(self):
|
||||
super(WorkType, self).__init__()
|
||||
super(Work, self).__init__()
|
||||
self._constraints += [
|
||||
('check_recursion',
|
||||
'Error! You can not create recursive work types.', ['parent'])
|
||||
'Error! You can not create recursive works.', ['parent'])
|
||||
]
|
||||
|
||||
def default_active(self, cursor, user, context=None):
|
||||
@@ -54,8 +54,8 @@ class WorkType(OSV):
|
||||
|
||||
def get_hours(self, cursor, user, ids, name, arg, context=None):
|
||||
all_ids = self.search(cursor, user, [('parent', 'child_of', ids)])
|
||||
clause = "SELECT work_type, sum(hours) FROM timesheet_line "\
|
||||
"WHERE work_type IN (%s) "\
|
||||
clause = "SELECT work, sum(hours) FROM timesheet_line "\
|
||||
"WHERE work IN (%s) "\
|
||||
% ",".join(["%s" for id in all_ids])
|
||||
date_cond = ""
|
||||
args = []
|
||||
@@ -65,17 +65,17 @@ class WorkType(OSV):
|
||||
if context.get('to_date'):
|
||||
date_cond += " AND date <= %s"
|
||||
args.append(context['to_date'])
|
||||
clause += date_cond + " GROUP BY work_type"
|
||||
clause += date_cond + " GROUP BY work"
|
||||
|
||||
cursor.execute(clause, all_ids + args)
|
||||
|
||||
hours_by_wt = dict([(i[0], i[1]) for i in cursor.fetchall()])
|
||||
to_compute = dict.fromkeys(all_ids, True)
|
||||
work_types = self.browse(cursor, user, all_ids, context=context)
|
||||
works = self.browse(cursor, user, all_ids, context=context)
|
||||
childs = {}
|
||||
for work_type in work_types:
|
||||
if work_type.parent:
|
||||
childs.setdefault(work_type.parent.id, []).append(work_type.id)
|
||||
for work in works:
|
||||
if work.parent:
|
||||
childs.setdefault(work.parent.id, []).append(work.id)
|
||||
self._tree_qty(hours_by_wt, childs, ids, to_compute)
|
||||
return hours_by_wt
|
||||
|
||||
@@ -85,13 +85,14 @@ class WorkType(OSV):
|
||||
if isinstance(ids, (int, long)):
|
||||
ids = [ids]
|
||||
res = []
|
||||
def _name(work_type):
|
||||
if work_type.parent:
|
||||
return _name(work_type.parent) + '\\' + work_type.name
|
||||
|
||||
def _name(work):
|
||||
if work.parent:
|
||||
return _name(work.parent) + '\\' + work.name
|
||||
else:
|
||||
return work_type.name
|
||||
for work_type in self.browse(cursor, user, ids, context=context):
|
||||
res.append((work_type.id, _name(work_type)))
|
||||
return work.name
|
||||
for work in self.browse(cursor, user, ids, context=context):
|
||||
res.append((work.id, _name(work)))
|
||||
return res
|
||||
|
||||
def write(self, cursor, user, ids, vals, context=None):
|
||||
@@ -100,7 +101,7 @@ class WorkType(OSV):
|
||||
child_ids = self.search(cursor, user, [
|
||||
('parent', 'child_of', ids),
|
||||
], context=context)
|
||||
res = super(WorkType, self).write(cursor, user, ids, vals,
|
||||
res = super(Work, self).write(cursor, user, ids, vals,
|
||||
context=context)
|
||||
if child_ids:
|
||||
self.write(cursor, user, child_ids, {
|
||||
@@ -108,24 +109,24 @@ class WorkType(OSV):
|
||||
}, context=context)
|
||||
return res
|
||||
|
||||
WorkType()
|
||||
Work()
|
||||
|
||||
|
||||
class OpenWorkTypeInit(WizardOSV):
|
||||
_name = 'timesheet.work_type.open.init'
|
||||
class OpenWorkInit(WizardOSV):
|
||||
_name = 'timesheet.work.open.init'
|
||||
from_date = fields.Date('From Date')
|
||||
to_date = fields.Date('To Date')
|
||||
OpenWorkTypeInit()
|
||||
OpenWorkInit()
|
||||
|
||||
|
||||
class OpenWorkType(Wizard):
|
||||
'Open Work Types'
|
||||
_name = 'timesheet.work_type.open'
|
||||
class OpenWork(Wizard):
|
||||
'Open Work'
|
||||
_name = 'timesheet.work.open'
|
||||
states = {
|
||||
'init': {
|
||||
'result': {
|
||||
'type': 'form',
|
||||
'object': 'timesheet.work_type.open.init',
|
||||
'object': 'timesheet.work.open.init',
|
||||
'state': [
|
||||
('end', 'Cancel', 'tryton-cancel'),
|
||||
('open', 'Open', 'tryton-ok', True),
|
||||
@@ -135,18 +136,18 @@ class OpenWorkType(Wizard):
|
||||
'open': {
|
||||
'result': {
|
||||
'type': 'action',
|
||||
'action': '_action_open_work_type',
|
||||
'action': '_action_open_work',
|
||||
'state': 'end',
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
def _action_open_work_type(self, cursor, user, data, context=None):
|
||||
def _action_open_work(self, cursor, user, data, context=None):
|
||||
model_data_obj = self.pool.get('ir.model.data')
|
||||
act_window_obj = self.pool.get('ir.action.act_window')
|
||||
|
||||
model_data_ids = model_data_obj.search(cursor, user, [
|
||||
('fs_id', '=', 'act_work_type_tree2'),
|
||||
('fs_id', '=', 'act_work_tree2'),
|
||||
('module', '=', 'timesheet'),
|
||||
], limit=1, context=context)
|
||||
model_data = model_data_obj.browse(cursor, user, model_data_ids[0],
|
||||
@@ -158,18 +159,18 @@ class OpenWorkType(Wizard):
|
||||
})
|
||||
return res
|
||||
|
||||
OpenWorkType()
|
||||
OpenWork()
|
||||
|
||||
|
||||
class OpenWorkType2(OpenWorkType):
|
||||
_name = 'timesheet.work_type.open2'
|
||||
class OpenWork2(OpenWork):
|
||||
_name = 'timesheet.work.open2'
|
||||
|
||||
def _action_open_work_type(self, cursor, user, data, context=None):
|
||||
def _action_open_work(self, cursor, user, data, context=None):
|
||||
model_data_obj = self.pool.get('ir.model.data')
|
||||
act_window_obj = self.pool.get('ir.action.act_window')
|
||||
|
||||
model_data_ids = model_data_obj.search(cursor, user, [
|
||||
('fs_id', '=', 'act_work_type_form2'),
|
||||
('fs_id', '=', 'act_work_form2'),
|
||||
('module', '=', 'timesheet'),
|
||||
], limit=1, context=context)
|
||||
model_data = model_data_obj.browse(cursor, user, model_data_ids[0],
|
||||
@@ -181,40 +182,40 @@ class OpenWorkType2(OpenWorkType):
|
||||
})
|
||||
return res
|
||||
|
||||
OpenWorkType2()
|
||||
OpenWork2()
|
||||
|
||||
|
||||
class OpenWorkTypeGraph(Wizard):
|
||||
_name = 'timesheet.work_type.open_graph'
|
||||
class OpenWorkGraph(Wizard):
|
||||
_name = 'timesheet.work.open_graph'
|
||||
states = {
|
||||
'init': {
|
||||
'result': {
|
||||
'type': 'action',
|
||||
'action': '_action_open_work_type',
|
||||
'action': '_action_open_work',
|
||||
'state': 'end',
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
def _action_open_work_type(self, cursor, user, data, context=None):
|
||||
def _action_open_work(self, cursor, user, data, context=None):
|
||||
model_data_obj = self.pool.get('ir.model.data')
|
||||
act_window_obj = self.pool.get('ir.action.act_window')
|
||||
work_type_obj = self.pool.get('timesheet.work_type')
|
||||
work_obj = self.pool.get('timesheet.work')
|
||||
|
||||
if context is None:
|
||||
context = {}
|
||||
|
||||
model_data_ids = model_data_obj.search(cursor, user, [
|
||||
('fs_id', '=', 'act_work_type_form3'),
|
||||
('fs_id', '=', 'act_work_form3'),
|
||||
('module', '=', 'timesheet'),
|
||||
], limit=1, context=context)
|
||||
model_data = model_data_obj.browse(cursor, user, model_data_ids[0],
|
||||
context=context)
|
||||
res = act_window_obj.read(cursor, user, model_data.db_id, context=context)
|
||||
if 'active_id' in context:
|
||||
name = work_type_obj.name_get(cursor, user, context['active_id'],
|
||||
name = work_obj.name_get(cursor, user, context['active_id'],
|
||||
context=context)[0][1]
|
||||
res['name'] = res['name'] + ' - ' + name
|
||||
return res
|
||||
|
||||
OpenWorkTypeGraph()
|
||||
OpenWorkGraph()
|
||||
+75
-75
@@ -1,12 +1,12 @@
|
||||
<?xml version="1.0"?>
|
||||
<tryton>
|
||||
<data>
|
||||
<record model="ir.ui.view" id="work_type_view_form">
|
||||
<field name="model">timesheet.work_type</field>
|
||||
<record model="ir.ui.view" id="work_view_form">
|
||||
<field name="model">timesheet.work</field>
|
||||
<field name="type">form</field>
|
||||
<field name="arch" type="xml">
|
||||
<![CDATA[
|
||||
<form string="Work Type">
|
||||
<form string="Work">
|
||||
<label name="name"/>
|
||||
<field name="name"/>
|
||||
<label name="active"/>
|
||||
@@ -19,13 +19,13 @@
|
||||
]]>
|
||||
</field>
|
||||
</record>
|
||||
<record model="ir.ui.view" id="work_type_view_tree">
|
||||
<field name="model">timesheet.work_type</field>
|
||||
<record model="ir.ui.view" id="work_view_tree">
|
||||
<field name="model">timesheet.work</field>
|
||||
<field name="type">tree</field>
|
||||
<field name="priority" eval="8"/>
|
||||
<field name="arch" type="xml">
|
||||
<![CDATA[
|
||||
<tree string="Work Types">
|
||||
<tree string="Works">
|
||||
<field name="complete_name"/>
|
||||
<field name="name" select="1" tree_invisible="1"/>
|
||||
<field name="active" select="1" tree_invisible="1"/>
|
||||
@@ -33,93 +33,93 @@
|
||||
]]>
|
||||
</field>
|
||||
</record>
|
||||
<record model="ir.action.act_window" id="act_work_type_form">
|
||||
<field name="name">Work Types</field>
|
||||
<field name="res_model">timesheet.work_type</field>
|
||||
<record model="ir.action.act_window" id="act_work_form">
|
||||
<field name="name">Works</field>
|
||||
<field name="res_model">timesheet.work</field>
|
||||
<field name="view_type">form</field>
|
||||
</record>
|
||||
<record model="ir.action.act_window.view"
|
||||
id="act_work_type_form_view1">
|
||||
id="act_work_form_view1">
|
||||
<field name="sequence" eval="10"/>
|
||||
<field name="view" ref="work_type_view_tree"/>
|
||||
<field name="act_window" ref="act_work_type_form"/>
|
||||
<field name="view" ref="work_view_tree"/>
|
||||
<field name="act_window" ref="act_work_form"/>
|
||||
</record>
|
||||
<record model="ir.action.act_window.view"
|
||||
id="act_work_type_form_view2">
|
||||
id="act_work_form_view2">
|
||||
<field name="sequence" eval="20"/>
|
||||
<field name="view" ref="work_type_view_form"/>
|
||||
<field name="act_window" ref="act_work_type_form"/>
|
||||
<field name="view" ref="work_view_form"/>
|
||||
<field name="act_window" ref="act_work_form"/>
|
||||
</record>
|
||||
<menuitem parent="menu_timesheet_configuration" action="act_work_type_form"
|
||||
id="menu_work_type_form"/>
|
||||
<record model="ir.ui.view" id="work_type_view_tree2">
|
||||
<field name="model">timesheet.work_type</field>
|
||||
<menuitem parent="menu_timesheet_configuration" action="act_work_form"
|
||||
id="menu_work_form"/>
|
||||
<record model="ir.ui.view" id="work_view_tree2">
|
||||
<field name="model">timesheet.work</field>
|
||||
<field name="type">tree</field>
|
||||
<field name="priority" eval="16"/>
|
||||
<field name="field_childs">childs</field>
|
||||
<field name="arch" type="xml">
|
||||
<![CDATA[
|
||||
<tree string="Work Types">
|
||||
<tree string="Works">
|
||||
<field name="name" select="1"/>
|
||||
<field name="type" select="1"/>
|
||||
</tree>
|
||||
]]>
|
||||
</field>
|
||||
</record>
|
||||
<record model="ir.action.act_window" id="act_work_type_tree">
|
||||
<field name="name">Work Types</field>
|
||||
<field name="res_model">timesheet.work_type</field>
|
||||
<record model="ir.action.act_window" id="act_work_tree">
|
||||
<field name="name">Works</field>
|
||||
<field name="res_model">timesheet.work</field>
|
||||
<field name="view_type">tree</field>
|
||||
<field name="domain">[('parent', '=', False)]</field>
|
||||
</record>
|
||||
<record model="ir.action.act_window.view"
|
||||
id="act_work_type_tree_view1">
|
||||
id="act_work_tree_view1">
|
||||
<field name="sequence" eval="10"/>
|
||||
<field name="view" ref="work_type_view_tree2"/>
|
||||
<field name="act_window" ref="act_work_type_tree"/>
|
||||
<field name="view" ref="work_view_tree2"/>
|
||||
<field name="act_window" ref="act_work_tree"/>
|
||||
</record>
|
||||
<menuitem parent="menu_work_type_form" action="act_work_type_tree"
|
||||
id="menu_work_type_tree"/>
|
||||
<menuitem parent="menu_work_form" action="act_work_tree"
|
||||
id="menu_work_tree"/>
|
||||
|
||||
<record model="ir.ui.view" id="work_type_view_tree3">
|
||||
<field name="model">timesheet.work_type</field>
|
||||
<record model="ir.ui.view" id="work_view_tree3">
|
||||
<field name="model">timesheet.work</field>
|
||||
<field name="type">tree</field>
|
||||
<field name="priority" eval="16"/>
|
||||
<field name="field_childs">childs</field>
|
||||
<field name="arch" type="xml">
|
||||
<![CDATA[
|
||||
<tree string="Work Types">
|
||||
<tree string="Works">
|
||||
<field name="name" select="1"/>
|
||||
<field name="hours" widget="float_time"/>
|
||||
</tree>
|
||||
]]>
|
||||
</field>
|
||||
</record>
|
||||
<record model="ir.action.act_window" id="act_work_type_tree2">
|
||||
<field name="name">Work Types</field>
|
||||
<field name="res_model">timesheet.work_type</field>
|
||||
<record model="ir.action.act_window" id="act_work_tree2">
|
||||
<field name="name">Works</field>
|
||||
<field name="res_model">timesheet.work</field>
|
||||
<field name="view_type">tree</field>
|
||||
<field name="domain">[('parent', '=', False)]</field>
|
||||
</record>
|
||||
<record model="ir.action.act_window.view"
|
||||
id="act_work_type_tree_view2">
|
||||
id="act_work_tree_view2">
|
||||
<field name="sequence" eval="10"/>
|
||||
<field name="view" ref="work_type_view_tree3"/>
|
||||
<field name="act_window" ref="act_work_type_tree2"/>
|
||||
<field name="view" ref="work_view_tree3"/>
|
||||
<field name="act_window" ref="act_work_tree2"/>
|
||||
</record>
|
||||
<record model="ir.action.wizard" id="act_open_work_type">
|
||||
<field name="name">Hours per Work Type</field>
|
||||
<field name="wiz_name">timesheet.work_type.open</field>
|
||||
<record model="ir.action.wizard" id="act_open_work">
|
||||
<field name="name">Hours per Work</field>
|
||||
<field name="wiz_name">timesheet.work.open</field>
|
||||
</record>
|
||||
<menuitem parent="menu_reporting" action="act_open_work_type"
|
||||
id="menu_work_type_tree2" icon="tryton-tree"/>
|
||||
<menuitem parent="menu_reporting" action="act_open_work"
|
||||
id="menu_work_tree2" icon="tryton-tree"/>
|
||||
|
||||
<record model="ir.ui.view" id="work_type_view_graph">
|
||||
<field name="model">timesheet.work_type</field>
|
||||
<record model="ir.ui.view" id="work_view_graph">
|
||||
<field name="model">timesheet.work</field>
|
||||
<field name="type">graph</field>
|
||||
<field name="arch" type="xml">
|
||||
<![CDATA[
|
||||
<graph string="Hours per Work Type" type="pie">
|
||||
<graph string="Hours per Work" type="pie">
|
||||
<x>
|
||||
<field name="name"/>
|
||||
</x>
|
||||
@@ -130,28 +130,28 @@
|
||||
]]>
|
||||
</field>
|
||||
</record>
|
||||
<record model="ir.action.act_window" id="act_work_type_form2">
|
||||
<field name="name">Hours per Work Type</field>
|
||||
<field name="res_model">timesheet.work_type</field>
|
||||
<record model="ir.action.act_window" id="act_work_form2">
|
||||
<field name="name">Hours per Work</field>
|
||||
<field name="res_model">timesheet.work</field>
|
||||
<field name="view_type">form</field>
|
||||
<field name="domain">[('parent', '=', False)]</field>
|
||||
</record>
|
||||
<record model="ir.action.act_window.view"
|
||||
id="act_work_type_form2_view1">
|
||||
id="act_work_form2_view1">
|
||||
<field name="sequence" eval="10"/>
|
||||
<field name="view" ref="work_type_view_graph"/>
|
||||
<field name="act_window" ref="act_work_type_form2"/>
|
||||
<field name="view" ref="work_view_graph"/>
|
||||
<field name="act_window" ref="act_work_form2"/>
|
||||
</record>
|
||||
<record model="ir.action.wizard" id="act_open_work_type2">
|
||||
<field name="name">Hours per Work Type</field>
|
||||
<field name="wiz_name">timesheet.work_type.open2</field>
|
||||
<record model="ir.action.wizard" id="act_open_work2">
|
||||
<field name="name">Hours per Work</field>
|
||||
<field name="wiz_name">timesheet.work.open2</field>
|
||||
</record>
|
||||
<record model="ir.ui.view" id="work_type_open_init_view_form">
|
||||
<field name="model">timesheet.work_type.open.init</field>
|
||||
<record model="ir.ui.view" id="work_open_init_view_form">
|
||||
<field name="model">timesheet.work.open.init</field>
|
||||
<field name="type">form</field>
|
||||
<field name="arch" type="xml">
|
||||
<![CDATA[
|
||||
<form string="Hours per Work Type">
|
||||
<form string="Hours per Work">
|
||||
<label name="from_date"/>
|
||||
<field name="from_date"/>
|
||||
<label name="to_date"/>
|
||||
@@ -160,40 +160,40 @@
|
||||
]]>
|
||||
</field>
|
||||
</record>
|
||||
<menuitem parent="menu_work_type_tree2" action="act_open_work_type2"
|
||||
id="menu_work_type_form2" icon="tryton-graph"/>
|
||||
<menuitem parent="menu_work_tree2" action="act_open_work2"
|
||||
id="menu_work_form2" icon="tryton-graph"/>
|
||||
|
||||
<record model="ir.action.act_window" id="act_work_type_form3">
|
||||
<field name="name">Hours per Work Type</field>
|
||||
<field name="res_model">timesheet.work_type</field>
|
||||
<record model="ir.action.act_window" id="act_work_form3">
|
||||
<field name="name">Hours per Work</field>
|
||||
<field name="res_model">timesheet.work</field>
|
||||
<field name="view_type">form</field>
|
||||
<field name="domain">[('parent', 'in', active_ids)]</field>
|
||||
</record>
|
||||
<record model="ir.action.act_window.view"
|
||||
id="act_work_type_form3_view1">
|
||||
id="act_work_form3_view1">
|
||||
<field name="sequence" eval="10"/>
|
||||
<field name="view" ref="work_type_view_graph"/>
|
||||
<field name="act_window" ref="act_work_type_form3"/>
|
||||
<field name="view" ref="work_view_graph"/>
|
||||
<field name="act_window" ref="act_work_form3"/>
|
||||
</record>
|
||||
<record model="ir.action.wizard" id="act_open_work_type_graph">
|
||||
<field name="name">Hours per Work Type</field>
|
||||
<field name="wiz_name">timesheet.work_type.open_graph</field>
|
||||
<record model="ir.action.wizard" id="act_open_work_graph">
|
||||
<field name="name">Hours per Work</field>
|
||||
<field name="wiz_name">timesheet.work.open_graph</field>
|
||||
</record>
|
||||
<record model="ir.action.keyword" id="act_work_type_keyword">
|
||||
<record model="ir.action.keyword" id="act_work_keyword">
|
||||
<field name="keyword">graph_open</field>
|
||||
<field name="model">timesheet.work_type,0</field>
|
||||
<field name="action" ref="act_open_work_type_graph"/>
|
||||
<field name="model">timesheet.work,0</field>
|
||||
<field name="action" ref="act_open_work_graph"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.model.access" id="access_work_type">
|
||||
<field name="model" search="[('model', '=', 'timesheet.work_type')]"/>
|
||||
<record model="ir.model.access" id="access_work">
|
||||
<field name="model" search="[('model', '=', 'timesheet.work')]"/>
|
||||
<field name="perm_read" eval="True"/>
|
||||
<field name="perm_write" eval="False"/>
|
||||
<field name="perm_create" eval="False"/>
|
||||
<field name="perm_unlink" eval="False"/>
|
||||
</record>
|
||||
<record model="ir.model.access" id="access_work_type_admin">
|
||||
<field name="model" search="[('model', '=', 'timesheet.work_type')]"/>
|
||||
<record model="ir.model.access" id="access_work_admin">
|
||||
<field name="model" search="[('model', '=', 'timesheet.work')]"/>
|
||||
<field name="group" ref="group_timesheet_admin"/>
|
||||
<field name="perm_read" eval="True"/>
|
||||
<field name="perm_write" eval="True"/>
|
||||
Reference in new issue
Block a user