wagtail / wagtail-localize

Translation plugin for Wagtail CMS
https://wagtail-localize.org/
Other
222 stars 84 forks source link

[Registered Snippet Object].DoesNotExist: [Registered Snippet Object] matching query does not exist. #684

Open pdeero opened 1 year ago

pdeero commented 1 year ago

Dear Wagtail Community,

again i need your help. I would be so glad if someone could help me, we want to go live with our documentation page build in wagtail. But we are facing some issues if we try to translate a snippet from german to english with pages it's no problem. We are facing the problems only with registered snippets.

In the past we had no problems with the translation of snippets but after somewhile we are now facing weird issues. At this moment we can't translate. When we were translating it will face an error, the error message you'll find underneath.

Does somebody has an idea to fix it?

This is our requirements.txt:

Django==4.1.1
wagtail==4.2
wagtail_localize==1.5
django-extensions==3.2.0
psycopg2==2.9.3
loglevel==0.1.2
Wand==0.6.10
django-redis==5.2.0
sentry-sdk==1.10.1
wagtail-honeypot==1.0.0
wagtail-transfer==0.8.5

This our snippet model:

@register_snippet
class Navbar(TranslatableMixin, models.Model):
    """
    Snippet for site navigation bars (header, main menu, etc.)
    """
    button_text = models.CharField(
        max_length=255,
        verbose_name='Link Text',
        default=''
    )
    button_link = models.ForeignKey(
        'wagtailcore.Page',
        on_delete=models.SET_NULL,
        default=None,
        null=True,
        blank=True,
        related_name='+',
    )
    button_link_text = models.CharField(
        max_length=255,
        verbose_name='Button Link Text',
        default="",
        blank=True,
    )
    name = models.CharField(
        max_length=255,
        verbose_name='Name',
    )
    sub_menu_items = StreamField(
        SUB_NAVIGATION_STREAMBLOCKS,
        verbose_name='Sub Navigation links',
        blank=True,
        collapsed=True
    )
    contact_phone = models.CharField(
        max_length=255,
        verbose_name='Contact phone',
        default=''
    )
    contact_email = models.CharField(
        max_length=255,
        verbose_name='Contact email',
        default=''
    )
    menu_items = StreamField(
        NAVIGATION_STREAMBLOCKS,
        verbose_name='Navigation links',
        blank=True,
        collapsed=True
    )
    language_code = models.CharField(
        max_length=10, default=''
    )

    panels = [
        FieldPanel('name'),
        FieldPanel('sub_menu_items'),
        MultiFieldPanel(
            [
                FieldPanel('contact_phone'),
                FieldPanel('contact_email'),
                FieldPanel('button_text'),
                FieldPanel('button_link'),
                FieldPanel('button_link_text'),
            ],
            heading='Navigation Button'
        ),
        FieldPanel('menu_items'),
    ]

    def __str__(self):
        return self.name

    @property
    def navbar_button_link(self):
        return self.button_link_text or self.button_link.url

    class Meta(TranslatableMixin.Meta):
        verbose_name = 'Navigation Bar'

This is the error log:

Internal Server Error: /admin/localize/submit/snippet/hintbox/navbar/4/
Traceback (most recent call last):
  File "/Users/patrickdiede/Projekte/website/venv/lib/python3.8/site-packages/django/core/handlers/exception.py", line 55, in inner
    response = get_response(request)
  File "/Users/patrickdiede/Projekte/website/venv/lib/python3.8/site-packages/django/core/handlers/base.py", line 197, in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File "/Users/patrickdiede/Projekte/website/venv/lib/python3.8/site-packages/django/views/decorators/cache.py", line 62, in _wrapped_view_func
    response = view_func(request, *args, **kwargs)
  File "/Users/patrickdiede/Projekte/website/venv/lib/python3.8/site-packages/wagtail/admin/urls/__init__.py", line 175, in wrapper
    return view_func(request, *args, **kwargs)
  File "/Users/patrickdiede/Projekte/website/venv/lib/python3.8/site-packages/wagtail/admin/auth.py", line 182, in decorated_view
    response = view_func(request, *args, **kwargs)
  File "/Users/patrickdiede/Projekte/website/venv/lib/python3.8/site-packages/django/views/generic/base.py", line 103, in view
    return self.dispatch(request, *args, **kwargs)
  File "/Users/patrickdiede/Projekte/website/venv/lib/python3.8/site-packages/wagtail_localize/views/submit_translations.py", line 174, in dispatch
    return super().dispatch(request, *args, **kwargs)
  File "/Users/patrickdiede/Projekte/website/venv/lib/python3.8/site-packages/django/views/generic/base.py", line 142, in dispatch
    return handler(request, *args, **kwargs)
  File "/Users/patrickdiede/Projekte/website/venv/lib/python3.8/site-packages/wagtail_localize/views/submit_translations.py", line 118, in post
    return self.form_valid(form)
  File "/usr/local/Cellar/python@3.8/3.8.13_2/Frameworks/Python.framework/Versions/3.8/lib/python3.8/contextlib.py", line 75, in inner
    return func(*args, **kwds)
  File "/Users/patrickdiede/Projekte/website/venv/lib/python3.8/site-packages/wagtail_localize/views/submit_translations.py", line 150, in form_valid
    single_translated_object = self.object.get_translation(
  File "/Users/patrickdiede/Projekte/website/venv/lib/python3.8/site-packages/wagtail/models/i18n.py", line 186, in get_translation
    return self.get_translations(inclusive=True).get(locale_id=pk(locale))
  File "/Users/patrickdiede/Projekte/website/venv/lib/python3.8/site-packages/django/db/models/query.py", line 650, in get
    raise self.model.DoesNotExist(
home.models.snippet_models.Navbar.DoesNotExist: Navbar matching query does not exist.