Merge pull request 'enable xml/json result as file' (#136) from jmplace/ScoDoc-Lille:export_json_xml_as_files into master
Reviewed-on: https://scodoc.org/git/viennet/ScoDoc/pulls/136
This commit is contained in:
commit
b015cf3f88
@ -130,7 +130,7 @@ def formation_export(formation_id, export_ids=False, export_tags=True, format=No
|
||||
if mod["ects"] is None:
|
||||
del mod["ects"]
|
||||
|
||||
return scu.sendResult(F, name="formation", format=format, force_outer_xml_tag=False)
|
||||
return scu.sendResult(F, name="formation", format=format, force_outer_xml_tag=False, attached=True)
|
||||
|
||||
|
||||
def formation_import_xml(doc: str, import_tags=True):
|
||||
|
@ -562,28 +562,28 @@ class ScoDocJSONEncoder(json.JSONEncoder):
|
||||
return json.JSONEncoder.default(self, o)
|
||||
|
||||
|
||||
def sendJSON(data):
|
||||
def sendJSON(data, attached=False):
|
||||
js = json.dumps(data, indent=1, cls=ScoDocJSONEncoder)
|
||||
return send_file(js, filename="sco_data.json", mime=JSON_MIMETYPE, attached=False)
|
||||
return send_file(js, filename="sco_data.json", mime=JSON_MIMETYPE, attached=attached)
|
||||
|
||||
|
||||
def sendXML(data, tagname=None, force_outer_xml_tag=True):
|
||||
def sendXML(data, tagname=None, force_outer_xml_tag=True, attached=False):
|
||||
if type(data) != list:
|
||||
data = [data] # always list-of-dicts
|
||||
if force_outer_xml_tag:
|
||||
data = [{tagname: data}]
|
||||
tagname += "_list"
|
||||
doc = sco_xml.simple_dictlist2xml(data, tagname=tagname)
|
||||
return send_file(doc, filename="sco_data.xml", mime=XML_MIMETYPE, attached=False)
|
||||
return send_file(doc, filename="sco_data.xml", mime=XML_MIMETYPE, attached=attached)
|
||||
|
||||
|
||||
def sendResult(data, name=None, format=None, force_outer_xml_tag=True):
|
||||
def sendResult(data, name=None, format=None, force_outer_xml_tag=True, attached=False):
|
||||
if (format is None) or (format == "html"):
|
||||
return data
|
||||
elif format == "xml": # name is outer tagname
|
||||
return sendXML(data, tagname=name, force_outer_xml_tag=force_outer_xml_tag)
|
||||
return sendXML(data, tagname=name, force_outer_xml_tag=force_outer_xml_tag, attached=attached)
|
||||
elif format == "json":
|
||||
return sendJSON(data)
|
||||
return sendJSON(data, attached=attached)
|
||||
else:
|
||||
raise ValueError("invalid format: %s" % format)
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user