def _create_url( self, site=None, content_object=None, manual_url="", relative_path="", phone="", mailto="", anchor="", ): if site is None: site = self.default_site url = UrlModel.objects.create( site=site, content_object=content_object, manual_url=manual_url, relative_path=relative_path, phone=phone, mailto=mailto, anchor=anchor, url_grouper=UrlGrouper.objects.create(), ) if is_versioning_enabled(): Version.objects.create( content=url, created_by=self.superuser, state=DRAFT, content_type_id=ContentType.objects.get_for_model(UrlModel).id, ) return url
def test_select2_view(self): with self.login_user_context(self.superuser): response = self.client.get(admin_reverse(SELECT2_URLS, ), ) result = [ self.url.pk, self.url2.pk, ] text_result = [] if is_versioning_enabled(): # The following versions have draft content text_result.append(f"{self.url.internal_name} (Not published)") text_result.append(f'{self.url2.internal_name} (Not published)') else: text_result.append(f"{self.url.internal_name}") text_result.append(f"{self.url2.internal_name}") self.assertEqual(response.status_code, 200) self.assertEqual([a['id'] for a in response.json()['results']], result) self.assertEqual( [a['text'] for a in response.json()['results']], text_result, )
def change_view(self, request, object_id, form_url='', extra_context=None): extra_context = extra_context or {} # Provide additional context to the changeform extra_context['is_versioning_enabled'] = is_versioning_enabled() return super().change_view( request, object_id, form_url, extra_context=extra_context, )
def get_name(self): content = self.get_content(show_draft_content=True) name = getattr(content, 'internal_name', 'URL {}'.format(self.pk)) if is_versioning_enabled() and content: from djangocms_versioning.constants import DRAFT version = content.versions.first() if version.state == DRAFT: return '{} (Not published)'.format(name) return name
def get_content(self, show_draft_content=False): qs = self.get_content_queryset() if show_draft_content and is_versioning_enabled(): from djangocms_versioning.constants import DRAFT, PUBLISHED from djangocms_versioning.helpers import remove_published_where # Ensure that we are getting the latest valid content, the top most version can become # archived with a previous version re-published qs = remove_published_where(qs) qs = qs.filter( Q(versions__state=DRAFT) | Q(versions__state=PUBLISHED)).order_by('-versions__created') return qs.first()
def is_versioning_enabled(cls): return is_versioning_enabled()