mirror of
				https://gitlab.com/animath/si/plateforme.git
				synced 2025-10-31 15:40:01 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			95 lines
		
	
	
		
			3.5 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			95 lines
		
	
	
		
			3.5 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| # Copyright (C) 2020 by Animath
 | |
| # SPDX-License-Identifier: GPL-3.0-or-later
 | |
| 
 | |
| from django.contrib import admin
 | |
| from django.utils.translation import gettext_lazy as _
 | |
| 
 | |
| from .models import Draw, Pool, Round, TeamDraw
 | |
| 
 | |
| 
 | |
| class RoundInline(admin.TabularInline):
 | |
|     model = Round
 | |
|     extra = 0
 | |
|     autocomplete_fields = ('draw', 'current_pool',)
 | |
|     show_change_link = True
 | |
| 
 | |
| 
 | |
| class PoolInline(admin.TabularInline):
 | |
|     model = Pool
 | |
|     extra = 0
 | |
|     autocomplete_fields = ('round', 'current_team', 'associated_pool',)
 | |
|     show_change_link = True
 | |
| 
 | |
| 
 | |
| class TeamDrawInline(admin.TabularInline):
 | |
|     model = TeamDraw
 | |
|     extra = 0
 | |
|     autocomplete_fields = ('participation', 'round', 'pool',)
 | |
|     show_change_link = True
 | |
| 
 | |
| 
 | |
| @admin.register(Draw)
 | |
| class DrawAdmin(admin.ModelAdmin):
 | |
|     list_display = ('tournament', 'teams', 'current_round', 'get_state',)
 | |
|     list_filter = ('tournament', 'current_round__number',)
 | |
|     search_fields = ('tournament__name', 'tournament__participation__team__trigram',)
 | |
|     autocomplete_fields = ('tournament',)
 | |
|     inlines = (RoundInline,)
 | |
| 
 | |
|     @admin.display(description=_("teams"))
 | |
|     def teams(self, record: Draw):
 | |
|         return ', '.join(p.team.trigram for p in record.tournament.participations.filter(valid=True).all())
 | |
| 
 | |
| 
 | |
| @admin.register(Round)
 | |
| class RoundAdmin(admin.ModelAdmin):
 | |
|     list_display = ('draw', 'tournament', 'number', 'teams',)
 | |
|     list_filter = ('draw__tournament', 'number',)
 | |
|     search_fields = ('draw__tournament__name', 'pool__teamdraw__participation__team__trigram')
 | |
|     ordering = ('draw__tournament__name', 'number')
 | |
|     autocomplete_fields = ('draw', 'current_pool',)
 | |
|     inlines = (PoolInline,)
 | |
| 
 | |
|     @admin.display(description=_("tournament"), ordering='draw__tournament__name')
 | |
|     def tournament(self, record):
 | |
|         return record.draw.tournament
 | |
| 
 | |
|     @admin.display(description=_("teams"))
 | |
|     def teams(self, record: Round):
 | |
|         return ', '.join(td.participation.team.trigram for td in record.team_draws)
 | |
| 
 | |
| 
 | |
| @admin.register(Pool)
 | |
| class PoolAdmin(admin.ModelAdmin):
 | |
|     list_display = ('tournament', 'round', 'letter', 'teams')
 | |
|     list_filter = ('round__draw__tournament', 'round__number', 'letter')
 | |
|     ordering = ('round__draw__tournament__name', 'round', 'letter')
 | |
|     search_fields = ('round__draw__tournament__name', 'teamdraw__participation__team__trigram',)
 | |
|     autocomplete_fields = ('round', 'current_team', 'associated_pool',)
 | |
|     inlines = (TeamDrawInline,)
 | |
| 
 | |
|     @admin.display(ordering='round__draw__tournament__name', description=_("tournament"))
 | |
|     def tournament(self, record):
 | |
|         return record.round.draw.tournament
 | |
| 
 | |
|     @admin.display(description=_("teams"))
 | |
|     def teams(self, record: Round):
 | |
|         return ', '.join(td.participation.team.trigram for td in record.team_draws)
 | |
| 
 | |
| 
 | |
| @admin.register(TeamDraw)
 | |
| class TeamDrawAdmin(admin.ModelAdmin):
 | |
|     list_display = ('participation', 'tournament', 'view_round', 'pool', 'accepted', 'rejected',
 | |
|                     'passage_index', 'choose_index', 'passage_dice', 'choice_dice',)
 | |
|     list_filter = ('round__draw__tournament', 'round__number', 'pool__letter',)
 | |
|     search_fields = ('round__draw__tournament__name', 'participation__team__trigram',)
 | |
|     autocomplete_fields = ('participation', 'round', 'pool',)
 | |
| 
 | |
|     @admin.display(ordering='round__draw__tournament__name', description=_("tournament"))
 | |
|     def tournament(self, record):
 | |
|         return record.round.draw.tournament
 | |
| 
 | |
|     @admin.display(ordering='round__number', description=_('round'))
 | |
|     def view_round(self, record):
 | |
|         return record.round.get_number_display()
 |