mirror of
				https://gitlab.com/animath/si/plateforme.git
				synced 2025-11-04 05:42:12 +01:00 
			
		
		
		
	Prepare database model
Signed-off-by: Emmy D'Anello <emmy.danello@animath.fr>
This commit is contained in:
		
							
								
								
									
										102
									
								
								draw/models.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										102
									
								
								draw/models.py
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,102 @@
 | 
				
			|||||||
 | 
					# Copyright (C) 2023 by Animath
 | 
				
			||||||
 | 
					# SPDX-License-Identifier: GPL-3.0-or-later
 | 
				
			||||||
 | 
					from django.conf import settings
 | 
				
			||||||
 | 
					from django.db import models
 | 
				
			||||||
 | 
					from django.utils.text import format_lazy
 | 
				
			||||||
 | 
					from django.utils.translation import gettext_lazy as _
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					from participation.models import Participation, Tournament
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class Draw(models.Model):
 | 
				
			||||||
 | 
					    tournament = models.OneToOneField(
 | 
				
			||||||
 | 
					        Tournament,
 | 
				
			||||||
 | 
					        on_delete=models.CASCADE,
 | 
				
			||||||
 | 
					        verbose_name=_('tournament'),
 | 
				
			||||||
 | 
					    )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    class Meta:
 | 
				
			||||||
 | 
					        verbose_name = _('draw')
 | 
				
			||||||
 | 
					        verbose_name_plural = _('draws')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class Round(models.Model):
 | 
				
			||||||
 | 
					    draw = models.ForeignKey(
 | 
				
			||||||
 | 
					        Draw,
 | 
				
			||||||
 | 
					        on_delete=models.CASCADE,
 | 
				
			||||||
 | 
					        verbose_name=_('draw'),
 | 
				
			||||||
 | 
					    )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    number = models.IntegerField(
 | 
				
			||||||
 | 
					        choices=[
 | 
				
			||||||
 | 
					            (1, _('Round 1')),
 | 
				
			||||||
 | 
					            (2, _('Round 2')),
 | 
				
			||||||
 | 
					        ],
 | 
				
			||||||
 | 
					        verbose_name=_('number'),
 | 
				
			||||||
 | 
					    )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def __str__(self):
 | 
				
			||||||
 | 
					        return self.get_number_display()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    class Meta:
 | 
				
			||||||
 | 
					        verbose_name = _('round')
 | 
				
			||||||
 | 
					        verbose_name_plural = _('rounds')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class Pool(models.Model):
 | 
				
			||||||
 | 
					    round = models.ForeignKey(
 | 
				
			||||||
 | 
					        Round,
 | 
				
			||||||
 | 
					        on_delete=models.CASCADE,
 | 
				
			||||||
 | 
					    )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    letter = models.CharField(
 | 
				
			||||||
 | 
					        max_length=1,
 | 
				
			||||||
 | 
					        choices=[
 | 
				
			||||||
 | 
					            ('A', 'A'),
 | 
				
			||||||
 | 
					            ('B', 'B'),
 | 
				
			||||||
 | 
					            ('C', 'C'),
 | 
				
			||||||
 | 
					        ],
 | 
				
			||||||
 | 
					        verbose_name=_('letter'),
 | 
				
			||||||
 | 
					    )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def __str__(self):
 | 
				
			||||||
 | 
					        return f"{self.letter}{self.round}"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    class Meta:
 | 
				
			||||||
 | 
					        verbose_name = _('pool')
 | 
				
			||||||
 | 
					        verbose_name_plural = _('pools')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class TeamDraw(models.Model):
 | 
				
			||||||
 | 
					    participation = models.ForeignKey(
 | 
				
			||||||
 | 
					        Participation,
 | 
				
			||||||
 | 
					        on_delete=models.CASCADE,
 | 
				
			||||||
 | 
					        verbose_name=_('participation'),
 | 
				
			||||||
 | 
					    )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    accepted = models.IntegerField(
 | 
				
			||||||
 | 
					        choices=[
 | 
				
			||||||
 | 
					            (i, format_lazy(_("Problem #{problem}"), problem=i)) for i in range(1, settings.PROBLEM_COUNT + 1)
 | 
				
			||||||
 | 
					        ],
 | 
				
			||||||
 | 
					        null=True,
 | 
				
			||||||
 | 
					        default=None,
 | 
				
			||||||
 | 
					        verbose_name=_("accepted problem"),
 | 
				
			||||||
 | 
					    )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    purposed = models.IntegerField(
 | 
				
			||||||
 | 
					        choices=[
 | 
				
			||||||
 | 
					            (i, format_lazy(_("Problem #{problem}"), problem=i)) for i in range(1, settings.PROBLEM_COUNT + 1)
 | 
				
			||||||
 | 
					        ],
 | 
				
			||||||
 | 
					        null=True,
 | 
				
			||||||
 | 
					        default=None,
 | 
				
			||||||
 | 
					        verbose_name=_("accepted problem"),
 | 
				
			||||||
 | 
					    )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    rejected = models.JSONField(
 | 
				
			||||||
 | 
					        default=[],
 | 
				
			||||||
 | 
					        verbose_name=_('rejected problems'),
 | 
				
			||||||
 | 
					    )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    class Meta:
 | 
				
			||||||
 | 
					        verbose_name = _('team draw')
 | 
				
			||||||
 | 
					        verbose_name_plural = _('team draws')
 | 
				
			||||||
		Reference in New Issue
	
	Block a user