corrected order of observations returned by CompteRendu.get_observations()

This commit is contained in:
Arthur Gerbaud
2016-11-15 15:43:19 +01:00
parent 23ca194bf7
commit a95a2e83c5
2 changed files with 25 additions and 2 deletions

View File

@@ -2,6 +2,22 @@ from .models import Maraude
from collections import OrderedDict from collections import OrderedDict
import datetime
def split_by_12h_blocks(iterable, field="heure_debut"):
""" Move object with given 'field' time under 12:00 to the end of stream.
Apart from this, order is untouched.
"""
to_end = []
for note in iterable:
if getattr(note, "created_time") <= datetime.time(12):
to_end.append(note)
else:
yield note
for note in to_end:
yield note
class CompteRendu(Maraude): class CompteRendu(Maraude):
""" Proxy for Maraude objects. """ Proxy for Maraude objects.
Gives access to related Observation and Rencontre Gives access to related Observation and Rencontre
@@ -21,7 +37,7 @@ class CompteRendu(Maraude):
observations = [] observations = []
for r in self._iter(order=order, reverse=reverse): for r in self._iter(order=order, reverse=reverse):
observations += r.observations.get_queryset() observations += r.observations.get_queryset()
return observations return list(split_by_12h_blocks(observations, field=order))
def __iter__(self): def __iter__(self):
""" Iterates on related 'rencontres' objects using default ordering """ """ Iterates on related 'rencontres' objects using default ordering """

View File

@@ -88,6 +88,8 @@ class IndexView(DerniereMaraudeMixin, generic.TemplateView):
## MARAUDES ## MARAUDES
@webpage @webpage
class MaraudeDetailsView(DerniereMaraudeMixin, generic.DetailView): class MaraudeDetailsView(DerniereMaraudeMixin, generic.DetailView):
""" Vue détaillé d'un compte-rendu de maraude """
model = CompteRendu model = CompteRendu
context_object_name = "maraude" context_object_name = "maraude"
template_name = "maraudes/details.html" template_name = "maraudes/details.html"
@@ -107,6 +109,8 @@ class MaraudeDetailsView(DerniereMaraudeMixin, generic.DetailView):
@webpage @webpage
class MaraudeListView(DerniereMaraudeMixin, generic.ListView): class MaraudeListView(DerniereMaraudeMixin, generic.ListView):
""" Vue de la liste des compte-rendus de maraude """
model = CompteRendu model = CompteRendu
template_name = "maraudes/liste.html" template_name = "maraudes/liste.html"
paginate_by = 10 paginate_by = 10
@@ -125,6 +129,8 @@ class MaraudeListView(DerniereMaraudeMixin, generic.ListView):
## COMPTE-RENDU DE MARAUDE ## COMPTE-RENDU DE MARAUDE
@webpage @webpage
class CompteRenduCreateView(generic.DetailView): class CompteRenduCreateView(generic.DetailView):
""" Vue pour la création d'un compte-rendu de maraude """
model = CompteRendu model = CompteRendu
template_name = "compte_rendu/compterendu_create.html" template_name = "compte_rendu/compterendu_create.html"
context_object_name = "maraude" context_object_name = "maraude"
@@ -228,7 +234,8 @@ class CompteRenduCreateView(generic.DetailView):
@webpage @webpage
class CompteRenduUpdateView(generic.DetailView): class CompteRenduUpdateView(generic.DetailView):
""" Mettre à jour le compte-rendu de la maraude """ """ Vue pour mettre à jour le compte-rendu de la maraude """
model = CompteRendu model = CompteRendu
context_object_name = "maraude" context_object_name = "maraude"
template_name = "compte_rendu/compterendu_update.html" template_name = "compte_rendu/compterendu_update.html"