python类Page()的实例源码

views.py 文件源码 项目:wagtailsurveys 作者: torchbox 项目源码 文件源码 阅读 23 收藏 0 点赞 0 评论 0
def delete_submission(request, page_id, submission_id):
    if not get_surveys_for_user(request.user).filter(id=page_id).exists():
        raise PermissionDenied

    page = get_object_or_404(Page, id=page_id).specific
    submission = get_object_or_404(page.get_submission_class(), id=submission_id)

    if request.method == 'POST':
        submission.delete()

        messages.success(request, _("Submission deleted."))
        return redirect('wagtailsurveys:list_submissions', page_id)

    return render(request, 'wagtailsurveys/confirm_delete.html', {
        'page': page,
        'submission': submission
    })
tests.py 文件源码 项目:securethenews 作者: freedomofpress 项目源码 文件源码 阅读 24 收藏 0 点赞 0 评论 0
def setUp(self):
        home_page = Page.objects.get(slug='home')

        blog_index_page = BlogIndexPage(
            title='Blog',
            slug='blog',
            show_in_menus=True
        )
        home_page.add_child(instance=blog_index_page)

        blog_posts = [
            BlogPost(title='First Blog Post',
                     slug='first-blog-post',
                     date=datetime.date.today(),
                     byline='Author'),
            BlogPost(title='Second Blog Post',
                     slug='second-blog-post',
                     date=datetime.date.today(),
                     byline='Author')
        ]

        for blog_post in blog_posts:
            blog_index_page.add_child(instance=blog_post)
page_patch.py 文件源码 项目:wagtail-translation 作者: skirsdeda 项目源码 文件源码 阅读 26 收藏 0 点赞 0 评论 0
def full_clean(self, *args, **kwargs):
    # autogenerate slugs for non-empty title translation
    for lang_code in mt_settings.AVAILABLE_LANGUAGES:
        title_field = build_localized_fieldname('title', lang_code)
        slug_field = build_localized_fieldname('slug', lang_code)

        title = getattr(self, title_field)
        slug = getattr(self, slug_field)
        if title and not slug:
            if DJANGO_VERSION >= (1, 9):
                base_slug = slugify(title, allow_unicode=True)
            else:
                base_slug = slugify(title)

            if base_slug:
                setattr(self, slug_field, self._get_autogenerated_lang_slug(base_slug, lang_code))

    super(Page, self).full_clean(*args, **kwargs)
page_patch.py 文件源码 项目:wagtail-translation 作者: skirsdeda 项目源码 文件源码 阅读 19 收藏 0 点赞 0 评论 0
def move(self, target, pos=None):
    old_self = Page.objects.get(id=self.id)
    super(Page, self).move(target, pos=pos)

    new_self = Page.objects.get(id=self.id)
    # go through slugs to make sure they're available in new parent
    # and auto-update if necessary
    for lang_code in mt_settings.AVAILABLE_LANGUAGES:
        slug_attr = build_localized_fieldname('slug', lang_code)
        slug = getattr(new_self, slug_attr)
        if slug:
            slug = new_self._get_autogenerated_lang_slug(slug, lang_code)
            setattr(new_self, slug_attr, slug)
    new_self.set_url_path(new_self.get_parent())
    new_self.save()
    new_self._update_descendant_lang_url_paths(old_self)

    logger.info("Page moved: \"%s\" id=%d path=%s", self.title, self.id, self.url_path)
views.py 文件源码 项目:longclaw 作者: JamesRamm 项目源码 文件源码 阅读 24 收藏 0 点赞 0 评论 0
def requests_admin(request, pk):
    """Table display of each request for a given product.

    Allows the given Page pk to refer to a direct parent of
    the ProductVariant model or be the ProductVariant model itself.
    This allows for the standard longclaw product modelling philosophy where
    ProductVariant refers to the actual product (in the case where there is
    only 1 variant) or to be variants of the product page.
    """
    page = Page.objects.get(pk=pk).specific
    if hasattr(page, 'variants'):
        requests = ProductRequest.objects.filter(
            variant__in=page.variants.all()
        )
    else:
        requests = ProductRequest.objects.filter(variant=page)
    return render(
        request,
        "productrequests/requests_admin.html",
        {'page': page, 'requests': requests}
    )
