1
|
import itertools
|
2
|
from wcs.formdef import FormDef
|
3
|
from quixote import get_publisher
|
4
|
|
5
|
|
6
|
publisher = get_publisher()
|
7
|
|
8
|
|
9
|
def is_upload(obj):
|
10
|
# we can't use isinstance() because obj can be a
|
11
|
# wcs.qommon.form.PicklableUpload or a qommon.form.PicklableUpload
|
12
|
return obj.__class__.__name__ == 'PicklableUpload'
|
13
|
|
14
|
|
15
|
def is_attachment(obj):
|
16
|
return obj.__class__.__name__ == 'AttachmentEvolutionPart'
|
17
|
|
18
|
|
19
|
def accumulate_filenames():
|
20
|
from wcs.carddef import CardDef
|
21
|
from wcs.wf.form import WorkflowFormEvolutionPart
|
22
|
|
23
|
for formdef in FormDef.select(ignore_migration=True) + CardDef.select(ignore_migration=True):
|
24
|
for option_data in (formdef.workflow_options or {}).values():
|
25
|
if is_upload(option_data):
|
26
|
yield 'option_data: %s' % option_data.get_fs_filename()
|
27
|
for formdata in formdef.data_class().select_iterator(ignore_errors=True, itersize=200):
|
28
|
for field_data in itertools.chain(
|
29
|
(formdata.data or {}).values(), (formdata.workflow_data or {}).values()
|
30
|
):
|
31
|
if is_upload(field_data):
|
32
|
yield 'formdata field_data: %s' % field_data.qfilename
|
33
|
elif isinstance(field_data, dict) and isinstance(field_data.get('data'), list):
|
34
|
for subfield_rowdata in field_data.get('data'):
|
35
|
if isinstance(subfield_rowdata, dict):
|
36
|
for block_field_data in subfield_rowdata.values():
|
37
|
if is_upload(block_field_data):
|
38
|
yield 'block_field_data: %s' % block_field_data.qfilename
|
39
|
for part in formdata.iter_evolution_parts():
|
40
|
if is_attachment(part):
|
41
|
# yield 'part.filename: %s' % part.filename
|
42
|
yield part.filename
|
43
|
elif isinstance(part, WorkflowFormEvolutionPart):
|
44
|
for field_data in (part.data or {}).values():
|
45
|
if is_upload(field_data):
|
46
|
yield 'WorkflowFormEvolutionPart field_data: %s' % field_data.qfilename
|
47
|
for user in publisher.user_class.select():
|
48
|
for field_data in (user.form_data or {}).values():
|
49
|
if is_upload(field_data):
|
50
|
yield 'user.form_data field_data: %s' % field_data.qfilename
|
51
|
|
52
|
|
53
|
for filename in accumulate_filenames():
|
54
|
print(filename)
|