0003-formdata-ease-iteration-of-evolutions-parts-33186.patch
wcs/formdata.py | ||
---|---|---|
1096 | 1096 |
field.feed_session(self.data.get(field.id), |
1097 | 1097 |
self.data.get('%s_display' % field.id)) |
1098 | 1098 | |
1099 |
def iter_evolution_parts(self): |
|
1100 |
for evo in self.evolution or []: |
|
1101 |
for part in evo.parts or []: |
|
1102 |
yield part |
|
1103 | ||
1099 | 1104 |
def __getattr__(self, attr): |
1100 | 1105 |
try: |
1101 | 1106 |
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 | ||
---|---|---|
35 | 35 |
else: |
36 | 36 |
file_reference = None |
37 | 37 | |
38 |
for evo in self.formdata.evolution: |
|
39 |
if evo.parts: |
|
40 |
for p in evo.parts: |
|
41 |
if not isinstance(p, AttachmentEvolutionPart): |
|
42 |
continue |
|
43 |
if file_reference and os.path.basename(p.filename) != file_reference: |
|
44 |
continue |
|
45 |
if p.base_filename == filename: |
|
46 |
return p |
|
38 |
for p in self.formdata.iter_evolution_parts(): |
|
39 |
if not isinstance(p, AttachmentEvolutionPart): |
|
40 |
continue |
|
41 |
if file_reference and os.path.basename(p.filename) != file_reference: |
|
42 |
continue |
|
43 |
if p.base_filename == filename: |
|
44 |
return p |
|
47 | 45 | |
48 | 46 | |
49 | 47 |
def form_attachment(self): |
wcs/workflows.py | ||
---|---|---|
124 | 124 | |
125 | 125 | |
126 | 126 |
class NamedAttachmentsSubstitutionProxy(object): |
127 |
def __init__(self, formdata, varname):
|
|
127 |
def __init__(self, formdata, parts):
|
|
128 | 128 |
self.formdata = formdata |
129 |
self.varname = varname |
|
130 | ||
131 |
def get_attachments(self): |
|
132 |
attachments = [] |
|
133 |
for evo in self.formdata.evolution or []: |
|
134 |
for part in evo.parts or []: |
|
135 |
if not isinstance(part, AttachmentEvolutionPart): |
|
136 |
continue |
|
137 |
if part.varname != self.varname: |
|
138 |
continue |
|
139 |
attachments.append(part) |
|
140 |
attachments.reverse() |
|
141 |
return attachments |
|
129 |
self.parts = parts[:] |
|
130 |
self.parts.reverse() |
|
142 | 131 | |
143 | 132 |
def __len__(self): |
144 |
return len(self.get_attachments())
|
|
133 |
return len(self.parts)
|
|
145 | 134 | |
146 | 135 |
def __getattr__(self, name): |
147 | 136 |
return getattr(self[0], name) |
148 | 137 | |
149 | 138 |
def __getitem__(self, i): |
150 |
attachment = self.get_attachments()[i] |
|
151 |
return AttachmentSubstitutionProxy(self.formdata, attachment) |
|
139 |
return AttachmentSubstitutionProxy(self.formdata, self.parts[i]) |
|
152 | 140 | |
153 | 141 | |
154 | 142 |
class AttachmentsSubstitutionProxy(object): |
... | ... | |
158 | 146 |
def __getattr__(self, name): |
159 | 147 |
if name.startswith('__'): |
160 | 148 |
raise AttributeError(name) |
161 |
for evo in self.formdata.evolution or []: |
|
162 |
for part in evo.parts or []: |
|
163 |
if getattr(part, 'varname', None) == name: |
|
164 |
return NamedAttachmentsSubstitutionProxy(self.formdata, name) |
|
149 |
def has_varname_attachment(part): |
|
150 |
return isinstance(part, AttachmentEvolutionPart) and getattr(part, 'varname', None) == name |
|
151 | ||
152 |
parts = [part for part in self.formdata.iter_evolution_parts() |
|
153 |
if has_varname_attachment(part)] |
|
154 |
if parts: |
|
155 |
return NamedAttachmentsSubstitutionProxy(self.formdata, parts) |
|
165 | 156 |
raise AttributeError(name) |
166 | 157 | |
167 | 158 | |
... | ... | |
1246 | 1237 |
get_publisher().substitutions.feed(formdata) |
1247 | 1238 | |
1248 | 1239 |
seen_triggers = [] |
1249 |
for evolution in formdata.evolution:
|
|
1250 |
for part in evolution.parts or []:
|
|
1251 |
if isinstance(part, WorkflowGlobalActionTimeoutTriggerMarker):
|
|
1252 |
seen_triggers.append(part.timeout_id)
|
|
1240 |
for part in formdata.iter_evolution_parts():
|
|
1241 |
if not isinstance(part, WorkflowGlobalActionTimeoutTriggerMarker):
|
|
1242 |
continue
|
|
1243 |
seen_triggers.append(part.timeout_id) |
|
1253 | 1244 | |
1254 | 1245 |
for action, trigger in triggers: |
1255 | 1246 |
if trigger.id in seen_triggers: |
1256 |
- |