0001-api-use-custom-digest-for-carddata-view-if-defined-5.patch
tests/api/test_carddef.py | ||
---|---|---|
91 | 91 |
formdata.data = {'0': 'blah'} |
92 | 92 |
formdata.just_created() |
93 | 93 |
formdata.store() |
94 |
assert formdata.digests == {'default': 'bla blah xxx'} |
|
94 | 95 | |
95 | 96 |
custom_view = pub.custom_view_class() |
96 | 97 |
custom_view.title = 'shared carddef custom view' |
... | ... | |
156 | 157 |
assert resp.json['data'][0]['digest'] == formdata.digests['default'] |
157 | 158 |
assert resp.json['data'][0]['text'] == formdata.digests['default'] |
158 | 159 | |
160 |
resp = get_app(pub).get( |
|
161 |
sign_uri( |
|
162 |
'/api/cards/test/list/datasource-carddef-custom-view?NameID=%s' % local_user.name_identifiers[0] |
|
163 |
) |
|
164 |
) |
|
165 |
assert len(resp.json['data']) == 1 |
|
166 |
assert resp.json['data'][0]['display_id'] == formdata.get_display_id() |
|
167 |
assert resp.json['data'][0]['display_name'] == formdata.get_display_name() |
|
168 |
assert resp.json['data'][0]['digest'] == formdata.digests['default'] |
|
169 |
assert resp.json['data'][0]['text'] == formdata.digests['default'] |
|
170 |
resp = get_app(pub).get( |
|
171 |
sign_uri( |
|
172 |
'/api/cards/test/list/datasource-carddef-custom-view?NameID=%s&full=on' |
|
173 |
% local_user.name_identifiers[0] |
|
174 |
) |
|
175 |
) |
|
176 |
assert resp.json['data'][0]['fields']['foo'] == 'blah' |
|
177 |
assert resp.json['data'][0]['digest'] == formdata.digests['default'] |
|
178 |
assert resp.json['data'][0]['text'] == formdata.digests['default'] |
|
179 | ||
180 |
# with custom digest template |
|
181 |
carddef.digest_templates = { |
|
182 |
'default': 'bla {{ form_var_foo }} xxx', |
|
183 |
'custom-view:datasource-carddef-custom-view': '{{ form_var_foo }}', |
|
184 |
} |
|
185 |
carddef.store() |
|
186 |
formdata.store() |
|
187 |
assert formdata.digests == { |
|
188 |
'default': 'bla blah xxx', |
|
189 |
'custom-view:datasource-carddef-custom-view': 'blah', |
|
190 |
} |
|
191 |
resp = get_app(pub).get( |
|
192 |
sign_uri( |
|
193 |
'/api/cards/test/list/datasource-carddef-custom-view?NameID=%s' % local_user.name_identifiers[0] |
|
194 |
) |
|
195 |
) |
|
196 |
assert len(resp.json['data']) == 1 |
|
197 |
assert resp.json['data'][0]['display_id'] == formdata.get_display_id() |
|
198 |
assert resp.json['data'][0]['display_name'] == formdata.get_display_name() |
|
199 |
assert resp.json['data'][0]['digest'] == formdata.digests['custom-view:datasource-carddef-custom-view'] |
|
200 |
assert resp.json['data'][0]['text'] == formdata.digests['custom-view:datasource-carddef-custom-view'] |
|
201 |
resp = get_app(pub).get( |
|
202 |
sign_uri( |
|
203 |
'/api/cards/test/list/datasource-carddef-custom-view?NameID=%s&full=on' |
|
204 |
% local_user.name_identifiers[0] |
|
205 |
) |
|
206 |
) |
|
207 |
assert resp.json['data'][0]['fields']['foo'] == 'blah' |
|
208 |
assert resp.json['data'][0]['digest'] == formdata.digests['custom-view:datasource-carddef-custom-view'] |
|
209 |
assert resp.json['data'][0]['text'] == formdata.digests['custom-view:datasource-carddef-custom-view'] |
|
210 | ||
159 | 211 |
# get single carddata (as signed request without any user specified, so |
160 | 212 |
# no check for permissions) |
161 | 213 |
resp = get_app(pub).get(sign_uri('/api/cards/test/%s/' % formdata.id)) |
wcs/backoffice/management.py | ||
---|---|---|
2386 | 2386 |
)[0] |
2387 | 2387 |
if get_publisher().is_using_postgresql(): |
2388 | 2388 |
self.formdef.data_class().load_all_evolutions(items) |
2389 |
digest_key = 'default' |
|
2390 |
if self.view and isinstance(self.formdef, CardDef): |
|
2391 |
view_digest_key = 'custom-view:%s' % self.view.get_url_slug() |
|
2392 |
if view_digest_key in (self.formdef.digest_templates or {}): |
|
2393 |
digest_key = view_digest_key |
|
2389 | 2394 |
if get_request().form.get('full') == 'on': |
2390 | 2395 |
output = [] |
2391 | 2396 |
for filled in items: |
2392 |
data = filled.get_json_export_dict(include_files=False, anonymise=anonymise, user=user) |
|
2397 |
data = filled.get_json_export_dict( |
|
2398 |
include_files=False, anonymise=anonymise, user=user, digest_key=digest_key |
|
2399 |
) |
|
2393 | 2400 |
data.pop('digests') |
2394 |
data['digest'] = filled.default_digest
|
|
2401 |
data['digest'] = (filled.digests or {}).get(digest_key)
|
|
2395 | 2402 |
output.append(data) |
2396 | 2403 |
else: |
2397 | 2404 |
output = [ |
... | ... | |
2399 | 2406 |
'id': filled.id, |
2400 | 2407 |
'display_id': filled.get_display_id(), |
2401 | 2408 |
'display_name': filled.get_display_name(), |
2402 |
'digest': filled.default_digest,
|
|
2403 |
'text': filled.get_display_label(), |
|
2409 |
'digest': (filled.digests or {}).get(digest_key),
|
|
2410 |
'text': filled.get_display_label(digest_key=digest_key),
|
|
2404 | 2411 |
'url': filled.get_url(), |
2405 | 2412 |
'receipt_time': datetime.datetime(*filled.receipt_time[:6]), |
2406 | 2413 |
'last_update_time': datetime.datetime(*filled.last_update_time[:6]), |
wcs/carddata.py | ||
---|---|---|
45 | 45 |
item[field.varname] = value |
46 | 46 |
return item |
47 | 47 | |
48 |
def get_display_label(self): |
|
49 |
return self.default_digest or self.get_display_name()
|
|
48 |
def get_display_label(self, digest_key='default'):
|
|
49 |
return (self.digests or {}).get(digest_key) or self.get_display_name()
|
|
50 | 50 | |
51 | 51 |
def get_author_qualification(self): |
52 | 52 |
return None |
wcs/formdata.py | ||
---|---|---|
1129 | 1129 |
def default_digest(self): |
1130 | 1130 |
return (self.digests or {}).get('default') |
1131 | 1131 | |
1132 |
def get_display_label(self): |
|
1133 |
if self.default_digest: |
|
1134 |
return '%s (%s)' % (self.get_display_name(), self.default_digest) |
|
1132 |
def get_display_label(self, digest_key='default'): |
|
1133 |
digest = (self.digests or {}).get(digest_key) |
|
1134 |
if digest: |
|
1135 |
return '%s (%s)' % (self.get_display_name(), digest) |
|
1135 | 1136 |
return self.get_display_name() |
1136 | 1137 | |
1137 | 1138 |
def get_auto_geoloc(self): |
... | ... | |
1182 | 1183 |
self.data, fields, formdata=self, include_files=include_files, anonymise=anonymise |
1183 | 1184 |
) |
1184 | 1185 | |
1185 |
def get_json_export_dict(self, include_files=True, anonymise=False, user=None): |
|
1186 |
def get_json_export_dict(self, include_files=True, anonymise=False, user=None, digest_key='default'):
|
|
1186 | 1187 |
data = {} |
1187 | 1188 |
data['id'] = str(self.id) |
1188 | 1189 |
data['digests'] = self.digests |
1189 | 1190 |
data['display_id'] = self.get_display_id() |
1190 | 1191 |
data['display_name'] = self.get_display_name() |
1191 |
data['text'] = self.get_display_label() |
|
1192 |
data['text'] = self.get_display_label(digest_key=digest_key)
|
|
1192 | 1193 |
data['receipt_time'] = datetime.datetime(*self.receipt_time[:6]) |
1193 | 1194 |
data['last_update_time'] = datetime.datetime(*self.last_update_time[:6]) |
1194 | 1195 |
data['criticality_level'] = self.criticality_level |
1195 |
- |