# -*- encoding: utf-8 -*- """ Created on 19.09.2011 @author: christian """ # import stuff we need from django from django.contrib import admin from django.utils.translation import ugettext as _ from . import models, set_dirty from forms import PlayerFormSet def recalculate(modeladmin, request, queryset): if isinstance(modeladmin, HanchanAdmin): for hanchan in queryset: hanchan.save() elif isinstance(modeladmin, EventRankingAdmin): for event_ranking in queryset: set_dirty(event=event_ranking.event_id, user=event_ranking.user_id) elif isinstance(modeladmin, KyuDanAdmin): for kyu_dan_ranking in queryset: set_dirty(user=kyu_dan_ranking.user_id) elif isinstance(modeladmin, LadderSeasonAdmin): for ranking_season in queryset: set_dirty(season=ranking_season.id) elif isinstance(modeladmin, LadderRankingAdmin): for ladder_ranking in queryset: set_dirty(user=ladder_ranking.user_id, season=ladder_ranking.season_id) # @IgnorePep8 recalculate.short_description = _("Recalculate") class PlayerInline(admin.TabularInline): extra = 4 formset = PlayerFormSet readonly_fields = ('placement', 'kyu_points', 'dan_points', 'bonus_points', 'comment',) max_num = 4 model = models.Player class EventRankingAdmin(admin.ModelAdmin): list_filter = ['event'] list_display = ('placement', 'user', 'event', 'avg_placement', 'avg_score', 'hanchan_count', 'good_hanchans', 'won_hanchans', 'dirty') list_display_links = ('user',) actions = [recalculate] class HanchanAdmin(admin.ModelAdmin): actions = [recalculate] date_hierarchy = 'start' list_filter = ['season', 'event'] list_display = ('event', 'start', 'player_names', 'comment', 'confirmed', 'valid', 'check_validity') inlines = (PlayerInline,) readonly_fields = ('valid', 'check_validity') def save_formset(self, request, form, formset, change): formset.save() form.is_valid() form.save() class KyuDanAdmin(admin.ModelAdmin): actions = [recalculate] list_display = ('user', 'kyu', 'kyu_points', 'dan', 'dan_points', 'hanchan_count', 'dirty') class LadderRankingAdmin(admin.ModelAdmin): actions = [recalculate] list_display = ('placement', 'season', 'user', 'avg_placement', 'avg_score', 'hanchan_count', 'good_hanchans', 'won_hanchans', 'dirty') list_display_links = ('user',) list_filter = ('season',) class LadderSeasonAdmin(admin.ModelAdmin): actions = [recalculate] list_display = ('name', 'start', 'end', 'dirty') admin.site.register(models.EventRanking, EventRankingAdmin) admin.site.register(models.Hanchan, HanchanAdmin) admin.site.register(models.KyuDanRanking, KyuDanAdmin) admin.site.register(models.LadderSeason, LadderSeasonAdmin) admin.site.register(models.LadderRanking, LadderRankingAdmin)