Files
django-maraudes/maraudes/compte_rendu.py

42 lines
1.1 KiB
Python

from .models import Maraude
from collections import OrderedDict
class CompteRendu(Maraude):
""" Proxy for Maraude objects.
Gives access to related Observation and Rencontre
"""
def __iter__(self):
return self._iter()
def reversed(self):
return self._iter(order="-heure_debut")
def _iter(self, order="heure_debut"):
for r in self.rencontres.get_queryset().order_by(order):
yield (r, [o for o in r.observations.all()])
def as_list(self, **kwargs):
return [t for t in self._iter(**kwargs)]
def as_dict(self, key_field="lieu"):
""" Returns an 'OrderedDict' with given 'key_field' value as keys and
the corresponding (rencontre, observations) tuple
"""
condensed = OrderedDict()
for r, obs in self.__iter__():
val = getattr(r, key_field, None)
if not val:
pass
if not val in condensed:
condensed[val] = [(r, obs)]
else:
condensed[val].append((r, obs))
return condensed
class Meta:
proxy = True