示例#1
0
 def setUp(self):
     self.client = Client()
     try:
         Page.objects.get(name='home')
     except Page.DoesNotExist:
         home = Page(name='home', title='home')
         home.save()
示例#2
0
 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))
示例#3
0
文件: views.py 项目: tochitake/wakeo
def page_create(request, page_id=None):

    if page_id:
        page = get_object_or_404(Page, pk=page_id)
    else:
        page = Page()

    if request.method == 'POST':
        form = PageForm(request.POST, instance=page)
        serial = MakeRndCode()
        serialCd = serial.mkrnd()
        if form.is_valid():
            page = form.save(commit=False)
            page.serialcd = serialCd

            #response = HttpResponse('test')
            response = redirect('cms:member_list')
            response['location'] += '?S=' + serialCd + '&case=1'

            #response.set_cookie('serial_cd', serialCd)

            page.save()
            #return redirect('cms:member_list')
            #return render(request, 'cms/member_list.html')
            return response
    else:
        form = PageForm(instance=page)

    #初回きた時はGetなので、そのままindexを渡す
    #POSTでリクエストがきたら、Saveして、メンバーリストに飛ばす
    #ここからはクッキーでIDを渡す
    #DBにはPageIDを持つ

    return render(request, 'cms/index.html', dict(form=form))
示例#4
0
    def get_or_create_root(self):
        """
        Creates the root node used to store all page types
        for the current site if it doesn't exist.
        """
        root_page = PageType.get_root_page(site=self._site)

        if not root_page:
            root_page = Page(
                publisher_is_draft=True,
                in_navigation=False,
                is_page_type=True,
            )
            root_page.set_tree_node(self._site)
            root_page.save()

        if not root_page.has_translation(self._language):
            api.create_title(
                language=self._language,
                title=ugettext('Page Types'),
                page=root_page,
                slug=PAGE_TYPES_ID,
                path=PAGE_TYPES_ID,
            )
        return root_page.node
示例#5
0
 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 add_tree(self, count, root=None, depth=1):
        CMS_GTE_35 = hasattr(Page, 'node')

        for node in range(0, count):
            new_page = Page(
                created_by='script',
                changed_by='script',
                in_navigation=True,
                template='INHERIT',
            )

            if CMS_GTE_35:
                parent_node = root.node if root else None
                new_page.set_tree_node(site=self.site,
                                       target=parent_node,
                                       position='last-child')
                new_page.save()
            else:
                new_page.site = self.site
                new_page.parent_id = getattr(root, 'pk', None)
                # This saves the page
                new_page = Page.add_root(instance=new_page)

                if root:
                    new_page = new_page.move(target=root.reload(),
                                             pos='last-child')

            try:
                node_path = new_page.node.path
            except AttributeError:
                node_path = new_page.path

            for language in self.languages:
                new_page.title_set.create(
                    language=language,
                    title=node_path,
                    slug=node_path,
                    path='/'.join(self.path_regex.findall(node_path)),
                )
            new_page.update_languages(self.languages)

            if self.base_page:
                for ph in self.base_page.placeholders.all():
                    new_ph = new_page.placeholders.create(slot=ph.slot)

                    for language in self.languages:
                        plugins = ph.get_plugins_list(language)

                        if plugins:
                            ph.copy_plugins(new_ph, language)
            else:
                new_page.rescan_placeholders()

            self.stdout.write("Created page %s" % node_path)

            if depth <= self.max_depth and bool(random.getrandbits(1)):
                self.add_tree(count=self.max_count_children,
                              root=new_page,
                              depth=depth + 1)
