diff options
author | Étienne Loks <etienne.loks@peacefrogs.net> | 2012-05-17 11:18:37 +0200 |
---|---|---|
committer | Étienne Loks <etienne.loks@peacefrogs.net> | 2012-05-17 11:18:37 +0200 |
commit | ef63650fa5ee53dad3dcfe208512cfe6983c02d7 (patch) | |
tree | fb43b61553adef4a123755ec95f2945f4ea5cc31 | |
parent | 71197f220f3a840ef861bb1ad204cc672e69c20c (diff) | |
download | Chimère-ef63650fa5ee53dad3dcfe208512cfe6983c02d7.tar.bz2 Chimère-ef63650fa5ee53dad3dcfe208512cfe6983c02d7.zip |
Manage bad XML file
-rw-r--r-- | chimere/admin.py | 1 | ||||
-rw-r--r-- | chimere/utils.py | 8 |
2 files changed, 8 insertions, 1 deletions
diff --git a/chimere/admin.py b/chimere/admin.py index 060306f..2b073f6 100644 --- a/chimere/admin.py +++ b/chimere/admin.py @@ -190,6 +190,7 @@ export_to_osm.short_description = _(u"Export to osm") class ImporterAdmin(admin.ModelAdmin): list_display = ('importer_type', 'source', 'state', 'filtr') list_filter = ('importer_type', 'source') + readonly_fields = ('state',) actions = [importing, cancel_import, cancel_export] class NewsAdmin(admin.ModelAdmin): diff --git a/chimere/utils.py b/chimere/utils.py index c7502db..8f8128e 100644 --- a/chimere/utils.py +++ b/chimere/utils.py @@ -143,7 +143,13 @@ class KMLManager(ImportManager): source, msg = self.get_source_file(source, ['.kml']) if msg: return (0, 0, msg) - tree = etree.parse(source) + # remove empty lines before declaration (bad XML file) + splitted = source.getvalue().split('\n') + for idx, line in enumerate(splitted): + if line.strip(): + break + doc = "\n".join(splitted[idx:]) + tree = etree.parse(StringIO.StringIO(doc)) # try to get default namespace if not self.ns: self.ns = tree.getroot().nsmap[None] |