Fall back to expat if libxml2 is not present

This commit is contained in:
Sam Ruby 2006-10-16 19:59:37 -04:00
parent 6df078b8e2
commit 019eb0f96c
2 changed files with 23 additions and 6 deletions

View File

@ -25,15 +25,22 @@ def destroy():
log.info(idindex + " deleted")
def create():
import libxml2
from planet import logger as log
cache = config.cache_directory()
index=os.path.join(cache,'index')
if not os.path.exists(index): os.makedirs(index)
index = dbhash.open(filename(index, 'id'),'c')
try:
import libxml2
except:
libxml2 = False
from xml.dom import minidom
for file in glob(cache+"/*"):
if not os.path.isdir(file):
if os.path.isdir(file):
continue
elif libxml2:
try:
doc = libxml2.parseFile(file)
ctxt = doc.xpathNewContext()
@ -45,6 +52,19 @@ def create():
doc.freeDoc()
except:
log.error(file)
else:
try:
doc = minidom.parse(file)
doc.normalize()
ids = doc.getElementsByTagName('id')
entry = [e for e in ids if e.parentNode.nodeName == 'entry']
source = [e for e in ids if e.parentNode.nodeName == 'source']
if entry and source:
index[filename('',entry[0].childNodes[0].nodeValue)] = \
source[0].childNodes[0].nodeValue
doc.freeDoc()
except:
log.error(file)
log.info(str(len(index.keys())) + " entries indexed")
index.close()

View File

@ -52,10 +52,7 @@ class idIndexTest(unittest.TestCase):
try:
module = 'dbhash'
import dbhash
module = 'libxml2'
import libxml2
except ImportError:
logger.warn(module + " is not available => can't test id index")
logger.warn("dbhash is not available => can't test id index")
for method in dir(idIndexTest):
if method.startswith('test_'): delattr(idIndexTest,method)