Skip to content

Commit

Permalink
added param mulilang toXml() , new funct toJson()
Browse files Browse the repository at this point in the history
  • Loading branch information
drfho committed Jun 26, 2023
1 parent 056e9ad commit 659fe74
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 7 deletions.
12 changes: 10 additions & 2 deletions Products/zms/_exportable.py
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,8 @@
import os
import re
import sys
import xmltodict
import json
# Product Imports.
from Products.zms import _blobfields
from Products.zms import _fileutil
Expand Down Expand Up @@ -383,12 +385,18 @@ def toXhtml(self, REQUEST, deep=True):
# --------------------------------------------------------------------------
# Exportable.toXml:
# --------------------------------------------------------------------------
def toXml(self, REQUEST, deep=True, data2hex=False):
def toXml(self, REQUEST, deep=True, data2hex=False, multilang=True):
xml = ''
xml += _xmllib.xml_header()
xml += _xmllib.getObjToXml( self, REQUEST, deep, base_path='', data2hex=data2hex)
xml += _xmllib.getObjToXml( self, REQUEST, deep, base_path='', data2hex=data2hex, multilang=multilang)
return xml

# --------------------------------------------------------------------------
# Exportable.toJson:
# --------------------------------------------------------------------------
def toJson(self, REQUEST, deep=True, data2hex=False, multilang=True):
xml = self.toXml(REQUEST, deep, data2hex, multilang)
return json.dumps(xmltodict.parse(xml))

# --------------------------------------------------------------------------
# Exportable.exportRessources:
Expand Down
10 changes: 5 additions & 5 deletions Products/zms/_xmllib.py
Original file line number Diff line number Diff line change
Expand Up @@ -630,11 +630,11 @@ def getAttrToXml(self, base_path, data2hex, obj_attr, REQUEST):
# ------------------------------------------------------------------------------
# _xmllib.getObjPropertyToXml:
# ------------------------------------------------------------------------------
def getObjPropertyToXml(self, base_path, data2hex, obj_attr, REQUEST):
def getObjPropertyToXml(self, REQUEST, base_path='', data2hex=False, obj_attr={}, multilang=True):
xml = ''
# Multi-Language Attributes.
indentlevel = len(base_path.split('/'))
if obj_attr['multilang']:
if obj_attr['multilang'] and multilang==True:
lang = REQUEST.get('lang')
langIds = self.getLangIds()
for langId in langIds:
Expand All @@ -653,7 +653,7 @@ def getObjPropertyToXml(self, base_path, data2hex, obj_attr, REQUEST):
# ------------------------------------------------------------------------------
# _xmllib.getObjToXml:
# ------------------------------------------------------------------------------
def getObjToXml(self, REQUEST, deep=True, base_path='', data2hex=False):
def getObjToXml(self, REQUEST, deep=True, base_path='', data2hex=False, multilang=True):
# Check Constraints.
root = getattr(self, '__root__', None)
if root is not None:
Expand All @@ -678,12 +678,12 @@ def getObjToXml(self, REQUEST, deep=True, base_path='', data2hex=False):
for key in keys:
obj_attr = self.getObjAttr(key)
if obj_attr['xml'] or key in ['change_dt','change_uid','created_dt','created_uid']:
ob_prop = getObjPropertyToXml(self, base_path, data2hex, obj_attr, REQUEST)
ob_prop = getObjPropertyToXml(self, REQUEST, base_path, data2hex, obj_attr, multilang)
if len(ob_prop) > 0:
xml.append('%s<%s>%s</%s>\n' % ( (indentlevel+1) * INDENTSTR, key, ob_prop, key ) )
# Process children.
if deep:
xml.extend([getObjToXml(x, REQUEST, deep, base_path + x.id + '/', data2hex) for x in self.getChildNodes()])
xml.extend([getObjToXml(x, REQUEST, deep, base_path + x.id + '/', data2hex, multilang) for x in self.getChildNodes()])
# End tag.
xml.append('%s</%s>\n' % ( indentlevel * INDENTSTR, self.meta_id ) )
# Return xml.
Expand Down

0 comments on commit 659fe74

Please sign in to comment.