bornhack-website/src/teams/admin.py

73 lines
1.8 KiB
Python
Raw Normal View History

from django.contrib import admin
2017-04-02 16:04:57 +00:00
from .models import Team, TeamArea, TeamMember
from .email import send_add_membership_email, send_remove_membership_email
2017-04-02 16:04:57 +00:00
admin.site.register(TeamArea)
2017-04-08 07:27:33 +00:00
2017-04-08 07:27:33 +00:00
@admin.register(Team)
class TeamAdmin(admin.ModelAdmin):
2017-04-08 07:39:43 +00:00
def get_responsible(self, obj):
return ", ".join([resp.get_full_name() for resp in obj.responsible])
get_responsible.short_description = 'Responsible'
list_display = [
'name',
'area',
'get_responsible',
'needs_members',
]
2017-04-08 07:27:33 +00:00
list_filter = [
'camp',
2017-04-08 07:39:43 +00:00
'needs_members',
2017-04-08 07:27:33 +00:00
]
2017-04-08 07:27:33 +00:00
@admin.register(TeamMember)
class TeamMemberAdmin(admin.ModelAdmin):
list_filter = [
'team',
'approved',
]
actions = ['approve_membership', 'remove_member']
def approve_membership(self, request, queryset):
teams_count = queryset.values('team').distinct().count()
updated = 0
for membership in queryset:
membership.approved = True
membership.save()
updated += 1
send_add_membership_email(membership)
self.message_user(
request,
'Membership(s) approved: Added {} user(s) to {} team(s).'.format(
updated,
teams_count
)
)
2017-04-19 22:49:36 +00:00
approve_membership.description = 'Approve membership.'
def remove_member(self, request, queryset):
teams_count = queryset.values('team').distinct().count()
updated = 0
for membership in queryset:
send_remove_membership_email(membership)
membership.delete()
updated += 1
self.message_user(
request,
'Removed {} user(s) from {} team(s).'.format(
updated,
teams_count
)
)
remove_member.description = 'Remove a user from the team.'