opendatasoft: export and import queries (#43443)

This commit is contained in:
Nicolas Roche 2020-05-31 12:54:16 +02:00
parent f2c5518c4a
commit eca82e8465
2 changed files with 32 additions and 0 deletions

View File

@ -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'),

View File

@ -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)