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 | ||
---|---|---|
1609 | 1609 |
(formdata.workflow_data or {}).values()): |
1610 | 1610 |
if is_upload(field_data): |
1611 | 1611 |
yield field_data.get_filename() |
1612 |
for evolution in (formdata.evolution or []): |
|
1613 |
for part in (evolution.parts or []): |
|
1614 |
if is_attachment(part): |
|
1615 |
yield part.filename |
|
1612 |
for part in formdata.iter_evolution_parts(): |
|
1613 |
if is_attachment(part): |
|
1614 |
yield part.filename |
|
1616 | 1615 |
for user in publisher.user_class.select(): |
1617 | 1616 |
for field_data in (user.form_data or {}).values(): |
1618 | 1617 |
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 | ||
---|---|---|
123 | 123 | |
124 | 124 | |
125 | 125 |
class NamedAttachmentsSubstitutionProxy(object): |
126 |
def __init__(self, formdata, varname):
|
|
126 |
def __init__(self, formdata, parts):
|
|
127 | 127 |
self.formdata = formdata |
128 |
self.varname = varname |
|
129 | ||
130 |
def get_attachments(self): |
|
131 |
attachments = [] |
|
132 |
for evo in self.formdata.evolution or []: |
|
133 |
for part in evo.parts or []: |
|
134 |
if not isinstance(part, AttachmentEvolutionPart): |
|
135 |
continue |
|
136 |
if part.varname != self.varname: |
|
137 |
continue |
|
138 |
attachments.append(part) |
|
139 |
attachments.reverse() |
|
140 |
return attachments |
|
128 |
self.parts = parts[:] |
|
129 |
self.parts.reverse() |
|
141 | 130 | |
142 | 131 |
def __len__(self): |
143 |
return len(self.get_attachments())
|
|
132 |
return len(self.parts)
|
|
144 | 133 | |
145 | 134 |
def __getattr__(self, name): |
146 | 135 |
return getattr(self[0], name) |
147 | 136 | |
148 | 137 |
def __getitem__(self, i): |
149 |
attachment = self.get_attachments()[i] |
|
150 |
return AttachmentSubstitutionProxy(self.formdata, attachment) |
|
138 |
return AttachmentSubstitutionProxy(self.formdata, self.parts[i]) |
|
151 | 139 | |
152 | 140 | |
153 | 141 |
class AttachmentsSubstitutionProxy(object): |
... | ... | |
157 | 145 |
def __getattr__(self, name): |
158 | 146 |
if name.startswith('__'): |
159 | 147 |
raise AttributeError(name) |
160 |
for evo in self.formdata.evolution or []: |
|
161 |
for part in evo.parts or []: |
|
162 |
if getattr(part, 'varname', None) == name: |
|
163 |
return NamedAttachmentsSubstitutionProxy(self.formdata, name) |
|
148 |
def has_varname_attachment(part): |
|
149 |
return isinstance(part, AttachmentEvolutionPart) and getattr(part, 'varname', None) == name |
|
150 | ||
151 |
parts = [part for part in self.formdata.iter_evolution_parts() |
|
152 |
if has_varname_attachment(part)] |
|
153 |
if parts: |
|
154 |
return NamedAttachmentsSubstitutionProxy(self.formdata, parts) |
|
164 | 155 |
raise AttributeError(name) |
165 | 156 | |
166 | 157 | |
... | ... | |
1243 | 1234 |
get_publisher().substitutions.feed(formdata) |
1244 | 1235 | |
1245 | 1236 |
seen_triggers = [] |
1246 |
for evolution in formdata.evolution:
|
|
1247 |
for part in evolution.parts or []:
|
|
1248 |
if isinstance(part, WorkflowGlobalActionTimeoutTriggerMarker):
|
|
1249 |
seen_triggers.append(part.timeout_id)
|
|
1237 |
for part in formdata.iter_evolution_parts():
|
|
1238 |
if not isinstance(part, WorkflowGlobalActionTimeoutTriggerMarker):
|
|
1239 |
continue
|
|
1240 |
seen_triggers.append(part.timeout_id) |
|
1250 | 1241 | |
1251 | 1242 |
for action, trigger in triggers: |
1252 | 1243 |
if trigger.id in seen_triggers: |
1253 |
- |