Пример #1
0
 def test_slave_can_add_page_under_slave_home(self):
     with self.login_user_context(self.user_slave):
         # move to admin.py?
         # url = URL_CMS_PAGE_ADD + "?target=%d&position=last-child" % slave_page.pk
         
         # can he even access it over get?
         # response = self.client.get(url)
         # self.assertEqual(response.status_code, 200)
         
         # add page
         page = create_page("page", "nav_playground.html", "en",
                            parent=self.slave_page, created_by=self.user_slave)
         # adds user_slave as page moderator for this page
         # public model shouldn't be available yet, because of the moderation
         # removed test cases since Title object does not inherit from Publisher anymore
         #self.assertObjectExist(Title.objects, slug=page_data['slug'])
         #self.assertObjectDoesNotExist(Title.objects.public(), slug=page_data['slug'])
         
         # moderators and approvement ok?
         self.assertEqual(page.get_moderator_queryset().count(), 1)
         self.assertEqual(page.moderator_state, Page.MODERATOR_CHANGED)
         
         # must not have public object yet
         self.assertFalse(page.publisher_public)
 
         self.assertTrue(has_generic_permission(page.pk, self.user_slave, "publish", 1))
 
         # publish as slave, published as user_master before 
         publish_page(page, self.user_slave)
         
         # user_slave is moderator for this page
         # approve / publish as user_slave
         # user master should be able to approve aswell
         page = approve_page(page, self.user_slave)
Пример #2
0
    def test_page_added_by_slave_can_be_published_approved_by_user_master(
            self):
        # add page
        page = create_page("page",
                           "nav_playground.html",
                           "en",
                           parent=self.slave_page,
                           created_by=self.user_slave)
        # same as test_slave_can_add_page_under_slave_home
        self.assertEqual(page.get_moderator_queryset().count(), 1)
        self.assertEqual(page.moderator_state, Page.MODERATOR_CHANGED)

        # must not have public object yet
        self.assertFalse(page.publisher_public)

        self.assertTrue(
            has_generic_permission(page.pk, self.user_master, "publish",
                                   page.site.pk))
        # should be True user_master should have publish permissions for childred aswell
        # don't test for published since publishing must be approved
        publish_page(page, self.user_master)

        # user_master is moderator for top level page / but can't approve descendants?
        # approve / publish as user_master
        # user master should be able to approve descendants
        page = approve_page(page, self.user_master)
Пример #3
0
    def test_moderator_flags(self):
        """Add page under slave_home and check its flag
        """
        page = create_page("page",
                           "nav_playground.html",
                           "en",
                           parent=self.slave_page)

        # moderator_state must be changed
        self.assertEqual(page.moderator_state, Page.MODERATOR_CHANGED)

        # check publish box
        page = publish_page(page, self.user_slave)

        # page should request approvement now
        self.assertEqual(page.moderator_state, Page.MODERATOR_NEED_APPROVEMENT)

        # approve it by master

        # approve this page - but it doesn't get published yet, because
        # slave home is not published
        page = approve_page(page, self.user_master)

        # public page must not exist because of parent
        self.assertFalse(page.publisher_public)

        # waiting for parents
        self.assertEqual(page.moderator_state,
                         Page.MODERATOR_APPROVED_WAITING_FOR_PARENTS)

        # publish slave page
        slave_page = publish_page(self.slave_page, self.user_master)

        self.assertFalse(page.publisher_public)
        self.assertFalse(slave_page.publisher_public)

        # they must be approved first
        slave_page = approve_page(slave_page, self.user_master)

        # master is approved
        self.assertEqual(slave_page.moderator_state, Page.MODERATOR_APPROVED)

        # reload page
        page = self.reload_page(page)

        # page must be approved also now
        self.assertEqual(page.moderator_state, Page.MODERATOR_APPROVED)
