add feed in / out button page and also button to redirect to button page
This commit is contained in:
1 parent
07b8e2dc25
commit
b86bd7a2f4
17 files changed
+719
-28
No files matched your search
@@ -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:
|
||||
|
||||
Reference in new issue
Block a user