diff --git a/avisstage/models.py b/avisstage/models.py index 0cd14d0..dfc06f1 100644 --- a/avisstage/models.py +++ b/avisstage/models.py @@ -14,12 +14,13 @@ from django.forms.widgets import DateInput from django.urls import reverse from django.utils import timezone +from django.utils.functional import cached_property from django.utils.html import strip_tags from taggit_autosuggest.managers import TaggableManager from tinymce.models import HTMLField as RichTextField -from .utils import choices_length, en_scolarite +from .utils import choices_length from .statics import DEPARTEMENTS_DEFAUT, PAYS_OPTIONS, TYPE_LIEU_OPTIONS, TYPE_STAGE_OPTIONS, TYPE_LIEU_DICT, TYPE_STAGE_DICT, NIVEAU_SCOL_OPTIONS, NIVEAU_SCOL_DICT import ldap @@ -51,9 +52,10 @@ class Normalien(models.Model): def stages_publics(self): return self.stages.filter(public=True).order_by('-date_debut') - @property + @cached_property def en_scolarite(self): - return en_scolarite(self.user_id) + return SocialAccount.objects.filter(user_id=self.user_id, + provider="clipper").exists() def has_nonENS_email(self): a = EmailAddress.objects.filter(user_id=self.user_id, @@ -217,7 +219,11 @@ class Stage(models.Model): @property def niveau_scol_fancy(self): return NIVEAU_SCOL_DICT.get(self.niveau_scol, "") - + + # Optimisation de requêtes + @cached_property + def all_lieux(self): + return self.lieux.all() def get_absolute_url(self): return reverse('avisstage:stage', self) diff --git a/avisstage/templates/avisstage/detail/stage.html b/avisstage/templates/avisstage/detail/stage.html index 4ef3c9d..bbe07e1 100644 --- a/avisstage/templates/avisstage/detail/stage.html +++ b/avisstage/templates/avisstage/detail/stage.html @@ -55,7 +55,7 @@ {% endif %}
-
+

{{ object.sujet }}

@@ -65,8 +65,8 @@ a fait {{ object.type_stage_fem|yesno:"cette,ce" }} {{ object.type_stage_fancy }} {% if object.niveau_scol %}{{ object.niveau_scol_fancy }},{% endif %} {% if object.structure %}au sein de {{ object.structure }}{% endif %}{% if object.encadrants %}, supervisé par {{ object.encadrants }}{% endif %}.

- {% if object.lieux.all %}

Cela s'est passé à : - {% for lieu in object.lieux.all %}{{ lieu.nom }} ({{ lieu.ville }}){% if not forloop.last %}, {% endif %}{% endfor %}.

+ {% if object.all_lieux %}

Cela s'est passé à : + {% for lieu in object.all_lieux %}{{ lieu.nom }} ({{ lieu.ville }}){% if not forloop.last %}, {% endif %}{% endfor %}.

{% endif %}
    @@ -79,12 +79,12 @@
- {% if object.lieux.all %} + {% if object.all_lieux %}