Пример #4
0
    def test_moderator_flags(self):
        """Add page under slave_home and check its flag
        """
        page = create_page("page", "nav_playground.html", "en",
                           parent=self.slave_page)
        
        # moderator_state must be changed
        self.assertEqual(page.moderator_state, Page.MODERATOR_CHANGED)
        
        # check publish box
        page = publish_page(page, self.user_slave)
        
        # page should request approvement now
        self.assertEqual(page.moderator_state, Page.MODERATOR_NEED_APPROVEMENT)
        
        # approve it by master

        # approve this page - but it doesn't get published yet, because 
        # slave home is not published
        page = approve_page(page, self.user_master)
        
        # public page must not exist because of parent
        self.assertFalse(page.publisher_public)
        
        # waiting for parents
        self.assertEqual(page.moderator_state, Page.MODERATOR_APPROVED_WAITING_FOR_PARENTS)
        
        # publish slave page
        slave_page = publish_page(self.slave_page, self.user_master)
        
        self.assertFalse(page.publisher_public)
        self.assertFalse(slave_page.publisher_public)
        
        # they must be approved first
        slave_page = approve_page(slave_page, self.user_master)
        
        # master is approved
        self.assertEqual(slave_page.moderator_state, Page.MODERATOR_APPROVED)
        
        # reload page
        page = self.reload_page(page)
        
        # page must be approved also now
        self.assertEqual(page.moderator_state, Page.MODERATOR_APPROVED)
Пример #5
0
 def test_page_added_by_slave_can_be_published_approved_by_user_master(self):
     # add page
     page = create_page("page", "nav_playground.html", "en",
                        parent=self.slave_page, created_by=self.user_slave)
     # same as test_slave_can_add_page_under_slave_home        
     self.assertEqual(page.get_moderator_queryset().count(), 1)
     self.assertEqual(page.moderator_state, Page.MODERATOR_CHANGED)
     
     # must not have public object yet
     self.assertFalse(page.publisher_public)
     
     self.assertTrue(has_generic_permission(page.pk, self.user_master, "publish", page.site.pk))
     # should be True user_master should have publish permissions for childred aswell
     # don't test for published since publishing must be approved
     publish_page(page, self.user_master)
     
     # user_master is moderator for top level page / but can't approve descendants?
     # approve / publish as user_master
     # user master should be able to approve descendants
     page = approve_page(page, self.user_master)    
Пример #6
0
    def test_slave_can_add_page_under_slave_home(self):
        with self.login_user_context(self.user_slave):
            # move to admin.py?
            # url = URL_CMS_PAGE_ADD + "?target=%d&position=last-child" % slave_page.pk

            # can he even access it over get?
            # response = self.client.get(url)
            # self.assertEqual(response.status_code, 200)

            # add page
            page = create_page("page",
                               "nav_playground.html",
                               "en",
                               parent=self.slave_page,
                               created_by=self.user_slave)
            # adds user_slave as page moderator for this page
            # public model shouldn't be available yet, because of the moderation
            # removed test cases since Title object does not inherit from Publisher anymore
            #self.assertObjectExist(Title.objects, slug=page_data['slug'])
            #self.assertObjectDoesNotExist(Title.objects.public(), slug=page_data['slug'])

            # moderators and approvement ok?
            self.assertEqual(page.get_moderator_queryset().count(), 1)
            self.assertEqual(page.moderator_state, Page.MODERATOR_CHANGED)

            # must not have public object yet
            self.assertFalse(page.publisher_public)

            self.assertTrue(
                has_generic_permission(page.pk, self.user_slave, "publish", 1))

            # publish as slave, published as user_master before
            publish_page(page, self.user_slave)

            # user_slave is moderator for this page
            # approve / publish as user_slave
            # user master should be able to approve aswell
            page = approve_page(page, self.user_slave)
