def suspend(request, id): user = get_object_or_404(User, id=id) if not request.user.is_superuser: raise decorators.CommandException(_("Only superusers can suspend other users")) if not request.POST.get('bantype', None): if user.is_suspended(): suspension = user.suspension suspension.cancel(user=request.user, ip=request.META['REMOTE_ADDR']) return decorators.RefreshPageCommand() else: return render_to_response('users/suspend_user.html') data = { 'bantype': request.POST.get('bantype', 'Indefinitely').strip(), 'publicmsg': request.POST.get('publicmsg', _('Bad behaviour')), 'privatemsg': request.POST.get('privatemsg', None) or request.POST.get('publicmsg', ''), 'suspended': user } if data['bantype'] == 'forxdays': try: data['forxdays'] = int(request.POST['forxdays']) except: raise decorators.CommandException(_('Invalid numeric argument for the number of days.')) SuspendAction(user=request.user, ip=request.META['REMOTE_ADDR']).save(data=data) return decorators.RefreshPageCommand()
def user_powers(request, id, action, status): if not request.user.is_superuser: raise decorators.CommandException(_("Only superusers are allowed to alter other users permissions.")) if (action == 'remove' and 'status' == 'super') and not request.user.is_siteowner(): raise decorators.CommandException(_("Only the site owner can remove the super user status from other user.")) user = get_object_or_404(User, id=id) new_state = action == 'grant' if status == 'super': user.is_superuser = new_state elif status == 'staff': user.is_staff = new_state else: raise Http404() user.save() return decorators.RefreshPageCommand()
def award_points(request, id): if not request.POST: return render_to_response('users/karma_bonus.html') if not request.user.is_superuser: raise decorators.CommandException(_("Only superusers are allowed to award reputation points")) try: points = int(request.POST['points']) except: raise decorators.CommandException(_("Invalid number of points to award.")) user = get_object_or_404(User, id=id) extra = dict(message=request.POST.get('message', ''), awarding_user=request.user.id, value=points) BonusRepAction(user=request.user, extra=extra).save(data=dict(value=points, affected=user)) return {'commands': { 'update_profile_karma': [user.reputation] }}