def _create_form(request):
    _ = request.getText
    url = request.page.url(request)
    ret = html.FORM(action=url)
    ret.append(html.INPUT(type='hidden', name='action', value='recoverpass'))
    lang_attr = request.theme.ui_lang_attr()
    ret.append(html.Raw('<div class="userpref"%s>' % lang_attr))
    tbl = html.TABLE(border="0")
    ret.append(tbl)
    ret.append(html.Raw('</div>'))

    row = html.TR()
    tbl.append(row)
    row.append(html.TD().append(html.STRONG().append(html.Text(
        _("Username")))))
    row.append(html.TD().append(html.INPUT(type="text", size="36",
                                           name="name")))

    row = html.TR()
    tbl.append(row)
    row.append(html.TD().append(html.STRONG().append(html.Text(_("Email")))))
    row.append(html.TD().append(
        html.INPUT(type="text", size="36", name="email")))

    row = html.TR()
    tbl.append(row)
    row.append(html.TD())
    td = html.TD()
    row.append(td)
    td.append(
        html.INPUT(type="submit",
                   name="account_sendmail",
                   value=_('Mail me my account data')))

    return unicode(ret)
def _create_token_form(request, name=None, token=None):
    _ = request.getText
    url = request.page.url(request)
    ret = html.FORM(action=url)
    ret.append(html.INPUT(type='hidden', name='action', value='recoverpass'))
    lang_attr = request.theme.ui_lang_attr()
    ret.append(html.Raw('<div class="userpref"%s>' % lang_attr))
    tbl = html.TABLE(border="0")
    ret.append(tbl)
    ret.append(html.Raw('</div>'))

    row = html.TR()
    tbl.append(row)
    row.append(html.TD().append(html.STRONG().append(
        html.Text(_("Recovery token")))))
    value = token or ''
    row.append(html.TD().append(
        html.INPUT(type='text', size="36", name="token", value=value)))

    row = html.TR()
    tbl.append(row)
    row.append(html.TD().append(html.STRONG().append(html.Text(
        _("Username")))))
    value = name or ''
    row.append(html.TD().append(
        html.INPUT(type='text', size="36", name="name", value=value)))

    row = html.TR()
    tbl.append(row)
    row.append(html.TD().append(html.STRONG().append(
        html.Text(_("New password")))))
    row.append(html.TD().append(
        html.INPUT(type="password", size="36", name="password")))

    row = html.TR()
    tbl.append(row)
    row.append(html.TD().append(html.STRONG().append(
        html.Text(_("New password (repeat)")))))
    row.append(html.TD().append(
        html.INPUT(type="password", size="36", name="password_repeat")))

    row = html.TR()
    tbl.append(row)
    row.append(html.TD())
    td = html.TD()
    row.append(td)
    td.append(
        html.INPUT(type="submit", name="recover",
                   value=_('Reset my password')))

    return unicode(ret)
Exemple #3
0
    def create_form(self):
        """ Create the complete HTML form code. """
        _ = self._
        form = self.make_form(
            html.Text(
                _('As a superuser, you can temporarily '
                  'assume the identity of another user.')))

        ticket = wikiutil.createTicket(self.request)
        self.make_row(_('Select User'), [self._user_select()], valign="top")
        form.append(
            html.INPUT(type="hidden", name="ticket", value="%s" % ticket))
        if not self._only:
            buttons = [
                html.INPUT(type="submit",
                           name="select_user",
                           value=_('Select User')),
                ' ',
            ]
        else:
            buttons = []
        buttons.append(
            html.INPUT(type="submit", name="cancel", value=_('Cancel')))
        self.make_row('', buttons)
        return unicode(form)
Exemple #4
0
def makeSelection(name,
                  values,
                  selectedval=None,
                  size=1,
                  multiple=False,
                  enabled=True):
    """ Make a HTML <select> element named `name` from a value list.
        The list can either be a list of strings, or a list of
        (value, label) tuples.

        `selectedval` is the value that should be pre-selected.
    """
    from MoinMoin.widget import html
    result = html.SELECT(name=name,
                         size="%d" % int(size),
                         multiple=multiple,
                         disabled=not enabled)
    for val in values:
        if not isinstance(val, type(())):
            val = (val, val)
        result.append(
            html.OPTION(value=val[0], selected=(val[0] == selectedval)).append(
                html.Text(val[1])))

    return result
