[MERGE]
bzr revid: stephane@tinyerp.com-20090123145136-ft1j7h7qn5x200j6
This commit is contained in:
commit
67df4268fe
|
@ -40,10 +40,10 @@ class ir_model(osv.osv):
|
|||
_rec_name = 'name'
|
||||
_columns = {
|
||||
'name': fields.char('Object Name', size=64, translate=True, required=True),
|
||||
'model': fields.char('Object Name', size=64, required=True, search=1),
|
||||
'model': fields.char('Object Name', size=64, required=True, select=1),
|
||||
'info': fields.text('Information'),
|
||||
'field_id': fields.one2many('ir.model.fields', 'model_id', 'Fields', required=True),
|
||||
'state': fields.selection([('manual','Custom Object'),('base','Base Object')],'Manualy Created',readonly=1),
|
||||
'state': fields.selection([('manual','Custom Object'),('base','Base Object')],'Manualy Created',readonly=True),
|
||||
'access_ids': fields.one2many('ir.model.access', 'model_id', 'Access'),
|
||||
}
|
||||
_defaults = {
|
||||
|
@ -94,18 +94,19 @@ ir_model()
|
|||
class ir_model_grid(osv.osv):
|
||||
_name = 'ir.model.grid'
|
||||
_table = 'ir_model'
|
||||
_inherit = 'ir.model'
|
||||
_description = "Objects Security Grid"
|
||||
_rec_name = 'name'
|
||||
_columns = {
|
||||
'name': fields.char('Object', size=64),
|
||||
'model': fields.char('Object Name', size=64),
|
||||
}
|
||||
#_rec_name = 'name'
|
||||
#_columns = {
|
||||
# 'name': fields.char('Object', size=64),
|
||||
# 'model': fields.char('Object Name', size=64),
|
||||
#}
|
||||
|
||||
def create(self, cr, uid, vals, context=None):
|
||||
raise osv.except_osv('Error !', 'You cannot add an entry to this view !')
|
||||
|
||||
def unlink(self, *args, **argv):
|
||||
raise osv.except_osv('Error !', 'You cannot add an entry to this view !')
|
||||
raise osv.except_osv('Error !', 'You cannot delete an entry of this view !')
|
||||
|
||||
def read(self, cr, uid, ids, fields=None, context=None, load='_classic_read'):
|
||||
result = super(osv.osv, self).read(cr, uid, ids, fields, context, load)
|
||||
|
|
|
@ -22,6 +22,12 @@
|
|||
</record>
|
||||
<menuitem action="wizard_lang_install" id="menu_wizard_lang_install" parent="menu_translation" type="wizard"/>
|
||||
|
||||
<record id="wizard_tech_guide_rst" model="ir.actions.wizard">
|
||||
<field name="name">Create RST Technical Guide</field>
|
||||
<field name="wiz_name">tech.guide.rst</field>
|
||||
</record>
|
||||
<wizard id="wiz_tech_guide_rst" model="ir.module.module" name="tech.guide.rst" string="Create RST Technical Guide"/>
|
||||
|
||||
<record id="wizard_lang_export" model="ir.ui.view">
|
||||
<field name="name">Export a Translation File</field>
|
||||
<field name="model">wizard.module.lang.export</field>
|
||||
|
|
|
@ -28,6 +28,7 @@ import wizard_export_lang
|
|||
import wizard_import_lang
|
||||
import wizard_module_import
|
||||
import wizard_update_translations
|
||||
import wizard_tech_guide_rst
|
||||
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
||||
|
|
|
@ -0,0 +1,241 @@
|
|||
# -*- encoding: utf-8 -*-
|
||||
##############################################################################
|
||||
#
|
||||
# OpenERP, Open Source Management Solution
|
||||
# Copyright (C) 2004-2009 Tiny SPRL (<http://tiny.be>). All Rights Reserved
|
||||
# $Id$
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU 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 General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
##############################################################################
|
||||
|
||||
import wizard
|
||||
import osv
|
||||
import pooler
|
||||
import os
|
||||
import tools
|
||||
|
||||
import zipfile
|
||||
from StringIO import StringIO
|
||||
import base64
|
||||
|
||||
choose_file_form ='''<?xml version="1.0"?>
|
||||
<form string="Create Technical Guide in rst format">
|
||||
<separator string="Technical Guide in rst format" colspan="4"/>
|
||||
<label string="Please choose a file where the Technical Guide will be written." colspan="4"/>
|
||||
<field name="rst_file" />
|
||||
<field name="name" invisible="1"/>
|
||||
</form>
|
||||
'''
|
||||
|
||||
choose_file_fields = {
|
||||
'rst_file': {'string': 'file', 'type': 'binary', 'required': True, 'readonly': True},
|
||||
'name': {'string': 'filename', 'type': 'char', 'required': True, 'readonly': True},
|
||||
}
|
||||
|
||||
|
||||
class RstDoc(object):
|
||||
def __init__(self, module, objects):
|
||||
self.dico = {
|
||||
'name': module.name,
|
||||
'shortdesc': module.shortdesc,
|
||||
'latest_version': module.latest_version,
|
||||
'website': module.website,
|
||||
'description': self._handle_text(module.description),
|
||||
'report_list': self._handle_list_items(module.reports_by_module),
|
||||
'menu_list': self._handle_list_items(module.menus_by_module),
|
||||
'view_list': self._handle_list_items(module.views_by_module),
|
||||
'depends': module.dependencies_id,
|
||||
}
|
||||
self.objects = objects
|
||||
|
||||
def _handle_list_items(self, list_item_as_string):
|
||||
return [item.replace('*', '\*') for item in list_item_as_string.split('\n')]
|
||||
|
||||
def _handle_text(self, txt):
|
||||
lst = [' %s' % line for line in txt.split('\n')]
|
||||
return '\n'.join(lst)
|
||||
|
||||
def _write_header(self):
|
||||
sl = [
|
||||
"",
|
||||
"Introspection report on objects",
|
||||
"===============================",
|
||||
"",
|
||||
":Module: %(name)s",
|
||||
":Name: %(shortdesc)s",
|
||||
":Version: %(latest_version)s",
|
||||
":Directory: %(name)s",
|
||||
":Web: %(website)s",
|
||||
"",
|
||||
"Description",
|
||||
"-----------",
|
||||
"",
|
||||
"::",
|
||||
" ",
|
||||
" %(description)s",
|
||||
""]
|
||||
return '\n'.join(sl) % (self.dico)
|
||||
|
||||
def _write_reports(self):
|
||||
sl = ["",
|
||||
"Reports",
|
||||
"-------"]
|
||||
for report in self.dico['report_list']:
|
||||
if report:
|
||||
sl.append("")
|
||||
sl.append(" * %s" % report)
|
||||
sl.append("")
|
||||
return '\n'.join(sl)
|
||||
|
||||
def _write_menus(self):
|
||||
sl = ["",
|
||||
"Menus",
|
||||
"-------"]
|
||||
for menu in self.dico['menu_list']:
|
||||
if menu:
|
||||
sl.append("")
|
||||
sl.append(" * %s" % menu)
|
||||
|
||||
sl.append("")
|
||||
return '\n'.join(sl)
|
||||
|
||||
def _write_views(self):
|
||||
sl = ["",
|
||||
"Views",
|
||||
"-----"]
|
||||
for view in self.dico['view_list']:
|
||||
if view:
|
||||
sl.append("")
|
||||
sl.append(" * %s" % view)
|
||||
sl.append("")
|
||||
return '\n'.join(sl)
|
||||
|
||||
def _write_depends(self):
|
||||
sl = ["",
|
||||
"Dependencies",
|
||||
"------------"]
|
||||
for dependency in self.dico['depends']:
|
||||
sl.append("")
|
||||
sl.append(" * %s - %s" % (dependency.name, dependency.state))
|
||||
return '\n'.join(sl)
|
||||
|
||||
def _write_objects(self):
|
||||
# {'fields': [('name', {'translate': True, 'required': True, 'type': 'char', 'string': 'Name', 'size': 64})], 'object': browse_record(ir.model, 87)}
|
||||
def write_field(field_def):
|
||||
field_name = field[0]
|
||||
field_dict = field[1]
|
||||
field_required = field_dict.get('required', '') and ', required'
|
||||
field_readonly = field_dict.get('readonly', '') and ', readonly'
|
||||
s = ""
|
||||
s += ":%s: " % (field_name)
|
||||
s += field_dict.get('string', 'Unknown')
|
||||
s += ", " + field_dict['type']
|
||||
s += field_required
|
||||
s += field_readonly
|
||||
s += " " + field_dict.get('help', '')
|
||||
return s
|
||||
|
||||
sl = ["",
|
||||
"Objects",
|
||||
"-------"]
|
||||
for obj in self.objects:
|
||||
title = obj['object'].name
|
||||
sl.append("")
|
||||
sl.append(title)
|
||||
sl.append('#' * len(title))
|
||||
sl.append("")
|
||||
|
||||
for field in obj['fields']:
|
||||
sl.append("")
|
||||
sl.append(write_field(field))
|
||||
sl.append("")
|
||||
|
||||
return '\n'.join(sl)
|
||||
|
||||
def write(self):
|
||||
s = ''
|
||||
s += self._write_header()
|
||||
s += self._write_reports()
|
||||
s += self._write_menus()
|
||||
s += self._write_views()
|
||||
s += self._write_depends()
|
||||
s += self._write_objects()
|
||||
|
||||
return s
|
||||
|
||||
|
||||
class wizard_tech_guide_rst(wizard.interface):
|
||||
|
||||
def _generate(self, cr, uid, data, context):
|
||||
pool = pooler.get_pool(cr.dbname)
|
||||
module_model = pool.get('ir.module.module')
|
||||
module = module_model.browse(cr, uid, data['id'])
|
||||
|
||||
objects = self._get_objects(cr, uid, module)
|
||||
rstdoc = RstDoc(module, objects)
|
||||
out = rstdoc.write()
|
||||
|
||||
return {
|
||||
'rst_file': base64.encodestring(out),
|
||||
'name': '%s_technical_guide.rst' % module.name.replace('.', '_')
|
||||
}
|
||||
|
||||
## def _object_doc(self, cr, uid, obj):
|
||||
## pool = pooler.get_pool(cr.dbname)
|
||||
## modobj = pool.get(obj)
|
||||
## return modobj.__doc__
|
||||
|
||||
def _get_objects(self, cr, uid, module):
|
||||
res = []
|
||||
objects = self._object_find(cr, uid, module)
|
||||
for obj in objects:
|
||||
dico = {
|
||||
'object': obj,
|
||||
'fields': self._fields_find(cr, uid, obj.model)
|
||||
}
|
||||
res.append(dico)
|
||||
return res
|
||||
|
||||
def _object_find(self, cr, uid, module):
|
||||
pool = pooler.get_pool(cr.dbname)
|
||||
ids2 = pool.get('ir.model.data').search(cr, uid, [('module','=',module.name), ('model','=','ir.model')])
|
||||
ids = []
|
||||
for mod in pool.get('ir.model.data').browse(cr, uid, ids2):
|
||||
ids.append(mod.res_id)
|
||||
modobj = pool.get('ir.model')
|
||||
return modobj.browse(cr, uid, ids)
|
||||
|
||||
def _fields_find(self, cr, uid, obj):
|
||||
pool = pooler.get_pool(cr.dbname)
|
||||
modobj = pool.get(obj)
|
||||
res = modobj.fields_get(cr, uid).items()
|
||||
return res
|
||||
|
||||
states = {
|
||||
'init': {
|
||||
'actions': [_generate],
|
||||
'result': {
|
||||
'type': 'form',
|
||||
'arch': choose_file_form,
|
||||
'fields': choose_file_fields,
|
||||
'state': [
|
||||
('end', 'Close', 'gtk-close'),
|
||||
]
|
||||
}
|
||||
},
|
||||
}
|
||||
|
||||
wizard_tech_guide_rst('tech.guide.rst')
|
||||
|
|
@ -47,10 +47,10 @@ class res_payterm(osv.osv):
|
|||
res_payterm()
|
||||
|
||||
class res_partner_category(osv.osv):
|
||||
def name_get(self, cr, uid, ids, context={}):
|
||||
def name_get(self, cr, uid, ids, context=None):
|
||||
if not len(ids):
|
||||
return []
|
||||
reads = self.read(cr, uid, ids, ['name','parent_id'], context)
|
||||
reads = self.read(cr, uid, ids, ['name','parent_id'], context=context)
|
||||
res = []
|
||||
for record in reads:
|
||||
name = record['name']
|
||||
|
@ -59,9 +59,10 @@ class res_partner_category(osv.osv):
|
|||
res.append((record['id'], name))
|
||||
return res
|
||||
|
||||
def _name_get_fnc(self, cr, uid, ids, prop, unknow_none, unknow_dict):
|
||||
res = self.name_get(cr, uid, ids)
|
||||
def _name_get_fnc(self, cr, uid, ids, prop, unknow_none, context=None):
|
||||
res = self.name_get(cr, uid, ids, context=context)
|
||||
return dict(res)
|
||||
|
||||
def _check_recursion(self, cr, uid, ids):
|
||||
level = 100
|
||||
while len(ids):
|
||||
|
|
|
@ -22,7 +22,8 @@
|
|||
##############################################################################
|
||||
|
||||
name = 'openerp-server'
|
||||
version = '5.0.0_rc3'
|
||||
version = '5.0.0'
|
||||
release = '0_rc3'
|
||||
major_version = '5.0'
|
||||
description = 'OpenERP Server'
|
||||
long_desc = '''\
|
||||
|
|
|
@ -64,6 +64,7 @@ class interface(netsvc.Service):
|
|||
res = {}
|
||||
try:
|
||||
state_def = self.states[state]
|
||||
|
||||
result_def = state_def.get('result', {})
|
||||
|
||||
actions_res = {}
|
||||
|
|
|
@ -7,8 +7,7 @@
|
|||
# Need to overwrite the install-part of the RPM to append the
|
||||
# compression-suffix onto the filenames for the man-pages.
|
||||
#
|
||||
python setup.py install --root=$RPM_BUILD_ROOT --record=INSTALLED_FILES
|
||||
python setup.py install --optimize 1 --root=$RPM_BUILD_ROOT --record=INSTALLED_FILES
|
||||
|
||||
SUFFIX=gz
|
||||
mv INSTALLED_FILES INSTALLED_FILES.orig
|
||||
sed "s!\(/share/man/.*\)!\1.$SUFFIX!" INSTALLED_FILES.orig > INSTALLED_FILES
|
||||
sed "s!\(/share/man/.*\)!\1.$SUFFIX!" -i INSTALLED_FILES
|
||||
|
|
|
@ -5,7 +5,8 @@ formats=gztar
|
|||
formats=rpm
|
||||
|
||||
[bdist_rpm]
|
||||
release=1
|
||||
# release must exactly match 'release' as set in bin/release.py
|
||||
release=0_rc3
|
||||
|
||||
requires=python >= 2.3
|
||||
#build-requires=python-devel >= 2.3
|
||||
|
|
Loading…
Reference in New Issue