summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
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
commitef63650fa5ee53dad3dcfe208512cfe6983c02d7 (patch)
treefb43b61553adef4a123755ec95f2945f4ea5cc31
parent71197f220f3a840ef861bb1ad204cc672e69c20c (diff)
downloadChimère-ef63650fa5ee53dad3dcfe208512cfe6983c02d7.tar.bz2
Chimère-ef63650fa5ee53dad3dcfe208512cfe6983c02d7.zip
Manage bad XML file
-rw-r--r--chimere/admin.py1
-rw-r--r--chimere/utils.py8
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]