[FIX] cleanup ir.xml mess, ir.ui.view name is now optional in xml files
bzr revid: al@openerp.com-20121013120924-xix9cbozm8kda7rj
This commit is contained in:
parent
103da57584
commit
8fa8551f01
|
@ -43,12 +43,22 @@ The kernel of OpenERP, needed for all installation.
|
|||
'res/res_config.xml',
|
||||
'data/res.country.state.csv',
|
||||
'ir/wizard/wizard_menu_view.xml',
|
||||
'ir/ir.xml',
|
||||
'ir/ir_translation_view.xml',
|
||||
'ir/ir_filters.xml',
|
||||
'ir/ir_actions.xml',
|
||||
'ir/ir_attachment_view.xml',
|
||||
'ir/ir_config_parameter_view.xml',
|
||||
'ir/workflow/workflow_view.xml',
|
||||
'ir/ir_cron_view.xml',
|
||||
'ir/ir_filters.xml',
|
||||
'ir/ir_mail_server_view.xml',
|
||||
'ir/ir_model_view.xml',
|
||||
'ir/ir_rule_view.xml',
|
||||
'ir/ir_sequence_view.xml',
|
||||
'ir/ir_translation_view.xml',
|
||||
'ir/ir_ui_menu_view.xml',
|
||||
'ir/ir_ui_view_view.xml',
|
||||
'ir/ir_values_view.xml',
|
||||
'ir/osv_memory_autovacuum.xml',
|
||||
'ir/report/ir_report.xml',
|
||||
'ir/workflow/workflow_view.xml',
|
||||
'module/module_view.xml',
|
||||
'module/module_data.xml',
|
||||
'module/module_report.xml',
|
||||
|
|
|
@ -20,8 +20,6 @@
|
|||
##############################################################################
|
||||
|
||||
import ir_model
|
||||
import ir_model_constraint
|
||||
import ir_model_relation
|
||||
import ir_sequence
|
||||
import ir_needaction
|
||||
import ir_ui_menu
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,507 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<openerp>
|
||||
<data>
|
||||
<!-- Actions -->
|
||||
<record id="action_view" model="ir.ui.view">
|
||||
<field name="name">ir.actions.actions</field>
|
||||
<field name="model">ir.actions.actions</field>
|
||||
<field name="arch" type="xml">
|
||||
<form string="Action" version="7.0">
|
||||
<group>
|
||||
<field name="name"/>
|
||||
<field name="type"/>
|
||||
<field name="usage"/>
|
||||
</group>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
<record id="action_view_tree" model="ir.ui.view">
|
||||
<field name="name">ir.actions.actions.tree</field>
|
||||
<field name="model">ir.actions.actions</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree string="Action">
|
||||
<field name="name"/>
|
||||
<field name="type"/>
|
||||
</tree>
|
||||
</field>
|
||||
</record>
|
||||
<record id="action_view_search" model="ir.ui.view">
|
||||
<field name="name">ir.actions.actions.search</field>
|
||||
<field name="model">ir.actions.actions</field>
|
||||
<field name="arch" type="xml">
|
||||
<search string="Action">
|
||||
<field name="name" filter_domain="['|', ('name','ilike',self), ('type','ilike',self)]" string="Action"/>
|
||||
</search>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="ir_sequence_actions" model="ir.actions.act_window">
|
||||
<field name="name">Actions</field>
|
||||
<field name="type">ir.actions.act_window</field>
|
||||
<field name="res_model">ir.actions.actions</field>
|
||||
<field name="view_type">form</field>
|
||||
<field name="view_id" ref="action_view_tree"/>
|
||||
<field name="search_view_id" ref="action_view_search"/>
|
||||
</record>
|
||||
<menuitem id="next_id_6" name="Actions" parent="base.menu_custom" sequence="2"/>
|
||||
<menuitem action="ir_sequence_actions" id="menu_ir_sequence_actions" parent="next_id_6"/>
|
||||
|
||||
|
||||
|
||||
<record id="act_report_xml_view" model="ir.ui.view">
|
||||
<field name="name">ir.actions.report.xml</field>
|
||||
<field name="model">ir.actions.report.xml</field>
|
||||
<field name="arch" type="xml">
|
||||
<form string="Report" version="7.0">
|
||||
<group>
|
||||
<group>
|
||||
<field name="name"/>
|
||||
<field name="report_name"/>
|
||||
<field name="model"/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="usage"/>
|
||||
<field name="report_type"/>
|
||||
<field name="report_file"/>
|
||||
</group>
|
||||
</group>
|
||||
<notebook>
|
||||
<page string="Other Configuration">
|
||||
<group>
|
||||
<group string="RML Report">
|
||||
<field name="header"/>
|
||||
</group>
|
||||
<group string="XML Report">
|
||||
<field name="report_xsl"/>
|
||||
<field name="report_xml"/>
|
||||
</group>
|
||||
<group string="Attachments">
|
||||
<field name="attachment"/>
|
||||
<field name="attachment_use"/>
|
||||
</group>
|
||||
<group string="Miscellaneous">
|
||||
<field name="multi"/>
|
||||
<field name="auto"/>
|
||||
</group>
|
||||
</group>
|
||||
</page>
|
||||
<page string="Security">
|
||||
<field name="groups_id"/>
|
||||
</page>
|
||||
</notebook>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
<record id="act_report_xml_view_tree" model="ir.ui.view">
|
||||
<field name="name">ir.actions.report.xml.tree</field>
|
||||
<field name="model">ir.actions.report.xml</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree string="Report xml">
|
||||
<field name="name"/>
|
||||
<field name="model"/>
|
||||
<field name="type"/>
|
||||
<field name="report_name"/>
|
||||
<field name="report_type"/>
|
||||
<field name="attachment"/>
|
||||
</tree>
|
||||
</field>
|
||||
</record>
|
||||
<record id="act_report_xml_search_view" model="ir.ui.view">
|
||||
<field name="name">ir.actions.report.xml.search</field>
|
||||
<field name="model">ir.actions.report.xml</field>
|
||||
<field name="arch" type="xml">
|
||||
<search string="Report Xml">
|
||||
<field name="name"
|
||||
filter_domain="['|', '|', '|', '|', ('name','ilike',self), ('model','ilike',self), ('type','ilike',self), ('report_name','ilike',self), ('report_type','ilike',self)]"
|
||||
string="Report"/>
|
||||
<group expand="0" string="Group By" colspan="4">
|
||||
<filter string="Report Type" icon="terp-stock_symbol-selection" domain="[]" context="{'group_by':'report_type'}"/>
|
||||
</group>
|
||||
</search>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="ir_action_report_xml" model="ir.actions.act_window">
|
||||
<field name="name">Reports</field>
|
||||
<field name="type">ir.actions.act_window</field>
|
||||
<field name="res_model">ir.actions.report.xml</field>
|
||||
<field name="view_type">form</field>
|
||||
<field name="view_id" ref="act_report_xml_view_tree"/>
|
||||
<field name="search_view_id" ref="act_report_xml_search_view"/>
|
||||
</record>
|
||||
<menuitem action="ir_action_report_xml" id="menu_ir_action_report_xml" parent="base.next_id_6"/>
|
||||
|
||||
<record id="view_window_action_tree" model="ir.ui.view">
|
||||
<field name="name">ir.actions.windows.tree</field>
|
||||
<field name="model">ir.actions.act_window</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree string="Open Window">
|
||||
<field name="name"/>
|
||||
<field name="res_model"/>
|
||||
<field name="view_type"/>
|
||||
<field name="view_id"/>
|
||||
<field name="domain"/>
|
||||
</tree>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="view_window_action_form" model="ir.ui.view">
|
||||
<field name="name">ir.actions.windows.form</field>
|
||||
<field name="model">ir.actions.act_window</field>
|
||||
<field name="arch" type="xml">
|
||||
<form string="Open a Window" version="7.0">
|
||||
<group>
|
||||
<group>
|
||||
<field name="name"/>
|
||||
<field name="res_model" string="Object"/>
|
||||
<field name="src_model" string="Source Object"/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="usage"/>
|
||||
<field name="type" readonly="1"/>
|
||||
<field name="target"/>
|
||||
</group>
|
||||
</group>
|
||||
<notebook>
|
||||
<page string="General Settings">
|
||||
<group>
|
||||
<group string="Views">
|
||||
<field name="view_type"/>
|
||||
<field name="view_mode"/>
|
||||
<field name="view_id"/>
|
||||
<field name="search_view_id"/>
|
||||
</group>
|
||||
<group string="Filters">
|
||||
<field name="domain"/>
|
||||
<field name="context"/>
|
||||
<field name="limit"/>
|
||||
<field name="auto_refresh"/>
|
||||
<field name="auto_search"/>
|
||||
<field name="filter"/>
|
||||
</group>
|
||||
</group>
|
||||
<group string="Help">
|
||||
<field colspan="2" name="help" nolabel="1"/>
|
||||
</group>
|
||||
<group string="Views">
|
||||
<field colspan="2" name="view_ids" nolabel="1">
|
||||
<form string="Views" version="7.0">
|
||||
<group>
|
||||
<field colspan="4" name="sequence"/>
|
||||
<field name="view_mode"/>
|
||||
<field domain="[('type', '=', view_mode)]" name="view_id"/>
|
||||
</group>
|
||||
</form>
|
||||
<tree string="Views">
|
||||
<field name="sequence"/>
|
||||
<field name="view_mode"/>
|
||||
<field name="view_id"/>
|
||||
</tree>
|
||||
</field>
|
||||
</group>
|
||||
</page>
|
||||
<page string="Security">
|
||||
<field name="groups_id"/>
|
||||
</page>
|
||||
</notebook>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
<record id="view_window_action_search" model="ir.ui.view">
|
||||
<field name="name">ir.actions.windows.search</field>
|
||||
<field name="model">ir.actions.act_window</field>
|
||||
<field name="arch" type="xml">
|
||||
<search string="Open a Window">
|
||||
<field name="name" filter_domain="['|', ('name','ilike',self), ('res_model','ilike',self)]" string="Action"/>
|
||||
<field name="view_type"/>
|
||||
<group expand="0" string="Group By" colspan="4">
|
||||
<filter string="View Type" icon="terp-stock_symbol-selection" domain="[]" context="{'group_by':'view_type'}"/>
|
||||
</group>
|
||||
</search>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="ir_action_window" model="ir.actions.act_window">
|
||||
<field name="name">Window Actions</field>
|
||||
<field name="type">ir.actions.act_window</field>
|
||||
<field name="res_model">ir.actions.act_window</field>
|
||||
<field name="view_type">form</field>
|
||||
<field name="search_view_id" ref="view_window_action_search"/>
|
||||
</record>
|
||||
<record id="ir_action_window_view1" model="ir.actions.act_window.view">
|
||||
<field eval="1" name="sequence"/>
|
||||
<field name="view_mode">tree</field>
|
||||
<field name="view_id" ref="view_window_action_tree"/>
|
||||
<field name="act_window_id" ref="ir_action_window"/>
|
||||
</record>
|
||||
<record id="ir_action_window_view2" model="ir.actions.act_window.view">
|
||||
<field eval="2" name="sequence"/>
|
||||
<field name="view_mode">form</field>
|
||||
<field name="view_id" ref="view_window_action_form"/>
|
||||
<field name="act_window_id" ref="ir_action_window"/>
|
||||
</record>
|
||||
<menuitem action="ir_action_window" id="menu_ir_action_window" parent="base.next_id_6"/>
|
||||
|
||||
<record id="act_wizard_view_tree" model="ir.ui.view">
|
||||
<field name="name">ir.actions.wizard.tree</field>
|
||||
<field name="model">ir.actions.wizard</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree string="Wizard">
|
||||
<field name="name"/>
|
||||
<field name="wiz_name"/>
|
||||
<field name="multi"/>
|
||||
</tree>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="act_wizard_view" model="ir.ui.view">
|
||||
<field name="name">ir.actions.wizard</field>
|
||||
<field name="model">ir.actions.wizard</field>
|
||||
<field name="arch" type="xml">
|
||||
<form string="Wizards" version="7.0">
|
||||
<group col="4">
|
||||
<field name="name"/>
|
||||
<field name="type"/>
|
||||
<field name="wiz_name"/>
|
||||
<field name="multi"/>
|
||||
</group>
|
||||
<label for="groups_id"/>
|
||||
<field name="groups_id"/>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="act_wizard_search_view" model="ir.ui.view">
|
||||
<field name="name">ir.actions.wizard.search</field>
|
||||
<field name="model">ir.actions.wizard</field>
|
||||
<field name="arch" type="xml">
|
||||
<search string="Wizards">
|
||||
<field name="name"
|
||||
filter_domain="['|', '|', ('name','ilike',self), ('type','ilike',self), ('wiz_name','ilike',self)]"
|
||||
string="Wizard"/>
|
||||
</search>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="ir_action_wizard" model="ir.actions.act_window">
|
||||
<field name="name">Wizards</field>
|
||||
<field name="type">ir.actions.act_window</field>
|
||||
<field name="res_model">ir.actions.wizard</field>
|
||||
<field name="view_type">form</field>
|
||||
<field name="search_view_id" ref="act_wizard_search_view"/>
|
||||
</record>
|
||||
|
||||
<menuitem action="ir_action_wizard" id="menu_ir_action_wizard" parent="base.next_id_6"/>
|
||||
|
||||
|
||||
<record id="property_rule" model="ir.rule">
|
||||
<field name="name">Property multi-company</field>
|
||||
<field model="ir.model" name="model_id" ref="model_ir_property"/>
|
||||
<field eval="True" name="global"/>
|
||||
<field name="domain_force">['|',('company_id','child_of',[user.company_id.id]),('company_id','=',False)]</field>
|
||||
</record>
|
||||
|
||||
<!--server action view-->
|
||||
|
||||
<record id="view_server_action_form" model="ir.ui.view">
|
||||
<field name="name">Server Action</field>
|
||||
<field name="model">ir.actions.server</field>
|
||||
<field name="arch" type="xml">
|
||||
<form string="Server Action" version="7.0">
|
||||
<group>
|
||||
<group>
|
||||
<field name="name"/>
|
||||
<field name="model_id"/>
|
||||
<field name="state"/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="condition"/>
|
||||
<field name="sequence"/>
|
||||
</group>
|
||||
</group>
|
||||
<notebook colspan="4">
|
||||
<page string="Python Code" attrs="{'invisible':[('state','!=','code')]}">
|
||||
<field name="code"/>
|
||||
</page>
|
||||
<page string="Trigger" attrs="{'invisible':[('state','!=','trigger')]}">
|
||||
<group string="Trigger Configuration" col="4">
|
||||
<field name="wkf_model_id" attrs="{'required':[('state','=','trigger')]}"/>
|
||||
<field name="trigger_obj_id" context="{'key':''}"
|
||||
domain="[('model_id','=',model_id),('ttype','in',['many2one','int'])]"
|
||||
attrs="{'required':[('state','=','trigger')]}"/>
|
||||
<field name="trigger_name" attrs="{'required':[('state','=','trigger')]}"/>
|
||||
</group>
|
||||
</page>
|
||||
<page string="Action to Launch" attrs="{'invisible':[('state','!=','client_action')]}">
|
||||
<group>
|
||||
<field name="action_id" attrs="{'required':[('state','=','client_action')]}"/>
|
||||
</group>
|
||||
</page>
|
||||
<page string="Email Configuration" attrs="{'invisible':[('state','!=','email')]}">
|
||||
<group>
|
||||
<field name="email" domain="[('model_id','=',model_id)]" attrs="{'required':[('state','=','email')]}"/>
|
||||
<field name="subject" attrs="{'required':[('state','=','email')]}"/>
|
||||
<field name="message" attrs="{'required':[('state','=','email')]}"/>
|
||||
<newline/>
|
||||
<label colspan="2" string="Access all the fields related to the current object using expressions, i.e. object.partner_id.name " align="0.0"/>
|
||||
</group>
|
||||
</page>
|
||||
<page string="SMS Configuration" attrs="{'invisible':[('state','!=','sms')]}">
|
||||
<group>
|
||||
<field name="mobile" domain="[('model_id','=',model_id)]" attrs="{'required':[('state','=','sms')]}"/>
|
||||
<field name="sms" attrs="{'required':[('state','=','sms')]}"/>
|
||||
</group>
|
||||
<label string="Access all the fields related to the current object using expressions, i.e. object.partner_id.name " align="0.0"/>
|
||||
</page>
|
||||
<page string="Create / Write / Copy" attrs="{'invisible':[('state','!=','object_create'), ('state','!=','object_write'), ('state','!=','object_copy')]}">
|
||||
<group col="4" string="Fields Mapping">
|
||||
<field name="srcmodel_id" attrs="{'required':[('state','!=','dummy'), ('state','!=','sms'), ('state','!=','code'), ('state','!=','loop'), ('state','!=','trigger'), ('state','!=','object_copy'), ('state','!=','client_action'), ('state','!=','email'), ('state','!=','sms'), ('state','!=','other')]}"/>
|
||||
<field name="copy_object" on_change="change_object(copy_object, state)" attrs="{'required':[('state','!=','dummy'), ('state','!=','sms'), ('state','!=','code'), ('state','!=','loop'), ('state','!=','trigger'), ('state','!=','object_write'), ('state','!=','object_create'), ('state','!=','client_action'), ('state','!=','email'), ('state','!=','sms'), ('state','!=','other')]}"/>
|
||||
<field name="fields_lines" nolabel="1" colspan="2">
|
||||
<tree string="Field Mappings" editable="top">
|
||||
<field name="col1" domain="[('model_id','=',parent.srcmodel_id or parent.model_id)]"/>
|
||||
<field name="type"/>
|
||||
<field name="value" colspan="4"/>
|
||||
</tree>
|
||||
<form string="Field Mapping" version="7.0">
|
||||
<group col="4">
|
||||
<field name="col1" domain="[('model_id','=',parent.srcmodel_id or parent.model_id)]"/>
|
||||
<field name="type"/>
|
||||
<field name="value" colspan="4"/>
|
||||
</group>
|
||||
</form>
|
||||
</field>
|
||||
<field name="record_id" attrs="{'readonly':[('state','!=','object_create')]}" domain="[('model_id','in',[model_id])]"/>
|
||||
<field name="write_id" attrs="{'readonly':[('state','!=','object_write')]}"/>
|
||||
</group>
|
||||
<label string="If you use a formula type, use a python expression using the variable 'object'." align="0.0"/>
|
||||
</page>
|
||||
<page string="Iteration Actions" attrs="{'invisible':[('state','!=','loop')]}">
|
||||
<group col="4">
|
||||
<field name="expression" attrs="{'required':[('state','=','loop')]}"/>
|
||||
<field name="loop_action" domain="[('state','!=','loop')]" attrs="{'required':[('state','=','loop')]}"/>
|
||||
</group>
|
||||
</page>
|
||||
<page string="Multi Actions" attrs="{'invisible':[('state','!=','other')]}">
|
||||
<field name="child_ids"/>
|
||||
<label string="Only one client action will be executed, last client action will be considered in case of multiple client actions." align="0.0"/>
|
||||
</page>
|
||||
</notebook>
|
||||
<field name="type" readonly="1"/>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="view_server_action_tree" model="ir.ui.view">
|
||||
<field name="name">Server Actions</field>
|
||||
<field name="model">ir.actions.server</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree string="Server Actions">
|
||||
<field name="name"/>
|
||||
<field name="state"/>
|
||||
<field name="model_id"/>
|
||||
<field name="sequence"/>
|
||||
</tree>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="view_server_action_search" model="ir.ui.view">
|
||||
<field name="name">ir.actions.server.search</field>
|
||||
<field name="model">ir.actions.server</field>
|
||||
<field name="arch" type="xml">
|
||||
<search string="Server Actions">
|
||||
<field name="name" string="Server Action"/>
|
||||
<field name="model_id"/>
|
||||
<field name="state"/>
|
||||
<group expand="0" string="Group By" colspan="4" col="4">
|
||||
<filter string="Action Type" icon="terp-stock_symbol-selection" domain="[]" context="{'group_by':'state'}"/>
|
||||
</group>
|
||||
</search>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="action_server_action" model="ir.actions.act_window">
|
||||
<field name="name">Server Actions</field>
|
||||
<field name="type">ir.actions.act_window</field>
|
||||
<field name="res_model">ir.actions.server</field>
|
||||
<field name="view_type">form</field>
|
||||
<field name="view_mode">tree,form</field>
|
||||
<field name="view_id" ref="view_server_action_tree"/>
|
||||
<field name="search_view_id" ref="view_server_action_search"/>
|
||||
<field name="context">{'key':'server_action'}</field>
|
||||
</record>
|
||||
<menuitem action="action_server_action" id="menu_server_action" parent="base.next_id_6"/>
|
||||
|
||||
<!-- ir.actions.todo -->
|
||||
|
||||
<record id="ir_actions_todo_tree" model="ir.ui.view">
|
||||
<field name="model">ir.actions.todo</field>
|
||||
<field name="name">Config Wizard Steps</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree string="Config Wizard Steps">
|
||||
<field name="sequence"/>
|
||||
<field name="action_id"/>
|
||||
<field name="type"/>
|
||||
<field name="state" readonly="1"/>
|
||||
<button name="action_launch" states="open" string="Launch" type="object" icon="gtk-execute" help="Launch Configuration Wizard"/>
|
||||
<button name="action_open" states="done"
|
||||
string="Todo" type="object" help="Set as Todo"
|
||||
icon="gtk-convert"/>
|
||||
</tree>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="config_wizard_step_view_form" model="ir.ui.view">
|
||||
<field name="model">ir.actions.todo</field>
|
||||
<field name="name">Config Wizard Steps</field>
|
||||
<field name="arch" type="xml">
|
||||
<form string="Config Wizard Steps" version="7.0">
|
||||
<header>
|
||||
<button name="action_launch"
|
||||
states="open" string="Launch"
|
||||
type="object" icon="gtk-execute" class="oe_highlight"
|
||||
help="Launch Configuration Wizard"/>
|
||||
<button name="action_open" states="done"
|
||||
string="Set as Todo" type="object"
|
||||
icon="gtk-convert" class="oe_highlight"/>
|
||||
<field name="state" widget="statusbar" statusbar_visible="open,done" nolabel="1" readonly="1" statusbar_colors='{"open":"red","done":"blue"}'/>
|
||||
</header>
|
||||
<sheet>
|
||||
<group col="4">
|
||||
<field name="action_id"/>
|
||||
<field name="type"/>
|
||||
<field name="sequence"/>
|
||||
</group>
|
||||
<group string="Groups">
|
||||
<field name="groups_id" nolabel="1" colspan="4"/>
|
||||
</group>
|
||||
</sheet>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="config_wizard_step_view_search" model="ir.ui.view">
|
||||
<field name="model">ir.actions.todo</field>
|
||||
<field name="name">ir.actions.todo.select</field>
|
||||
<field name="arch" type="xml">
|
||||
<search string="Search Actions">
|
||||
<filter string="To Do" name="todo" icon="terp-camera_test" domain=" [('state','=','open')]" help="Wizards to be Launched"/>
|
||||
<field name="action_id"/>
|
||||
<field name="state"/>
|
||||
</search>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="act_ir_actions_todo_form" model="ir.actions.act_window">
|
||||
<field name="name">Configuration Wizards</field>
|
||||
<field name="res_model">ir.actions.todo</field>
|
||||
<field name="view_id" ref="ir_actions_todo_tree"/>
|
||||
<field name="view_type">form</field>
|
||||
<field name="help">The configuration wizards are used to help you configure a new instance of OpenERP. They are launched during the installation of new modules, but you can choose to restart some wizards manually from this menu.</field>
|
||||
</record>
|
||||
<menuitem id="menu_ir_actions_todo" name="Configuration Wizards" parent="menu_custom" sequence="20" groups="base.group_no_one"/>
|
||||
<menuitem id="menu_ir_actions_todo_form" action="act_ir_actions_todo_form" parent="menu_ir_actions_todo"/>
|
||||
|
||||
|
||||
</data>
|
||||
</openerp>
|
|
@ -0,0 +1,95 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<openerp>
|
||||
<data>
|
||||
<!-- Attachment -->
|
||||
<record id="view_attachment_form" model="ir.ui.view">
|
||||
<field name="model">ir.attachment</field>
|
||||
<field name="arch" type="xml">
|
||||
<form string="Attachments" version="7.0">
|
||||
<sheet>
|
||||
<label for="name" class="oe_edit_only"/>
|
||||
<h1>
|
||||
<field name="name"/>
|
||||
</h1>
|
||||
<group>
|
||||
<group string="Data">
|
||||
<field name="type"/>
|
||||
<field name="datas" filename="datas_fname" attrs="{'invisible':[('type','=','url')]}"/>
|
||||
<field name="datas_fname" invisible="1" attrs="{'invisible':[('type','=','url')]}" class="oe_inline oe_right"/>
|
||||
<field name="url" widget="url" attrs="{'invisible':[('type','=','binary')]}"/>
|
||||
</group>
|
||||
<group string="Attached To">
|
||||
<field name="res_model"/>
|
||||
<field name="res_id"/>
|
||||
<field name="res_name"/>
|
||||
<field name="company_id" groups="base.group_multi_company" widget="selection"/>
|
||||
</group>
|
||||
<group groups="base.group_no_one" string="History">
|
||||
<label for="create_uid" string="Creation"/>
|
||||
<div name="creation_div">
|
||||
<field name="create_uid" readonly="1" class="oe_inline"/> on
|
||||
<field name="create_date" readonly="1" class="oe_inline"/>
|
||||
</div>
|
||||
</group>
|
||||
<group name="description_group" string="Description" colspan="4">
|
||||
<field name="description" nolabel="1"/>
|
||||
</group>
|
||||
</group>
|
||||
</sheet>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
<record id="view_attachment_tree" model="ir.ui.view">
|
||||
<field name="model">ir.attachment</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree string="Attachments">
|
||||
<field name="name"/>
|
||||
<field name="datas_fname"/>
|
||||
<field name="type" invisible="1"/>
|
||||
<field name="company_id" groups="base.group_multi_company"/>
|
||||
<field name="create_uid"/>
|
||||
<field name="create_date"/>
|
||||
</tree>
|
||||
</field>
|
||||
</record>
|
||||
<record id="view_attachment_search" model="ir.ui.view">
|
||||
<field name="model">ir.attachment</field>
|
||||
<field name="arch" type="xml">
|
||||
<search string="Attachments">
|
||||
<field name="name" filter_domain="['|', ('name','ilike',self), ('datas_fname','ilike',self)]" string="Attachment"/>
|
||||
<field name="create_date"/>
|
||||
<filter icon="terp-stage"
|
||||
string="URL"
|
||||
domain="[('type','=','url')]"/>
|
||||
<filter icon="terp-stock_align_left_24"
|
||||
string="Binary"
|
||||
domain="[('type','=','binary')]"/>
|
||||
<separator/>
|
||||
<filter name="my_documents_filter"
|
||||
string="My Document(s)"
|
||||
icon="terp-personal"
|
||||
domain="[('create_uid','=',uid)]"
|
||||
help="Filter on my documents"/>
|
||||
<field name="create_uid"/>
|
||||
<field name="type"/>
|
||||
<group expand="0" string="Group By...">
|
||||
<filter string="Owner" icon="terp-personal" domain="[]" context="{'group_by':'create_uid'}"/>
|
||||
<filter string="Type" icon="terp-stock_symbol-selection" domain="[]" context="{'group_by':'type'}" groups="base.group_no_one"/>
|
||||
<filter string="Company" icon="terp-gtk-home" domain="[]" context="{'group_by':'company_id'}" groups="base.group_multi_company"/>
|
||||
<filter string="Month" help="Creation Month" icon="terp-go-month" domain="[]" context="{'group_by':'create_date'}"/>
|
||||
</group>
|
||||
</search>
|
||||
</field>
|
||||
</record>
|
||||
<record id="action_attachment" model="ir.actions.act_window">
|
||||
<field name="name">Attachments</field>
|
||||
<field name="type">ir.actions.act_window</field>
|
||||
<field name="res_model">ir.attachment</field>
|
||||
<field name="view_type">form</field>
|
||||
<field name="view_id" eval="False"/>
|
||||
<field name="search_view_id" ref="view_attachment_search"/>
|
||||
</record>
|
||||
<menuitem action="action_attachment" id="menu_action_attachment" parent="base.next_id_4"/>
|
||||
|
||||
</data>
|
||||
</openerp>
|
|
@ -1,9 +1,7 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<openerp>
|
||||
<data>
|
||||
|
||||
<record model="ir.ui.view" id="view_ir_config_search">
|
||||
<field name="name">ir.config_parameter.search</field>
|
||||
<field name="model">ir.config_parameter</field>
|
||||
<field name="arch" type="xml">
|
||||
<search string="System Properties">
|
||||
|
@ -13,7 +11,6 @@
|
|||
</field>
|
||||
</record>
|
||||
<record model="ir.ui.view" id="view_ir_config_list">
|
||||
<field name="name">ir.config_parameter.list</field>
|
||||
<field name="model">ir.config_parameter</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree string="System Parameters">
|
||||
|
@ -23,7 +20,6 @@
|
|||
</field>
|
||||
</record>
|
||||
<record model="ir.ui.view" id="view_ir_config_form">
|
||||
<field name="name">ir.config_parameter.form</field>
|
||||
<field name="model">ir.config_parameter</field>
|
||||
<field name="arch" type="xml">
|
||||
<form string="System Parameters" version="7.0">
|
||||
|
@ -36,7 +32,6 @@
|
|||
</form>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<act_window name="System Parameters" res_model="ir.config_parameter" id="ir_config_list_action"/>
|
||||
<menuitem id="ir_config_menu" name="System Parameters" parent="menu_ir_property" action="ir_config_list_action"/>
|
||||
</data>
|
||||
|
|
|
@ -0,0 +1,92 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<openerp>
|
||||
<data>
|
||||
<!-- ir.cron -->
|
||||
<record id="ir_cron_view" model="ir.ui.view">
|
||||
<field name="model">ir.cron</field>
|
||||
<field name="arch" type="xml">
|
||||
<form string="Scheduled Actions" version="7.0">
|
||||
<sheet>
|
||||
<group col="4">
|
||||
<field name="name"/>
|
||||
<field name="active"/>
|
||||
<field name="user_id" />
|
||||
<field name="priority" />
|
||||
</group>
|
||||
<notebook>
|
||||
<page string="Information">
|
||||
<group col="4">
|
||||
<field name="interval_number"/>
|
||||
<field name="interval_type"/>
|
||||
<newline/>
|
||||
<field name="nextcall"/>
|
||||
<field name="numbercall"/>
|
||||
<field name="doall"/>
|
||||
</group>
|
||||
</page>
|
||||
<page string="Technical Data" groups="base.group_no_one">
|
||||
<group string="Action to Trigger">
|
||||
<field name="model"/>
|
||||
<field name="function"/>
|
||||
</group>
|
||||
<label for="args"/>
|
||||
<field name="args"/>
|
||||
</page>
|
||||
</notebook>
|
||||
</sheet>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
<record id="ir_cron_view_tree" model="ir.ui.view">
|
||||
<field name="model">ir.cron</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree string="Scheduled Actions">
|
||||
<field name="priority" string="Sequence"/>
|
||||
<field name="name"/>
|
||||
<field name="nextcall"/>
|
||||
<field name="interval_number"/>
|
||||
<field name="interval_type"/>
|
||||
<field name="numbercall"/>
|
||||
<field name="user_id" invisible="1"/>
|
||||
</tree>
|
||||
</field>
|
||||
</record>
|
||||
<record model="ir.ui.view" id="ir_cron_view_calendar">
|
||||
<field name="model">ir.cron</field>
|
||||
<field name="priority" eval="2"/>
|
||||
<field name="arch" type="xml">
|
||||
<calendar string="Scheduled Actions" date_start="nextcall" color="user_id">
|
||||
<field name="name"/>
|
||||
<field name="user_id"/>
|
||||
</calendar>
|
||||
</field>
|
||||
</record>
|
||||
<record id="ir_cron_view_search" model="ir.ui.view">
|
||||
<field name="model">ir.cron</field>
|
||||
<field name="arch" type="xml">
|
||||
<search string="Scheduled Actions">
|
||||
<field name="name" string="Scheduled Action"/>
|
||||
<field name="user_id"/>
|
||||
<field name="nextcall"/>
|
||||
<field name="active"/>
|
||||
<group expand="0" string="Group By...">
|
||||
<filter string="User" icon="terp-personal" domain="[]" context="{'group_by':'user_id'}"/>
|
||||
<filter string="Execution" icon="terp-go-month"
|
||||
domain="[]" context="{'group_by':'nextcall'}" />
|
||||
</group>
|
||||
</search>
|
||||
</field>
|
||||
</record>
|
||||
<record id="ir_cron_act" model="ir.actions.act_window">
|
||||
<field name="name">Scheduled Actions</field>
|
||||
<field name="res_model">ir.cron</field>
|
||||
<field name="view_type">form</field>
|
||||
<field name="view_mode">tree,form,calendar</field>
|
||||
<field name="context">{'active_test': False}</field>
|
||||
<field name="view_id" ref="ir_cron_view_tree"/>
|
||||
</record>
|
||||
<menuitem id="menu_ir_cron" name="Scheduler" parent="menu_custom" groups="base.group_no_one" sequence="23"/>
|
||||
<menuitem id="menu_ir_cron_act" action="ir_cron_act" parent="menu_ir_cron"/>
|
||||
|
||||
</data>
|
||||
</openerp>
|
|
@ -1,6 +1,5 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<openerp>
|
||||
|
||||
<data noupdate="1">
|
||||
<!-- Restrict modifications on ir.filters to owner only -->
|
||||
<record id="ir_filters_rule" model="ir.rule">
|
||||
|
@ -12,7 +11,6 @@
|
|||
|
||||
<data>
|
||||
<record id="ir_filters_view_form" model="ir.ui.view">
|
||||
<field name="name">ir.filters.form</field>
|
||||
<field name="model">ir.filters</field>
|
||||
<field name="arch" type="xml">
|
||||
<form string="Filters" version="7.0">
|
||||
|
@ -30,9 +28,7 @@
|
|||
</form>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="ir_filters_view_tree" model="ir.ui.view">
|
||||
<field name="name">ir.filters.tree</field>
|
||||
<field name="model">ir.filters</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree string="Filters">
|
||||
|
@ -44,9 +40,7 @@
|
|||
</tree>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="ir_filters_view_search" model="ir.ui.view">
|
||||
<field name="name">ir.filters.search</field>
|
||||
<field name="model">ir.filters</field>
|
||||
<field name="arch" type="xml">
|
||||
<search string="Filters">
|
||||
|
@ -62,13 +56,11 @@
|
|||
</search>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="actions_ir_filters_view" model="ir.actions.act_window">
|
||||
<field name="name">Filters</field>
|
||||
<field name="type">ir.actions.act_window</field>
|
||||
<field name="res_model">ir.filters</field>
|
||||
</record>
|
||||
|
||||
<menuitem parent="base.next_id_2" name="User-defined Filters"
|
||||
id="menu_ir_filters" action="actions_ir_filters_view" sequence="5"/>
|
||||
</data>
|
||||
|
|
|
@ -0,0 +1,62 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<openerp>
|
||||
<data>
|
||||
<!-- ir.mail.server -->
|
||||
<record model="ir.ui.view" id="ir_mail_server_form">
|
||||
<field name="model">ir.mail_server</field>
|
||||
<field name="arch" type="xml">
|
||||
<form string="Outgoing Mail Servers" version="7.0">
|
||||
<sheet>
|
||||
<group col="4">
|
||||
<field name="name"/>
|
||||
<field name="sequence"/>
|
||||
</group>
|
||||
<group col="4" string="Connection Information">
|
||||
<field name="smtp_host"/>
|
||||
<field name="smtp_port"/>
|
||||
<field name="smtp_debug" groups="base.group_no_one"/>
|
||||
</group>
|
||||
<group string="Security and Authentication" colspan="4">
|
||||
<field name="smtp_encryption" on_change="on_change_encryption(smtp_encryption)"/>
|
||||
<field name="smtp_user"/>
|
||||
<field name="smtp_pass" password="True"/>
|
||||
<button name="test_smtp_connection" type="object" string="Test Connection" icon="gtk-network"/>
|
||||
</group>
|
||||
</sheet>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
<record model="ir.ui.view" id="ir_mail_server_list">
|
||||
<field name="model">ir.mail_server</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree string="Outgoing Mail Servers">
|
||||
<field name="sequence"/>
|
||||
<field name="name"/>
|
||||
<field name="smtp_host"/>
|
||||
<field name="smtp_user"/>
|
||||
<field name="smtp_encryption"/>
|
||||
</tree>
|
||||
</field>
|
||||
</record>
|
||||
<record id="view_ir_mail_server_search" model="ir.ui.view">
|
||||
<field name="model">ir.mail_server</field>
|
||||
<field name="arch" type="xml">
|
||||
<search string="Outgoing Mail Servers">
|
||||
<field name="name"
|
||||
filter_domain="['|', '|', ('name','ilike',self), ('smtp_host','ilike',self), ('smtp_user','ilike',self)]"
|
||||
string="Outgoing Mail Server"/>
|
||||
<field name="smtp_encryption"/>
|
||||
</search>
|
||||
</field>
|
||||
</record>
|
||||
<record model="ir.actions.act_window" id="action_ir_mail_server_list">
|
||||
<field name="name">Outgoing Mail Servers</field>
|
||||
<field name="res_model">ir.mail_server</field>
|
||||
<field name="view_type">form</field>
|
||||
<field name="view_mode">tree,form</field>
|
||||
<field name="view_id" ref="ir_mail_server_list" />
|
||||
<field name="search_view_id" ref="view_ir_mail_server_search"/>
|
||||
</record>
|
||||
<menuitem id="menu_mail_servers" parent="menu_email" action="action_ir_mail_server_list" sequence="15" groups="base.group_no_one"/>
|
||||
</data>
|
||||
</openerp>
|
|
@ -24,8 +24,11 @@ import re
|
|||
import time
|
||||
import types
|
||||
|
||||
from openerp.osv import fields,osv
|
||||
import openerp
|
||||
from openerp import SUPERUSER_ID
|
||||
from openerp import netsvc, pooler, tools
|
||||
from openerp.osv import fields,osv
|
||||
from openerp.osv.orm import Model
|
||||
from openerp.tools.safe_eval import safe_eval as eval
|
||||
from openerp.tools import config
|
||||
from openerp.tools.translate import _
|
||||
|
@ -58,7 +61,6 @@ def _in_modules(self, cr, uid, ids, field_name, arg, context=None):
|
|||
result[k] = ', '.join(sorted(installed_modules & set(xml_id.split('.')[0] for xml_id in v)))
|
||||
return result
|
||||
|
||||
|
||||
class ir_model(osv.osv):
|
||||
_name = 'ir.model'
|
||||
_description = "Models"
|
||||
|
@ -204,7 +206,6 @@ class ir_model(osv.osv):
|
|||
else:
|
||||
x_name = a._columns.keys()[0]
|
||||
x_custom_model._rec_name = x_name
|
||||
ir_model()
|
||||
|
||||
class ir_model_fields(osv.osv):
|
||||
_name = 'ir.model.fields'
|
||||
|
@ -462,7 +463,128 @@ class ir_model_fields(osv.osv):
|
|||
obj._auto_init(cr, ctx)
|
||||
return res
|
||||
|
||||
ir_model_fields()
|
||||
class ir_model_constraint(Model):
|
||||
"""
|
||||
This model tracks PostgreSQL foreign keys and constraints used by OpenERP
|
||||
models.
|
||||
"""
|
||||
_name = 'ir.model.constraint'
|
||||
_columns = {
|
||||
'name': fields.char('Constraint', required=True, size=128, select=1,
|
||||
help="PostgreSQL constraint or foreign key name."),
|
||||
'model': fields.many2one('ir.model', string='Model',
|
||||
required=True, select=1),
|
||||
'module': fields.many2one('ir.module.module', string='Module',
|
||||
required=True, select=1),
|
||||
'type': fields.char('Constraint Type', required=True, size=1, select=1,
|
||||
help="Type of the constraint: `f` for a foreign key, "
|
||||
"`u` for other constraints."),
|
||||
'date_update': fields.datetime('Update Date'),
|
||||
'date_init': fields.datetime('Initialization Date')
|
||||
}
|
||||
|
||||
_sql_constraints = [
|
||||
('module_name_uniq', 'unique(name, module)',
|
||||
'Constraints with the same name are unique per module.'),
|
||||
]
|
||||
|
||||
def _module_data_uninstall(self, cr, uid, ids, context=None):
|
||||
"""
|
||||
Delete PostgreSQL foreign keys and constraints tracked by this model.
|
||||
"""
|
||||
|
||||
if uid != SUPERUSER_ID and not self.pool.get('ir.model.access').check_groups(cr, uid, "base.group_system"):
|
||||
raise except_orm(_('Permission Denied'), (_('Administrator access is required to uninstall a module')))
|
||||
|
||||
context = dict(context or {})
|
||||
|
||||
ids_set = set(ids)
|
||||
ids.sort()
|
||||
ids.reverse()
|
||||
for data in self.browse(cr, uid, ids, context):
|
||||
model = data.model.model
|
||||
model_obj = self.pool.get(model)
|
||||
name = openerp.tools.ustr(data.name)
|
||||
typ = data.type
|
||||
|
||||
# double-check we are really going to delete all the owners of this schema element
|
||||
cr.execute("""SELECT id from ir_model_constraint where name=%s""", (data.name,))
|
||||
external_ids = [x[0] for x in cr.fetchall()]
|
||||
if (set(external_ids)-ids_set):
|
||||
# as installed modules have defined this element we must not delete it!
|
||||
continue
|
||||
|
||||
if typ == 'f':
|
||||
# test if FK exists on this table (it could be on a related m2m table, in which case we ignore it)
|
||||
cr.execute("""SELECT 1 from pg_constraint cs JOIN pg_class cl ON (cs.conrelid = cl.oid)
|
||||
WHERE cs.contype=%s and cs.conname=%s and cl.relname=%s""", ('f', name, model_obj._table))
|
||||
if cr.fetchone():
|
||||
cr.execute('ALTER TABLE "%s" DROP CONSTRAINT "%s"' % (model_obj._table, name),)
|
||||
_logger.info('Dropped FK CONSTRAINT %s@%s', name, model)
|
||||
|
||||
if typ == 'u':
|
||||
# test if constraint exists
|
||||
cr.execute("""SELECT 1 from pg_constraint cs JOIN pg_class cl ON (cs.conrelid = cl.oid)
|
||||
WHERE cs.contype=%s and cs.conname=%s and cl.relname=%s""", ('u', name, model_obj._table))
|
||||
if cr.fetchone():
|
||||
cr.execute('ALTER TABLE "%s" DROP CONSTRAINT "%s"' % (model_obj._table, name),)
|
||||
_logger.info('Dropped CONSTRAINT %s@%s', name, model)
|
||||
|
||||
self.unlink(cr, uid, ids, context)
|
||||
|
||||
class ir_model_relation(Model):
|
||||
"""
|
||||
This model tracks PostgreSQL tables used to implement OpenERP many2many
|
||||
relations.
|
||||
"""
|
||||
_name = 'ir.model.relation'
|
||||
_columns = {
|
||||
'name': fields.char('Relation Name', required=True, size=128, select=1,
|
||||
help="PostgreSQL table name implementing a many2many relation."),
|
||||
'model': fields.many2one('ir.model', string='Model',
|
||||
required=True, select=1),
|
||||
'module': fields.many2one('ir.module.module', string='Module',
|
||||
required=True, select=1),
|
||||
'date_update': fields.datetime('Update Date'),
|
||||
'date_init': fields.datetime('Initialization Date')
|
||||
}
|
||||
|
||||
def _module_data_uninstall(self, cr, uid, ids, context=None):
|
||||
"""
|
||||
Delete PostgreSQL many2many relations tracked by this model.
|
||||
"""
|
||||
|
||||
if uid != SUPERUSER_ID and not self.pool.get('ir.model.access').check_groups(cr, uid, "base.group_system"):
|
||||
raise except_orm(_('Permission Denied'), (_('Administrator access is required to uninstall a module')))
|
||||
|
||||
ids_set = set(ids)
|
||||
to_drop_table = []
|
||||
ids.sort()
|
||||
ids.reverse()
|
||||
for data in self.browse(cr, uid, ids, context):
|
||||
model = data.model
|
||||
model_obj = self.pool.get(model)
|
||||
name = openerp.tools.ustr(data.name)
|
||||
|
||||
# double-check we are really going to delete all the owners of this schema element
|
||||
cr.execute("""SELECT id from ir_model_relation where name = %s""", (data.name,))
|
||||
external_ids = [x[0] for x in cr.fetchall()]
|
||||
if (set(external_ids)-ids_set):
|
||||
# as installed modules have defined this element we must not delete it!
|
||||
continue
|
||||
|
||||
cr.execute("SELECT 1 FROM information_schema.tables WHERE table_name=%s", (name,))
|
||||
if cr.fetchone() and not name in to_drop_table:
|
||||
to_drop_table.append(name)
|
||||
|
||||
self.unlink(cr, uid, ids, context)
|
||||
|
||||
# drop m2m relation tables
|
||||
for table in to_drop_table:
|
||||
cr.execute('DROP TABLE %s CASCADE'% (table),)
|
||||
_logger.info('Dropped table %s', table)
|
||||
|
||||
cr.commit()
|
||||
|
||||
class ir_model_access(osv.osv):
|
||||
_name = 'ir.model.access'
|
||||
|
@ -643,8 +765,6 @@ class ir_model_access(osv.osv):
|
|||
res = super(ir_model_access, self).unlink(cr, uid, *args, **argv)
|
||||
return res
|
||||
|
||||
ir_model_access()
|
||||
|
||||
class ir_model_data(osv.osv):
|
||||
"""Holds external identifier keys for records in the database.
|
||||
This has two main uses:
|
||||
|
@ -978,5 +1098,4 @@ class ir_model_data(osv.osv):
|
|||
_logger.info('Deleting %s@%s', res_id, model)
|
||||
self.pool.get(model).unlink(cr, uid, [res_id])
|
||||
|
||||
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
|
|
@ -1,77 +0,0 @@
|
|||
import logging
|
||||
|
||||
import openerp
|
||||
from openerp import SUPERUSER_ID
|
||||
from openerp.osv import fields
|
||||
from openerp.osv.orm import Model
|
||||
|
||||
_logger = logging.getLogger(__name__)
|
||||
|
||||
class ir_model_constraint(Model):
|
||||
"""
|
||||
This model tracks PostgreSQL foreign keys and constraints used by OpenERP
|
||||
models.
|
||||
"""
|
||||
_name = 'ir.model.constraint'
|
||||
_columns = {
|
||||
'name': fields.char('Constraint', required=True, size=128, select=1,
|
||||
help="PostgreSQL constraint or foreign key name."),
|
||||
'model': fields.many2one('ir.model', string='Model',
|
||||
required=True, select=1),
|
||||
'module': fields.many2one('ir.module.module', string='Module',
|
||||
required=True, select=1),
|
||||
'type': fields.char('Constraint Type', required=True, size=1, select=1,
|
||||
help="Type of the constraint: `f` for a foreign key, "
|
||||
"`u` for other constraints."),
|
||||
'date_update': fields.datetime('Update Date'),
|
||||
'date_init': fields.datetime('Initialization Date')
|
||||
}
|
||||
|
||||
_sql_constraints = [
|
||||
('module_name_uniq', 'unique(name, module)',
|
||||
'Constraints with the same name are unique per module.'),
|
||||
]
|
||||
|
||||
def _module_data_uninstall(self, cr, uid, ids, context=None):
|
||||
"""
|
||||
Delete PostgreSQL foreign keys and constraints tracked by this model.
|
||||
"""
|
||||
|
||||
if uid != SUPERUSER_ID and not self.pool.get('ir.model.access').check_groups(cr, uid, "base.group_system"):
|
||||
raise except_orm(_('Permission Denied'), (_('Administrator access is required to uninstall a module')))
|
||||
|
||||
context = dict(context or {})
|
||||
|
||||
ids_set = set(ids)
|
||||
ids.sort()
|
||||
ids.reverse()
|
||||
for data in self.browse(cr, uid, ids, context):
|
||||
model = data.model.model
|
||||
model_obj = self.pool.get(model)
|
||||
name = openerp.tools.ustr(data.name)
|
||||
typ = data.type
|
||||
|
||||
# double-check we are really going to delete all the owners of this schema element
|
||||
cr.execute("""SELECT id from ir_model_constraint where name=%s""", (data.name,))
|
||||
external_ids = [x[0] for x in cr.fetchall()]
|
||||
if (set(external_ids)-ids_set):
|
||||
# as installed modules have defined this element we must not delete it!
|
||||
continue
|
||||
|
||||
if typ == 'f':
|
||||
# test if FK exists on this table (it could be on a related m2m table, in which case we ignore it)
|
||||
cr.execute("""SELECT 1 from pg_constraint cs JOIN pg_class cl ON (cs.conrelid = cl.oid)
|
||||
WHERE cs.contype=%s and cs.conname=%s and cl.relname=%s""", ('f', name, model_obj._table))
|
||||
if cr.fetchone():
|
||||
cr.execute('ALTER TABLE "%s" DROP CONSTRAINT "%s"' % (model_obj._table, name),)
|
||||
_logger.info('Dropped FK CONSTRAINT %s@%s', name, model)
|
||||
|
||||
if typ == 'u':
|
||||
# test if constraint exists
|
||||
cr.execute("""SELECT 1 from pg_constraint cs JOIN pg_class cl ON (cs.conrelid = cl.oid)
|
||||
WHERE cs.contype=%s and cs.conname=%s and cl.relname=%s""", ('u', name, model_obj._table))
|
||||
if cr.fetchone():
|
||||
cr.execute('ALTER TABLE "%s" DROP CONSTRAINT "%s"' % (model_obj._table, name),)
|
||||
_logger.info('Dropped CONSTRAINT %s@%s', name, model)
|
||||
|
||||
self.unlink(cr, uid, ids, context)
|
|
@ -1,62 +0,0 @@
|
|||
import logging
|
||||
|
||||
import openerp
|
||||
from openerp import SUPERUSER_ID
|
||||
from openerp.osv import fields
|
||||
from openerp.osv.orm import Model
|
||||
|
||||
_logger = logging.getLogger(__name__)
|
||||
|
||||
class ir_model_relation(Model):
|
||||
"""
|
||||
This model tracks PostgreSQL tables used to implement OpenERP many2many
|
||||
relations.
|
||||
"""
|
||||
_name = 'ir.model.relation'
|
||||
_columns = {
|
||||
'name': fields.char('Relation Name', required=True, size=128, select=1,
|
||||
help="PostgreSQL table name implementing a many2many relation."),
|
||||
'model': fields.many2one('ir.model', string='Model',
|
||||
required=True, select=1),
|
||||
'module': fields.many2one('ir.module.module', string='Module',
|
||||
required=True, select=1),
|
||||
'date_update': fields.datetime('Update Date'),
|
||||
'date_init': fields.datetime('Initialization Date')
|
||||
}
|
||||
|
||||
def _module_data_uninstall(self, cr, uid, ids, context=None):
|
||||
"""
|
||||
Delete PostgreSQL many2many relations tracked by this model.
|
||||
"""
|
||||
|
||||
if uid != SUPERUSER_ID and not self.pool.get('ir.model.access').check_groups(cr, uid, "base.group_system"):
|
||||
raise except_orm(_('Permission Denied'), (_('Administrator access is required to uninstall a module')))
|
||||
|
||||
ids_set = set(ids)
|
||||
to_drop_table = []
|
||||
ids.sort()
|
||||
ids.reverse()
|
||||
for data in self.browse(cr, uid, ids, context):
|
||||
model = data.model
|
||||
model_obj = self.pool.get(model)
|
||||
name = openerp.tools.ustr(data.name)
|
||||
|
||||
# double-check we are really going to delete all the owners of this schema element
|
||||
cr.execute("""SELECT id from ir_model_relation where name = %s""", (data.name,))
|
||||
external_ids = [x[0] for x in cr.fetchall()]
|
||||
if (set(external_ids)-ids_set):
|
||||
# as installed modules have defined this element we must not delete it!
|
||||
continue
|
||||
|
||||
cr.execute("SELECT 1 FROM information_schema.tables WHERE table_name=%s", (name,))
|
||||
if cr.fetchone() and not name in to_drop_table:
|
||||
to_drop_table.append(name)
|
||||
|
||||
self.unlink(cr, uid, ids, context)
|
||||
|
||||
# drop m2m relation tables
|
||||
for table in to_drop_table:
|
||||
cr.execute('DROP TABLE %s CASCADE'% (table),)
|
||||
_logger.info('Dropped table %s', table)
|
||||
|
||||
cr.commit()
|
|
@ -0,0 +1,416 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<openerp>
|
||||
<data>
|
||||
<!-- model -->
|
||||
<record id="view_model_form" model="ir.ui.view">
|
||||
<field name="model">ir.model</field>
|
||||
<field name="arch" type="xml">
|
||||
<form string="Model Description" version="7.0">
|
||||
<sheet>
|
||||
<group>
|
||||
<group>
|
||||
<field name="name"/>
|
||||
<field name="model"/>
|
||||
<field name="osv_memory"/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="state"/>
|
||||
<field name="modules"/>
|
||||
</group>
|
||||
</group>
|
||||
<notebook>
|
||||
<page string="Fields">
|
||||
<field context="{'manual':True}" name="field_id">
|
||||
<tree string="Fields Description">
|
||||
<field name="name"/>
|
||||
<field name="field_description"/>
|
||||
<field name="ttype"/>
|
||||
<field name="required"/>
|
||||
<field name="readonly"/>
|
||||
<field name="select_level"/>
|
||||
<field name="state"/>
|
||||
</tree>
|
||||
<form string="Fields Description" version="7.0">
|
||||
<group col="4">
|
||||
<field name="name"/>
|
||||
<field name="state"/>
|
||||
<field name="field_description"/>
|
||||
</group>
|
||||
<group string="Properties">
|
||||
<group>
|
||||
<field name="ttype"/>
|
||||
<field name="relation" attrs="{'required': [('ttype','in',['many2one','one2many','many2many'])],'readonly': [('ttype','!=','one2many'), ('ttype','!=','many2one'), ('ttype','!=','many2many')]}"/>
|
||||
<field name="relation_field" attrs="{'required': [('ttype','=','one2many')], 'readonly': [('ttype','!=','one2many')]}"/>
|
||||
<field name="selection" attrs="{'required': [('ttype','in',['selection','reference'])], 'readonly': [('ttype','not in',['selection','reference'])]}"/>
|
||||
<field name="size" attrs="{'required': [('ttype','in',['char','reference'])], 'readonly': [('ttype','not in',['char','reference'])]}"/>
|
||||
<field name="domain" attrs="{'readonly': [('relation','=','')]}"/>
|
||||
<field name="serialization_field_id" attrs="{'readonly': [('state','=','base')]}" domain="[('ttype','=','serialized'), ('model_id', '=', model_id)]"/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="required"/>
|
||||
<field name="readonly"/>
|
||||
<field name="select_level"/>
|
||||
<field name="translate"/>
|
||||
<field name="on_delete" attrs="{'readonly': [('ttype','!=','many2one')]}"/>
|
||||
<field name="modules"/>
|
||||
</group>
|
||||
</group>
|
||||
<separator string="Groups"/>
|
||||
<field name="groups"/>
|
||||
</form>
|
||||
</field>
|
||||
<button
|
||||
icon="gtk-justify-fill"
|
||||
name="%(act_menu_create)d"
|
||||
string="Create a Menu" type="action"
|
||||
target="new" />
|
||||
</page>
|
||||
<page string="Access Rights">
|
||||
<field name="access_ids">
|
||||
<tree string="Access Rules" editable="bottom">
|
||||
<field name="group_id"/>
|
||||
<field name="perm_read"/>
|
||||
<field name="perm_write"/>
|
||||
<field name="perm_create"/>
|
||||
<field name="perm_unlink"/>
|
||||
<field name="name"/>
|
||||
</tree>
|
||||
</field>
|
||||
</page>
|
||||
<page string="Notes">
|
||||
<field name="info"/>
|
||||
</page>
|
||||
<page string="Views">
|
||||
<field name="view_ids"/>
|
||||
</page>
|
||||
</notebook>
|
||||
</sheet>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
<record id="view_model_tree" model="ir.ui.view">
|
||||
<field name="model">ir.model</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree string="Model Description">
|
||||
<field name="model"/>
|
||||
<field name="name"/>
|
||||
<field name="state"/>
|
||||
<field name="osv_memory"/>
|
||||
</tree>
|
||||
</field>
|
||||
</record>
|
||||
<record id="view_model_search" model="ir.ui.view">
|
||||
<field name="model">ir.model</field>
|
||||
<field name="arch" type="xml">
|
||||
<search string="Model Description">
|
||||
<field name="name" filter_domain="['|', ('name','ilike',self), ('model','ilike',self)]" string="Model"/>
|
||||
<filter icon="terp-camera_test"
|
||||
string="In Memory"
|
||||
domain="[('osv_memory', '=', True)]"/>
|
||||
<separator/>
|
||||
<filter icon="terp-stock_align_left_24"
|
||||
string="Custom"
|
||||
domain="[('state', '=', 'manual')]"/>
|
||||
<filter icon="terp-translate"
|
||||
string="Base"
|
||||
domain="[('state', '=', 'base')]"/>
|
||||
</search>
|
||||
</field>
|
||||
</record>
|
||||
<record id="action_model_model" model="ir.actions.act_window">
|
||||
<field name="name">Models</field>
|
||||
<field name="res_model">ir.model</field>
|
||||
<field name="view_type">form</field>
|
||||
<field name="context">{'manual':True}</field>
|
||||
<field name="view_id" ref="view_model_tree"/>
|
||||
</record>
|
||||
<menuitem id="next_id_9" name="Database Structure" parent="base.menu_custom" groups="base.group_no_one"/>
|
||||
<menuitem action="action_model_model" id="ir_model_model_menu" parent="next_id_9"/>
|
||||
|
||||
<!-- ir model fields -->
|
||||
<record id="view_model_fields_form" model="ir.ui.view">
|
||||
<field name="model">ir.model.fields</field>
|
||||
<field name="arch" type="xml">
|
||||
<form string="Fields" version="7.0">
|
||||
<sheet>
|
||||
<group>
|
||||
<group>
|
||||
<field name="name" string="Field Name"/>
|
||||
<field name="field_description"/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="state"/>
|
||||
<field name="model_id" attrs="{'readonly': [('state','!=', 'manual')]}"/>
|
||||
<field name="modules"/>
|
||||
</group>
|
||||
</group>
|
||||
<group>
|
||||
<group>
|
||||
<field name="ttype"/>
|
||||
<field name="relation" attrs="{'required': [('ttype','in', ['many2one','one2many','many2many'])],
|
||||
'readonly': [('ttype','not in', ['many2one','one2many','many2many'])]}"/>
|
||||
<field name="relation_field" attrs="{'required': [('ttype','=','one2many')], 'readonly': [('ttype','!=','one2many')]}"/>
|
||||
<field name="selection" attrs="{'required': [('ttype','in',['selection','reference'])], 'readonly': [('ttype','not in',['selection','reference'])]}"/>
|
||||
<field name="size" attrs="{'required': [('ttype','in',['char','reference'])], 'readonly': [('ttype','not in',['char','reference'])]}"/>
|
||||
<field name="domain" attrs="{'readonly': [('relation','=','')]}"/>
|
||||
<field name="serialization_field_id" attrs="{'readonly': [('state','=','base')]}" domain="[('ttype','=','serialized'), ('model_id', '=', model_id)]"/>
|
||||
<field name="on_delete" attrs="{'readonly': [('ttype','!=','many2one')]}"/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="required"/>
|
||||
<field name="readonly"/>
|
||||
<field name="select_level"/>
|
||||
<field name="translate"/>
|
||||
</group>
|
||||
</group>
|
||||
<field name="groups" invisible="1"/>
|
||||
</sheet>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
<record id="view_model_fields_tree" model="ir.ui.view">
|
||||
<field name="model">ir.model.fields</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree string="Fields">
|
||||
<field name="name"/>
|
||||
<field name="field_description"/>
|
||||
<field name="model_id"/>
|
||||
<field name="ttype"/>
|
||||
<field name="state"/>
|
||||
</tree>
|
||||
</field>
|
||||
</record>
|
||||
<record id="view_model_fields_search" model="ir.ui.view">
|
||||
<field name="model">ir.model.fields</field>
|
||||
<field name="arch" type="xml">
|
||||
<search string="Fields">
|
||||
<field name="name" filter_domain="['|', ('name','ilike',self), ('field_description','ilike',self)]" string="Field"/>
|
||||
<filter icon="terp-gnome-cpu-frequency-applet+"
|
||||
string="Required"
|
||||
domain="[('required', '=', True)]"/>
|
||||
<separator/>
|
||||
<filter icon="terp-dialog-close"
|
||||
string="Readonly"
|
||||
domain="[('readonly', '=', True)]"/>
|
||||
<separator/>
|
||||
<filter icon="terp-translate"
|
||||
string="Translate"
|
||||
domain="[('translate', '=', True)]"/>
|
||||
<field name="model_id"/>
|
||||
<field name="ttype"/>
|
||||
<field name="required"/>
|
||||
<field name="readonly"/>
|
||||
<group expand="0" string="Group By...">
|
||||
<filter string="Object" icon="terp-stock_align_left_24" domain="[]" context="{'group_by':'model_id'}"/>
|
||||
</group>
|
||||
</search>
|
||||
</field>
|
||||
</record>
|
||||
<record id="action_model_fields" model="ir.actions.act_window">
|
||||
<field name="name">Fields</field>
|
||||
<field name="res_model">ir.model.fields</field>
|
||||
<field name="view_type">form</field>
|
||||
<field name="context">{'manual':True}</field>
|
||||
<field name="view_id" ref="view_model_fields_tree"/>
|
||||
</record>
|
||||
<menuitem action="action_model_fields" id="ir_model_model_fields" parent="base.next_id_9"/>
|
||||
|
||||
<!-- ir model data -->
|
||||
<record model="ir.ui.view" id="view_model_data_form">
|
||||
<field name="model">ir.model.data</field>
|
||||
<field name="arch" type="xml">
|
||||
<form string="External Identifiers" version="7.0">
|
||||
<group>
|
||||
<group>
|
||||
<field name="complete_name"/>
|
||||
<field name="module"/>
|
||||
<field name="name"/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="display_name"/>
|
||||
<field name="model"/>
|
||||
<field name="res_id"/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="noupdate"/>
|
||||
<field name="date_update" />
|
||||
<field name="date_init" />
|
||||
</group>
|
||||
</group>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
<record id="view_model_data_list" model="ir.ui.view">
|
||||
<field name="model">ir.model.data</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree string="External Identifiers">
|
||||
<field name="complete_name"/>
|
||||
<field name="display_name"/>
|
||||
<field name="res_id"/>
|
||||
<field name="model" groups="base.group_no_one"/>
|
||||
</tree>
|
||||
</field>
|
||||
</record>
|
||||
<record id="view_model_data_search" model="ir.ui.view">
|
||||
<field name="model">ir.model.data</field>
|
||||
<field name="arch" type="xml">
|
||||
<search string="External Identifiers">
|
||||
<field name="name"
|
||||
filter_domain="['|', '|', ('name','ilike',self), ('model','ilike',self), ('module','ilike',self)]"
|
||||
string="External Identifier"/>
|
||||
<filter icon="terp-camera_test"
|
||||
string="Updatable"
|
||||
domain="[('noupdate', '=', False)]"/>
|
||||
<field name="res_id"/>
|
||||
<field name="noupdate"/>
|
||||
<group expand="0" string="Group By...">
|
||||
<filter string="Module" icon="terp-folder-blue" domain="[]" context="{'group_by':'module'}"/>
|
||||
<filter string="Object" icon="terp-stock_align_left_24" domain="[]" context="{'group_by':'model'}"/>
|
||||
</group>
|
||||
</search>
|
||||
</field>
|
||||
</record>
|
||||
<record id="action_model_data" model="ir.actions.act_window">
|
||||
<field name="name">External Identifiers</field>
|
||||
<field name="res_model">ir.model.data</field>
|
||||
<field name="view_type">form</field>
|
||||
<field name="view_id" ref="view_model_data_list"/>
|
||||
</record>
|
||||
<menuitem id="next_id_5" name="Sequences & Identifiers" parent="base.menu_custom" sequence="21" groups="base.group_no_one"/>
|
||||
<menuitem action="action_model_data" id="ir_model_data_menu" parent="base.next_id_5"
|
||||
groups="base.group_no_one"/>
|
||||
|
||||
<!-- ir model contraints -->
|
||||
<record model="ir.ui.view" id="view_model_constraint_form">
|
||||
<field name="model">ir.model.constraint</field>
|
||||
<field name="arch" type="xml">
|
||||
<form string="Model Constraints">
|
||||
<field name="type"/>
|
||||
<field name="name"/>
|
||||
<field name="module"/>
|
||||
<field name="model"/>
|
||||
<newline/>
|
||||
<field name="date_update" />
|
||||
<field name="date_init" />
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
<record id="view_model_constraint_list" model="ir.ui.view">
|
||||
<field name="model">ir.model.constraint</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree string="Model Constraints">
|
||||
<field name="type"/>
|
||||
<field name="name"/>
|
||||
<field name="module"/>
|
||||
<field name="model"/>
|
||||
</tree>
|
||||
</field>
|
||||
</record>
|
||||
<record id="action_model_constraint" model="ir.actions.act_window">
|
||||
<field name="name">Model Constraints</field>
|
||||
<field name="res_model">ir.model.constraint</field>
|
||||
<field name="view_type">form</field>
|
||||
<field name="view_id" ref="view_model_constraint_list"/>
|
||||
</record>
|
||||
<menuitem action="action_model_constraint" id="ir_model_constraint_menu" parent="base.next_id_9"
|
||||
groups="base.group_no_one"/>
|
||||
|
||||
<!-- ir model relations -->
|
||||
<record model="ir.ui.view" id="view_model_relation_form">
|
||||
<field name="model">ir.model.relation</field>
|
||||
<field name="arch" type="xml">
|
||||
<form string="ManyToMany Relations">
|
||||
<field name="name"/>
|
||||
<field name="module"/>
|
||||
<field name="model"/>
|
||||
<newline/>
|
||||
<field name="date_update" />
|
||||
<field name="date_init" />
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
<record id="view_model_relation_list" model="ir.ui.view">
|
||||
<field name="model">ir.model.relation</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree string="ManyToMany Relations">
|
||||
<field name="name"/>
|
||||
<field name="module"/>
|
||||
<field name="model"/>
|
||||
</tree>
|
||||
</field>
|
||||
</record>
|
||||
<record id="action_model_relation" model="ir.actions.act_window">
|
||||
<field name="name">ManyToMany Relations</field>
|
||||
<field name="res_model">ir.model.relation</field>
|
||||
<field name="view_type">form</field>
|
||||
<field name="view_id" ref="view_model_relation_list"/>
|
||||
</record>
|
||||
<menuitem action="action_model_relation" id="ir_model_relation_menu" parent="base.next_id_9"
|
||||
groups="base.group_no_one"/>
|
||||
|
||||
<!-- ir.model.access -->
|
||||
<record id="ir_access_view_tree" model="ir.ui.view">
|
||||
<field name="model">ir.model.access</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree string="Access Controls" editable="bottom">
|
||||
<field name="name"/>
|
||||
<field name="model_id"/>
|
||||
<field name="group_id"/>
|
||||
<field name="perm_read"/>
|
||||
<field name="perm_write"/>
|
||||
<field name="perm_create"/>
|
||||
<field name="perm_unlink"/>
|
||||
</tree>
|
||||
</field>
|
||||
</record>
|
||||
<record id="ir_access_view_form" model="ir.ui.view">
|
||||
<field name="model">ir.model.access</field>
|
||||
<field name="arch" type="xml">
|
||||
<form string="Access Controls" version="7.0">
|
||||
<sheet>
|
||||
<group col="4">
|
||||
<field name="name"/>
|
||||
<field name="model_id"/>
|
||||
<field name="group_id"/>
|
||||
<field name="active"/>
|
||||
</group>
|
||||
<group string="Access" col="4">
|
||||
<field name="perm_read"/>
|
||||
<field name="perm_write"/>
|
||||
<field name="perm_create"/>
|
||||
<field name="perm_unlink"/>
|
||||
</group>
|
||||
</sheet>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
<record id="ir_access_view_search" model="ir.ui.view">
|
||||
<field name="model">ir.model.access</field>
|
||||
<field name="arch" type="xml">
|
||||
<search string="Access Controls">
|
||||
<field name="name" string="Access Control"/>
|
||||
<filter string="Global" icon="terp-stage" domain="[('group_id','=',False)]"/>
|
||||
<separator/>
|
||||
<filter string="Full Access" icon="terp-gtk-select-all" domain="[('perm_read','=',True),('perm_write','=',True),('perm_create','=',True),('perm_unlink','=',True)]"/>
|
||||
<filter string="Read Access" icon="terp-stock_align_left_24" domain="[('perm_read','=',True)]"/>
|
||||
<filter string="Write Access" icon="terp-tools" domain="[('perm_write','=',True)]"/>
|
||||
<field name="model_id"/>
|
||||
<field name="group_id"/>
|
||||
<group expand="0" string="Group By..." colspan="11" col="11" groups="base.group_no_one">
|
||||
<filter string="Group" icon="terp-personal" domain="[]" context="{'group_by':'group_id'}"/>
|
||||
<filter string="Object" icon="terp-stock_align_left_24" domain="[]" context="{'group_by':'model_id'}"/>
|
||||
</group>
|
||||
</search>
|
||||
</field>
|
||||
</record>
|
||||
<record id="ir_access_act" model="ir.actions.act_window">
|
||||
<field name="name">Access Controls List</field>
|
||||
<field name="res_model">ir.model.access</field>
|
||||
<field name="view_type">form</field>
|
||||
<field name="view_id" ref="ir_access_view_tree"/>
|
||||
<field name="search_view_id" ref="ir_access_view_search"/>
|
||||
</record>
|
||||
<menuitem action="ir_access_act" id="menu_ir_access_act" parent="base.menu_security"/>
|
||||
|
||||
</data>
|
||||
</openerp>
|
|
@ -0,0 +1,87 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<openerp>
|
||||
<data>
|
||||
<!-- Rules -->
|
||||
<record id="view_rule_form" model="ir.ui.view">
|
||||
<field name="model">ir.rule</field>
|
||||
<field name="arch" type="xml">
|
||||
<form string="Record rules" version="7.0">
|
||||
<sheet>
|
||||
<group>
|
||||
<group string="General">
|
||||
<field name="name"/>
|
||||
<field name="model_id"/>
|
||||
<field name="active"/>
|
||||
</group>
|
||||
<group col="4" string="Access Rights">
|
||||
<field name="perm_read"/>
|
||||
<field name="perm_write"/>
|
||||
<field name="perm_create"/>
|
||||
<field name="perm_unlink"/>
|
||||
</group>
|
||||
</group>
|
||||
<separator string="Rule Definition (Domain Filter)"/>
|
||||
<field name="domain_force" colspan="2" nolabel="1"/>
|
||||
<group string="Groups (no group = global)">
|
||||
<field name="global"/>
|
||||
<field name="groups" nolabel="1" colspan="4"/>
|
||||
</group>
|
||||
<group string="Interaction between rules">
|
||||
<label colspan="2"
|
||||
string="Global rules (non group-specific) are restrictions, and cannot be bypassed. Group-local rules grant additional permissions, but are constrained within the bounds of global ones. The first group rules restrict further than global rules, but any additional group rule will add more permissions"/>
|
||||
<label colspan="2"
|
||||
string="Detailed algorithm:"/>
|
||||
<label colspan="2"
|
||||
string="1. Global rules are combined together with a logical AND operator, and with the result of the following steps"/>
|
||||
<label colspan="2"
|
||||
string="2. Group-specific rules are combined together with a logical OR operator"/>
|
||||
<label colspan="2"
|
||||
string="3. If user belongs to several groups, the results from step 2 are combined with logical OR operator"/>
|
||||
<label colspan="2"
|
||||
string="Example: GLOBAL_RULE_1 AND GLOBAL_RULE_2 AND ( (GROUP_A_RULE_1 OR GROUP_A_RULE_2) OR (GROUP_B_RULE_1 OR GROUP_B_RULE_2) )"/>
|
||||
</group>
|
||||
</sheet>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
<record id="view_rule_tree" model="ir.ui.view">
|
||||
<field name="model">ir.rule</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree string="Record rules">
|
||||
<field name="model_id"/>
|
||||
<field name="name"/>
|
||||
<field name="global"/>
|
||||
<field name="domain_force"/>
|
||||
<field name="perm_read"/>
|
||||
<field name="perm_write"/>
|
||||
<field name="perm_create"/>
|
||||
<field name="perm_unlink"/>
|
||||
</tree>
|
||||
</field>
|
||||
</record>
|
||||
<record id="view_rule_search" model="ir.ui.view">
|
||||
<field name="model">ir.rule</field>
|
||||
<field name="arch" type="xml">
|
||||
<search string="Record Rules">
|
||||
<field name="name" string="Record Rule"/>
|
||||
<filter string="Global" icon="terp-stage" domain="[('global','=',True)]"/>
|
||||
<separator/>
|
||||
<filter string="Full Access" icon="terp-gtk-select-all" domain="[('perm_read','=',True),('perm_write','=',True),('perm_create','=',True),('perm_unlink','=',True)]"/>
|
||||
<filter string="Read Access" icon="terp-stock_align_left_24" domain="[('perm_read','=',True)]"/>
|
||||
<filter string="Write Access" icon="terp-tools" domain="[('perm_write','=',True)]"/>
|
||||
<field name="model_id"/>
|
||||
<field name="groups"/>
|
||||
</search>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="action_rule" model="ir.actions.act_window">
|
||||
<field name="name">Record Rules</field>
|
||||
<field name="res_model">ir.rule</field>
|
||||
<field name="view_type">form</field>
|
||||
<field name="view_id" ref="view_rule_tree"/>
|
||||
<field name="search_view_id" ref="view_rule_search"/>
|
||||
</record>
|
||||
<menuitem action="action_rule" id="menu_action_rule" parent="base.menu_security" sequence="3"/>
|
||||
</data>
|
||||
</openerp>
|
|
@ -0,0 +1,130 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<openerp>
|
||||
<data>
|
||||
<!-- Sequences -->
|
||||
<record id="sequence_view" model="ir.ui.view">
|
||||
<field name="model">ir.sequence</field>
|
||||
<field name="arch" type="xml">
|
||||
<form string="Sequences" version="7.0">
|
||||
<sheet>
|
||||
<group col="4">
|
||||
<field name="name"/>
|
||||
<field name="code"/>
|
||||
<field name="company_id" groups="base.group_multi_company"/>
|
||||
<field name="active" groups="base.group_no_one"/>
|
||||
</group>
|
||||
<notebook>
|
||||
<page string="Sequence">
|
||||
<group col="4">
|
||||
<field name="prefix"/>
|
||||
<field name="suffix"/>
|
||||
<field name="padding"/>
|
||||
<field name="number_increment"/>
|
||||
<field name="number_next"/>
|
||||
<field name="implementation"/>
|
||||
</group>
|
||||
<group col="3" string="Legend (for prefix, suffix)">
|
||||
<group>
|
||||
<label colspan="2" string="Current Year with Century: %%(year)s"/>
|
||||
<label colspan="2" string="Current Year without Century: %%(y)s"/>
|
||||
<label colspan="2" string="Month: %%(month)s"/>
|
||||
<label colspan="2" string="Day: %%(day)s"/>
|
||||
</group>
|
||||
<group>
|
||||
<label colspan="2" string="Day of the Year: %%(doy)s"/>
|
||||
<label colspan="2" string="Week of the Year: %%(woy)s"/>
|
||||
<label colspan="2" string="Day of the Week (0:Monday): %%(weekday)s"/>
|
||||
</group>
|
||||
<group>
|
||||
<label colspan="2" string="Hour 00->24: %%(h24)s"/>
|
||||
<label colspan="2" string="Hour 00->12: %%(h12)s"/>
|
||||
<label colspan="2" string="Minute: %%(min)s"/>
|
||||
<label colspan="2" string="Second: %%(sec)s"/>
|
||||
</group>
|
||||
</group>
|
||||
</page>
|
||||
</notebook>
|
||||
</sheet>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
<record id="sequence_view_tree" model="ir.ui.view">
|
||||
<field name="model">ir.sequence</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree string="Sequences">
|
||||
<field name="code"/>
|
||||
<field name="name"/>
|
||||
<field name="prefix"/>
|
||||
<field name="padding"/>
|
||||
<field name="company_id" groups="base.group_multi_company"/>
|
||||
<field name="number_next"/>
|
||||
<field name="number_increment"/>
|
||||
<field name="implementation"/>
|
||||
</tree>
|
||||
</field>
|
||||
</record>
|
||||
<record id="view_sequence_search" model="ir.ui.view">
|
||||
<field name="model">ir.sequence</field>
|
||||
<field name="arch" type="xml">
|
||||
<search string="Sequences">
|
||||
<field name="name" string="Sequence"/>
|
||||
<field name="code"/>
|
||||
<field name="company_id" groups="base.group_multi_company"/>
|
||||
</search>
|
||||
</field>
|
||||
</record>
|
||||
<record id="ir_sequence_form" model="ir.actions.act_window">
|
||||
<field name="name">Sequences</field>
|
||||
<field name="type">ir.actions.act_window</field>
|
||||
<field name="res_model">ir.sequence</field>
|
||||
<field name="view_type">form</field>
|
||||
<field name="view_id" ref="sequence_view_tree"/>
|
||||
<field name="context">{'active_test': False}</field>
|
||||
</record>
|
||||
<menuitem action="ir_sequence_form" id="menu_ir_sequence_form" parent="next_id_5"/>
|
||||
|
||||
<!-- Sequences Types -->
|
||||
<record id="sequence_type_form_view" model="ir.ui.view">
|
||||
<field name="model">ir.sequence.type</field>
|
||||
<field name="arch" type="xml">
|
||||
<form string="Sequence Type" version="7.0">
|
||||
<sheet>
|
||||
<group col="4">
|
||||
<field name="name"/>
|
||||
<field name="code"/>
|
||||
</group>
|
||||
</sheet>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
<record id="sequence_type_tree_view" model="ir.ui.view">
|
||||
<field name="model">ir.sequence.type</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree string="Sequence Type">
|
||||
<field name="name"/>
|
||||
<field name="code"/>
|
||||
</tree>
|
||||
</field>
|
||||
</record>
|
||||
<record id="view_sequence_type_search" model="ir.ui.view">
|
||||
<field name="model">ir.sequence.type</field>
|
||||
<field name="arch" type="xml">
|
||||
<search string="Sequences Type">
|
||||
<field name="name" filter_domain="['|', ('name','ilike',self), ('code','ilike',self)]" string="Sequence Type"/>
|
||||
</search>
|
||||
</field>
|
||||
</record>
|
||||
<record id="ir_sequence_type" model="ir.actions.act_window">
|
||||
<field name="name">Sequence Codes</field>
|
||||
<field name="type">ir.actions.act_window</field>
|
||||
<field name="res_model">ir.sequence.type</field>
|
||||
<field name="view_type">form</field>
|
||||
<field name="view_mode">tree,form</field>
|
||||
<field eval="False" name="view_id"/>
|
||||
</record>
|
||||
<menuitem action="ir_sequence_type" id="menu_ir_sequence_type"
|
||||
groups="base.group_no_one"
|
||||
parent="base.next_id_5"/>
|
||||
|
||||
</data>
|
||||
</openerp>
|
|
@ -1,8 +1,8 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<openerp>
|
||||
<data>
|
||||
<!-- Translations -->
|
||||
<record id="view_translation_search" model="ir.ui.view">
|
||||
<field name="name">Translations</field>
|
||||
<field name="model">ir.translation</field>
|
||||
<field name="arch" type="xml">
|
||||
<search string="Translations">
|
||||
|
@ -21,7 +21,6 @@
|
|||
</record>
|
||||
|
||||
<record id="view_translation_form" model="ir.ui.view">
|
||||
<field name="name">Translations</field>
|
||||
<field name="model">ir.translation</field>
|
||||
<field name="arch" type="xml">
|
||||
<form string="Translations" version="7.0">
|
||||
|
@ -53,7 +52,6 @@
|
|||
</field>
|
||||
</record>
|
||||
<record id="view_translation_tree" model="ir.ui.view">
|
||||
<field name="name">Translations</field>
|
||||
<field name="model">ir.translation</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree string="Translations" editable="bottom">
|
||||
|
@ -76,4 +74,4 @@
|
|||
<menuitem action="action_translation" id="menu_action_translation" parent="base.menu_translation_app" />
|
||||
|
||||
</data>
|
||||
</openerp>
|
||||
</openerp>
|
||||
|
|
|
@ -316,9 +316,5 @@ class ir_ui_menu(osv.osv):
|
|||
'sequence' : 10,
|
||||
}
|
||||
_order = "sequence,id"
|
||||
ir_ui_menu()
|
||||
|
||||
|
||||
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
||||
|
|
|
@ -0,0 +1,74 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<openerp>
|
||||
<data>
|
||||
|
||||
<record id="edit_menu_access" model="ir.ui.view">
|
||||
<field name="model">ir.ui.menu</field>
|
||||
<field name="arch" type="xml">
|
||||
<form string="Menu" version="7.0">
|
||||
<sheet>
|
||||
<group>
|
||||
<group>
|
||||
<field name="name"/>
|
||||
<field name="parent_id"/>
|
||||
<field name="sequence"/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="complete_name"/>
|
||||
<field name="action"/>
|
||||
<field name="icon"/>
|
||||
</group>
|
||||
</group>
|
||||
<notebook>
|
||||
<page string="Groups">
|
||||
<field name="groups_id"/>
|
||||
</page>
|
||||
<page string="Submenus">
|
||||
<!-- Note: make sure you have 'ir.ui.menu.full_list'
|
||||
in the context to see all submenus! -->
|
||||
<field name="child_id"
|
||||
context="{'default_parent_id': active_id}">
|
||||
<tree string="Menu">
|
||||
<field name="sequence"/>
|
||||
<field icon="icon" name="name" string="Menu"/>
|
||||
</tree>
|
||||
</field>
|
||||
</page>
|
||||
</notebook>
|
||||
</sheet>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
<record id="edit_menu" model="ir.ui.view">
|
||||
<field name="model">ir.ui.menu</field>
|
||||
<field eval="8" name="priority"/>
|
||||
<field name="arch" type="xml">
|
||||
<tree string="Menu">
|
||||
<field name="sequence"/>
|
||||
<field icon="icon" name="complete_name" string="Menu"/>
|
||||
</tree>
|
||||
</field>
|
||||
</record>
|
||||
<record id="edit_menu_access_search" model="ir.ui.view">
|
||||
<field name="name">ir.ui.menu.search</field>
|
||||
<field name="model">ir.ui.menu</field>
|
||||
<field name="arch" type="xml">
|
||||
<search string="Menu">
|
||||
<field name="name" string="Menu"/>
|
||||
<field name="parent_id"/>
|
||||
</search>
|
||||
</field>
|
||||
</record>
|
||||
<record id="grant_menu_access" model="ir.actions.act_window">
|
||||
<field name="name">Menu Items</field>
|
||||
<field name="res_model">ir.ui.menu</field>
|
||||
<field name="view_type">form</field>
|
||||
<field name="view_id" ref="edit_menu"/>
|
||||
<field name="context">{'ir.ui.menu.full_list':True}</field>
|
||||
<field name="search_view_id" ref="edit_menu_access_search"/>
|
||||
<field name="help">Manage and customize the items available and displayed in your OpenERP system menu. You can delete an item by clicking on the box at the beginning of each line and then delete it through the button that appeared. Items can be assigned to specific groups in order to make them accessible to some users within the system.</field>
|
||||
</record>
|
||||
<menuitem action="grant_menu_access" id="menu_grant_menu_access" parent="base.next_id_2" sequence="1"/>
|
||||
|
||||
</data>
|
||||
</openerp>
|
|
@ -44,7 +44,6 @@ class view_custom(osv.osv):
|
|||
cr.execute('SELECT indexname FROM pg_indexes WHERE indexname = \'ir_ui_view_custom_user_id_ref_id\'')
|
||||
if not cr.fetchone():
|
||||
cr.execute('CREATE INDEX ir_ui_view_custom_user_id_ref_id ON ir_ui_view_custom (user_id, ref_id)')
|
||||
view_custom()
|
||||
|
||||
class view(osv.osv):
|
||||
_name = 'ir.ui.view'
|
||||
|
@ -60,7 +59,7 @@ class view(osv.osv):
|
|||
return result
|
||||
|
||||
_columns = {
|
||||
'name': fields.char('View Name',size=64, required=True),
|
||||
'name': fields.char('View Name', required=True),
|
||||
'model': fields.char('Object', size=64, required=True, select=True),
|
||||
'priority': fields.integer('Sequence', required=True),
|
||||
'type': fields.function(_type_field, type='selection', selection=[
|
||||
|
@ -88,11 +87,17 @@ class view(osv.osv):
|
|||
_order = "priority,name"
|
||||
|
||||
# Holds the RNG schema
|
||||
_relaxng_validator = None
|
||||
_relaxng_validator = None
|
||||
|
||||
def create(self, cr, uid, values, context=None):
|
||||
if 'type' in values:
|
||||
_logger.warning("Setting the `type` field is deprecated in the `ir.ui.view` model.")
|
||||
if not values.get('name'):
|
||||
if values.get('inherit_id'):
|
||||
inferred_type = self.browse(cr, uid, values['inherit_id'], context).type
|
||||
else:
|
||||
inferred_type = etree.fromstring(values['arch'].encode('utf8')).tag
|
||||
values['name'] = "%s %s" % (values['model'], inferred_type)
|
||||
return super(osv.osv, self).create(cr, uid, values, context)
|
||||
|
||||
def _relaxng(self):
|
||||
|
@ -106,8 +111,7 @@ class view(osv.osv):
|
|||
finally:
|
||||
frng.close()
|
||||
return self._relaxng_validator
|
||||
|
||||
|
||||
|
||||
def _check_render_view(self, cr, uid, view, context=None):
|
||||
"""Verify that the given view's hierarchy is valid for rendering, along with all the changes applied by
|
||||
its inherited views, by rendering it using ``fields_view_get()``.
|
||||
|
@ -267,7 +271,6 @@ class view(osv.osv):
|
|||
'label' : labels,
|
||||
'blank_nodes': blank_nodes,
|
||||
'node_parent_field': _Model_Field,}
|
||||
view()
|
||||
|
||||
class view_sc(osv.osv):
|
||||
_name = 'ir.ui.view_sc'
|
||||
|
@ -304,7 +307,5 @@ class view_sc(osv.osv):
|
|||
('shortcut_unique', 'unique(res_id, resource, user_id)', 'Shortcut for this menu already exists!'),
|
||||
]
|
||||
|
||||
view_sc()
|
||||
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
||||
|
|
|
@ -0,0 +1,144 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<openerp>
|
||||
<data>
|
||||
<!-- View -->
|
||||
<record id="view_view_form" model="ir.ui.view">
|
||||
<field name="model">ir.ui.view</field>
|
||||
<field name="arch" type="xml">
|
||||
<form string="Views" version="7.0">
|
||||
<sheet>
|
||||
<group>
|
||||
<group>
|
||||
<field name="name"/>
|
||||
<field name="type"/>
|
||||
<field name="model"/>
|
||||
<field name="priority"/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="field_parent"/>
|
||||
<field name="inherit_id"/>
|
||||
<field name="xml_id"/>
|
||||
</group>
|
||||
</group>
|
||||
<notebook>
|
||||
<page string="Architecture">
|
||||
<field name="arch"/>
|
||||
</page>
|
||||
<page string="Groups">
|
||||
<field name="groups_id"/>
|
||||
</page>
|
||||
</notebook>
|
||||
</sheet>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
<record id="view_view_tree" model="ir.ui.view">
|
||||
<field name="model">ir.ui.view</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree string="Views">
|
||||
<field name="priority" string="Sequence"/>
|
||||
<field name="name"/>
|
||||
<field name="type"/>
|
||||
<field name="model"/>
|
||||
<field name="xml_id"/>
|
||||
<field name="inherit_id"/>
|
||||
</tree>
|
||||
</field>
|
||||
</record>
|
||||
<record id="view_view_search" model="ir.ui.view">
|
||||
<field name="model">ir.ui.view</field>
|
||||
<field name="arch" type="xml">
|
||||
<search string="Views">
|
||||
<field name="name" filter_domain="['|', ('name','ilike',self), ('model','ilike',self)]" string="View"/>
|
||||
<filter icon="terp-stock_zoom"
|
||||
string="Search"
|
||||
domain="[('type', '=', 'search')]"/>
|
||||
<filter icon="gtk-indent"
|
||||
string="Tree"
|
||||
domain="[('type', '=', 'tree')]"/>
|
||||
<filter icon="gtk-new"
|
||||
string="Form"
|
||||
domain="[('type', '=','form')]"/>
|
||||
<field name="inherit_id"/>
|
||||
<field name="type"/>
|
||||
<group expand="0" string="Group By...">
|
||||
<filter string="Object" icon="terp-stock_align_left_24" domain="[]" context="{'group_by':'model'}"/>
|
||||
<filter string="Type" icon="terp-stock_symbol-selection" domain="[]" context="{'group_by':'type'}"/>
|
||||
</group>
|
||||
</search>
|
||||
</field>
|
||||
</record>
|
||||
<record id="action_ui_view" model="ir.actions.act_window">
|
||||
<field name="name">Views</field>
|
||||
<field name="type">ir.actions.act_window</field>
|
||||
<field name="res_model">ir.ui.view</field>
|
||||
<field name="view_id" ref="view_view_tree"/>
|
||||
<field name="help">Views allows you to personalize each view of OpenERP. You can add new fields, move fields, rename them or delete the ones that you do not need.</field>
|
||||
</record>
|
||||
<menuitem action="action_ui_view" id="menu_action_ui_view" parent="base.next_id_2" sequence="2"/>
|
||||
|
||||
<!-- View customizations -->
|
||||
<record id="view_view_custom_form" model="ir.ui.view">
|
||||
<field name="model">ir.ui.view.custom</field>
|
||||
<field name="arch" type="xml">
|
||||
<form string="Customized Views" version="7.0">
|
||||
<sheet>
|
||||
<group col="4">
|
||||
<field name="user_id"/>
|
||||
<field name="ref_id"/>
|
||||
<field name="arch" colspan="4" nolabel="1"/>
|
||||
</group>
|
||||
</sheet>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
<record id="view_view_custom_tree" model="ir.ui.view">
|
||||
<field name="model">ir.ui.view.custom</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree string="Customized Views">
|
||||
<field name="user_id"/>
|
||||
<field name="ref_id"/>
|
||||
</tree>
|
||||
</field>
|
||||
</record>
|
||||
<record id="view_view_custom_search" model="ir.ui.view">
|
||||
<field name="model">ir.ui.view.custom</field>
|
||||
<field name="arch" type="xml">
|
||||
<search string="Customized Views">
|
||||
<field name="user_id"/>
|
||||
<field name="ref_id"/>
|
||||
</search>
|
||||
</field>
|
||||
</record>
|
||||
<record id="action_ui_view_custom" model="ir.actions.act_window">
|
||||
<field name="name">Customized Views</field>
|
||||
<field name="type">ir.actions.act_window</field>
|
||||
<field name="res_model">ir.ui.view.custom</field>
|
||||
<field name="help">Customized views are used when users reorganize the content of their dashboard views (via web client)</field>
|
||||
</record>
|
||||
<menuitem id="menu_action_ui_view_custom" action="action_ui_view_custom" parent="base.next_id_2" sequence="3"/>
|
||||
|
||||
<!-- Shortcuts -->
|
||||
<record id="shortcut_form" model="ir.ui.view">
|
||||
<field name="model">ir.ui.view_sc</field>
|
||||
<field name="arch" type="xml">
|
||||
<form string="Shortcut" version="7.0">
|
||||
<group col="4">
|
||||
<field name="name"/>
|
||||
<field name="sequence"/>
|
||||
</group>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
<record id="shortcut_tree" model="ir.ui.view">
|
||||
<field name="model">ir.ui.view_sc</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree string="Shortcut">
|
||||
<field name="name"/>
|
||||
<field name="sequence"/>
|
||||
</tree>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
</data>
|
||||
</openerp>
|
|
@ -0,0 +1,126 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<openerp>
|
||||
<data>
|
||||
<!-- Values -->
|
||||
<record id="values_view_form_action" model="ir.ui.view">
|
||||
<field name="name">ir.values.form.action</field>
|
||||
<field name="model">ir.values</field>
|
||||
<field name="arch" type="xml">
|
||||
<form string="Action Bindings" version="7.0">
|
||||
<group>
|
||||
<group>
|
||||
<field name="name"/>
|
||||
<field name="model_id" on_change="onchange_object_id(model_id)"/>
|
||||
<field name="model"/>
|
||||
<field name="res_id"/>
|
||||
<field name="key2"/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="action_id" on_change="onchange_action_id(action_id)"/>
|
||||
<field name="value_unpickle" colspan="4" string="Action Reference"/>
|
||||
</group>
|
||||
</group>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="values_view_form_defaults" model="ir.ui.view">
|
||||
<field name="name">ir.values.form.defaults</field>
|
||||
<field name="model">ir.values</field>
|
||||
<field name="arch" type="xml">
|
||||
<form string="User-defined Defaults" version="7.0">
|
||||
<group>
|
||||
<group>
|
||||
<field name="name"/>
|
||||
<field name="model"/>
|
||||
<field name="model_id" on_change="onchange_object_id(model_id)"/>
|
||||
<field name="value_unpickle" nolabel="1"/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="key2" string="Condition"/>
|
||||
<field name="user_id"/>
|
||||
<field name="company_id" groups="base.group_multi_company"/>
|
||||
</group>
|
||||
</group>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="values_view_tree_action" model="ir.ui.view">
|
||||
<field name="name">ir.values.tree.action</field>
|
||||
<field name="model">ir.values</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree string="Action Bindings/Defaults">
|
||||
<field name="name"/>
|
||||
<field name="model"/>
|
||||
<field name="key2"/>
|
||||
</tree>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="values_view_search_action" model="ir.ui.view">
|
||||
<field name="name">ir.values.search.action</field>
|
||||
<field name="model">ir.values</field>
|
||||
<field name="arch" type="xml">
|
||||
<search string="Client Actions">
|
||||
<field name="name"
|
||||
filter_domain="['|', '|', ('name','ilike',self), ('model','ilike',self), ('key2','ilike',self)]"
|
||||
string="Client Action"/>
|
||||
<group expand="0" string="Group By...">
|
||||
<filter string="Model" icon="terp-stock_align_left_24" domain="[]" context="{'group_by':'model'}"/>
|
||||
<filter string="Type" icon="terp-stock_symbol-selection" domain="[]" context="{'group_by':'key2'}"/>
|
||||
</group>
|
||||
</search>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="act_values_form_action" model="ir.actions.act_window">
|
||||
<field name="name">Action Bindings</field>
|
||||
<field name="type">ir.actions.act_window</field>
|
||||
<field name="res_model">ir.values</field>
|
||||
<field name="view_type">form</field>
|
||||
<field name="view_mode">tree,form</field>
|
||||
<field name="search_view_id" ref="values_view_search_action"/>
|
||||
<field name="domain">[('key','=','action')]</field>
|
||||
<field name="context">{'default_key':'action'}</field>
|
||||
</record>
|
||||
<record model="ir.actions.act_window.view" id="action_values_tree_view">
|
||||
<field name="sequence" eval="1"/>
|
||||
<field name="view_mode">tree</field>
|
||||
<field name="view_id" ref="values_view_tree_action"/>
|
||||
<field name="act_window_id" ref="act_values_form_action"/>
|
||||
</record>
|
||||
<record model="ir.actions.act_window.view" id="action_values_form_view">
|
||||
<field name="sequence" eval="2"/>
|
||||
<field name="view_mode">form</field>
|
||||
<field name="view_id" ref="values_view_form_action"/>
|
||||
<field name="act_window_id" ref="act_values_form_action"/>
|
||||
</record>
|
||||
<menuitem action="act_values_form_action" id="menu_values_form_action" parent="next_id_6"/>
|
||||
|
||||
<record id="act_values_form_defaults" model="ir.actions.act_window">
|
||||
<field name="name">User-defined Defaults</field>
|
||||
<field name="type">ir.actions.act_window</field>
|
||||
<field name="res_model">ir.values</field>
|
||||
<field name="view_type">form</field>
|
||||
<field name="view_mode">tree,form</field>
|
||||
<field name="search_view_id" ref="values_view_search_action"/>
|
||||
<field name="domain">[('key','=','default')]</field>
|
||||
<field name="context">{'default_key':'default','default_key2':''}</field>
|
||||
</record>
|
||||
<record model="ir.actions.act_window.view" id="action_values_defaults_tree_view">
|
||||
<field name="sequence" eval="1"/>
|
||||
<field name="view_mode">tree</field>
|
||||
<field name="view_id" ref="values_view_tree_action"/>
|
||||
<field name="act_window_id" ref="act_values_form_defaults"/>
|
||||
</record>
|
||||
<record model="ir.actions.act_window.view" id="action_values_defaults_form_view">
|
||||
<field name="sequence" eval="2"/>
|
||||
<field name="view_mode">form</field>
|
||||
<field name="view_id" ref="values_view_form_defaults"/>
|
||||
<field name="act_window_id" ref="act_values_form_defaults"/>
|
||||
</record>
|
||||
<menuitem action="act_values_form_defaults" id="menu_values_form_defaults" parent="next_id_6"/>
|
||||
|
||||
</data>
|
||||
</openerp>
|
|
@ -0,0 +1,17 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<openerp>
|
||||
<data>
|
||||
<record model="ir.cron" id="cronjob_osv_memory_autovacuum">
|
||||
<field name='name'>AutoVacuum osv_memory objects</field>
|
||||
<field name='interval_number'>30</field>
|
||||
<field name='interval_type'>minutes</field>
|
||||
<field name="numbercall">-1</field>
|
||||
<field name="active">True</field>
|
||||
<field name="doall" eval="False" />
|
||||
<field name="model">osv_memory.autovacuum</field>
|
||||
<field name="function">power_on</field>
|
||||
<field name="args">()</field>
|
||||
</record>
|
||||
|
||||
</data>
|
||||
</openerp>
|
Loading…
Reference in New Issue