views.py 文件源码 项目:nhsuk-content-store 作者: nhsuk 项目源码 文件源码 阅读 20 收藏 0 点赞 0 评论 0
def revisions_view(request, page_id, revision_id):
    """
    Redirects to a frontend preview page of type:
        `<frontend-preview-url>/<signature>/<page-id>/<revision-id>`
    Where:
        - frontend-preview-url: settings.FRONTEND_PREVIEW_URL
        - signature: see the generate_preview_signature method
        - page-id: id of the page
        - revision-id: id of the revision
    """
    if not settings.FRONTEND_PREVIEW_URL:
        return HttpResponse(_('Please set FRONTEND_PREVIEW_URL in your settings.py'))

    page = get_object_or_404(Page, id=page_id).specific
    revision = get_object_or_404(page.revisions, id=revision_id)
    signature = generate_preview_signature(page.id, revision.id)

    return redirect(
        settings.FRONTEND_PREVIEW_URL.format(
            signature=signature.decode(),
            page_id=page.id,
            revision_id=revision.id
        )
    )
wagtailbase_tags.py 文件源码 项目:dprr-django 作者: kingsdigitallab 项目源码 文件源码 阅读 21 收藏 0 点赞 0 评论 0
def get_site_root(context):
    """Returns the site root Page, not the implementation-specific model used.

    :rtype: `wagtail.wagtailcore.models.Page`
    """
    return context['request'].site.root_page
wagtailbase_tags.py 文件源码 项目:dprr-django 作者: kingsdigitallab 项目源码 文件源码 阅读 20 收藏 0 点赞 0 评论 0
def slugurl(context, slug):
    """Returns the URL for the page that has the given slug."""
    page = Page.objects.filter(slug=slug).first()

    if page:
        return pageurl(context, page)
    else:
        return None
translator.py 文件源码 项目:django-modeltranslation-wagtail 作者: benjaoming 项目源码 文件源码 阅读 28 收藏 0 点赞 0 评论 0
def __init__(self, *args, **kwargs):
        """
        Create fields dicts without any translation fields.
        """
        # Extend local fields, this ensures that Wagtail Page models are always
        # extend on the local application, not on Wagtail itself (which would
        # cause us to need migrations on wagtailcore!)
        self.fields = list(self.fields)
        self.fields += [
            'search_description',
            'seo_title',
            'title',
        ]
        super(TranslationOptions, self).__init__(*args, **kwargs)
views.py 文件源码 项目:wagtail-experiments 作者: torchbox 项目源码 文件源码 阅读 21 收藏 0 点赞 0 评论 0
def select_winner(request, experiment_id, variation_id):
    if not request.user.has_perm('experiments.change_experiment'):
        raise PermissionDenied
    experiment = get_object_or_404(Experiment, pk=experiment_id)
    variation = get_object_or_404(Page, pk=variation_id)

    if request.method == 'POST':
        experiment.select_winner(variation)

        messages.success(
            request,
            _("Page '{0}' has been selected as the winning variation.").format(variation.title),
        )

    return redirect('experiments:report', experiment.pk)
views.py 文件源码 项目:wagtail-experiments 作者: torchbox 项目源码 文件源码 阅读 26 收藏 0 点赞 0 评论 0
def preview_for_report(request, experiment_id, page_id):
    experiment = get_object_or_404(Experiment, pk=experiment_id)
    page = get_object_or_404(Page, id=page_id).specific
    if not page.permissions_for_user(request.user).can_publish():
        raise PermissionDenied

    # hack the title and page-tree-related fields to match the control page
    impersonate_other_page(page, experiment.control_page)

    # pass in the real user request rather than page.dummy_request(), so that request.user
    # and request.revision_id will be picked up by the wagtail user bar
    return page.serve_preview(request, page.default_preview_mode)
