Skip to content

Commit 671208e

Browse files
committed
Add admin actions to easily ban users
1 parent c0440fc commit 671208e

1 file changed

Lines changed: 43 additions & 2 deletions

File tree

events/admin.py

Lines changed: 43 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
from django.contrib import admin
1+
from django.contrib import admin, messages
22
from django.contrib.admin import SimpleListFilter
3-
from django.db.models import Count
3+
from django.db.models import Count, Q
44
from django.utils.safestring import mark_safe
55
from django.utils.translation import ugettext_lazy as _
66

@@ -33,6 +33,15 @@
3333
admin.site.register(Country)
3434

3535

36+
def ban_user(banned_user):
37+
banned_user.is_active = False
38+
banned_user.save()
39+
for team in Team.objects.filter(owner_profile__user=banned_user):
40+
team.access = Team.PRIVATE
41+
team.save()
42+
return True
43+
44+
3645
def countFilter(field_name):
3746
class CountFilter(SimpleListFilter):
3847
title = "%s Count" % field_name.title()
@@ -186,6 +195,22 @@ class TeamAdmin(admin.ModelAdmin):
186195
)
187196
ordering = ("-created_date",)
188197

198+
actions = ("ban_team_owner",)
199+
200+
def ban_team_owner(self, request, queryset):
201+
ban_count = 0
202+
try:
203+
for team in queryset.all():
204+
if ban_user(team.owner_profile.user):
205+
ban_count += 1
206+
self.message_user(request, "%s users banned" % ban_count)
207+
except Exception as e:
208+
self.message_user(
209+
request=request,
210+
message="Error banning users: %s" % e,
211+
level=messages.WARNING,
212+
)
213+
189214
def member_count(self, team):
190215
return team.members.all().count()
191216

@@ -268,6 +293,22 @@ class EventAdmin(admin.ModelAdmin):
268293
)
269294
ordering = ("-start_time",)
270295

296+
actions = ("ban_event_creator",)
297+
298+
def ban_event_creator(self, request, queryset):
299+
ban_count = 0
300+
try:
301+
for event in queryset.all():
302+
if ban_user(event.created_by.user):
303+
ban_count += 1
304+
self.message_user(request, "%s users banned" % ban_count)
305+
except Exception as e:
306+
self.message_user(
307+
request=request,
308+
message="Error banning users: %s" % e,
309+
level=messages.WARNING,
310+
)
311+
271312
def attendee_count(self, event):
272313
return event.attendees.all().count()
273314

0 commit comments

Comments
 (0)