base: allow specifying resources to export (#15269)
This commit is contained in:
parent
4413995077
commit
696c66b80a
|
@ -10,6 +10,8 @@ class Command(BaseCommand):
|
|||
help = 'Export the site'
|
||||
|
||||
def add_arguments(self, parser):
|
||||
parser.add_argument('--slugs', nargs='+', default=None,
|
||||
help='specify resources to export')
|
||||
parser.add_argument('--output', metavar='FILE', default=None,
|
||||
help='name of a file to write output to')
|
||||
|
||||
|
@ -18,4 +20,4 @@ class Command(BaseCommand):
|
|||
output = open(options['output'], 'w')
|
||||
else:
|
||||
output = sys.stdout
|
||||
json.dump(export_site(), output, indent=4)
|
||||
json.dump(export_site(slugs=options['slugs']), output, indent=4)
|
||||
|
|
|
@ -287,7 +287,7 @@ class Request(RequestSession):
|
|||
|
||||
|
||||
|
||||
def export_site():
|
||||
def export_site(slugs=None):
|
||||
'''Dump passerelle configuration (users, resources and ACLs) to JSON dumpable dictionnary'''
|
||||
from passerelle.base.models import ApiUser
|
||||
from passerelle.base.models import BaseResource
|
||||
|
@ -299,6 +299,8 @@ def export_site():
|
|||
if subclass._meta.abstract:
|
||||
continue
|
||||
for resource in subclass.objects.all():
|
||||
if slugs and resource.slug not in slugs:
|
||||
continue
|
||||
try:
|
||||
resources.append(resource.export_json())
|
||||
except NotImplementedError:
|
||||
|
|
|
@ -213,3 +213,14 @@ def test_export_access_rights(app, setup):
|
|||
import_site(first, import_users=True)
|
||||
second = export_site()
|
||||
assert first == second
|
||||
|
||||
|
||||
def test_export_by_slug():
|
||||
Bdp.objects.create(service_url='https://bdp.example.com/', slug='bdp')
|
||||
Bdp.objects.create(service_url='https://bdp2.example.com/', slug='bdp2')
|
||||
Bdp.objects.create(service_url='https://bdp3.example.com/', slug='bdp3')
|
||||
output = get_output_of_command('export_site', '--slugs', 'bdp', 'bdp3')
|
||||
export = json.loads(output)
|
||||
|
||||
assert len(export['resources']) == 2
|
||||
assert 'bdp2' not in [res['slug'] for res in export['resources']]
|
||||
|
|
Loading…
Reference in New Issue