2017-03-31 15:29:28 +00:00
|
|
|
from django.contrib import admin
|
2018-07-02 21:52:52 +00:00
|
|
|
from .models import Team, TeamMember, TeamTask, TeamShift
|
2017-05-21 18:15:27 +00:00
|
|
|
from .email import add_added_membership_email, add_removed_membership_email
|
2018-03-04 11:04:07 +00:00
|
|
|
from camps.utils import CampPropertyListFilter
|
2017-03-31 15:29:28 +00:00
|
|
|
|
2017-04-14 14:11:43 +00:00
|
|
|
|
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 = [
|
2018-03-04 11:04:07 +00:00
|
|
|
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-14 14:11:43 +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"]
|
2017-04-14 14:11:43 +00:00
|
|
|
|
2017-04-19 22:46:40 +00:00
|
|
|
def approve_membership(self, request, queryset):
|
2019-06-16 12:32:24 +00:00
|
|
|
teams_count = queryset.values("team").distinct().count()
|
2017-04-18 18:46:57 +00:00
|
|
|
updated = 0
|
|
|
|
|
|
|
|
for membership in queryset:
|
|
|
|
membership.approved = True
|
|
|
|
membership.save()
|
|
|
|
updated += 1
|
2017-05-21 18:15:27 +00:00
|
|
|
add_added_membership_email(membership)
|
2017-04-18 18:46:57 +00:00
|
|
|
|
2017-04-14 14:11:43 +00:00
|
|
|
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
|
|
|
|
),
|
2017-04-14 14:11:43 +00:00
|
|
|
)
|
2019-06-16 12:32:24 +00:00
|
|
|
|
|
|
|
approve_membership.description = "Approve membership."
|
2017-04-14 14:11:43 +00:00
|
|
|
|
|
|
|
def remove_member(self, request, queryset):
|
2019-06-16 12:32:24 +00:00
|
|
|
teams_count = queryset.values("team").distinct().count()
|
2017-04-18 18:46:57 +00:00
|
|
|
updated = 0
|
|
|
|
|
|
|
|
for membership in queryset:
|
2017-05-21 18:15:27 +00:00
|
|
|
add_removed_membership_email(membership)
|
2017-04-18 18:46:57 +00:00
|
|
|
membership.delete()
|
|
|
|
updated += 1
|
|
|
|
|
2017-04-14 14:11:43 +00:00
|
|
|
self.message_user(
|
2019-06-16 12:32:24 +00:00
|
|
|
request, "Removed {} user(s) from {} team(s).".format(updated, teams_count)
|
2017-04-14 14:11:43 +00:00
|
|
|
)
|
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"]
|