# -*- coding: iso-8859-1 -*- """ MoinMoin - disable user @copyright: 2001-2004 Juergen Hermann , 2003-2007 MoinMoin:ThomasWaldmann 2007 MoinMoin:JohannesBerg @license: GNU GPL, see COPYING for details. """ from MoinMoin import user, util, wikiutil from MoinMoin.widget import html from MoinMoin.userprefs import UserPrefBase class Settings(UserPrefBase): def __init__(self, request): """ Initialize disable user form. """ UserPrefBase.__init__(self, request) self.request = request self._ = request.getText self.cfg = request.cfg _ = self._ self.title = _("Disable user") self.name = 'disableuser' def allowed(self): return (self.request.user.auth_method in self.request.cfg.auth_can_logout and UserPrefBase.allowed(self) and self.request.user.isSuperUser()) def handle_form(self): _ = self._ form = self.request.form if 'cancel' in form: return None if (wikiutil.checkTicket(self.request, self.request.form['ticket']) and self.request.method == 'POST'): uid = form.get('selected_user', '') if not uid: return 'error', _("No user selected") theuser = user.User(self.request, uid, auth_method='setuid') if not theuser or not theuser.exists(): return 'error', _("No user selected") theuser.disabled = 1 theuser.save() return _("User disabled.") else: return None def _user_select(self): options = [] users = user.getUserList(self.request) current_uid = self.request.user.id for uid in users: if uid != current_uid: name = user.User(self.request, id=uid).name options.append((uid, name)) options.sort(lambda x, y: cmp(x[1].lower(), y[1].lower())) if not options: _ = self._ self._only = True return _("You are the only user.") self._only = False size = min(10, len(options)) return util.web.makeSelection('selected_user', options, current_uid, size=size) def create_form(self): """ Create the complete HTML form code. """ _ = self._ form = self.make_form(html.Text(_('As a superuser, you can permanently disable other accounts.'))) 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)