コード例 #1
0
    def test_detach_alias(self):
        alias = self._create_alias()
        alias_placeholder = alias.get_placeholder(self.language)
        add_plugin(
            alias_placeholder,
            'TextPlugin',
            language=self.language,
            body='test 1',
        )
        add_plugin(
            alias_placeholder,
            'TextPlugin',
            language=self.language,
            body='test 2',
        )
        plugins = self.placeholder.get_plugins()
        self.assertEqual(plugins.count(), 1)
        alias_plugin = add_plugin(
            self.placeholder,
            Alias,
            language=self.language,
            alias=alias,
        )
        add_plugin(
            alias_placeholder,
            'TextPlugin',
            language=self.language,
            body='test 3',
        )

        self.assertEqual(plugins.count(), 2)
        Alias.detach_alias_plugin(alias_plugin, self.language)
        self.assertEqual(plugins.count(), 4)
コード例 #2
0
    def test_extra_plugin_items_for_alias_plugins(self):
        alias = self._create_alias()

        placeholder = self.placeholder
        page_content = None
        if is_versioning_enabled():
            # Can only edit page/content that is in DRAFT
            page_content = create_title(self.language,
                                        'Draft Page',
                                        self.page,
                                        created_by=self.superuser)
            placeholder = page_content.get_placeholders().get(slot='content')

        alias_plugin = alias.get_content(self.language).populate(
            replaced_placeholder=placeholder, )
        extra_items = Alias.get_extra_plugin_menu_items(
            self.get_page_request(page=self.page,
                                  obj=page_content,
                                  user=self.superuser),
            alias_plugin,
        )

        self.assertEqual(len(extra_items), 2)
        first, second = extra_items
        self.assertEqual(first.name, 'Edit Alias')
        self.assertEqual(first.url, alias.get_absolute_url())

        self.assertEqual(second.name, 'Detach Alias')
        self.assertEqual(second.action, 'modal')
        self.assertEqual(
            second.url,
            self.get_detach_alias_plugin_endpoint(alias_plugin.pk),
        )
コード例 #3
0
 def test_can_detach_no_permission(self):
     user = self.get_staff_user_with_no_permissions()
     alias = self._create_alias(self.placeholder.get_plugins())
     self.assertFalse(
         Alias.can_detach(
             user,
             self.placeholder,
             alias.get_placeholder(self.language).get_plugins(),
         ), )
コード例 #4
0
    def test_detach_alias_correct_position(self):
        alias = self._create_alias([])
        alias_placeholder = alias.get_placeholder(self.language)
        add_plugin(
            alias_placeholder,
            'TextPlugin',
            language=self.language,
            body='test 1',
        )
        add_plugin(
            alias_placeholder,
            'TextPlugin',
            language=self.language,
            body='test 2',
        )
        plugins = self.placeholder.get_plugins()
        self.assertEqual(plugins.count(), 1)
        alias_plugin = add_plugin(
            self.placeholder,
            Alias,
            language=self.language,
            alias=alias,
        )
        add_plugin(
            self.placeholder,
            'TextPlugin',
            language=self.language,
            body='test 3',
        )
        self.assertEqual(plugins.count(), 3)
        Alias.detach_alias_plugin(alias_plugin, self.language)
        self.assertEqual(plugins.count(), 4)

        ordered_plugins = sorted(
            downcast_plugins(plugins),
            key=attrgetter('position'),
        )
        self.assertEqual(
            [str(plugin) for plugin in ordered_plugins],
            ['test', 'test 1', 'test 2', 'test 3'],
        )
コード例 #5
0
 def test_can_detach_has_permission(self):
     user = self.get_staff_user_with_std_permissions()
     alias = self._create_alias(self.placeholder.get_plugins())
     placeholder = self.placeholder
     if is_versioning_enabled():
         placeholder = self._get_draft_page_placeholder()
     self.assertTrue(
         Alias.can_detach(
             user,
             placeholder,
             alias.get_placeholder(self.language).get_plugins(),
         ), )
