0001-json-export-content-of-uploads-7254.patch
wcs/backoffice/management.py | ||
---|---|---|
855 | 855 |
selected_filter, user=user, query=query, criterias=criterias, |
856 | 856 |
order_by=order_by) |
857 | 857 |
if get_request().form.get('full') == 'on': |
858 |
output = [json.loads(filled.export_to_json()) for filled in items] |
|
858 |
output = [json.loads(filled.export_to_json(include_files=False)) for filled in items]
|
|
859 | 859 |
else: |
860 | 860 |
output = [{'id': filled.id, |
861 | 861 |
'url': filled.get_url(), |
wcs/fields.py | ||
---|---|---|
17 | 17 |
import time |
18 | 18 |
import random |
19 | 19 |
import re |
20 |
import base64 |
|
20 | 21 |
import xml.etree.ElementTree as ET |
21 | 22 | |
22 | 23 |
from quixote import get_request, get_publisher |
... | ... | |
707 | 708 |
return ['%s' % value] |
708 | 709 | |
709 | 710 |
def get_json_value(self, value): |
710 |
return {'field_id': self.id, 'filename': value.base_filename} |
|
711 |
return { |
|
712 |
'field_id': self.id, |
|
713 |
'filename': value.base_filename, |
|
714 |
'content_type': value.content_type or 'application/octet-stream', |
|
715 |
'content': base64.b64encode(value.get_file_pointer().read()) |
|
716 |
} |
|
711 | 717 | |
712 | 718 |
def perform_more_widget_changes(self, form, kwargs, edit = True): |
713 | 719 |
if not edit: |
wcs/formdata.py | ||
---|---|---|
28 | 28 |
from qommon.substitution import Substitutions |
29 | 29 | |
30 | 30 |
from roles import Role |
31 |
from fields import FileField |
|
31 | 32 | |
32 | 33 | |
33 | 34 |
def get_dict_with_varnames(fields, data, formdata=None): |
... | ... | |
74 | 75 |
del d[k] |
75 | 76 | |
76 | 77 | |
77 |
def get_json_dict(fields, data): |
|
78 |
def get_json_dict(fields, data, include_files=True):
|
|
78 | 79 |
new_data = {} |
79 | 80 |
for field in fields: |
80 | 81 |
if not field.varname: # exports only named fields |
81 | 82 |
continue |
83 |
if not include_files and isinstance(field, FileField): |
|
84 |
continue |
|
82 | 85 |
if data is not None: |
83 | 86 |
value = data.get(field.id) |
84 | 87 |
if value and hasattr(field, 'get_json_value'): |
... | ... | |
514 | 517 |
evo.parts = None |
515 | 518 |
self.store() |
516 | 519 | |
517 |
def export_to_json(self): |
|
520 |
def export_to_json(self, include_files=True):
|
|
518 | 521 |
data = {} |
519 | 522 |
data['id'] = '%s/%s' % (self.formdef.url_name, self.id) |
520 | 523 |
data['display_id'] = self.get_display_id() |
... | ... | |
540 | 543 |
if user: |
541 | 544 |
data['user'] = {'id': user.id, 'name': user.display_name} |
542 | 545 | |
543 |
data['fields'] = get_json_dict(self.formdef.fields, self.data) |
|
546 |
data['fields'] = get_json_dict(self.formdef.fields, self.data, |
|
547 |
include_files=include_files) |
|
544 | 548 | |
545 | 549 |
data['workflow'] = {} |
546 | 550 |
wf_status = self.get_visible_status() |
547 |
- |