Exemple #5
0
    def create_form(self, create_only=False, recover_only=False):
        """ Create the complete HTML form code. """
        _ = self._
        form = self.make_form(
            html.Text(
                _("To change your password, "
                  "enter a new password twice.")))

        self.make_row(_('Password'),
                      [html.INPUT(type="password", size=36, name="password1")])
        self.make_row(_('Password repeat'),
                      [html.INPUT(type="password", size=36, name="password2")])

        ticket = wikiutil.createTicket(self.request)
        form.append(
            html.INPUT(type="hidden", name="ticket", value="%s" % ticket))

        # Add buttons
        self.make_row('', [
            html.INPUT(type="submit", name='save', value=_("Change password")),
            ' ',
            html.INPUT(type="submit", name='cancel', value=_("Cancel")),
        ])

        return unicode(form)
Exemple #6
0
    def testCompositeElements(self):
        """widget.html: append to and extend composite element"""
        html._SORT_ATTRS = 1
        element = html.P()

        actions = (
            # action, data, expected
            (element.append, html.Text('Text & '), '<p>Text &amp; </p>'),
            (element.append, html.Text('more text. '),
             '<p>Text &amp; more text. </p>'),
            (element.extend, (html.Text('And then '), html.Text('some.')),
             '<p>Text &amp; more text. And then some.</p>'),
        )

        for action, data, expected in actions:
            action(data)
            result = unicode(element)
            assert result == expected
Exemple #7
0
def _create_prefs_page(request, sel=None):
    _ = request.getText
    plugins = wikiutil.getPlugins('userprefs', request.cfg)
    ret = html.P()
    ret.append(html.Text(_("Please choose:")))
    ret.append(html.BR())
    items = html.UL()
    ret.append(items)
    for sub in plugins:
        if sub in request.cfg.userprefs_disabled:
            continue
        cls = wikiutil.importPlugin(request.cfg, 'userprefs', sub, 'Settings')
        obj = cls(request)
        if not obj.allowed():
            continue
        url = request.page.url(request, {'action': 'userprefs', 'sub': sub})
        lnk = html.LI().append(html.A(href=url).append(html.Text(obj.title)))
        items.append(lnk)
    return unicode(ret)
Exemple #8
0
 def _oidlist(self):
     _ = self.request.getText
     form = self._make_form()
     for oid in self.request.user.openids:
         name = "rm-%s" % hash_new('sha1', oid).hexdigest()
         form.append(html.INPUT(type="checkbox", name=name, id=name))
         form.append(html.LABEL(for_=name).append(html.Text(oid)))
         form.append(html.BR())
     self._make_row(_("Current OpenIDs"), [form], valign='top')
     label = _("Remove selected")
     form.append(html.BR())
     form.append(html.INPUT(type="submit", name="remove", value=label))
Exemple #9
0
def _create_form(request):
    _ = request.getText
    url = request.page.url(request)
    ret = html.FORM(action=url)
    ret.append(
        html.INPUT(type='hidden', name='action', value='CreateNewAccount'))
    lang_attr = request.theme.ui_lang_attr()
    ret.append(html.Raw('<div class="userpref"%s>' % lang_attr))
    tbl = html.TABLE(border="0")
    ret.append(tbl)
    ret.append(html.Raw('</div>'))

    row = html.TR()
    tbl.append(row)
    row.append(html.TD().append(html.STRONG().append(html.Text(_("Name")))))
    cell = html.TD()
    row.append(cell)
    cell.append(html.INPUT(type="text", size="36", name="name"))
    cell.append(html.Text(' ' + _("(Use FirstnameLastname)")))

    row = html.TR()
    tbl.append(row)
    row.append(html.TD().append(html.STRONG().append(html.Text(
        _("Password")))))
    row.append(html.TD().append(
        html.INPUT(type="password", size="36", name="password1")))

    row = html.TR()
    tbl.append(row)
    row.append(html.TD().append(html.STRONG().append(
        html.Text(_("Password repeat")))))
    row.append(html.TD().append(
        html.INPUT(type="password", size="36", name="password2")))

    row = html.TR()
    tbl.append(row)
    row.append(html.TD().append(html.STRONG().append(html.Text(_("Email")))))
    row.append(html.TD().append(
        html.INPUT(type="text", size="36", name="email")))

    textcha = TextCha(request)
    if textcha.is_enabled():
        row = html.TR()
        tbl.append(row)
        row.append(html.TD().append(html.STRONG().append(
            html.Text(_('TextCha (required)')))))
        td = html.TD()
        if textcha:
            td.append(textcha.render())
        row.append(td)

    row = html.TR()
    tbl.append(row)
    row.append(html.TD())
    td = html.TD()
    row.append(td)
    td.append(
        html.INPUT(type="submit", name="create", value=_('Create Profile')))

    return unicode(ret)
