0003-formdata-prefetch-also-users-from-evolutions-71303.patch
wcs/backoffice/management.py | ||
---|---|---|
4334 | 4334 |
formdef = self.kwargs['formdef_class'].get(self.kwargs['formdef_id']) |
4335 | 4335 |
prefetched_users = None |
4336 | 4336 |
prefetched_roles = None |
4337 |
user_ids = list( |
|
4338 |
set( |
|
4339 |
[x.user_id for x in items if x.user_id] |
|
4340 |
+ [x.submission_agent_id for x in items if x.submission_agent_id] |
|
4341 |
) |
|
4337 |
user_ids = set( |
|
4338 |
[x.user_id for x in items if x.user_id] |
|
4339 |
+ [x.submission_agent_id for x in items if x.submission_agent_id] |
|
4342 | 4340 |
) |
4341 |
if include_evolution: |
|
4342 |
for item in items: |
|
4343 |
if not item.evolution: |
|
4344 |
continue |
|
4345 |
for evo in item.evolution: |
|
4346 |
if not evo.who or evo.who.startswith('_'): |
|
4347 |
continue |
|
4348 |
user_ids.add(evo.who) |
|
4343 | 4349 |
prefetched_users = { |
4344 | 4350 |
str(x.id): x |
4345 |
for x in get_publisher().user_class.get_ids(user_ids, ignore_errors=True)
|
|
4351 |
for x in get_publisher().user_class.get_ids(list(user_ids), ignore_errors=True)
|
|
4346 | 4352 |
if x is not None |
4347 | 4353 |
} |
4348 | 4354 |
if include_roles: |
wcs/formdata.py | ||
---|---|---|
202 | 202 |
return part.get_as_plain_text() |
203 | 203 |
return self.comment |
204 | 204 | |
205 |
def get_json_export_dict(self, formdata_user, anonymise=False, include_files=True): |
|
205 |
def get_json_export_dict(self, formdata_user, anonymise=False, include_files=True, prefetched_users=None):
|
|
206 | 206 |
data = { |
207 | 207 |
'time': datetime.datetime(*self.time[:6]) if self.time else None, |
208 | 208 |
'last_jump_datetime': self.last_jump_datetime, |
... | ... | |
211 | 211 |
data['status'] = self.status[3:] |
212 | 212 |
if self.who != '_submitter': |
213 | 213 |
try: |
214 |
user = get_publisher().user_class.get(self.who) |
|
214 |
if prefetched_users is not None: |
|
215 |
user = prefetched_users.get(str(self.who)) |
|
216 |
else: |
|
217 |
user = get_publisher().user_class.get(self.who) |
|
215 | 218 |
except KeyError: |
216 |
pass
|
|
217 |
else:
|
|
219 |
user = None
|
|
220 |
if user is not None:
|
|
218 | 221 |
data['who'] = user.get_json_export_dict() |
219 | 222 |
elif not anonymise and formdata_user: |
220 | 223 |
data['who'] = formdata_user.get_json_export_dict() |
... | ... | |
1478 | 1481 |
formdata_user=formdata_user, |
1479 | 1482 |
anonymise=anonymise, |
1480 | 1483 |
include_files=include_files, |
1484 |
prefetched_users=prefetched_users, |
|
1481 | 1485 |
) |
1482 | 1486 |
) |
1483 | 1487 | |
1484 |
- |