コード例 #6
0
 def test_can_create_alias_staff_enough_permissions(self):
     user = self.get_staff_user_with_std_permissions()
     user.user_permissions.add(
         Permission.objects.get(
             content_type=ContentType.objects.get_for_model(AliasModel, ),
             codename='add_alias',
         ))
     self.assertTrue(
         Alias.can_create_alias(
             user,
             self.placeholder.get_plugins(),
         ), )
コード例 #7
0
 def test_extra_plugin_items_for_regular_plugins(self):
     extra_items = Alias.get_extra_plugin_menu_items(
         self.get_request(self.page.get_absolute_url()),
         self.plugin,
     )
     self.assertEqual(len(extra_items), 1)
     extra_item = extra_items[0]
     self.assertEqual(extra_item.name, 'Create Alias')
     self.assertEqual(extra_item.action, 'modal')
     parsed_url = urlparse(extra_item.url)
     self.assertEqual(parsed_url.path, self.get_create_alias_endpoint())
     self.assertIn('plugin={}'.format(self.plugin.pk), parsed_url.query)
コード例 #8
0
 def test_extra_plugin_items_for_placeholder(self):
     extra_items = Alias.get_extra_placeholder_menu_items(
         self.get_page_request(page=self.page, user=self.superuser),
         self.placeholder,
     )
     self.assertEqual(len(extra_items), 1)
     extra_item = extra_items[0]
     self.assertEqual(extra_item.name, 'Create Alias')
     self.assertEqual(extra_item.action, 'modal')
     parsed_url = urlparse(extra_item.url)
     self.assertEqual(parsed_url.path, self.get_create_alias_endpoint())
     self.assertIn(
         'placeholder={}'.format(self.placeholder.pk),
         parsed_url.query,
     )
コード例 #9
0
    def test_extra_plugin_items_with_versioning_checks(self):
        alias = self._create_alias()
        alias_plugin = alias.get_content(self.language).populate(
            replaced_placeholder=self.placeholder, )
        extra_items = Alias.get_extra_plugin_menu_items(
            self.get_page_request(page=self.page,
                                  obj=self.page.get_title_obj(),
                                  user=self.superuser),
            alias_plugin,
        )

        self.assertEqual(len(extra_items), 1)
        first = extra_items[0]
        # We cannot detach alias on undraft page
        self.assertEqual(first.name, 'Edit Alias')
        self.assertEqual(first.url, alias.get_absolute_url())
コード例 #10
0
 def test_can_create_alias_staff_partial_permissions(self):
     user = self.get_staff_user_with_no_permissions()
     user.user_permissions.add(
         Permission.objects.get(
             content_type=ContentType.objects.get_for_model(AliasModel, ),
             codename='add_alias',
         ))
     user.user_permissions.add(
         Permission.objects.get(
             content_type=ContentType.objects.get_for_model(Alias.model, ),
             codename='add_aliasplugin',
         ))
     alias = self._create_alias(self.placeholder.get_plugins())
     add_plugin(
         self.placeholder,
         Alias,
         language=self.language,
         alias=alias,
     )
     self.assertFalse(
         Alias.can_create_alias(
             user,
             self.placeholder.get_plugins(),
         ), )
コード例 #11
0
 def test_can_create_alias_staff_no_permissions(self):
     self.assertFalse(
         Alias.can_create_alias(
             self.get_staff_user_with_no_permissions(),
             [self.plugin],
         ), )
コード例 #12
0
 def test_can_create_alias_standard_user(self):
     self.assertFalse(
         Alias.can_create_alias(
             self.get_standard_user(),
             [self.plugin],
         ), )
コード例 #13
0
 def test_can_create_alias_superuser(self):
     self.assertTrue(
         Alias.can_create_alias(
             self.get_superuser(),
             [self.plugin],
         ), )