def test_parent_language(self): parent_page = HomePageFactory.build() new_page = HomePageFactory.build(language=language.LanguageFactory( code='ar')) signals.force_parent_language(page=new_page, parent=parent_page) assert new_page.language == parent_page.language
def test_get(self, rf): with factory.django.mute_signals(signals.post_save): # Fake `WAGTAILTRANS_SYNC_TREE` setting fr = language.LanguageFactory(is_default=False, code='fr', position=2) assert TranslatablePage.objects.filter(language=fr).count() == 0 request = rf.get('/') view = TranslationView() view.request = request response = view.dispatch(request, instance_id=self.last_page.pk, language_code='fr') parent_page_qs = view.get_form().fields['parent_page'].queryset assert response.status_code == 200 assert parent_page_qs.count() == 1 assert parent_page_qs.model is not TranslatablePage assert parent_page_qs.first() == self.pages[0] french_root = pages.TranslatablePageFactory.build(language=fr, title="French root") self.pages[0].add_child(instance=french_root) response = view.dispatch(request, instance_id=self.last_page.pk, language_code='fr') parent_page_qs = view.get_form().fields['parent_page'].queryset # We have a french page to add our new translated page to assert parent_page_qs.count() == 1 assert parent_page_qs.model is TranslatablePage assert parent_page_qs[0].language == fr assert parent_page_qs[0] == french_root
def test_add_language_to_site(self): with override_settings(WAGTAILTRANS_SYNC_TREE=True, WAGTAILTRANS_LANGUAGES_PER_SITE=True): lang = language.LanguageFactory(is_default=False, code='fr', position=2) assert not TranslatablePage.objects.filter(language=lang, canonical_page=self.last_page).exists() self.site.sitelanguages.other_languages.add(lang) self.site.sitelanguages.save() assert TranslatablePage.objects.filter(language=lang, canonical_page=self.last_page).exists()
def test_delete_canonical_page(self): lang = language.LanguageFactory(is_default=False, code='fr', position=2) assert TranslatablePage.objects.filter(language=lang, canonical_page=self.last_page).exists() self.last_page.delete() assert not TranslatablePage.objects.filter(language=lang, canonical_page=self.last_page).exists()
def test_do_not_copy_non_translatable_page(self): page = WagtailPageFactory.build(title='test') self.last_page.add_child(instance=page) lang = language.LanguageFactory(is_default=False, code='fr', position=2) assert TranslatablePage.objects.filter( language=lang, canonical_page=self.last_page).exists()
def test_post(self, rf): with factory.django.mute_signals(signals.post_save): # Fake SYNC_TREE=False de = language.LanguageFactory(is_default=False, code='de', position=3) assert TranslatablePage.objects.filter(language=de).count() == 0 request = rf.post('/', {'parent_page': self.pages[0].pk, 'copy_from_canonical': True}) view = TranslationView() view.request = request response = view.dispatch(request, instance_id=self.pages[1].pk, language_code='de') assert response.status_code == 302 assert response['Location'].endswith('/edit/')
def test_site_languages(self): site = sites.SiteFactory() SiteLanguages.for_site(site) # Initialize sitelanguages default_language = Language.objects.default() lang = language.LanguageFactory(code='nl', is_default=False) site.sitelanguages.default_language = lang site.sitelanguages.save() pages = sites.create_site_tree(language=default_language, site=site) homepage = HomePageFactory.build(language=default_language) pages[0].add_child(instance=homepage) signals.force_parent_language(page=homepage, parent=site.root_page) assert homepage.language == lang
def test_get(self, rf): with factory.django.mute_signals( signals.post_save): # Fake `WAGTAILTRANS_SYNC_TREE` setting fr = language.LanguageFactory(is_default=False, code='fr', position=2) assert TranslatablePage.objects.filter(language=fr).count() == 0 view = translation.Add.as_view() response = view(rf.get('/'), page_pk=self.last_page.pk, language_code='fr') form = response.context_data['form'] parent_page_qs = form.fields['parent_page'].queryset assert response.status_code == 200 # The new language has been added, # so only the root page should be availabe as parent assert parent_page_qs.count() == 1 assert parent_page_qs.model is not TranslatablePage assert parent_page_qs.first() == self.pages[0] french_root = pages.TranslatablePageFactory.build(language=fr, title="French root") self.pages[0].add_child(instance=french_root) response = view(rf.get('/'), page_pk=self.last_page.pk, language_code='fr') form = response.context_data['form'] parent_page_qs = form.fields['parent_page'].queryset # We have a french page to add our new translated page to assert parent_page_qs.count() == 1 assert parent_page_qs.model is TranslatablePage assert parent_page_qs[0].language == fr assert parent_page_qs[0] == french_root
def test_add_language(self): lang = language.LanguageFactory(is_default=False, code='fr', position=2) assert TranslatablePage.objects.filter(language=lang).count() > 1
def setup(self): self.language = language.LanguageFactory()