[MERGE] merged trunk.

bzr revid: vmt@openerp.com-20121105090123-difc1iksbnb28mtv
This commit is contained in:
Vo Minh Thu 2012-11-05 10:01:23 +01:00
commit 7169f91bc3
26 changed files with 189 additions and 378 deletions

View File

@ -86,14 +86,12 @@ The kernel of OpenERP, needed for all installation.
'security/base_security.xml',
'security/ir.model.access.csv',
'security/ir.model.access-1.csv', # res.partner.address is deprecated; it is still there for backward compability only and will be removed in next version
'res/res_widget_view.xml',
'res/res_widget_data.xml',
],
'demo': [
'base_demo.xml',
'res/res_partner_demo.xml',
'res/res_partner_demo.yml',
'res/res_widget_demo.xml',
'res/res_partner_image_demo.xml',
],
'test': [
'test/base_test.xml',

View File

@ -7,14 +7,14 @@ msgstr ""
"Project-Id-Version: OpenERP Server 6.0.0-rc1\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2012-02-08 00:44+0000\n"
"PO-Revision-Date: 2011-01-18 05:32+0000\n"
"PO-Revision-Date: 2012-11-05 00:42+0000\n"
"Last-Translator: Cristian Salamea (Gnuthink) <ovnicraft@gmail.com>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-10-20 05:06+0000\n"
"X-Generator: Launchpad (build 16165)\n"
"X-Launchpad-Export-Date: 2012-11-05 04:40+0000\n"
"X-Generator: Launchpad (build 16232)\n"
#. module: base
#: model:res.country,name:base.sh
@ -655,6 +655,26 @@ msgid ""
" Accounting/Reporting/Generic Reporting/Partners/Follow-ups Sent\n"
"\n"
msgstr ""
"\n"
"Modulo para automatizar cartas para facturas no pagadas, con recordatorios "
"multi-nivel\n"
"==========================================================================\n"
"\n"
"Pueden definirse múltiples niveles de recordatorios a través del menú:\n"
" Contabilidad/Configuración/Varios/Seguimientos\n"
"\n"
"Una vez definidos, pueden imprimirse automáticamente recordatorios cada día, "
"simplemente haciendo clic en el menú: \n"
" Contabilidad/Procesamiento periódico/Facturación/Enviar seguimientos\n"
"\n"
"Se generará un PDF con todas las cartas de acuerdo con los diferentes \n"
"niveles de recordatorio definidos. Se pueden definir diferentes políticas\n"
"para las distintas compañías . También se puede enviar correo al cliente.\n"
"\n"
"Debe denotarse que si se quiere revisar el nivel de seguimiento de una "
"empresa/cuenta determinada, se puede realizar en el menú:\n"
" Contabilidad/Informes/Informes genéricos/Empresas/Seguimientos enviados\n"
"\n"
#. module: base
#: field:res.country,name:0

View File

@ -142,13 +142,13 @@ class report_xml(osv.osv):
}
_defaults = {
'type': lambda *a: 'ir.actions.report.xml',
'multi': lambda *a: False,
'auto': lambda *a: True,
'header': lambda *a: True,
'report_sxw_content': lambda *a: False,
'report_type': lambda *a: 'pdf',
'attachment': lambda *a: False,
'type': 'ir.actions.report.xml',
'multi': False,
'auto': True,
'header': True,
'report_sxw_content': False,
'report_type': 'pdf',
'attachment': False,
}
report_xml()
@ -251,14 +251,14 @@ class act_window(osv.osv):
}
_defaults = {
'type': lambda *a: 'ir.actions.act_window',
'view_type': lambda *a: 'form',
'view_mode': lambda *a: 'tree,form',
'context': lambda *a: '{}',
'limit': lambda *a: 80,
'target': lambda *a: 'current',
'auto_refresh': lambda *a: 0,
'auto_search':lambda *a: True,
'type': 'ir.actions.act_window',
'view_type': 'form',
'view_mode': 'tree,form',
'context': '{}',
'limit': 80,
'target': 'current',
'auto_refresh': 0,
'auto_search':True,
'multi': False,
}
@ -298,7 +298,7 @@ class act_window_view(osv.osv):
help="If set to true, the action will not be displayed on the right toolbar of a form view."),
}
_defaults = {
'multi': lambda *a: False,
'multi': False,
}
def _auto_init(self, cr, context=None):
super(act_window_view, self)._auto_init(cr, context)
@ -322,8 +322,8 @@ class act_wizard(osv.osv):
'model': fields.char('Object', size=64),
}
_defaults = {
'type': lambda *a: 'ir.actions.wizard',
'multi': lambda *a: False,
'type': 'ir.actions.wizard',
'multi': False,
}
act_wizard()
@ -344,8 +344,8 @@ class act_url(osv.osv):
)
}
_defaults = {
'type': lambda *a: 'ir.actions.act_url',
'target': lambda *a: 'new'
'type': 'ir.actions.act_url',
'target': 'new'
}
act_url()
@ -388,7 +388,7 @@ class server_object_lines(osv.osv):
], 'Type', required=True, size=32, change_default=True),
}
_defaults = {
'type': lambda *a: 'equation',
'type': 'equation',
}
server_object_lines()
@ -490,11 +490,11 @@ class actions_server(osv.osv):
'copy_object': fields.reference('Copy Of', selection=_select_objects, size=256),
}
_defaults = {
'state': lambda *a: 'dummy',
'condition': lambda *a: 'True',
'type': lambda *a: 'ir.actions.server',
'sequence': lambda *a: 5,
'code': lambda *a: """# You can use the following variables:
'state': 'dummy',
'condition': 'True',
'type': 'ir.actions.server',
'sequence': 5,
'code': """# You can use the following variables:
# - self: ORM model of the record on which the action is triggered
# - object: browse_record of the record on which the action is triggered if there is one, otherwise None
# - pool: ORM model pool (i.e. self.pool)
@ -747,7 +747,7 @@ class act_window_close(osv.osv):
_inherit = 'ir.actions.actions'
_table = 'ir_actions'
_defaults = {
'type': lambda *a: 'ir.actions.act_window_close',
'type': 'ir.actions.act_window_close',
}
act_window_close()

View File

@ -80,13 +80,13 @@ class ir_cron(osv.osv):
_defaults = {
'nextcall' : lambda *a: time.strftime(DEFAULT_SERVER_DATETIME_FORMAT),
'priority' : lambda *a: 5,
'priority' : 5,
'user_id' : lambda obj,cr,uid,context: uid,
'interval_number' : lambda *a: 1,
'interval_type' : lambda *a: 'months',
'numbercall' : lambda *a: 1,
'active' : lambda *a: 1,
'doall' : lambda *a: 1
'interval_number' : 1,
'interval_type' : 'months',
'numbercall' : 1,
'active' : 1,
'doall' : 1
}
def _check_args(self, cr, uid, ids, context=None):

View File

@ -197,7 +197,7 @@ class ir_mail_server(osv.osv):
logpiper = WriteToLogger(_logger)
smtplib.stderr = logpiper
smtplib.stdout = logpiper
return super(ir_mail_server, self).__init__(*args,**kwargs)
super(ir_mail_server, self).__init__(*args,**kwargs)
def name_get(self, cr, uid, ids, context=None):
return [(a["id"], "(%s)" % (a['name'])) for a in self.read(cr, uid, ids, ['name'], context=context)]

View File

@ -106,7 +106,7 @@ class ir_model(osv.osv):
}
_defaults = {
'model': lambda *a: 'x_',
'model': 'x_',
'state': lambda self,cr,uid,ctx=None: (ctx and ctx.get('manual',False)) and 'manual' or 'base',
}

