bornhack-website/src/teams/admin.py

95 lines
2.5 KiB
Python
Raw Normal View History

from django.contrib import admin
from camps.utils import CampPropertyListFilter
from .email import add_added_membership_email, add_removed_membership_email
from .models import Team, TeamMember, TeamShift, TeamTask
2017-11-23 22:09:14 +00:00
@admin.register(TeamTask)
class TeamTaskAdmin(admin.ModelAdmin):
2019-06-16 12:32:24 +00:00
list_display = ["id", "team", "name", "description"]
2017-11-23 22:09:14 +00:00
2017-11-25 21:35:48 +00:00
class TeamMemberInline(admin.TabularInline):
model = TeamMember
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):
2019-06-16 12:32:24 +00:00
return ", ".join(
[resp.profile.public_credit_name for resp in obj.responsible_members.all()]
)
get_responsible.short_description = "Responsible"
2017-04-08 07:39:43 +00:00
list_display = [
2019-06-16 12:32:24 +00:00
"name",
"camp",
"get_responsible",
"needs_members",
"public_irc_channel_name",
"public_irc_channel_bot",
"public_irc_channel_managed",
"private_irc_channel_name",
"private_irc_channel_bot",
"private_irc_channel_managed",
2017-04-08 07:39:43 +00:00
]
2017-04-08 07:27:33 +00:00
list_filter = [
CampPropertyListFilter,
2019-06-16 12:32:24 +00:00
"needs_members",
"public_irc_channel_bot",
"public_irc_channel_managed",
"private_irc_channel_bot",
"private_irc_channel_managed",
2017-04-08 07:27:33 +00:00
]
2017-11-25 21:35:48 +00:00
inlines = [TeamMemberInline]
2017-04-08 07:27:33 +00:00
2017-04-08 07:27:33 +00:00
@admin.register(TeamMember)
class TeamMemberAdmin(admin.ModelAdmin):
2019-06-16 12:32:24 +00:00
list_filter = [CampPropertyListFilter, "team", "approved"]
2017-04-08 07:27:33 +00:00
2019-06-16 12:32:24 +00:00
actions = ["approve_membership", "remove_member"]
def approve_membership(self, request, queryset):
2019-06-16 12:32:24 +00:00
teams_count = queryset.values("team").distinct().count()
updated = 0
for membership in queryset:
membership.approved = True
membership.save()
updated += 1
add_added_membership_email(membership)
self.message_user(
request,
2019-06-16 12:32:24 +00:00
"Membership(s) approved: Added {} user(s) to {} team(s).".format(
updated, teams_count
),
)
2019-06-16 12:32:24 +00:00
approve_membership.description = "Approve membership."
def remove_member(self, request, queryset):
2019-06-16 12:32:24 +00:00
teams_count = queryset.values("team").distinct().count()
updated = 0
for membership in queryset:
add_removed_membership_email(membership)
membership.delete()
updated += 1
self.message_user(
2019-06-16 12:32:24 +00:00
request, "Removed {} user(s) from {} team(s).".format(updated, teams_count)
)
2017-08-13 15:21:00 +00:00
2019-06-16 12:32:24 +00:00
remove_member.description = "Remove a user from the team."
2017-08-13 15:21:00 +00:00
2018-07-02 21:52:52 +00:00
@admin.register(TeamShift)
class TeamShiftAdmin(admin.ModelAdmin):
2019-06-16 12:32:24 +00:00
list_filter = ["team"]