diff --git a/multigranja/apps/entities/models/rotation.py b/multigranja/apps/entities/models/rotation.py index 7395261..66d705d 100644 --- a/multigranja/apps/entities/models/rotation.py +++ b/multigranja/apps/entities/models/rotation.py @@ -1,4 +1,5 @@ from django.db import models +from django.utils import timezone class Rotation(models.Model): is_active = models.BooleanField(default=True) @@ -12,4 +13,24 @@ class Rotation(models.Model): paddock = models.ForeignKey('entities.Paddock', on_delete=models.CASCADE, related_name='rotations') def __str__(self): - return f"Movimentação {self.id} - Lote {self.batch.identifier}" \ No newline at end of file + return f"Movimentação {self.id} - Lote {self.batch.identifier}" + + @property + def duration(self): + end = self.exit_date or timezone.now() + return end - self.entry_date + + @property + def duration_display_day(self): + end = self.exit_date or timezone.now() + delta = end - self.entry_date + + days = delta.days + + if days == 0: + return "Hoje" + + if days == 1: + return "1" + + return f"{days}" \ No newline at end of file diff --git a/multigranja/apps/entities/templates/_active_rotation_card.html b/multigranja/apps/entities/templates/_active_rotation_card.html index 7b3f8ac..c0e4262 100644 --- a/multigranja/apps/entities/templates/_active_rotation_card.html +++ b/multigranja/apps/entities/templates/_active_rotation_card.html @@ -1,6 +1,21 @@ -
-

Movimentação {rotation.id}

-

Lote {lote.name} atualmente no piquete {paddock.number} a {rotation.duration} atrás

-

var = {{var}}

- Ver mais +
+
+

{{ obj.batch.identifier }} em piquete {{ obj.paddock.paddock_number }}

+
+ +
+

Há {{ obj.duration_display_day }} dias, desde {{ obj.entry_date|date:"d/m/Y" }}

+
+ +
+

Animais: {{ obj.animal_count }}

+
+ +
+

UGM: {{ obj.livestock_unit }}

+
+ +
+ Ver mais +
\ No newline at end of file diff --git a/multigranja/apps/entities/templates/rotation/rotation_home.html b/multigranja/apps/entities/templates/rotation/rotation_home.html index cf5e5fc..0f628be 100644 --- a/multigranja/apps/entities/templates/rotation/rotation_home.html +++ b/multigranja/apps/entities/templates/rotation/rotation_home.html @@ -2,7 +2,18 @@ {% load custom_tags %} {% block before_table %} -

Essas informações aparecem antes da tabela apenas para a tela de movimentações

+

Movimentações em aberto

+
+ {% if not open_rotations %} +

Nenhuma movimentação em aberto

+ {% else %} + + {% for obj in open_rotations %} + {% include "_active_rotation_card.html" %} + {% endfor %} + +{% endif %} +
{% endblock %} {% block table %} diff --git a/multigranja/apps/entities/views/list/rotation.py b/multigranja/apps/entities/views/list/rotation.py index 95e17b3..36b57a1 100644 --- a/multigranja/apps/entities/views/list/rotation.py +++ b/multigranja/apps/entities/views/list/rotation.py @@ -25,4 +25,16 @@ class RotationListView(BaseListView): filter_fields = ["id", "batch", "paddock"] def get_queryset(self): - return super().get_queryset().filter(is_active=True, paddock__farm=self.selected_farm) \ No newline at end of file + queryset = super().get_queryset() + self.open_rotations = queryset.filter(exit_date__isnull=True, paddock__farm=self.selected_farm) + + return super().get_queryset().filter(is_active=True, paddock__farm=self.selected_farm) + + def get_context_data(self, **kwargs): + context = super().get_context_data(**kwargs) + + context.update({ + "open_rotations": self.open_rotations, + }) + + return context \ No newline at end of file