View File

@ -300,7 +300,7 @@ class view_sc(osv.osv):
_order = 'sequence,name'
_defaults = {
'resource': lambda *a: 'ir.ui.menu',
'resource': 'ir.ui.menu',
'user_id': lambda obj, cr, uid, context: uid,
}
_sql_constraints = [

View File

@ -172,6 +172,7 @@
<field name="author"/>
<field name="installed_version"/>
<field name="state"/>
<field name="category_id" invisible="1"/>
</tree>
</field>
</record>

View File

@ -46,12 +46,12 @@ class base_module_upgrade(osv.osv_memory):
ids = self.get_module_list(cr, uid, context=context)
if not ids:
res['arch'] = '''<form string="Apply Schedule Upgrade" version="7.0">
<header>
<button name="config" string="Start configuration" type="object" icon="gtk-ok"/>
<button special="cancel" string="Close" icon="gtk-cancel"/>
</header>
<separator string="Apply Schedule Upgrade" colspan="4"/>
res['arch'] = '''<form string="Upgrade Completed" version="7.0">
<separator string="Upgrade Completed" colspan="4"/>
<footer>
<button name="config" string="Start Configuration" type="object" class="oe_highlight"/> or
<button special="cancel" string="Close" class="oe_link"/>
</footer>
</form>'''
return res

View File

@ -31,7 +31,6 @@ import res_company
import res_users
import res_request
import res_lang
import res_widget
import ir_property
import report

View File

@ -155,7 +155,7 @@ class res_partner_bank(osv.osv):
cursor, user, 'country_id', context=context),
'state_id': lambda obj, cursor, user, context: obj._default_value(
cursor, user, 'state_id', context=context),
'name': lambda *args: '/'
'name': '/'
}
def fields_get(self, cr, uid, fields=None, context=None):

View File

@ -51,8 +51,8 @@ class multi_company_default(osv.osv):
}
_defaults = {
'expression': lambda *a: 'True',
'sequence': lambda *a: 100,
'expression': 'True',
'sequence': 100,
}
def copy(self, cr, uid, id, default=None, context=None):
@ -235,7 +235,7 @@ class res_company(osv.osv):
self.cache_restart(cr)
return super(res_company, self).create(cr, uid, vals, context=context)
obj_partner = self.pool.get('res.partner')
partner_id = obj_partner.create(cr, uid, {'name': vals['name'], 'is_company':True}, context=context)
partner_id = obj_partner.create(cr, uid, {'name': vals['name'], 'is_company':True, 'image': vals.get('logo', False)}, context=context)
vals.update({'partner_id': partner_id})
self.cache_restart(cr)
company_id = super(res_company, self).create(cr, uid, vals, context=context)

View File

@ -69,7 +69,7 @@ class res_currency(osv.osv):
'position': fields.selection([('after','After Amount'),('before','Before Amount')], 'Symbol Position', help="Determines where the currency symbol should be placed after or before the amount.")
}
_defaults = {
'active': lambda *a: 1,
'active': 1,
'position' : 'after',
'rounding': 0.01,
'accuracy': 4,

View File

@ -143,14 +143,14 @@ class lang(osv.osv):
'thousands_sep':fields.char('Thousands Separator',size=64),
}
_defaults = {
'active': lambda *a: 1,
'translatable': lambda *a: 0,
'direction': lambda *a: 'ltr',
'active': 1,
'translatable': 0,
'direction': 'ltr',
'date_format':_get_default_date_format,
'time_format':_get_default_time_format,
'grouping':lambda *a: '[]',
'decimal_point':lambda *a: '.',
'thousands_sep':lambda *a: ',',
'grouping': '[]',
'decimal_point': '.',
'thousands_sep': ',',
}
_sql_constraints = [
('name_uniq', 'unique (name)', 'The name of the language must be unique !'),

View File

@ -135,7 +135,7 @@ class res_partner_category(osv.osv):
(osv.osv._check_recursion, 'Error ! You can not create recursive categories.', ['parent_id'])
]
_defaults = {
'active': lambda *a: 1,
'active': 1,
}
_parent_store = True
_parent_order = 'name'
@ -213,7 +213,7 @@ class res_partner(osv.osv, format_address):
'employee': fields.boolean('Employee', help="Check this box if this contact is an Employee."),
'function': fields.char('Job Position', size=128),
'type': fields.selection([('default', 'Default'), ('invoice', 'Invoice'),
('delivery', 'Delivery'), ('contact', 'Contact'),
('delivery', 'Shipping'), ('contact', 'Contact'),
('other', 'Other')], 'Address Type',
help="Used to select automatically the right address according to the context in sales and purchases documents."),
'street': fields.char('Street', size=128),

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -77,10 +77,10 @@ class res_request(osv.osv):
'history': fields.one2many('res.request.history','req_id', 'History')
}
_defaults = {
'act_from': lambda obj,cr,uid,context={}: uid,
'state': lambda obj,cr,uid,context={}: 'draft',
'active': lambda obj,cr,uid,context={}: True,
'priority': lambda obj,cr,uid,context={}: '1',
'act_from': lambda obj,cr,uid,context=None: uid,
'state': 'draft',
'active': True,
'priority': '1',
}
_order = 'priority desc, trigger_date, create_date desc'
_table = 'res_request'
@ -94,7 +94,7 @@ class res_request_link(osv.osv):
'priority': fields.integer('Priority'),
}
_defaults = {
'priority': lambda *a: 5,
'priority': 5,
}
_order = 'priority'
res_request_link()
@ -110,9 +110,9 @@ class res_request_history(osv.osv):
'date_sent': fields.datetime('Date sent', states={'waiting':[('readonly',True)]}, required=True)
}
_defaults = {
'name': lambda *a: 'NoName',
'act_from': lambda obj,cr,uid,context={}: uid,
'act_to': lambda obj,cr,uid,context={}: uid,
'name': 'NoName',
'act_from': lambda obj,cr,uid,context=None: uid,
'act_to': lambda obj,cr,uid,context=None: uid,
'date_sent': lambda *a: time.strftime('%Y-%m-%d %H:%M:%S'),
}
res_request_history()

View File

@ -122,7 +122,6 @@ class res_users(osv.osv):
}
_name = "res.users"
_description = 'Users'
_order = 'login'
def _set_new_password(self, cr, uid, id, name, value, args, context=None):
if value is False:

View File

@ -1,89 +0,0 @@
# -*- coding: utf-8 -*-
##############################################################################
#
# OpenERP, Open Source Management Solution
# Copyright (C) 2004-2009 Tiny SPRL (<http://tiny.be>).
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
##############################################################################
from osv import fields,osv
class res_widget(osv.osv):
_name = "res.widget"
_rec_name = "title"
_columns = {
'title' : fields.char('Title', size=64, required=True, translate=True),
'content': fields.text('Content', required=True),
}
res_widget()
class res_widget_user(osv.osv):
_name="res.widget.user"
_rec_name="user_id"
_order = "sequence"
_columns = {
'sequence': fields.integer('Sequence'),
'user_id': fields.many2one('res.users','User', select=1, ondelete='cascade'),
'widget_id': fields.many2one('res.widget','Widget',required=True, ondelete='cascade'),
}
def create(self, cr, uid, vals, context=None):
existing = self.search(cr, uid, [('user_id', '=', vals.get('user_id')), ('widget_id', '=', vals.get('widget_id'))], context=context)
if existing:
res = existing[0]
else:
res = super(res_widget_user, self).create(cr, uid, vals, context=context)
return res
res_widget_user()
class res_widget_wizard(osv.osv_memory):
_name = "res.widget.wizard"
_description = "Add a widget for User"
def widgets_list_get(self, cr, uid,context=None):
widget_obj=self.pool.get('res.widget')
ids=widget_obj.search(cr, uid,[],context=context)
if not len(ids):
return []
reads = widget_obj.read(cr, uid, ids, ['title'], context=context)
res = []
for record in reads:
res.append((record['id'], record['title']))
return res
_columns = {
'widgets_list': fields.selection(widgets_list_get,string='Widget',required=True),
}
def action_get(self, cr, uid, context=None):
return self.pool.get('ir.actions.act_window').for_xml_id(
cr, uid, 'base', 'action_res_widget_wizard', context=context)
def res_widget_add(self, cr, uid, ids, context=None):
widget_id = self.read(cr, uid, ids, context=context)[0]
if widget_id.has_key('widgets_list') and widget_id['widgets_list']:
self.pool.get('res.widget.user').create(
cr, uid, {'user_id':uid, 'widget_id':widget_id['widgets_list']}, context=context)
return {'type': 'ir.actions.act_window_close'}
res_widget_wizard()
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:

View File

@ -1,78 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data>
<record id="openerp_favorites_twitter_widget" model="res.widget">
<field name="title">OpenERP Tweets</field>
<field name="content"><![CDATA[
<script type="text/javascript" src="http://widgets.twimg.com/j/2/widget.js"></script>
<script type="text/javascript">
if (typeof(TWTR) !== 'undefined') {
new TWTR.Widget({
version: 2,
type: 'faves',
rpp: 10,
interval: 6000,
title: '',
subject: '',
width: 'auto',
height: 300,
theme: {
shell: {
background: '#F0EEEE',
color: '#444444'
},
tweets: {
background: '#F0EEEE',
color: '#444444',
links: '#9A0404'
}
},
features: {
scrollbar: true,
loop: false,
live: true,
hashtags: true,
timestamp: true,
avatars: true,
behavior: 'all'
}
}).render().setUser('openerp').start();
}
</script>]]> </field>
</record>
<record id="events_widget" model="res.widget">
<field name="title">Events</field>
<field name="content"><![CDATA[<script src="http://widgets.twimg.com/j/2/widget.js"></script>
<div style="width:195px; text-align:center;" ><iframe src="http://www.eventbrite.com/calendar-widget?eid=852573069" frameborder="0" height="626" width="220" marginheight="0" marginwidth="0" scrolling="no" ></iframe><div style="font-family:Helvetica, Arial; font-size:10px; padding:5px 0 5px; margin:2px; width:195px; text-align:center;" ><a style="color:#ddd; text-decoration:none;" target="_blank" href="http://www.eventbrite.com/features?ref=ecal" >Online Ticketing</a><span style="color:#ddd;" > powered by </span><a style="color:#ddd; text-decoration:none;" target="_blank" href="http://www.eventbrite.com?ref=ecal" >Eventbrite</a></div>]]></field>
</record>
<record id="facebook_widget" model="res.widget">
<field name="title">Facebook</field>
<field name="content"><![CDATA[<script src="http://widgets.twimg.com/j/2/widget.js"></script>
<iframe src="http://www.facebook.com/plugins/activity.php?site=www.facebook.com/OpenERP&width=399&height=300&header=true&colorscheme=light&recommendations=true" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width:399px; height:300px;" allowTransparency="true"></iframe>]]></field>
</record>
<record id="note_widget" model="res.widget">
<field name="title">Notes</field>
<field name="content"><![CDATA[<script src="http://widgets.twimg.com/j/2/widget.js"></script>
<script src="http://www.gmodules.com/ig/ifr?url=http://www.google.com/ig/modules/sticky.xml&amp;up_title=Note&amp;up_bgcolor=white&amp;up_textcolor=Black&amp;up_stickydata=&amp;synd=open&amp;w=399&amp;h=200&amp;title=Notes&amp;lang=all&amp;country=ALL&amp;border=%23ffffff%7C3px%2C1px+solid+%23999999&amp;output=js"></script>]]></field>
</record>
<record id="google_maps_widget" model="res.widget">
<field name="title">Google Maps</field>
<field name="content"><![CDATA[<script src="http://widgets.twimg.com/j/2/widget.js"></script>
<script src="http://www.gmodules.com/ig/ifr?url=http://www.google.com/uds/modules/elements/localsearch/localsearch.xml&amp;up_location=Ramillies&amp;up_largeMapMode=1&amp;up_kml=1&amp;up_traffic=&amp;up_locationCacheString=&amp;up_locationCacheLat=&amp;up_locationCacheLng=&amp;up_mapType=m&amp;up_idleZoom=11&amp;up_transitionQuery=&amp;up_rawquery=&amp;up_selectedtext=&amp;synd=open&amp;w=399&amp;h=350&amp;title=Map&amp;lang=all&amp;country=ALL&amp;border=%23ffffff%7C3px%2C1px+solid+%23999999&amp;output=js"></script>]]></field>
</record>
<record id="currency_converter_widget" model="res.widget">
<field name="title">Currency Converter</field>
<field name="content"><![CDATA[<script src="http://widgets.twimg.com/j/2/widget.js"></script>
<script src="http://www.gmodules.com/ig/ifr?url=http://www.pixelmedia.nl/gmodules/ucc.xml&amp;up_fromcur=USD&amp;up_tocur=EUR&amp;synd=open&amp;w=399&amp;h=110&amp;title=Currency+Converter&amp;lang=all&amp;country=ALL&amp;border=%23ffffff%7C3px%2C1px+solid+%23999999&amp;output=js"></script>]]></field>
</record>
<record id="openerp_favorites" model="res.widget.user">
<field name="widget_id" ref="openerp_favorites_twitter_widget"/>
</record>
</data>
</openerp>

View File

@ -1,5 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data>
</data>
</openerp>

View File

@ -1,101 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data>
<record id="view_res_widget_search" model="ir.ui.view">
<field name="name">res.widget.search</field>
<field name="model">res.widget</field>
<field name="arch" type="xml">
<search string="Search Widget">
<field name="title" string="Widget"/>
</search>
</field>
</record>
<record id="res_widget_form" model="ir.ui.view">
<field name="name">res.widget.form</field>
<field name="model">res.widget</field>
<field name="arch" type="xml">
<form string="Widgets" version="7.0">
<sheet>
<group>
<field name="title"/>
<field name="content"/>
</group>
</sheet>
</form>
</field>
</record>
<record id="res_widget_tree" model="ir.ui.view">
<field name="name">res.widget.tree</field>
<field name="model">res.widget</field>
<field name="arch" type="xml">
<tree string="Widgets">
<field name="title"/>
</tree>
</field>
</record>
<record id="res_widget_act_window" model="ir.actions.act_window">
<field name="name">Homepage Widgets</field>
<field name="res_model">res.widget</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form</field>
<field name="search_view_id" ref="view_res_widget_search"/>
</record>
<menuitem action="res_widget_act_window" id="menu_res_widget_act_window" parent="base.next_id_2" />
<record id="res_widget_user_tree" model="ir.ui.view">
<field name="name">res.widget.user.tree</field>
<field name="model">res.widget.user</field>
<field name="arch" type="xml">
<tree string="User Widgets">
<field name="sequence" invisible="1"/>
<field name="user_id"/>
<field name="widget_id"/>
</tree>
</field>
</record>
<record id="res_widget_user_form" model="ir.ui.view">
<field name="name">res.widget.user.form</field>
<field name="model">res.widget.user</field>
<field name="arch" type="xml">
<form string="User Widgets" version="7.0">
<sheet>
<group col="4">
<field name="widget_id"/>
<field name="user_id"/>
<field name="sequence"/>
</group>
</sheet>
</form>
</field>
</record>
<record id="res_widget_user_act_window" model="ir.actions.act_window">
<field name="name">Widgets per User</field>
<field name="res_model">res.widget.user</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form</field>
</record>
<menuitem action="res_widget_user_act_window" id="menu_res_widget_user_act_window" parent="base.next_id_2"/>
<record id="view_res_widget_wizard" model="ir.ui.view">
<field name="name">Homepage Widgets Management</field>
<field name="model">res.widget.wizard</field>
<field name="arch" type="xml">
<form string="Widget Wizard" col="4" version="7.0">
<header>
<button name="res_widget_add" string="Add" type="object" class="oe_highlight"/>
or
<button string="Cancel" class="oe_link" special="cancel" />
</header>
<group>
<field name="widgets_list"/>
</group>
</form>
</field>
</record>
<act_window name="Homepage Widgets Management"
res_model="res.widget.wizard" src_model="res.widget.user"
view_mode="form" target="new" key2="client_action_multi"
id="action_res_widget_wizard"/>
</data>
</openerp>

View File

@ -46,12 +46,6 @@
<field name="groups_id" eval="[(6,0, [ref('group_system'), ref('group_erp_manager')])]"/>
</record>
<record model="ir.rule" id="res_widget_user_rule">
<field name="name">res.widget.user rule</field>
<field name="model_id" ref="model_res_widget_user"/>
<field name="domain_force">['|', ('user_id','=',user.id),('user_id','=',False)]</field>
</record>
<record model="ir.rule" id="res_partner_rule">
<field name="name">res.partner company</field>
<field name="model_id" ref="model_res_partner"/>

View File

@ -1,6 +1,4 @@
"id","name","model_id:id","group_id:id","perm_read","perm_write","perm_create","perm_unlink"
"access_res_widget_user_all","res_widget_user all","model_res_widget_user",,1,1,1,1
"access_res_widget_user_group_user","res_widget_user group_user","model_res_widget_user","group_user",1,1,1,1
"access_ir_attachment_all","ir_attachment all","model_ir_attachment",,1,0,0,0
"access_ir_attachment_group_user","ir_attachment group_user","model_ir_attachment","group_user",1,1,1,1
"access_ir_cron_group_cron","ir_cron group_cron","model_ir_cron","group_system",1,1,1,1
@ -115,8 +113,6 @@
"access_ir_filter all","ir_filters all","model_ir_filters",,1,0,0,0
"access_ir_filter employee","ir_filters employee","model_ir_filters","group_user",1,1,1,1
"access_ir_filters","ir_filters_all","model_ir_filters",,1,1,1,1
"access_res_widget","res.widget","model_res_widget","group_erp_manager",1,1,1,1
"access_res_widget_user","res.widget.user","model_res_widget",,1,0,0,0
"access_ir_config_parameter","ir_config_parameter","model_ir_config_parameter",,1,0,0,0
"access_ir_mail_server_all","ir_mail_server","model_ir_mail_server",,1,0,0,0
"access_ir_actions_client","ir_actions_client all","model_ir_actions_client",,1,0,0,0

1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
access_res_widget_user_all res_widget_user all model_res_widget_user 1 1 1 1
access_res_widget_user_group_user res_widget_user group_user model_res_widget_user group_user 1 1 1 1
2 access_ir_attachment_all ir_attachment all model_ir_attachment 1 0 0 0
3 access_ir_attachment_group_user ir_attachment group_user model_ir_attachment group_user 1 1 1 1
4 access_ir_cron_group_cron ir_cron group_cron model_ir_cron group_system 1 1 1 1
113 access_ir_filter all ir_filters all model_ir_filters 1 0 0 0
114 access_ir_filter employee ir_filters employee model_ir_filters group_user 1 1 1 1
115 access_ir_filters ir_filters_all model_ir_filters 1 1 1 1
access_res_widget res.widget model_res_widget group_erp_manager 1 1 1 1
access_res_widget_user res.widget.user model_res_widget 1 0 0 0
116 access_ir_config_parameter ir_config_parameter model_ir_config_parameter 1 0 0 0
117 access_ir_mail_server_all ir_mail_server model_ir_mail_server 1 0 0 0
118 access_ir_actions_client ir_actions_client all model_ir_actions_client 1 0 0 0

View File

@ -2292,7 +2292,9 @@ class BaseModel(object):
if view_type == 'tree' or not action[2].get('multi')]
resprint = [clean(print_) for print_ in resprint
if view_type == 'tree' or not print_[2].get('multi')]
resrelate = map(lambda x: x[2], resrelate)
#When multi="True" set it will display only in More of the list view
resrelate = [clean(action) for action in resrelate
if (action[2].get('multi') and view_type == 'tree') or (not action[2].get('multi') and view_type == 'form')]
for x in itertools.chain(resprint, resaction, resrelate):
x['string'] = x['name']