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
|
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):
|
def __iter__(self):
|
||||||
|
""" Iterates on related 'rencontres' objects using default ordering """
|
||||||
return self._iter()
|
return self._iter()
|
||||||
|
|
||||||
def reversed(self):
|
def reversed(self, order="heure_debut"):
|
||||||
return self._iter(order="-heure_debut")
|
return self._iter(order=order, reverse=True)
|
||||||
|
|
||||||
def _iter(self, order="heure_debut"):
|
def _iter(self, order="heure_debut", reverse=False):
|
||||||
for r in self.rencontres.get_queryset().order_by(order):
|
""" Iterator on related 'rencontre' queryset.
|
||||||
yield (r, [o for o in r.observations.all()])
|
|
||||||
|
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):
|
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"):
|
def as_dict(self, key_field="lieu"):
|
||||||
""" Returns an 'OrderedDict' with given 'key_field' value as keys and
|
""" Returns an 'OrderedDict' with given 'key_field' value as keys and
|
||||||
|
|||||||
@@ -122,14 +122,8 @@ class Maraude(models.Model):
|
|||||||
est_passee.boolean = True
|
est_passee.boolean = True
|
||||||
est_passee.short_description = 'Passée ?'
|
est_passee.short_description = 'Passée ?'
|
||||||
|
|
||||||
def rencontre_count(self):
|
|
||||||
return self.rencontres.count()
|
|
||||||
|
|
||||||
def get_observations(self):
|
def get_observations(self):
|
||||||
observations = []
|
raise Warning("Deprecated ! Should use CompteRendu proxy object")
|
||||||
for r in self.rencontres.all():
|
|
||||||
observations += r.observations.all()
|
|
||||||
return observations
|
|
||||||
|
|
||||||
def get_absolute_url(self):
|
def get_absolute_url(self):
|
||||||
return reverse('maraudes:details', kwargs={'pk': self.id})
|
return reverse('maraudes:details', kwargs={'pk': self.id})
|
||||||
|
|||||||
@@ -16,13 +16,12 @@
|
|||||||
{% for form in inline_formset %}
|
{% for form in inline_formset %}
|
||||||
<div class="dynamic-formset">
|
<div class="dynamic-formset">
|
||||||
{% if form.id %}{% bootstrap_field form.id %}{% endif %}
|
{% if form.id %}{% bootstrap_field form.id %}{% endif %}
|
||||||
{% if form.instance.pk %}{% bootstrap_field form.note_ptr %}{% endif %}
|
|
||||||
|
|
||||||
{% bootstrap_field form.sujet size="small" layout="horizontal" %}
|
{% bootstrap_field form.sujet size="small" layout="horizontal" %}
|
||||||
{% if inline_formset.instance.pk %}
|
{% bootstrap_field form.text size="small" layout="horizontal" %}
|
||||||
|
{% if form.instance.pk %}
|
||||||
|
{% bootstrap_field form.note_ptr %}
|
||||||
{% bootstrap_field form.DELETE layout="horizontal" %}
|
{% bootstrap_field form.DELETE layout="horizontal" %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% bootstrap_field form.text size="small" layout="horizontal" %}
|
|
||||||
</div>
|
</div>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -15,9 +15,7 @@
|
|||||||
<div class="panel-body">
|
<div class="panel-body">
|
||||||
{% include "compte_rendu/compterendu_form.html" %}
|
{% include "compte_rendu/compterendu_form.html" %}
|
||||||
</div>
|
</div>
|
||||||
<div class="panel-footer text-right">
|
<div class="panel-footer text-right">{% bootstrap_field form.DELETE %}</div>
|
||||||
{% bootstrap_field form.DELETE %}
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
|
|||||||
@@ -229,7 +229,7 @@ class CompteRenduCreateView(generic.DetailView):
|
|||||||
@webpage
|
@webpage
|
||||||
class CompteRenduUpdateView(generic.DetailView):
|
class CompteRenduUpdateView(generic.DetailView):
|
||||||
""" Mettre à jour le compte-rendu de la maraude """
|
""" Mettre à jour le compte-rendu de la maraude """
|
||||||
model = Maraude
|
model = CompteRendu
|
||||||
context_object_name = "maraude"
|
context_object_name = "maraude"
|
||||||
template_name = "compte_rendu/compterendu_update.html"
|
template_name = "compte_rendu/compterendu_update.html"
|
||||||
|
|
||||||
@@ -243,9 +243,6 @@ class CompteRenduUpdateView(generic.DetailView):
|
|||||||
rencontres_queryset = None
|
rencontres_queryset = None
|
||||||
forms = None
|
forms = None
|
||||||
|
|
||||||
def get_rencontres_queryset(self):
|
|
||||||
return self.get_object().rencontres.all()
|
|
||||||
|
|
||||||
def get_forms_with_inline(self, *args):
|
def get_forms_with_inline(self, *args):
|
||||||
self.base_formset = RencontreInlineFormSet(
|
self.base_formset = RencontreInlineFormSet(
|
||||||
*args,
|
*args,
|
||||||
@@ -254,7 +251,7 @@ class CompteRenduUpdateView(generic.DetailView):
|
|||||||
)
|
)
|
||||||
|
|
||||||
self.inline_formsets = []
|
self.inline_formsets = []
|
||||||
for i, instance in enumerate(self.get_rencontres_queryset()):
|
for i, instance in enumerate(self.get_object()):
|
||||||
inline_formset = ObservationInlineFormSetNoExtra(
|
inline_formset = ObservationInlineFormSetNoExtra(
|
||||||
*args,
|
*args,
|
||||||
instance = instance,
|
instance = instance,
|
||||||
|
|||||||
Reference in New Issue
Block a user