Exemple #10
0
 def _trust_root_list(self):
     _ = self.request.getText
     form = self._make_form()
     for root in self.request.user.openid_trusted_roots:
         display = base64.decodestring(root)
         name = 'rm-%s' % root
         form.append(html.INPUT(type="checkbox", name=name, id=name))
         form.append(html.LABEL(for_=name).append(html.Text(display)))
         form.append(html.BR())
     self._make_row(_("Trusted websites"), [form], valign='top')
     label = _("Remove selected")
     form.append(html.BR())
     form.append(html.INPUT(type="submit", name="remove", value=label))
Exemple #11
0
    def create_form(self):
        """ Create the complete HTML form code. """
        _ = self._
        self._form = self.make_form(
            _('Select the events you want to be notified about.'))

        self._form.append(
            html.INPUT(type="hidden", name="action", value="userprefs"))
        self._form.append(
            html.INPUT(type="hidden", name="handler", value="prefs"))

        ticket = wikiutil.createTicket(self.request)
        self._form.append(
            html.INPUT(type="hidden", name="ticket", value="%s" % ticket))

        if (not (self.cfg.mail_enabled and self.request.user.email)
                and not (self.cfg.jabber_enabled and self.request.user.jid)):
            self.make_row('', [
                html.Text(
                    _("Before you can be notified, you need to provide a way"
                      " to contact you in the general preferences."))
            ])
            self.make_row(
                '',
                [html.INPUT(type="submit", name="cancel", value=_("Cancel"))])
            return unicode(self._form)

        self.make_row(_('Subscribed events'), [self._event_select()])

        # Get list of subscribe pages, DO NOT sort! it should
        # stay in the order the user entered it in his input
        # box.
        notifylist = self.request.user.getSubscriptionList()

        self.make_row(html.Raw(
            _('Subscribed wiki pages<<BR>>(one regex per line)', wiki=True)), [
                html.TEXTAREA(name="subscribed_pages", rows="6",
                              cols="50").append('\n'.join(notifylist)),
            ],
                      valign="top")

        # Add buttons
        self.make_row('', [
            html.INPUT(type="submit", name="save", value=_("Save")), ' ',
            html.INPUT(type="submit", name="cancel", value=_("Cancel"))
        ])

        return unicode(self._form)
Exemple #12
0
    def testCreate(self):
        """widget.html: creating html widgets

        TO DO: add tests for all elements by HTML 4 spec.
        """
        tests = (
            # description, call, expected
            ('Create text', html.Text('<br> &'), '&lt;br&gt; &amp;'),
            ('Create raw html', html.Raw('<br> &amp;'), '<br> &amp;'),
            ('Create br', html.BR(), '<br>'),
            ('Create hr', html.HR(), '<hr>'),
            ('Create p', html.P(), '<p></p>'),
        )

        for description, obj, expected in tests:
            result = unicode(obj)
            assert result == expected
