better use of CompteRendu proxy model
This commit is contained in:
@@ -7,18 +7,43 @@ class CompteRendu(Maraude):
|
||||
Gives access to related Observation and Rencontre
|
||||
"""
|
||||
|
||||
def rencontre_count(self):
|
||||
return self.rencontres.count()
|
||||
|
||||
def observation_count(self):
|
||||
count = 0
|
||||
for r in self:
|
||||
count += r.observations.count()
|
||||
return count
|
||||
|
||||
def get_observations(self, order="heure_debut", reverse=False):
|
||||
""" Returns list of all observations related to this instance """
|
||||
observations = []
|
||||
for r in self._iter(order=order, reverse=reverse):
|
||||
observations += r.observations.get_queryset()
|
||||
return observations
|
||||
|
||||
def __iter__(self):
|
||||
""" Iterates on related 'rencontres' objects using default ordering """
|
||||
return self._iter()
|
||||
|
||||
def reversed(self):
|
||||
return self._iter(order="-heure_debut")
|
||||
def reversed(self, order="heure_debut"):
|
||||
return self._iter(order=order, reverse=True)
|
||||
|
||||
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 _iter(self, order="heure_debut", reverse=False):
|
||||
""" Iterator on related 'rencontre' queryset.
|
||||
|
||||
Optionnal :
|
||||
- order : order by this field, default: 'heure_debut'
|
||||
- reversed : reversed ordering, default: False
|
||||
"""
|
||||
if reverse:
|
||||
order = "-" + order
|
||||
for rencontre in self.rencontres.get_queryset().order_by(order):
|
||||
yield rencontre
|
||||
|
||||
def as_list(self, **kwargs):
|
||||
return [t for t in self._iter(**kwargs)]
|
||||
return [r for r in self._iter(**kwargs)]
|
||||
|
||||
def as_dict(self, key_field="lieu"):
|
||||
""" Returns an 'OrderedDict' with given 'key_field' value as keys and
|
||||
|
||||
Reference in New Issue
Block a user