def test_unauthed(self): request = self.get_request() page = Page() page.pk = 1 page.level = 0 page.tree_id = 1 self.assertTrue(page.has_view_permission(request))
def test_public_for_all(self): user = get_user_model().objects.create_user('user', '*****@*****.**', 'user') request = self.get_request(user) page = Page() page.pk = 1 fake_tree_attrs(page) self.assertTrue(page.has_view_permission(request))
def test_unauthed_no_access(self): with SettingsOverride(CMS_PUBLIC_FOR='staff'): request = self.get_request() page = Page() page.pk = 1 fake_tree_attrs(page) self.assertFalse(page.has_view_permission(request))
def test_public_for_all_staff_assert_num_queries(self): request = self.get_request() request.user.is_staff = True page = Page() page.pk = 1 with self.assertNumQueries(0): page.has_view_permission(request)
def test_public_for_all_staff(self): request = self.get_request() request.user.is_staff = True page = Page() page.pk = 1 fake_mptt_attrs(page) self.assertTrue(page.has_view_permission(request))
def test_public_for_all(self): user = User.objects.create_user('user', '*****@*****.**', 'user') request = self.get_request(user) page = Page() page.pk = 1 page.level = 0 page.tree_id = 1 self.assertTrue(page.has_view_permission(request))
def test_authed_no_access(self): with SettingsOverride(CMS_PUBLIC_FOR='staff'): user = get_user_model().objects.create_user('user', '*****@*****.**', 'user') request = self.get_request(user) page = Page() page.pk = 1 fake_tree_attrs(page) self.assertFalse(page.has_view_permission(request))
def test_public_for_all_staff(self): request = self.get_request() request.user.is_staff = True page = Page() page.pk = 1 pages = [page] result = get_visible_pages(request, pages) self.assertEqual(result, [1])
def test_unauthed_no_access(self): with SettingsOverride(CMS_PUBLIC_FOR='staff'): request = self.get_request() page = Page() page.pk = 1 page.level = 0 page.tree_id = 1 self.assertFalse(page.has_view_permission(request))
def test_public_for_all_staff_assert_num_queries(self): request = self.get_request() request.user.is_staff = True page = Page() page.pk = 1 pages = [page] with self.assertNumQueries(0): get_visible_pages(request, pages)
def test_authed_basic_perm(self): with SettingsOverride(CMS_PUBLIC_FOR='staff'): user = get_user_model().objects.create_user('user', '*****@*****.**', 'user') user.user_permissions.add(Permission.objects.get(codename='view_page')) request = self.get_request(user) page = Page() page.pk = 1 fake_tree_attrs(page) self.assertTrue(page.has_view_permission(request))
def test_authed_no_access(self): with SettingsOverride(CMS_PUBLIC_FOR='staff'): user = User.objects.create_user('user', '*****@*****.**', 'user') request = self.get_request(user) page = Page() page.pk = 1 page.level = 0 page.tree_id = 1 self.assertFalse(page.has_view_permission(request))
def test_unauthed_no_access_num_queries(self): current_site = Site() current_site.pk = 1 request = self.get_request() page = Page() page.pk = 1 fake_tree_attrs(page) with self.assertNumQueries(1): page.has_view_permission(request)
def test_unauthed(self): request = self.get_request() page = Page() page.pk = 1 page.level = 0 page.tree_id = 1 pages = [page] result = get_visible_pages(request, pages) self.assertEqual(result, [1])
def test_global_permission(self): with SettingsOverride(CMS_PUBLIC_FOR='staff'): user = get_user_model().objects.create_user('user', '*****@*****.**', 'user') GlobalPagePermission.objects.create(can_view=True, user=user) request = self.get_request(user) page = Page() page.pk = 1 fake_tree_attrs(page) self.assertTrue(page.has_view_permission(request))
def test_authed_basic_perm(self): with SettingsOverride(CMS_PUBLIC_FOR='staff'): user = User.objects.create_user('user', '*****@*****.**', 'user') user.user_permissions.add(Permission.objects.get(codename='view_page')) request = self.get_request(user) page = Page() page.pk = 1 page.level = 0 page.tree_id = 1 self.assertTrue(page.has_view_permission(request))
def test_unauthed_no_access(self): with SettingsOverride(CMS_PUBLIC_FOR='staff'): request = self.get_request() page = Page() page.pk = 1 page.level = 0 page.tree_id = 1 pages = [page] result = get_visible_pages(request, pages) self.assertEqual(result, [])
def test_global_permission(self): with SettingsOverride(CMS_PUBLIC_FOR='staff'): user = User.objects.create_user('user', '*****@*****.**', 'user') GlobalPagePermission.objects.create(can_view=True, user=user) request = self.get_request(user) page = Page() page.pk = 1 page.level = 0 page.tree_id = 1 self.assertTrue(page.has_view_permission(request))
def test_unauthed_no_access_num_queries(self): site = Site() site.pk = 1 request = self.get_request() page = Page() page.pk = 1 page.level = 0 page.tree_id = 1 with self.assertNumQueries(1): page.has_view_permission(request)
def test_public_for_all(self): user = User.objects.create_user('user', '*****@*****.**', 'user') request = self.get_request(user) page = Page() page.pk = 1 page.level = 0 page.tree_id = 1 pages = [page] result = get_visible_pages(request, pages) self.assertEqual(result, [1])
def copy_pages(): pages = PagesPage.objects.order_by('tree_id', 'lft', ) # remove all the previous pages CMSPage.objects.all().delete() parents = {} for page in pages: cmspage = CMSPage() # replicate the language independent structure information # thanks to the common ancestor we can reuse exactly the same tree # information cmspage.pk = page.pk cmspage.creation_date = page.creation_date cmspage.publication_date = page.publication_date cmspage.publication_end_date = page.publication_end_date cmspage.changed_date = page.last_modification_date cmspage.template = 'django_' + page.template cmspage.level = page.level cmspage.lft = page.lft cmspage.rght = page.rght cmspage.tree_id = page.tree_id cmspage.site_id = 1 if page.parent_id in parents: cmspage.parent = parents[page.parent_id] cmspage.save(no_signals=True) cmspage.rescan_placeholders() parents[cmspage.pk] = cmspage # replicate the language dependent data for language in page.get_languages(): cmstitle = Title() cmstitle.language = language cmstitle.title = page.title(language) cmstitle.slug = page.slug(language) cmstitle.page = cmspage cmstitle.update_path() cmstitle.save() contents = page.content_by_language(language) for content in contents: if content.type in ('subtitle', 'text', 'right-column'): placeholder = cmspage.placeholders.get(slot=content.type) # For the main placeholders we need to scan whether content # is markdown or plain HTML # This is a very naif check, but does the trick in this # context if content.body.find('<p>') > -1: add_plugin(placeholder, plugin_type='TextPlugin', language=language, body=content.body) else: add_plugin(placeholder, plugin_type='MarkItUpPlugin', language=language, body=content.body) elif content.type not in ('slug', 'title'): # Fallback import placeholder = cmspage.placeholders.get(slot=content.type) add_plugin(placeholder, plugin_type='TextPlugin', language=language, body=content.body)
def test_unauthed_no_access_num_queries(self): site = Site() site.pk = 1 request = self.get_request() page = Page() page.pk = 1 page.level = 0 page.tree_id = 1 pages = [page] with self.assertNumQueries(1): get_visible_pages(request, pages, site)
def test_authed_no_access(self): with SettingsOverride(CMS_PUBLIC_FOR='staff'): user = User.objects.create_user('user', '*****@*****.**', 'user') request = self.get_request(user) page = Page() page.pk = 1 page.level = 0 page.tree_id = 1 pages = [page] result = get_visible_pages(request, pages) self.assertEqual(result, [])
def test_global_permission(self): with SettingsOverride(CMS_PUBLIC_FOR='staff'): user = User.objects.create_user('user', '*****@*****.**', 'user') GlobalPagePermission.objects.create(can_view=True, user=user) request = self.get_request(user) page = Page() page.pk = 1 page.level = 0 page.tree_id = 1 pages = [page] result = get_visible_pages(request, pages) self.assertEqual(result, [1])
def test_authed_basic_perm(self): with SettingsOverride(CMS_PUBLIC_FOR='staff'): user = User.objects.create_user('user', '*****@*****.**', 'user') user.user_permissions.add(Permission.objects.get(codename='view_page')) request = self.get_request(user) page = Page() page.pk = 1 page.level = 0 page.tree_id = 1 pages = [page] result = get_visible_pages(request, pages) self.assertEqual(result, [1])
def test_unauthed_num_queries(self): request = self.get_request() current_site = Site() current_site.pk = 1 page = Page() page.pk = 1 fake_tree_attrs(page) with self.assertNumQueries(1): """ The query is: PagePermission query for affected pages """ page.has_view_permission(request)
def test_unauthed_num_queries(self): request = self.get_request() site = Site() site.pk = 1 page = Page() page.pk = 1 page.level = 0 page.tree_id = 1 with self.assertNumQueries(1): """ The query is: PagePermission query for affected pages """ page.has_view_permission(request)
def test_public_for_all_staff_assert_num_queries(self): request = self.get_request() request.user.is_staff = True page = Page() page.pk = 1 page.level = 0 page.tree_id = 1 pages = [page] with self.assertNumQueries(1): """ The queries are: PagePermission count query """ get_visible_pages(request, pages)
def test_public_for_all_num_queries(self): user = User.objects.create_user('user', '*****@*****.**', 'user') request = self.get_request(user) site = Site() site.pk = 1 page = Page() page.pk = 1 page.level = 0 page.tree_id = 1 with self.assertNumQueries(3): """ The queries are: The current Site PagePermission query for affected pages GlobalpagePermission query for user """ page.has_view_permission(request)
def test_unauthed_num_queries(self): request = self.get_request() site = Site() site.pk = 1 page = Page() page.pk = 1 page.level = 0 page.tree_id = 1 pages = [page] with self.assertNumQueries(1): """ The query is: PagePermission query for affected pages global is not executed because it's lazy """ get_visible_pages(request, pages, site)
def test_public_for_all_num_queries(self): user = User.objects.create_user('user', '*****@*****.**', 'user') request = self.get_request(user) site = Site() site.pk = 1 page = Page() page.pk = 1 page.level = 0 page.tree_id = 1 pages = [page] with self.assertNumQueries(2): """ The queries are: PagePermission query for affected pages GlobalpagePermission query for user """ get_visible_pages(request, pages, site)
def test_public_for_all_num_queries(self): user = get_user_model().objects.create_user('user', '*****@*****.**', 'user') request = self.get_request(user) current_site = Site() current_site.pk = 1 current_site.save() page = Page() page.pk = 1 fake_tree_attrs(page) with self.assertNumQueries(3): """ The queries are: The current Site PagePermission query for affected pages GlobalpagePermission query for user """ page.has_view_permission(request)
def test_authed_no_access_num_queries(self): site = Site() site.pk = 1 with SettingsOverride(CMS_PUBLIC_FOR='staff'): user = User.objects.create_user('user', '*****@*****.**', 'user') request = self.get_request(user) page = Page() page.pk = 1 page.level = 0 page.tree_id = 1 pages = [page] with self.assertNumQueries(4): """ The queries are: PagePermission query for affected pages GlobalpagePermission query for user Generic django permission lookup content type lookup by permission lookup """ get_visible_pages(request, pages, site)
def test_authed_basic_perm_num_queries(self): site = Site() site.pk = 1 with SettingsOverride(CMS_PUBLIC_FOR='staff'): user = User.objects.create_user('user', '*****@*****.**', 'user') user.user_permissions.add(Permission.objects.get(codename='view_page')) request = self.get_request(user) page = Page() page.pk = 1 page.level = 0 page.tree_id = 1 with self.assertNumQueries(5): """ The queries are: The site PagePermission query for affected pages GlobalpagePermission query for user Generic django permission lookup content type lookup by permission lookup """ page.has_view_permission(request)
def test_public_for_all_staff(self): request = self.get_request() request.user.is_staff = True page = Page() page.pk = 1 self.assertTrue(page.has_view_permission(request))
def copy_pages(): pages = PagesPage.objects.order_by( 'tree_id', 'lft', ) # remove all the previous pages CMSPage.objects.all().delete() parents = {} for page in pages: cmspage = CMSPage() # replicate the language independent structure information # thanks to the common ancestor we can reuse exactly the same tree # information cmspage.pk = page.pk cmspage.creation_date = page.creation_date cmspage.publication_date = page.publication_date cmspage.publication_end_date = page.publication_end_date cmspage.changed_date = page.last_modification_date cmspage.template = 'django_' + page.template cmspage.level = page.level cmspage.lft = page.lft cmspage.rght = page.rght cmspage.tree_id = page.tree_id cmspage.site_id = 1 if page.parent_id in parents: cmspage.parent = parents[page.parent_id] cmspage.save(no_signals=True) cmspage.rescan_placeholders() parents[cmspage.pk] = cmspage # replicate the language dependent data for language in page.get_languages(): cmstitle = Title() cmstitle.language = language cmstitle.title = page.title(language) cmstitle.slug = page.slug(language) cmstitle.page = cmspage cmstitle.update_path() cmstitle.save() contents = page.content_by_language(language) for content in contents: if content.type in ('subtitle', 'text', 'right-column'): placeholder = cmspage.placeholders.get(slot=content.type) # For the main placeholders we need to scan whether content # is markdown or plain HTML # This is a very naif check, but does the trick in this # context if content.body.find('<p>') > -1: add_plugin(placeholder, plugin_type='TextPlugin', language=language, body=content.body) else: add_plugin(placeholder, plugin_type='MarkItUpPlugin', language=language, body=content.body) elif content.type not in ('slug', 'title'): # Fallback import placeholder = cmspage.placeholders.get(slot=content.type) add_plugin(placeholder, plugin_type='TextPlugin', language=language, body=content.body)