add feed in / out button page and also button to redirect to button page

This commit is contained in:
Alberto-Audrix committed 2026-09-02 13:33:41 +07:00
1 parent 07b8e2dc25
commit b86bd7a2f4
17 files changed
+719 -28

No files matched your search

+45 -1
View File
@@ -11,12 +11,56 @@ class SiteSerializer(PkAsIdMixin, serializers.ModelSerializer):
read_only_fields = ["id", "created_at", "updated_at"]
class FeedInButtonUrlSerializer(serializers.Serializer):
label = serializers.CharField(max_length=50, required=False, allow_blank=True, default="")
url = serializers.URLField(max_length=500)
class KandangSerializer(PkAsIdMixin, serializers.ModelSerializer):
feed_in_button_urls = FeedInButtonUrlSerializer(many=True, required=False)
class Meta:
model = Kandang
fields = ["id", "kandang_name", "site", "created_at", "updated_at"]
fields = [
"id",
"kandang_name",
"feed_in_button_urls",
"site",
"created_at",
"updated_at",
]
read_only_fields = ["id", "created_at", "updated_at"]
def validate_feed_in_button_urls(self, value):
cleaned = []
for item in value or []:
url = str(item.get("url", "")).strip()
if not url:
continue
label = str(item.get("label", "") or "").strip()[:50]
cleaned.append({"label": label, "url": url})
return cleaned
def update(self, instance, validated_data):
urls = validated_data.pop("feed_in_button_urls", None)
instance = super().update(instance, validated_data)
if urls is not None:
instance.feed_in_button_urls = urls
instance.save(update_fields=["feed_in_button_urls", "updated_at"])
return instance
def to_representation(self, instance):
data = super().to_representation(instance)
urls = data.get("feed_in_button_urls") or []
if not isinstance(urls, list):
urls = []
data["feed_in_button_urls"] = [
{"label": str(item.get("label", "") or ""), "url": str(item.get("url", "") or "")}
for item in urls
if isinstance(item, dict) and str(item.get("url", "") or "").strip()
]
return data
class FlockSerializer(PkAsIdMixin, serializers.ModelSerializer):
class Meta: