Files
odoo_source/addons/wiki/wizard/make_index.py
T
Christophe Chauvet 28ede437d9 [IMP]
* add missing tools.translate 
 * translate all missing raise
 * add encoding: utf-8 in missing file
 * add vim comment (when missing) at the end of file
 * convert tabs to spaces (PEP8 Compliant)
 * more pythonic when concatenate value

bzr revid: christophe.chauvet@syleam.fr-20090306221824-xt1oeip60sq8fwws
2009-03-06 23:18:24 +01:00

104 lines
3.1 KiB
Python

# -*- 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 time
import wizard
import osv
import pooler
section_form = '''<?xml version="1.0"?>
<form string="Create Menu">
<separator string="Menu Information" colspan="4"/>
<label string="Want to create a Index on Selected Pages ? "/>
</form>'''
def wiki_do_index(self, cr, uid, data, context):
ids = data['ids']
pool = pooler.get_pool(cr.dbname)
wiki_pool = pool.get('wiki.wiki')
iid = ','.join([str(x) for x in ids])
sSQL = "Select id, section from wiki_wiki where id in (%s) order by section " % (iid)
cr.execute(sSQL)
lst0 = cr.fetchall()
lst = []
ids = {}
for l in lst0:
ids[l[1]] = l[0]
lst.append(l[1])
lst.sort()
val = None
def toint(x):
try:
return int(x)
except:
return 1
lst = map(lambda x: map(toint, x.split('.')), lst)
result = []
current = ['0']
current2 = []
for l in lst:
for pos in range(len(l)):
if pos >= len(current):
current.append('1')
continue
if (pos == len(l) - 1) or (pos >= len(current2)) or (toint(l[pos]) > toint(current2[pos])):
current[pos] = str(toint(current[pos]) + 1)
current = current[:pos + 1]
if pos == len(l) - 1:
break
key = ('.'.join([str(x) for x in l]))
id = ids[key]
val = ('.'.join([str(x) for x in current[:]]), id)
if val:
result.append(val)
current2 = l
for rs in result:
wiki_pool.write(cr, uid, [rs[1]], {'section':rs[0]})
return {}
class make_index(wizard.interface):
states = {
'init': {
'actions': [],
'result': {'type':'form', 'arch':section_form, 'fields':{}, 'state':[('end','Cancel'),('yes','Create Index')]}
},
'yes': {
'actions': [wiki_do_index],
'result': {
'type':'state',
'state':'end'
}
}
}
make_index('wiki.make.index')
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: