update docker deployment and changing seed kandang name
This commit is contained in:
1 parent
76f4d0106a
commit
74dd3faf60
40 files changed
+1253
-122
No files matched your search
@@ -1,3 +1,5 @@
|
||||
from datetime import date
|
||||
|
||||
from django.core.exceptions import ValidationError
|
||||
from django.db import models
|
||||
from wagtail.admin.panels import FieldPanel
|
||||
@@ -126,10 +128,16 @@ class Cycle(models.Model):
|
||||
|
||||
@property
|
||||
def current_day(self) -> int:
|
||||
from django.utils import timezone
|
||||
from apps.operations.services.visibility import visible_through_date
|
||||
|
||||
today = timezone.localdate()
|
||||
if today <= self.start_date:
|
||||
return 1
|
||||
elapsed = (today - self.start_date).days + 1
|
||||
effective = visible_through_date()
|
||||
if effective < self.start_date:
|
||||
return 0
|
||||
elapsed = (effective - self.start_date).days + 1
|
||||
return min(max(elapsed, 1), self.total_days)
|
||||
|
||||
@property
|
||||
def visible_through_date(self) -> date:
|
||||
from apps.operations.services.visibility import visible_through_date as cutoff_date
|
||||
|
||||
return cutoff_date()
|
||||
@@ -27,18 +27,24 @@ class FlockSerializer(PkAsIdMixin, serializers.ModelSerializer):
|
||||
|
||||
class CycleSerializer(PkAsIdMixin, serializers.ModelSerializer):
|
||||
kandang = serializers.PrimaryKeyRelatedField(queryset=Kandang.objects.all())
|
||||
kandang_name = serializers.CharField(source="kandang.kandang_name", read_only=True)
|
||||
flock = serializers.SerializerMethodField()
|
||||
flock_name = serializers.SerializerMethodField()
|
||||
chick_in_weight = serializers.IntegerField(source="doc_in_weight")
|
||||
current_day = serializers.IntegerField(read_only=True)
|
||||
visible_through_date = serializers.DateField(read_only=True)
|
||||
|
||||
class Meta:
|
||||
model = Cycle
|
||||
fields = [
|
||||
"id",
|
||||
"kandang",
|
||||
"kandang_name",
|
||||
"flock",
|
||||
"flock_name",
|
||||
"total_days",
|
||||
"current_day",
|
||||
"visible_through_date",
|
||||
"start_date",
|
||||
"end_date",
|
||||
"chick_in_weight",
|
||||
@@ -48,12 +54,27 @@ class CycleSerializer(PkAsIdMixin, serializers.ModelSerializer):
|
||||
"created_at",
|
||||
"updated_at",
|
||||
]
|
||||
read_only_fields = ["id", "flock", "feed_initial_balance", "created_at", "updated_at"]
|
||||
read_only_fields = [
|
||||
"id",
|
||||
"kandang_name",
|
||||
"flock",
|
||||
"flock_name",
|
||||
"feed_initial_balance",
|
||||
"created_at",
|
||||
"updated_at",
|
||||
]
|
||||
|
||||
def _first_flock(self, obj):
|
||||
return obj.flocks.order_by("flock_id").first()
|
||||
|
||||
def get_flock(self, obj):
|
||||
flock = obj.flocks.order_by("flock_id").first()
|
||||
flock = self._first_flock(obj)
|
||||
return flock.pk if flock is not None else None
|
||||
|
||||
def get_flock_name(self, obj):
|
||||
flock = self._first_flock(obj)
|
||||
return flock.flock_name if flock is not None else None
|
||||
|
||||
def create(self, validated_data):
|
||||
kandang = validated_data["kandang"]
|
||||
cycle = Cycle.objects.create(**validated_data)
|
||||
|
||||
@@ -32,6 +32,8 @@ class FarmAPITests(TestCase):
|
||||
)
|
||||
self.assertEqual(response.status_code, 201, response.data)
|
||||
self.assertEqual(response.data["chick_in_weight"], 42)
|
||||
self.assertEqual(response.data["kandang_name"], "Kandang 1")
|
||||
self.assertEqual(response.data["flock_name"], "Kandang 1")
|
||||
self.assertIsNotNone(response.data["flock"])
|
||||
cycle = Cycle.objects.get(pk=response.data["id"])
|
||||
flock = Flock.objects.get(pk=response.data["flock"])
|
||||
@@ -54,6 +56,8 @@ class FarmAPITests(TestCase):
|
||||
results = response.data["results"] if isinstance(response.data, dict) else response.data
|
||||
self.assertEqual(len(results), 1)
|
||||
self.assertEqual(results[0]["flock"], flock.pk)
|
||||
self.assertEqual(results[0]["kandang_name"], "Kandang 1")
|
||||
self.assertEqual(results[0]["flock_name"], "Flock A")
|
||||
|
||||
def test_list_flocks_by_cycle(self):
|
||||
cycle = Cycle.objects.create(
|
||||
|
||||
Reference in new issue
Block a user