jsondatastore: return datetimes in results
This commit is contained in:
parent
579eed908f
commit
1dbc707733
|
@ -64,6 +64,15 @@ class JsonData(models.Model):
|
|||
self.text = template.render(context).strip()
|
||||
return super(JsonData, self).save(*args, **kwargs)
|
||||
|
||||
def to_json(self):
|
||||
return {
|
||||
'id': self.uuid,
|
||||
'text': self.text,
|
||||
'content': self.content,
|
||||
'creation_datetime': self.creation_datetime,
|
||||
'last_update_datetime': self.last_update_datetime,
|
||||
}
|
||||
|
||||
|
||||
class JsonDataStore(BaseResource):
|
||||
category = _('Data Sources')
|
||||
|
@ -79,7 +88,7 @@ class JsonDataStore(BaseResource):
|
|||
objects = JsonData.objects.filter(datastore=self)
|
||||
if name_id is not None:
|
||||
objects = objects.filter(name_id=name_id)
|
||||
return {'data': [{'id': x.uuid, 'text': x.text, 'content': x.content} for x in objects]}
|
||||
return {'data': [x.to_json() for x in objects]}
|
||||
|
||||
@endpoint(perm='can_access', methods=['post'], name='data',
|
||||
pattern=r'create$',
|
||||
|
@ -124,7 +133,7 @@ class JsonDataStore(BaseResource):
|
|||
new_content = clean_json_data(request.body)
|
||||
data.content.update(new_content)
|
||||
data.save()
|
||||
return {'id': data.uuid, 'text': data.text, 'content': data.content}
|
||||
return data.to_json()
|
||||
|
||||
@endpoint(perm='can_access', methods=['post'], name='data',
|
||||
description=_('Delete'),
|
||||
|
@ -151,5 +160,5 @@ class JsonDataStore(BaseResource):
|
|||
objects = objects.filter(name_id=name_id)
|
||||
for data in objects:
|
||||
if data.content and data.content.get(attribute) == value:
|
||||
return {'id': data.uuid, 'text': data.text, 'content': data.content}
|
||||
return data.to_json()
|
||||
raise APIError('no such object')
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
import pytest
|
||||
|
||||
from django.contrib.contenttypes.models import ContentType
|
||||
from django.core.serializers.json import DjangoJSONEncoder
|
||||
|
||||
from passerelle.apps.jsondatastore.models import JsonDataStore, JsonData
|
||||
from passerelle.base.models import ApiUser, AccessRight
|
||||
|
@ -172,3 +173,23 @@ def test_jsondatastore_get_by_attribute(app, jsondatastore):
|
|||
|
||||
resp = app.get('/jsondatastore/foobar/data/by/foo/', params={'value': 'bar3', 'name_id': 'zzz'})
|
||||
assert resp.json['err'] == 1
|
||||
|
||||
|
||||
def test_jsondatastore_datetimes(app, jsondatastore):
|
||||
encoder = DjangoJSONEncoder()
|
||||
resp = app.post_json('/jsondatastore/foobar/data/create', params={'foo': 'bar'})
|
||||
uuid = resp.json['id']
|
||||
creation_datetime = jsondatastore.get_data_object(uuid).creation_datetime
|
||||
|
||||
resp = app.post_json('/jsondatastore/foobar/data/%s/' % uuid, params={'foo': 'bar2'})
|
||||
last_update_datetime = jsondatastore.get_data_object(uuid).last_update_datetime
|
||||
assert resp.json['creation_datetime'] == encoder.default(creation_datetime)
|
||||
assert resp.json['last_update_datetime'] == encoder.default(last_update_datetime)
|
||||
|
||||
resp = app.get('/jsondatastore/foobar/data/by/foo/', params={'value': 'bar2'})
|
||||
assert resp.json['creation_datetime'] == encoder.default(creation_datetime)
|
||||
assert resp.json['last_update_datetime'] == encoder.default(last_update_datetime)
|
||||
|
||||
resp = app.get('/jsondatastore/foobar/data/')
|
||||
assert resp.json['data'][0]['creation_datetime'] == encoder.default(creation_datetime)
|
||||
assert resp.json['data'][0]['last_update_datetime'] == encoder.default(last_update_datetime)
|
||||
|
|
Loading…
Reference in New Issue