api: fix dependencies KeyError inexport/import api (#65859)
gitea-wip/wcs/pipeline/head Build started... Details

This commit is contained in:
Lauréline Guérin 2022-06-10 16:51:09 +02:00
parent 313dee177d
commit 621ab6b8c5
No known key found for this signature in database
GPG Key ID: 1FAB9B9B4F93D473
4 changed files with 14 additions and 9 deletions

View File

@ -86,6 +86,10 @@ def test_export_import_form_404(pub):
get_app(pub).get(sign_uri('/api/export-import/forms/plop/'), status=404)
def test_export_import_form_dependencies_404(pub):
get_app(pub).get(sign_uri('/api/export-import/forms/plop/dependencies/'), status=404)
def test_export_import_dependencies(pub):
formdef = FormDef()
formdef.name = 'Test'

View File

@ -158,15 +158,12 @@ def get_object(objects, slug):
klass = klasses.get(objects)
if not klass:
raise Http404()
return klass.get_by_slug(slug)
return klass.get_by_slug(slug, ignore_errors=True)
@signature_required
def object_export(request, objects, slug):
try:
obj = get_object(objects, slug)
except KeyError:
obj = None
obj = get_object(objects, slug)
if obj is None:
raise Http404()
etree = obj.export_to_xml(include_id=True)
@ -177,6 +174,8 @@ def object_export(request, objects, slug):
@signature_required
def object_dependencies(request, objects, slug):
obj = get_object(objects, slug)
if obj is None:
raise Http404()
dependencies = []
if hasattr(obj, 'get_dependencies'):
for dependency in obj.get_dependencies():

View File

@ -756,8 +756,10 @@ class FormDef(StorableObject):
self.workflow_options.update(variables)
@classmethod
def get_by_urlname(cls, url_name, ignore_migration=False):
return cls.get_on_index(url_name, 'url_name', ignore_migration=ignore_migration)
def get_by_urlname(cls, url_name, ignore_migration=False, ignore_errors=False):
return cls.get_on_index(
url_name, 'url_name', ignore_migration=ignore_migration, ignore_errors=ignore_errors
)
get_by_slug = get_by_urlname

View File

@ -116,8 +116,8 @@ class MailTemplate(XmlStorableObject):
return options
@classmethod
def get_by_slug(cls, slug):
mail_template = super().get_by_slug(slug, ignore_errors=True)
def get_by_slug(cls, slug, ignore_errors=True):
mail_template = super().get_by_slug(slug, ignore_errors=ignore_errors)
if mail_template is None:
get_logger().warning("mail template '%s' does not exist" % slug)
return mail_template