Bugfixing for update module list
bzr revid: fp@tinyerp.com-eaccedd5d7ee299d1532b283f69ab98cb26b7870
This commit is contained in:
parent
6ca0ed55e9
commit
cd16610bf2
|
@ -69,6 +69,7 @@ class module(osv.osv):
|
|||
_description = "Module"
|
||||
|
||||
def get_module_info(self, name):
|
||||
print 'NFO', name
|
||||
try:
|
||||
f = tools.file_open(os.path.join(tools.config['addons_path'], name, '__terp__.py'))
|
||||
data = f.read()
|
||||
|
@ -184,37 +185,47 @@ class module(osv.osv):
|
|||
|
||||
# iterate through installed modules and mark them as being so
|
||||
for name in os.listdir(adp):
|
||||
ids = self.search(cr, uid, [('name','=',name)])
|
||||
mod_name = name
|
||||
if name[-4:]=='.zip':
|
||||
mod_name=name[:-4]
|
||||
ids = self.search(cr, uid, [('name','=',mod_name)])
|
||||
if ids:
|
||||
terp = self.get_module_info(name)
|
||||
terp = self.get_module_info(mod_name)
|
||||
if terp.get('installable', True) and self.read(cr, uid, ids, ['state'])[0]['state'] == 'uninstallable':
|
||||
self.write(cr, uid, [ids], {'state': 'uninstalled'})
|
||||
continue
|
||||
terp_file = os.path.join(adp, name, '__terp__.py')
|
||||
mod_path = os.path.join(adp, name)
|
||||
if os.path.isdir(mod_path) or zipfile.is_zipfile(mod_path):
|
||||
terp = self.get_module_info(name)
|
||||
print 'Working on ', name
|
||||
terp = self.get_module_info(mod_name)
|
||||
print 'WOEND', terp
|
||||
if not terp or not terp.get('installable', True):
|
||||
continue
|
||||
try:
|
||||
print 'Test imp'
|
||||
import imp
|
||||
# XXX must restrict to only addons paths
|
||||
imp.load_module(name, *imp.find_module(name))
|
||||
except ImportError:
|
||||
print 'Test imp zip'
|
||||
import zipimport
|
||||
mod_path = os.path.join(adp, name)
|
||||
zimp = zipimport.zipimporter(mod_path)
|
||||
zimp.load_module(name)
|
||||
zimp.load_module(mod_name)
|
||||
print 'Test imp zip and'
|
||||
version = terp.get('version', False)
|
||||
id = self.create(cr, uid, {
|
||||
'name': name,
|
||||
'name': mod_name,
|
||||
'state': 'uninstalled',
|
||||
'description': terp.get('description', ''),
|
||||
'shortdesc': terp.get('name', ''),
|
||||
'author': terp.get('author', 'Unknown')
|
||||
})
|
||||
print 'Inserted normal'
|
||||
for d in terp.get('depends', []):
|
||||
cr.execute('INSERT INTO ir_module_module_dependency (module_id, name) values (%s, %s)', (id, d))
|
||||
print 'Inserted dependencies'
|
||||
|
||||
# make the list of all installable modules
|
||||
for repository in robj.browse(cr, uid, robj.search(cr, uid, [])):
|
||||
|
|
|
@ -37,6 +37,8 @@ import tools
|
|||
import wizard
|
||||
import pooler
|
||||
|
||||
import zipfile
|
||||
|
||||
module_name_re = re.compile('.*addons.(.*?).__terp__.py$')
|
||||
|
||||
_info_arch = '''<?xml version="1.0"?>
|
||||
|
@ -53,6 +55,9 @@ class wizard_install_module(wizard.interface):
|
|||
known_modules = [x['name'] for x in all_mods]
|
||||
ls_ad = glob.glob(os.path.join(tools.config['addons_path'], '*', '__terp__.py'))
|
||||
modules = [module_name_re.match(name).group(1) for name in ls_ad]
|
||||
for fname in os.listdir(tools.config['addons_path']):
|
||||
if zipfile.is_zipfile(fname):
|
||||
modules.append( fname.split('.')[0])
|
||||
for module in modules:
|
||||
if module in known_modules:
|
||||
continue
|
||||
|
|
Loading…
Reference in New Issue