update link registration site to executive dashboard

This commit is contained in:
Alberto-Audrix committed 2026-09-15 09:44:45 +07:00
1 parent 1e6f6b3b57
commit d0d1ae7d24
26 files changed
+1044 -55

No files matched your search

+20 -3
View File
@@ -1,15 +1,31 @@
from rest_framework import serializers
from apps.accounts.serializers import PkAsIdMixin
from apps.farms.models import Cycle, Flock, Kandang, Site
from apps.accounts.serializers import PkAsIdMixin, SlugPkAsIdMixin
from apps.farms.models import Cycle, Flock, Kandang, Site, allocate_site_id, site_name_slug
class SiteSerializer(PkAsIdMixin, serializers.ModelSerializer):
class SiteSerializer(SlugPkAsIdMixin, serializers.ModelSerializer):
class Meta:
model = Site
fields = ["id", "site_name", "user", "created_at", "updated_at"]
read_only_fields = ["id", "created_at", "updated_at"]
def create(self, validated_data):
validated_data["site_id"] = allocate_site_id(validated_data["site_name"])
return super().create(validated_data)
def validate_site_name(self, value):
name = str(value or "").strip()
if not name:
raise serializers.ValidationError("Nama site wajib diisi.")
site_name_slug(name) # reject names that cannot form a slug
qs = Site.objects.filter(site_name__iexact=name)
if self.instance:
qs = qs.exclude(pk=self.instance.pk)
if qs.exists():
raise serializers.ValidationError("Nama site sudah dipakai.")
return name
class FeedInButtonUrlSerializer(serializers.Serializer):
label = serializers.CharField(max_length=50, required=False, allow_blank=True, default="")
@@ -18,6 +34,7 @@ class FeedInButtonUrlSerializer(serializers.Serializer):
class KandangSerializer(PkAsIdMixin, serializers.ModelSerializer):
feed_in_button_urls = FeedInButtonUrlSerializer(many=True, required=False)
site = serializers.PrimaryKeyRelatedField(queryset=Site.objects.all())
class Meta:
model = Kandang