opendatasoft: export and import queries (#43443)
This commit is contained in:
parent
f2c5518c4a
commit
eca82e8465
|
@ -44,6 +44,25 @@ class OpenDataSoft(BaseResource):
|
|||
class Meta:
|
||||
verbose_name = _('OpenDataSoft Web Service')
|
||||
|
||||
def export_json(self):
|
||||
data = super(OpenDataSoft, self).export_json()
|
||||
data['queries'] = [query.export_json() for query in self.queries.all()]
|
||||
return data
|
||||
|
||||
@classmethod
|
||||
def import_json_real(cls, overwrite, instance, data, **kwargs):
|
||||
data_queries = data.pop('queries', [])
|
||||
instance = super(OpenDataSoft, cls).import_json_real(overwrite, instance, data, **kwargs)
|
||||
queries = []
|
||||
if instance and overwrite:
|
||||
Query.objects.filter(resource=instance).delete()
|
||||
for data_query in data_queries:
|
||||
query = Query.import_json(data_query)
|
||||
query.resource = instance
|
||||
queries.append(query)
|
||||
Query.objects.bulk_create(queries)
|
||||
return instance
|
||||
|
||||
@endpoint(
|
||||
perm='can_access',
|
||||
description=_('Search'),
|
||||
|
|
|
@ -22,6 +22,7 @@ import pytest
|
|||
import utils
|
||||
|
||||
from passerelle.apps.opendatasoft.models import OpenDataSoft, Query
|
||||
from passerelle.utils import import_site
|
||||
|
||||
from test_manager import login, admin_user
|
||||
|
||||
|
@ -185,6 +186,18 @@ def test_views(db, admin_user, app, connector):
|
|||
assert resp.html.find('div', {'id': 'queries'}).ul.li.a.text == 'my query'
|
||||
|
||||
|
||||
def test_export_import(query):
|
||||
assert OpenDataSoft.objects.count() == 1
|
||||
assert Query.objects.count() == 1
|
||||
serialization = {'resources': [query.resource.export_json()]}
|
||||
OpenDataSoft.objects.all().delete()
|
||||
assert OpenDataSoft.objects.count() == 0
|
||||
assert Query.objects.count() == 0
|
||||
import_site(serialization)
|
||||
assert OpenDataSoft.objects.count() == 1
|
||||
assert Query.objects.count() == 1
|
||||
|
||||
|
||||
@mock.patch('passerelle.utils.Request.get')
|
||||
def test_search_empty_contents(mocked_get, app, connector):
|
||||
endpoint = utils.generic_endpoint_url('opendatasoft', 'search', slug=connector.slug)
|
||||
|
|
Loading…
Reference in New Issue