Exemple #13
0
    def create_form(self, create_only=False, recover_only=False):
        r = self.request
        ss = self.cfg.session_service
        format_time = lambda x: self.request.user.getFormattedDateTime(
            x) if x else x

        form = self.make_form(html.Text("Active sessions for your account"))
        ticket = wikiutil.createTicket(self.request)
        form.append(
            html.INPUT(type="hidden", name="ticket", value="%s" % ticket))

        self._table.append(html.TR().extend([
            html.TD().extend([""]),
            html.TD().extend([html.B().append("From IP")]),
            html.TD().extend([html.B().append("Login Date")]),
            html.TD().extend([html.B().append("Expiration")]),
            html.TD().extend([html.B().append("User Agent")]),
        ]))

        for sid in ss.get_all_session_ids(r):
            session = ss.get_session(r, sid)

            if session.get("user.id") != r.user.id:
                continue

            self._table.append(html.TR().extend([
                html.TD().extend(
                    [html.INPUT(type="checkbox", name="session.%s" % sid)]),
                html.TD().extend([session.get("from_ip")]),
                html.TD().extend([format_time(session.get("started"))]),
                html.TD().extend([format_time(session.get("expires"))]),
                html.TD().extend([session.get("from_ua")]),
            ]))

        form.append(
            unicode(
                html.INPUT(type="submit", name='save',
                           value="Delete Sessions")))
        form.append(
            unicode(html.INPUT(type="submit", name='cancel', value="Cancel")))

        #form.append(repr(r.in_headers))

        return unicode(form)
    def show_decide_page(self, identity, username, openidreq):
        request = self.request
        _ = self._

        if not request.user.valid or username != request.user.name:
            request.makeForbidden(403, _('''You need to manually go to your OpenID provider wiki
and log in before you can use your OpenID. MoinMoin will
never allow you to enter your password here.

Once you have logged in, simply reload this page.'''))
            return

        request.theme.send_title(_("OpenID Trust verification"), pagename=request.page.page_name)
        # Start content (important for RTL support)
        request.write(request.formatter.startContent("content"))

        request.write(request.formatter.paragraph(1))
        request.write(_('The site %s has asked for your identity.') % openidreq.trust_root)
        request.write(request.formatter.paragraph(0))
        request.write(request.formatter.paragraph(1))
        request.write(_('''
If you approve, the site represented by the trust root below will be
told that you control the identity URL %s. (If you are using a delegated
identity, the site will take care of reversing the
delegation on its own.)''') % openidreq.identity)
        request.write(request.formatter.paragraph(0))

        form = html.FORM(method='POST', action=request.page.url(request))
        form.append(html.INPUT(type='hidden', name='action', value='serveopenid'))
        form.append(html.INPUT(type='hidden', name='openid.identity', value=openidreq.identity))
        form.append(html.INPUT(type='hidden', name='openid.return_to', value=openidreq.return_to))
        form.append(html.INPUT(type='hidden', name='openid.trust_root', value=openidreq.trust_root))
        form.append(html.INPUT(type='hidden', name='openid.mode', value=openidreq.mode))
        form.append(html.INPUT(type='hidden', name='name', value=username))

        nonce = randomString(32, 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789')
        form.append(html.INPUT(type='hidden', name='nonce', value=nonce))
        request.session['openidserver.nonce'] = nonce

        table = html.TABLE()
        form.append(table)

        tr = html.TR()
        table.append(tr)
        tr.append(html.TD().append(html.STRONG().append(html.Text(_('Trust root')))))
        tr.append(html.TD().append(html.Text(openidreq.trust_root)))

        tr = html.TR()
        table.append(tr)
        tr.append(html.TD().append(html.STRONG().append(html.Text(_('Identity URL')))))
        tr.append(html.TD().append(html.Text(identity)))

        tr = html.TR()
        table.append(tr)
        tr.append(html.TD().append(html.STRONG().append(html.Text(_('Name')))))
        tr.append(html.TD().append(html.Text(username)))

        tr = html.TR()
        table.append(tr)
        tr.append(html.TD().append(html.STRONG().append(html.Text(_('Remember decision')))))
        td = html.TD()
        tr.append(td)
        td.append(html.INPUT(type='checkbox', name='remember', value='yes'))
        td.append(html.Text(_('Remember this trust decision and don\'t ask again')))

        tr = html.TR()
        table.append(tr)
        tr.append(html.TD())
        td = html.TD()
        tr.append(td)

        td.append(html.INPUT(type='submit', name='approve', value=_("Approve")))
        td.append(html.INPUT(type='submit', name='dontapprove', value=_("Don't approve")))

        request.write(unicode(form))

        request.write(request.formatter.endContent())
        request.theme.send_footer(request.page.page_name)
        request.theme.send_closing_html()