]> git.openstreetmap.org Git - osqa.git/blobdiff - forum_modules/exporter/exporter.py
the python XML module Element Tree name-space has been changed and didn't include...
[osqa.git] / forum_modules / exporter / exporter.py
index 2db3ca232a71e3cc2c641b015dbffaaf7c1fb439..c6734298eedc15c932677dbc433f6f6dabbc3abe 100644 (file)
@@ -9,10 +9,35 @@ from forum.settings import APP_URL
 from forum.templatetags.extra_tags import diff_date
 import xml.etree.ElementTree
 from xml.etree import ElementTree as ET
-from xml.etree.ElementTree import Comment, _encode, ProcessingInstruction, QName, fixtag, _escape_attrib, _escape_cdata
+from xml.etree.ElementTree import Comment, _encode, ProcessingInstruction, QName, _escape_attrib, _escape_cdata, _namespace_map
 from forum import settings
 from django.conf import settings as djsettings
 import settings as selfsettings
+import string
+
+try:
+       from xml.etree.ElementTree import fixtag
+except ImportError:
+       def fixtag(tag, namespaces):
+               # given a decorated tag (of the form {uri}tag), return prefixed
+               # tag and namespace declaration, if any
+               if isinstance(tag, QName):
+                       tag = tag.text
+               namespace_uri, tag = string.split(tag[1:], "}", 1)
+               prefix = namespaces.get(namespace_uri)
+               if prefix is None:
+                       prefix = _namespace_map.get(namespace_uri)
+                       if prefix is None:
+                               prefix = "ns%d" % len(namespaces)
+                       namespaces[namespace_uri] = prefix
+                       if prefix == "xml":
+                               xmlns = None
+                       else:
+                               xmlns = ("xmlns:%s" % prefix, namespace_uri)
+               else:
+                       xmlns = None
+               return "%s:%s" % (prefix, tag), xmlns
+
 
 CACHE_KEY = "%s_exporter_state" % APP_URL
 EXPORT_STEPS = []
@@ -94,9 +119,9 @@ def ET_Element_add_tag(el, tag_name, content = None, **attrs):
         try:
             tag.text = unicode(content)
         except Exception, e:
-            logging.error('error converting unicode characters')
-            import traceback
-            logging.error(traceback.print_exc())
+            #logging.error('error converting unicode characters')
+            #import traceback
+            #logging.error(traceback.print_exc())
 
             import string
             tag.text = unicode("".join([c for c in content if c in string.printable]))
@@ -415,7 +440,7 @@ def export_nodes(n, el, anon_data):
         el.add('author', n.author.id)
     el.add('date', make_date(n.added_at))
     el.add('parent', n.parent and n.parent.id or "")
-    el.add('absparent', n.abs_parent and n.abs_parent or "")
+    el.add('absparent', n.abs_parent and n.abs_parent.id or "")
 
     act = el.add('lastactivity')
     act.add('by', n.last_activity_by and n.last_activity_by.id or "")
@@ -451,6 +476,7 @@ def export_nodes(n, el, anon_data):
         rev.add('tags', ", ".join(r.tagname_list()))
 
     el.add('marked', n.marked and 'true' or 'false')
+    el.add('wiki', n.nis.wiki and 'true' or 'false')
     el.add('extraRef', n.extra_ref and n.extra_ref.id or "")
     make_extra(el.add('extraData'), n.extra)
     el.add('extraCount', n.extra_count and n.extra_count or "")
@@ -514,20 +540,3 @@ def export_awards(a, el, anon_data):
 def export_settings(s, el, anon_data):
     el.add('key', s.key)
     make_extra(el.add('value'), s.value)
-
-
-
-
-
-
-
-
-        
-
-
-
-
-
-
-
-