示例#7
0
    def create_page(self,
                    parent_page=None,
                    user=None,
                    position="last-child",
                    title=None,
                    site=1,
                    published=False,
                    in_navigation=False,
                    moderate=False,
                    language=None,
                    title_extra=None,
                    **extra):
        """
        Common way for page creation with some checks
        """
        _thread_locals.user = user
        if not language:
            language = settings.LANGUAGES[0][0]
            if settings.CMS_SITE_LANGUAGES.get(site, False):
                language = settings.CMS_SITE_LANGUAGES[site][0]
        site = Site.objects.get(pk=site)

        page_data = {
            'site': site,
            'template': 'nav_playground.html',
            'published': published,
            'in_navigation': in_navigation,
        }
        if user:
            page_data['created_by'] = user
            page_data['changed_by'] = user
        if parent_page:
            page_data['parent'] = parent_page
        page_data.update(extra)

        page = Page(**page_data)
        if parent_page:
            page.insert_at(self.reload(parent_page), position)
        page.save()

        if settings.CMS_MODERATOR and user:
            page.pagemoderator_set.create(user=user)

        if not title:
            title = 'test page %d' % self.counter
            slug = 'test-page-%d' % self.counter
        else:
            slug = slugify(title)
        self.counter = self.counter + 1
        if not title_extra:
            title_extra = {}
        self.create_title(title=title,
                          slug=slug,
                          language=language,
                          page=page,
                          **title_extra)

        del _thread_locals.user
        return page
示例#8
0
 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))
示例#9
0
 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))
示例#10
0
 def handle(self, *args, **options):
     pages = []
     for i in range(0, 100):
         pages.append(
             Page(name=lorem.sentence(),
                  slug=uuid.uuid4(),
                  body=lorem.text()))
     Page.objects.bulk_create(pages)
示例#11
0
 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)
示例#12
0
 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])
示例#13
0
def make_page(name, order, **kwargs):
    defaults = dict(
        name=name,
        order=order,
        slug=slugify(name),
    )
    defaults.update(kwargs)
    return clean_and_save(Page(**defaults))
示例#14
0
文件: models.py 项目: mammique/opst
    def update(self):

        import feedparser

        from time import mktime
        from datetime import datetime
        from slugify import slugify

        from django.contrib.sites.models import Site

        from cms.models import Page, Title
        from cms.plugins.text.models import Text

        try: p_last = self.pages.latest('publication_date')
        except Page.DoesNotExist: p_last = None

        try:

            for e in feedparser.parse(self.url)['entries']:

                date  = e.get('published_parsed')
                title = e.get('title')
                body  = e.get('summary')
                url   = e.get('link')

                if date and title and body:

                    date = datetime.fromtimestamp(mktime(date))

                    if p_last and date <= p_last.publication_date: continue

                    p=Page(site=Site.objects.all()[0], in_navigation=False, published=True, template='page-full.html')
                    p.publication_date = date

                    if self.parent_page: p.parent = self.parent_page
            
                    p.save()

                    self.pages.add(p)
                    self.save()

                    t=Title(language='en', title=title, slug='%s-%s' % (slugify(title), p.pk), page=p)
                    t.save()
        
                    pl=p.placeholders.get(slot='page')

                    if url: body = u'%s<p><a href="%s">Lire la suite de l\'article…</a></p>' % (body, url)
                    txt=Text(body=body, language='en', plugin_type='TextPlugin')
                    txt.save()

                    pl.cmsplugin_set.add(txt)
                    pl.save()

        except: pass

        self.update_last = datetime.now()
        self.save()
示例#15
0
 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])
示例#16
0
 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))
示例#17
0
 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))
示例#18
0
 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, [])
示例#19
0
 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)
示例#20
0
 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])
示例#21
0
 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))
示例#22
0
 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, [])
示例#23
0
 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)
示例#24
0
 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])
示例#25
0
 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])
示例#26
0
 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)
示例#27
0
    def setUp(self):
        settings.APPEND_SLASH = False

        self.site = Site.objects.get_current()

        page = Page()
        page.site = self.site
        page.save()
        page.publish()
        self.page = page

        title = Title(title="Hello world!")
        title.page = page
        title.language = u'en'
        title.save()
示例#28
0
 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)
示例#29
0
 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)
示例#30
0
 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)