api: add @schema endpoint for cards (#46999)

This commit is contained in:
Frédéric Péters 2020-09-25 10:09:22 +02:00
parent 945b1ac541
commit 08de8e3cb7
2 changed files with 11 additions and 0 deletions

View File

@ -3195,6 +3195,12 @@ def test_cards(pub, local_user):
assert resp.json['data'][0]['digest'] == formdata.digest
assert resp.json['data'][0]['text'] == formdata.digest
# get schema
resp = get_app(pub).get(sign_uri('/api/cards/test/@schema'), status=200)
assert len(resp.json['fields']) == 1
assert resp.json['fields'][0]['label'] == 'foobar'
assert resp.json['fields'][0]['varname'] == 'foo'
def test_api_invalid_http_basic_auth(pub, local_user, admin_user, ics_data):
app = get_app(pub)

View File

@ -229,6 +229,11 @@ class ApiFormPage(BackofficeFormPage):
class ApiCardPage(ApiFormPage):
formdef_class = CardDef
_q_exports = [('list', 'json'), 'geojson', 'ods', ('@schema', 'schema')] # restrict to API endpoints
def schema(self):
get_response().set_content_type('application/json')
return self.formdef.export_to_json(anonymise=not is_url_signed())
class ApiFormsDirectory(Directory):