Пример #7
0
    def test_patricks_move(self):
        """
        
        Tests permmod when moving trees of pages.

        1. build following tree (master node is approved and published)
        
                 slave-home
                /    |    \
               A     B     C
                   /  \     
                  D    E     
                    /  |  \ 
                   F   G   H               

        2. perform move oparations:
            1. move G under C
            2. move E under G
            
                 slave-home
                /    |    \
               A     B     C
                   /        \
                  D          G
                              \   
                               E
                             /   \
                            F     H       
        
        3. approve nodes in following order:
            1. approve H
            2. approve G
            3. approve E
            4. approve F
        """
        # TODO: this takes 5 seconds to run on my MBP. That's TOO LONG!
        
        # perform movings under slave...
        user_master = User.objects.get(username='******')
        self.move_page(self.pg, self.pc)
        # We have to reload pe when using mptt >= 0.4.2, 
        # so that mptt realized that pg is no longer a child of pe
        self.move_page(self.pe, self.pg)
        
        # check urls - they should stay them same, there wasn't approved yet
        self.assertEqual(
            self.pg.publisher_public.get_absolute_url(), 
            u'%smaster/slave-home/pb/pe/pg/' % self.get_pages_root()
        )
        self.assertEqual(
            self.ph.publisher_public.get_absolute_url(),
            u'%smaster/slave-home/pb/pe/ph/' % self.get_pages_root()
        )
        
        # pg & pe should require approval
        self.assertEqual(self.pg.requires_approvement(), True)
        self.assertEqual(self.pe.requires_approvement(), True)
        self.assertEqual(self.ph.requires_approvement(), False)
        
        # login as master, and approve moves
        approve_page(self.pg, user_master)
        approve_page(self.pe, user_master)
        approve_page(self.ph, user_master)
        approve_page(self.pf, user_master)
        
        # public parent check after move
        self.assertEqual(self.pg.publisher_public.parent.pk, self.pc.publisher_public_id)
        self.assertEqual(self.pe.publisher_public.parent.pk, self.pg.publisher_public_id)
        self.assertEqual(self.ph.publisher_public.parent.pk, self.pe.publisher_public_id)
        
        # check if urls are correct after move
        self.assertEqual(
            self.pg.publisher_public.get_absolute_url(),
            u'%smaster/slave-home/pc/pg/' % self.get_pages_root()
        )
        self.assertEqual(
            self.ph.publisher_public.get_absolute_url(),
            u'%smaster/slave-home/pc/pg/pe/ph/' % self.get_pages_root()
        )
Пример #8
0
    def test_patricks_move(self):
        """
        
        Tests permmod when moving trees of pages.

        1. build following tree (master node is approved and published)
        
                 slave-home
                /    |    \
               A     B     C
                   /  \     
                  D    E     
                    /  |  \ 
                   F   G   H               

        2. perform move oparations:
            1. move G under C
            2. move E under G
            
                 slave-home
                /    |    \
               A     B     C
                   /        \
                  D          G
                              \   
                               E
                             /   \
                            F     H       
        
        3. approve nodes in following order:
            1. approve H
            2. approve G
            3. approve E
            4. approve F
        """
        # TODO: this takes 5 seconds to run on my MBP. That's TOO LONG!

        # perform movings under slave...
        user_master = User.objects.get(username='******')
        self.move_page(self.pg, self.pc)
        # We have to reload pe when using mptt >= 0.4.2,
        # so that mptt realized that pg is no longer a child of pe
        self.move_page(self.pe, self.pg)

        # check urls - they should stay them same, there wasn't approved yet
        self.assertEqual(
            self.pg.publisher_public.get_absolute_url(),
            u'%smaster/slave-home/pb/pe/pg/' % self.get_pages_root())
        self.assertEqual(
            self.ph.publisher_public.get_absolute_url(),
            u'%smaster/slave-home/pb/pe/ph/' % self.get_pages_root())

        # pg & pe should require approval
        self.assertEqual(self.pg.requires_approvement(), True)
        self.assertEqual(self.pe.requires_approvement(), True)
        self.assertEqual(self.ph.requires_approvement(), False)

        # login as master, and approve moves
        approve_page(self.pg, user_master)
        approve_page(self.pe, user_master)
        approve_page(self.ph, user_master)
        approve_page(self.pf, user_master)

        # public parent check after move
        self.assertEqual(self.pg.publisher_public.parent.pk,
                         self.pc.publisher_public_id)
        self.assertEqual(self.pe.publisher_public.parent.pk,
                         self.pg.publisher_public_id)
        self.assertEqual(self.ph.publisher_public.parent.pk,
                         self.pe.publisher_public_id)

        # check if urls are correct after move
        self.assertEqual(self.pg.publisher_public.get_absolute_url(),
                         u'%smaster/slave-home/pc/pg/' % self.get_pages_root())
        self.assertEqual(
            self.ph.publisher_public.get_absolute_url(),
            u'%smaster/slave-home/pc/pg/pe/ph/' % self.get_pages_root())