tests.py 文件源码 项目:securethenews 作者: freedomofpress 项目源码 文件源码 阅读 27 收藏 0 点赞 0 评论 0
def test_frontend_cache_invalidation(self, mock_purge_page_from_cache):
        """When a BlogPost is published or unpublished, we should invalidate
        the frontend cache for the corresponding BlogIndexPage."""
        blog_index_page = BlogIndexPage.objects.first()
        new_blog_post = BlogPost(
            title='New Blog Post',
            slug='new-blog-post',
            date=datetime.date.today(),
            byline='Author'
        )
        blog_index_page.add_child(instance=new_blog_post)

        # Publishing a BlogPost should trigger frontend cache invalidation for
        # the corresponding BlogIndexPage.
        #
        # XXX: For some reason, Wagtail uses the generic Page object as the
        # instance for the page_published signal, but uses the specific object
        # (e.g. BlogIndexPage) as the instance for the page_unpublished signal.
        # You can get the generic Page object from a specific object with
        # .page_ptr, or go the other way with .specific. For more, see:
        # http://docs.wagtail.io/en/v1.8/topics/pages.html#working-with-pages
        new_blog_post.save_revision().publish()
        mock_purge_page_from_cache.assert_called_once_with(
                                            blog_index_page.page_ptr)

        # Unpublishing the BlogPost should also trigger frontend cache
        # invalidation for the corresponding BlogIndexPage.
        mock_purge_page_from_cache.reset_mock()
        new_blog_post.unpublish()
        mock_purge_page_from_cache.assert_called_once_with(blog_index_page)
test_models.py 文件源码 项目:wagtail-inventory 作者: cfpb 项目源码 文件源码 阅读 29 收藏 0 点赞 0 评论 0
def test_page_str(self):
        page_block = PageBlock(
            page=Page(title='Title', slug='title'),
            block='path.to.block'
        )
        self.assertEqual(str(page_block), '<Title, path.to.block>')
utils.py 文件源码 项目:wagtailcomments 作者: takeflight 项目源码 文件源码 阅读 23 收藏 0 点赞 0 评论 0
def get_url_for_object(object):
    """
    """
    if isinstance(object, Page):
        return object.url
    else:
        return object.get_absolute_uri()
test_page_redirection.py 文件源码 项目:django_wagtail_boilerplate 作者: AccentDesign 项目源码 文件源码 阅读 26 收藏 0 点赞 0 评论 0
def test_inheritance(self):
        self.assertTrue(issubclass(PageRedirection, Page))
test_page_redirection.py 文件源码 项目:django_wagtail_boilerplate 作者: AccentDesign 项目源码 文件源码 阅读 23 收藏 0 点赞 0 评论 0
def test_redirect_to_page(self):
        field = PageRedirection._meta.get_field('redirect_to_page')
        self.assertModelPKField(field, Page, models.PROTECT, False, False, '+')

    # view
test_page_placeholder.py 文件源码 项目:django_wagtail_boilerplate 作者: AccentDesign 项目源码 文件源码 阅读 20 收藏 0 点赞 0 评论 0
def test_inheritance(self):
        self.assertTrue(issubclass(PagePlaceholder, Page))
test_basic.py 文件源码 项目:django_wagtail_boilerplate 作者: AccentDesign 项目源码 文件源码 阅读 31 收藏 0 点赞 0 评论 0
def test_inheritance(self):
        self.assertTrue(issubclass(BasicPage, Page))
test_views.py 文件源码 项目:wagtail-flags 作者: cfpb 项目源码 文件源码 阅读 22 收藏 0 点赞 0 评论 0
def test_fallback_wagtail_serve(self):
        site = Site.objects.get(is_default_site=True)
        root = site.root_page
        page = Page(title='wagtail title', slug='title')
        root.add_child(instance=page)
        page.save()
        page.save_revision().publish()

        fail_through = lambda request: wagtail_serve(request, request.path)
        view = TestView.as_view(flag_name=self.flag_name,
                                condition=True,
                                fallback=fail_through)

        response = view(self.request(path='/title'))
        self.assertContains(response, '<title>wagtail title</title>')
