from django.db import models from django.contrib.auth.models import User, Group, Permission from django.contrib.contenttypes.models import ContentType from django.db.models.signals import post_save from django.urls import reverse from django.dispatch import receiver from django.core import validators def get_upload_to(instance, filename): return "static/media/"+instance.name+"/"+filename class School(models.Model): """Ajoute un champ pour distinguer les groupes écoles des autres.""" admin = models.OneToOneField( User, verbose_name="Administrateur de l'école", null=True, on_delete=models.SET_NULL, ) phone = models.CharField( max_length=10, help_text="Visible uniquement des administrateurs", verbose_name="Numéro de téléphone pour contacter le responsable des productions", blank=False, null=True, validators=[ validators.RegexValidator('^[0-9]{10}$', "Veuillez entrer un numéro à 10 chiffres."), ] ) logo = models.ImageField( upload_to=get_upload_to, verbose_name="Logo à utiliser pour représenter l'école", null=True, blank=False, ) first_name_j1 = models.CharField( max_length=255, verbose_name="Prénom juré n°1" ) last_name_j1 = models.CharField( max_length=255, verbose_name="Nom juré n°1" ) phone_j1 = models.CharField( max_length=10, help_text="Visible uniquement des administrateurs", verbose_name="Numéro de téléphone juré n°1", blank=False, null=True, validators=[ validators.RegexValidator('^[0-9]{10}$', "Veuillez entrer un numéro à 10 chiffres."), ] ) mail_j1 = models.EmailField(verbose_name="Email juré n°1") first_name_j2 = models.CharField( max_length=255, verbose_name="Prénom juré n°2" ) last_name_j2 = models.CharField( max_length=255, verbose_name="Nom juré n°2" ) phone_j2 = models.CharField( max_length=10, help_text="Visible uniquement des administrateurs", verbose_name="Numéro de téléphone juré n°2", blank=False, null=True, validators=[ validators.RegexValidator('^[0-9]{10}$', "Veuillez entrer un numéro à 10 chiffres."), ] ) mail_j2 = models.EmailField(verbose_name="Email juré n°2") def __str__(self): return self.group.name def get_absolute_url(self): return reverse("users:school", kwargs={'pk':self.group.pk}) def number_of_categories(self): return self.content_set.values('category').distinct().count()