def action_delete_accounts(self, request, users): for user in users: if user == request.user: raise generic.MassActionError(_("You can't delete yourself.")) if user.is_staff or user.is_superuser: message = _("%(user)s is admin and can't be deleted.") % {'user': user.username} raise generic.MassActionError(message) for user in users: user.delete() message = _("Selected users have been deleted.") messages.success(request, message)
def action_delete_all(self, request, users): for user in users: if user == request.user: raise generic.MassActionError(_("You can't delete yourself.")) if user.is_staff or user.is_superuser: message = _("%(user)s is admin and can't be deleted.") % {'user': user.username} raise generic.MassActionError(message) return self.render( request, template='misago/admin/users/delete.html', context={ 'users': users, }, )
def action_activate(self, request, users): inactive_users = [] for user in users: if user.requires_activation: inactive_users.append(user) if not inactive_users: message = _("You have to select inactive users.") raise generic.MassActionError(message) else: activated_users_pks = [u.pk for u in inactive_users] queryset = User.objects.filter(pk__in=activated_users_pks) queryset.update(requires_activation=ACTIVATION_REQUIRED_NONE) mail_subject = _("Your account on %(forum_title)s " "forums has been activated") subject_formats = {'forum_title': settings.forum_name} mail_subject = mail_subject % subject_formats mail_subject = mail_subject mail_users(request, inactive_users, mail_subject, 'misago/emails/activation/by_admin') message = _("Selected users accounts have been activated.") messages.success(request, message)
def action_ban(self, request, users): users = users.order_by('slug') for user in users: if user.is_superuser: message = _("%(user)s is super admin and can't be banned.") mesage = message % {'user': user.username} raise generic.MassActionError(mesage) form = BanUsersForm() if 'finalize' in request.POST: form = BanUsersForm(request.POST) if form.is_valid(): for user in users: Ban.objects.create( banned_value=user.username, user_message=form.cleaned_data.get('user_message'), staff_message=form.cleaned_data.get('staff_message'), valid_until=form.cleaned_data.get('valid_until') ) Ban.objects.invalidate_cache() message = _("Selected users have been banned.") messages.success(request, message) return None return self.render( request, template='misago/admin/users/ban_users.html', context={ 'users': users, 'form': form, })
def action_delete_all(self, request, users): for user in users: if user.is_staff or user.is_superuser: message = _("%(user)s is admin and can't be deleted.") mesage = message % {'user': user.username} raise generic.MassActionError(mesage) for user in users: user.delete(delete_content=True) message = _("Selected users and their content has been deleted.") messages.success(request, message)
def action_delete_all(self, request, users): return self.render( request, template='misago/admin/users/delete.html', context={ 'users': users, }) for user in users: if user.is_staff or user.is_superuser: message = _("%(user)s is admin and can't be deleted.") mesage = message % {'user': user.username} raise generic.MassActionError(mesage) for user in users: user.delete(delete_content=True) message = _("Selected users and their content has been deleted.") messages.success(request, message)
def action_ban(self, request, users): users = users.order_by('slug') for user in users: if user.is_superuser: message = _("%(user)s is super admin and can't be banned.") mesage = message % {'user': user.username} raise generic.MassActionError(mesage) form = BanUsersForm() if 'finalize' in request.POST: form = BanUsersForm(request.POST) if form.is_valid(): cleaned_data = form.cleaned_data banned_values = [] ban_kwargs = { 'user_message': cleaned_data.get('user_message'), 'staff_message': cleaned_data.get('staff_message'), 'expires_on': cleaned_data.get('expires_on'), } for user in users: for ban in cleaned_data['ban_type']: if ban == 'usernames': check_type = Ban.USERNAME banned_value = user.username.lower() if ban == 'emails': check_type = Ban.EMAIL banned_value = user.email.lower() if ban == 'domains': check_type = Ban.EMAIL banned_value = user.email.lower() at_pos = banned_value.find('@') banned_value = '*%s' % banned_value[at_pos:] if ban == 'ip': check_type = Ban.IP banned_value = user.joined_from_ip if ban in ('ip_first', 'ip_two'): check_type = Ban.IP if ':' in user.joined_from_ip: ip_separator = ':' if '.' in user.joined_from_ip: ip_separator = '.' bits = user.joined_from_ip.split(ip_separator) if ban == 'ip_first': formats = (bits[0], ip_separator) if ban == 'ip_two': formats = (bits[0], ip_separator, bits[1], ip_separator) banned_value = '%s*' % (''.join(formats)) if banned_value not in banned_values: ban_kwargs.update({ 'check_type': check_type, 'banned_value': banned_value, }) Ban.objects.create(**ban_kwargs) banned_values.append(banned_value) Ban.objects.invalidate_cache() messages.success(request, _("Selected users have been banned.")) return None return self.render( request, template='misago/admin/users/ban.html', context={ 'users': users, 'form': form, } )