0001_initial.py 文件源码 项目:wagtail-translation 作者: skirsdeda 项目源码 文件源码 阅读 24 收藏 0 点赞 0 评论 0
def url_path_fix(apps, schema_editor):
    # cannot use apps.get_model here
    # because Page instances wouldn't have set_url_path method
    from wagtail.wagtailcore.models import Page

    url_path_fields = get_translation_fields('url_path')
    for page in Page.objects.order_by('path').iterator():
        page.set_url_path(page.get_parent())
        # make sure descendant page url paths are not updated at this point
        # because it would fail
        page.save(update_fields=url_path_fields)
load_initial_data.py 文件源码 项目:bakerydemo 作者: wagtail 项目源码 文件源码 阅读 25 收藏 0 点赞 0 评论 0
def handle(self, **options):
        fixtures_dir = os.path.join(settings.BASE_DIR, 'base', 'fixtures')
        fixture_file = os.path.join(fixtures_dir, 'bakerydemo.json')

        # Wagtail creates default Site and Page instances during install, but we already have
        # them in the data load. Remove the auto-generated ones.
        if Site.objects.filter(hostname='localhost').exists():
            Site.objects.get(hostname='localhost').delete()
        if Page.objects.filter(title='Welcome to your new Wagtail site!').exists():
            Page.objects.get(title='Welcome to your new Wagtail site!').delete()

        call_command('loaddata', fixture_file, verbosity=0)

        print("Awesome. Your data is loaded! The bakery's doors are almost ready to open...")
test_urls.py 文件源码 项目:wagtailnews 作者: takeflight 项目源码 文件源码 阅读 30 收藏 0 点赞 0 评论 0
def setUp(self):
        super(TestMultipleSites, self).setUp()
        root = Page.objects.get(pk=1)
        root_a = Page(
            title='Home A', slug='home-a')
        root.add_child(instance=root_a)

        root_b = Page(
            title='Home B', slug='home-b')
        root.add_child(instance=root_b)

        self.index_a = NewsIndex(title='News A', slug='news-a')
        root_a.add_child(instance=self.index_a)

        self.index_b = NewsIndex(title='News B', slug='news-b')
        root_b.add_child(instance=self.index_b)

        self.site_a = Site.objects.create(
            hostname='site-a.com',
            root_page=root_a)

        self.site_b = Site.objects.create(
            hostname='site-b.org',
            root_page=root_b)

        self.item_a = NewsItem.objects.create(
            newsindex=self.index_a, title='Post A', date=dt(2015, 8, 1))
        self.item_b = NewsItem.objects.create(
            newsindex=self.index_b, title='Post B', date=dt(2015, 8, 2))
views.py 文件源码 项目:nhsuk-content-store 作者: nhsuk 项目源码 文件源码 阅读 22 收藏 0 点赞 0 评论 0
def view_draft(request, page_id):
    """
    Redirects to revisions_view using the latest revision of the page with id == `page_id`.
    """
    page = get_object_or_404(Page, id=page_id)
    revision = page.get_latest_revision()

    return redirect('wagtailadmin_pages:revisions_view', page.id, revision.id)
test_models.py 文件源码 项目:Wagtail-Image-Folders 作者: anteatersa 项目源码 文件源码 阅读 25 收藏 0 点赞 0 评论 0
def test_used_image_document_get_usage(self):
        page = EventPage.objects.get(id=4)
        event_page_carousel_item = EventPageCarouselItem()
        event_page_carousel_item.page = page
        event_page_carousel_item.image = self.image
        event_page_carousel_item.save()
        self.assertTrue(issubclass(Page, type(self.image.get_usage()[0])))
