|
1 | | -from django.contrib import admin |
| 1 | +from django.contrib import admin, messages |
2 | 2 | from django.contrib.admin import SimpleListFilter |
3 | | -from django.db.models import Count |
| 3 | +from django.db.models import Count, Q |
4 | 4 | from django.utils.safestring import mark_safe |
5 | 5 | from django.utils.translation import ugettext_lazy as _ |
6 | 6 |
|
|
33 | 33 | admin.site.register(Country) |
34 | 34 |
|
35 | 35 |
|
| 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 | + |
36 | 45 | def countFilter(field_name): |
37 | 46 | class CountFilter(SimpleListFilter): |
38 | 47 | title = "%s Count" % field_name.title() |
@@ -186,6 +195,22 @@ class TeamAdmin(admin.ModelAdmin): |
186 | 195 | ) |
187 | 196 | ordering = ("-created_date",) |
188 | 197 |
|
| 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 | + |
189 | 214 | def member_count(self, team): |
190 | 215 | return team.members.all().count() |
191 | 216 |
|
@@ -268,6 +293,22 @@ class EventAdmin(admin.ModelAdmin): |
268 | 293 | ) |
269 | 294 | ordering = ("-start_time",) |
270 | 295 |
|
| 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 | + |
271 | 312 | def attendee_count(self, event): |
272 | 313 | return event.attendees.all().count() |
273 | 314 |
|
|
0 commit comments