0002-formdata-ease-iteration-of-evolutions-parts-33186.patch
wcs/formdata.py | ||
---|---|---|
1095 | 1095 |
field.feed_session(self.data.get(field.id), |
1096 | 1096 |
self.data.get('%s_display' % field.id)) |
1097 | 1097 | |
1098 |
def iter_evolution_parts(self): |
|
1099 |
for evo in self.evolution or []: |
|
1100 |
for part in evo.parts or []: |
|
1101 |
yield part |
|
1102 | ||
1098 | 1103 |
def __getattr__(self, attr): |
1099 | 1104 |
try: |
1100 | 1105 |
return self.__dict__[attr] |
wcs/formdef.py | ||
---|---|---|
1604 | 1604 |
for field_data in (formdata.data or {}).values() + (formdata.workflow_data or {}).values(): |
1605 | 1605 |
if is_upload(field_data): |
1606 | 1606 |
yield field_data.get_filename() |
1607 |
for evolution in (formdata.evolution or []): |
|
1608 |
for part in (evolution.parts or []): |
|
1609 |
if is_attachment(part): |
|
1610 |
yield part.filename |
|
1607 |
for part in formdata.iter_evolution_parts(): |
|
1608 |
if is_attachment(part): |
|
1609 |
yield part.filename |
|
1611 | 1610 |
for user in publisher.user_class.select(): |
1612 | 1611 |
for field_data in (user.form_data or {}).values(): |
1613 | 1612 |
if is_upload(field_data): |
wcs/wf/attachment.py | ||
---|---|---|
34 | 34 |
else: |
35 | 35 |
file_reference = None |
36 | 36 | |
37 |
for evo in self.formdata.evolution: |
|
38 |
if evo.parts: |
|
39 |
for p in evo.parts: |
|
40 |
if not isinstance(p, AttachmentEvolutionPart): |
|
41 |
continue |
|
42 |
if file_reference and os.path.basename(p.filename) != file_reference: |
|
43 |
continue |
|
44 |
if p.base_filename == filename: |
|
45 |
return p |
|
37 |
for p in self.formdata.iter_evolution_parts(): |
|
38 |
if not isinstance(p, AttachmentEvolutionPart): |
|
39 |
continue |
|
40 |
if file_reference and os.path.basename(p.filename) != file_reference: |
|
41 |
continue |
|
42 |
if p.base_filename == filename: |
|
43 |
return p |
|
46 | 44 | |
47 | 45 | |
48 | 46 |
def form_attachment(self): |
wcs/workflows.py | ||
---|---|---|
121 | 121 | |
122 | 122 | |
123 | 123 |
class NamedAttachmentsSubstitutionProxy(object): |
124 |
def __init__(self, formdata, varname):
|
|
124 |
def __init__(self, formdata, parts):
|
|
125 | 125 |
self.formdata = formdata |
126 |
self.varname = varname |
|
127 | ||
128 |
def get_attachments(self): |
|
129 |
attachments = [] |
|
130 |
for evo in self.formdata.evolution or []: |
|
131 |
for part in evo.parts or []: |
|
132 |
if not isinstance(part, AttachmentEvolutionPart): |
|
133 |
continue |
|
134 |
if part.varname != self.varname: |
|
135 |
continue |
|
136 |
attachments.append(part) |
|
137 |
attachments.reverse() |
|
138 |
return attachments |
|
126 |
self.parts = parts[:] |
|
127 |
self.parts.reverse() |
|
139 | 128 | |
140 | 129 |
def __len__(self): |
141 |
return len(self.get_attachments())
|
|
130 |
return len(self.parts)
|
|
142 | 131 | |
143 | 132 |
def __getattr__(self, name): |
144 | 133 |
return getattr(self[0], name) |
145 | 134 | |
146 | 135 |
def __getitem__(self, i): |
147 |
attachment = self.get_attachments()[i] |
|
148 |
return AttachmentSubstitutionProxy(self.formdata, attachment) |
|
136 |
return AttachmentSubstitutionProxy(self.formdata, self.parts[i]) |
|
149 | 137 | |
150 | 138 | |
151 | 139 |
class AttachmentsSubstitutionProxy(object): |
... | ... | |
153 | 141 |
self.formdata = formdata |
154 | 142 | |
155 | 143 |
def __getattr__(self, name): |
156 |
for evo in self.formdata.evolution or []: |
|
157 |
for part in evo.parts or []: |
|
158 |
if getattr(part, 'varname', None) == name: |
|
159 |
return NamedAttachmentsSubstitutionProxy(self.formdata, name) |
|
144 |
def has_varname_attachment(part): |
|
145 |
return isinstance(part, AttachmentEvolutionPart) and getattr(part, 'varname', None) == name |
|
146 | ||
147 |
parts = [part for part in self.formdata.iter_evolution_parts() |
|
148 |
if has_varname_attachment(part)] |
|
149 |
if parts: |
|
150 |
return NamedAttachmentsSubstitutionProxy(self.formdata, parts) |
|
160 | 151 |
raise AttributeError(name) |
161 | 152 | |
162 | 153 | |
... | ... | |
1242 | 1233 |
get_publisher().substitutions.feed(formdata) |
1243 | 1234 | |
1244 | 1235 |
seen_triggers = [] |
1245 |
for evolution in formdata.evolution:
|
|
1246 |
for part in evolution.parts or []:
|
|
1247 |
if isinstance(part, WorkflowGlobalActionTimeoutTriggerMarker):
|
|
1248 |
seen_triggers.append(part.timeout_id)
|
|
1236 |
for part in formdata.iter_evolution_parts():
|
|
1237 |
if not isinstance(part, WorkflowGlobalActionTimeoutTriggerMarker):
|
|
1238 |
continue
|
|
1239 |
seen_triggers.append(part.timeout_id) |
|
1249 | 1240 | |
1250 | 1241 |
for action, trigger in triggers: |
1251 | 1242 |
if trigger.id in seen_triggers: |
1252 |
- |