tests.py 文件源码 项目:Wagtail-Document-Folders 作者: anteatersa 项目源码 文件源码 阅读 25 收藏 0 点赞 0 评论 0
def test_used_document_get_usage(self):
        doc = Document.objects.get(id=1)
        page = EventPage.objects.get(id=4)
        event_page_related_link = EventPageRelatedLink()
        event_page_related_link.page = page
        event_page_related_link.link_document = doc
        event_page_related_link.save()
        self.assertTrue(issubclass(Page, type(doc.get_usage()[0])))
views.py 文件源码 项目:wagtail-personalisation 作者: LabD 项目源码 文件源码 阅读 24 收藏 0 点赞 0 评论 0
def copy_page_view(request, page_id, segment_id):
    """Copy page with selected segment. If the page for the selected segment
    already exists the user will be redirected to that particular page.

    :param request: The http request
    :type request: django.http.HttpRequest
    :param page_id: The primary key of the page
    :type segment_id: int
    :param segment_id: The primary key of the segment
    :type segment_id: int
    :returns: A redirect to the new page
    :rtype: django.http.HttpResponseRedirect

    """
    if request.user.has_perm('wagtailadmin.access_admin'):
        segment = get_object_or_404(Segment, pk=segment_id)
        page = get_object_or_404(Page, pk=page_id).specific

        metadata = page.personalisation_metadata
        variant_metadata = metadata.metadata_for_segments([segment])
        if variant_metadata.exists():
            variant = variant_metadata.first()
        else:
            variant = metadata.copy_for_segment(segment)
        edit_url = reverse('wagtailadmin_pages:edit', args=[variant.id])

        return HttpResponseRedirect(edit_url)

    return HttpResponseForbidden()
wagtail_hooks.py 文件源码 项目:wagtail-personalisation 作者: LabD 项目源码 文件源码 阅读 21 收藏 0 点赞 0 评论 0
def set_visit_count(page, request, serve_args, serve_kwargs):
    """Tests the provided rules to see if the request still belongs
    to a segment.

    :param page: The page being served
    :type page: wagtail.wagtailcore.models.Page
    :param request: The http request
    :type request: django.http.HttpRequest

    """
    adapter = get_segment_adapter(request)
    adapter.add_page_visit(page)
wagtail_hooks.py 文件源码 项目:wagtail-personalisation 作者: LabD 项目源码 文件源码 阅读 28 收藏 0 点赞 0 评论 0
def segment_user(page, request, serve_args, serve_kwargs):
    """Apply a segment to a visitor before serving the page.

    :param page: The page being served
    :type page: wagtail.wagtailcore.models.Page
    :param request: The http request
    :type request: django.http.HttpRequest

    """
    adapter = get_segment_adapter(request)
    adapter.refresh()
wagtail_hooks.py 文件源码 项目:wagtail-personalisation 作者: LabD 项目源码 文件源码 阅读 27 收藏 0 点赞 0 评论 0
def serve_variant(page, request, serve_args, serve_kwargs):
    """Apply a segment to a visitor before serving the page.

    :param page: The page being served
    :type page: wagtail.wagtailcore.models.Page
    :param request: The http request
    :type request: django.http.HttpRequest
    :returns: A variant if one is available for the visitor's segment,
              otherwise the original page
    :rtype: wagtail.wagtailcore.models.Page

    """
    user_segments = []
    if not isinstance(page, models.PersonalisablePageMixin):
        return

    adapter = get_segment_adapter(request)
    user_segments = adapter.get_segments()

    if user_segments:
        metadata = page.personalisation_metadata

        # TODO: This is never more then one page? (fix query count)
        metadata = metadata.metadata_for_segments(user_segments)
        if metadata:
            variant = metadata.first().variant.specific
            return variant.serve(request, *serve_args, **serve_kwargs)
wagtail_hooks.py 文件源码 项目:wagtail-personalisation 作者: LabD 项目源码 文件源码 阅读 31 收藏 0 点赞 0 评论 0
def get_context(self):
        context = super(CorrectedPagesSummaryPanel, self).get_context()

        pages = utils.exclude_variants(Page.objects.all().specific())

        context['total_pages'] = len(pages) - 1
        return context


问题


面经


文章

微信
公众号

扫码关注公众号