Exemplo n.º 1
0
    def get_edit_links(self, request):
        """ Yields the edit links shown on the private view of this trait. """

        if self.editable:
            yield Link(
                _("Edit"),
                request.link(Editor('edit', self)),
                classes=('edit-link', )
            )
            yield Link(
                _("Copy"),
                request.link(Clipboard.from_url(request, request.path_info)),
                classes=('copy-link', )
            )

        if request.browser_session.has('clipboard_url'):

            yield Link(
                _("Paste"),
                request.link(Editor('paste', self.paste_target)),
                classes=('paste-link', 'show-new-content-placeholder'),
            )

        if self.deletable:

            trait_messages = self.trait_messages[self.trait]
            safe_delete = False if self.children else True

            if safe_delete or request.current_role == 'admin':

                if not safe_delete:
                    extra_warning = _(
                        "Please note that this page has subpages "
                        "which will also be deleted!"
                    )
                else:
                    extra_warning = ""

                yield DeleteLink(
                    _("Delete"), request.link(self),
                    confirm=_(trait_messages['delete_question'], mapping={
                        'title': self.title
                    }),
                    yes_button_text=trait_messages['delete_button'],
                    extra_information=extra_warning,
                    redirect_after=request.link(self.parent)
                )
            else:
                yield DeleteLink(
                    text=_("Delete"),
                    url=request.link(self),
                    confirm=_("This page can't be deleted."),
                    extra_information=_(
                        "This page has subpages. Only administrators can "
                        "delete pages with subpages. To delete this page, "
                        "delete all subpages first or ask an administrator "
                        "to do it for you."
                    )
                )
Exemplo n.º 2
0
def get_form_class(editor, request):

    src = Clipboard.from_session(request).get_object()

    if src and editor.action == 'paste':
        if src and src.trait in editor.page.allowed_subtraits:
            return editor.page.get_form_class(src.trait, request)

    return editor.page.get_form_class(editor.trait, request)
Exemplo n.º 3
0
def handle_page_form(self, request, form):
    if self.action == 'new':
        return handle_new_page(self, request, form)
    elif self.action == 'edit':
        return handle_edit_page(self, request, form)
    elif self.action == 'paste':
        clipboard = Clipboard.from_session(request)
        src = clipboard.get_object()
        clipboard.clear()

        return handle_new_page(self, request, form, src)
    else:
        raise NotImplementedError
Exemplo n.º 4
0
def test_clipboard(town_app):

    request = CoreRequest(environ={
        'PATH_INFO': '/',
        'SERVER_NAME': '',
        'SERVER_PORT': '',
        'SERVER_PROTOCOL': 'https'
    }, app=town_app)

    clipboard = Clipboard.from_url(request, 'https://google.ch')
    assert clipboard.url == 'https://google.ch'

    clipboard.store_in_session()
    assert clipboard.from_session(clipboard.request).url == 'https://google.ch'

    clipboard.clear()
    assert clipboard.from_session(clipboard.request).url is None

    clipboard = Clipboard(request, clipboard.token + 'x')
    assert clipboard.url is None