From b187cc9bb76eb0829b8a1e04aafdf10436dbf5e4 Mon Sep 17 00:00:00 2001 From: Nicolas Dumazet <nicolas.dumazet@nexedi.com> Date: Mon, 19 Oct 2009 12:14:46 +0000 Subject: [PATCH] Catch xml.parser.expat.ExpatError when an invalid bt5 repo is passed along git-svn-id: https://svn.erp5.org/repos/public/erp5/trunk@29793 20353a03-c40f-0410-a6d1-a30d3c3de9de --- product/ERP5/Tool/TemplateTool.py | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/product/ERP5/Tool/TemplateTool.py b/product/ERP5/Tool/TemplateTool.py index 7c799d7e8a..20a5c06b22 100644 --- a/product/ERP5/Tool/TemplateTool.py +++ b/product/ERP5/Tool/TemplateTool.py @@ -45,6 +45,7 @@ from cStringIO import StringIO from urllib import pathname2url, urlopen, splittype, urlretrieve import re from xml.dom.minidom import parse +from xml.parsers.expat import ExpatError import struct import cPickle import posixpath @@ -526,7 +527,17 @@ class TemplateTool (BaseTool): f = urlopen(url) property_dict_list = [] try: - doc = parse(f) + try: + doc = parse(f) + except ExpatError: + if REQUEST is not None: + psm = translateString('Invalid repository: ${repo}', + mapping={'repo':repository}) + REQUEST.RESPONSE.redirect("%s?portal_status_message=%s" + % (self.absolute_url(), psm)) + return + else: + raise RuntimeError, 'Invalid repository: %s' % repository try: root = doc.documentElement for template in root.getElementsByTagName("template"): -- 2.30.9