|
|
@ -437,7 +437,11 @@ def save_relation_reference_data(instance, validated_data, request=None, is_corr |
|
|
if book_reference is not None: |
|
|
if book_reference is not None: |
|
|
ref.book_reference = book_reference |
|
|
ref.book_reference = book_reference |
|
|
if address is not None: |
|
|
if address is not None: |
|
|
ref.address = address |
|
|
|
|
|
|
|
|
if isinstance(address, (list, dict)): |
|
|
|
|
|
import json |
|
|
|
|
|
ref.address = json.dumps(address, ensure_ascii=False) |
|
|
|
|
|
else: |
|
|
|
|
|
ref.address = str(address) |
|
|
ref.save() |
|
|
ref.save() |
|
|
|
|
|
|
|
|
if delete_image_ids: |
|
|
if delete_image_ids: |
|
|
@ -465,11 +469,10 @@ class AdminHadisCorrectionSerializer(serializers.ModelSerializer): |
|
|
write_only=True, |
|
|
write_only=True, |
|
|
allow_null=True |
|
|
allow_null=True |
|
|
) |
|
|
) |
|
|
address = serializers.CharField( |
|
|
|
|
|
|
|
|
address = serializers.JSONField( |
|
|
required=False, |
|
|
required=False, |
|
|
write_only=True, |
|
|
write_only=True, |
|
|
allow_null=True, |
|
|
|
|
|
allow_blank=True |
|
|
|
|
|
|
|
|
allow_null=True |
|
|
) |
|
|
) |
|
|
delete_image_ids = serializers.ListField( |
|
|
delete_image_ids = serializers.ListField( |
|
|
child=serializers.IntegerField(), |
|
|
child=serializers.IntegerField(), |
|
|
@ -501,7 +504,7 @@ class AdminHadisCorrectionSerializer(serializers.ModelSerializer): |
|
|
def to_internal_value(self, data): |
|
|
def to_internal_value(self, data): |
|
|
import json |
|
|
import json |
|
|
data = safe_copy_data(data) |
|
|
data = safe_copy_data(data) |
|
|
for json_field in ["title", "translation", "links"]: |
|
|
|
|
|
|
|
|
for json_field in ["title", "translation", "links", "address"]: |
|
|
val = data.get(json_field) |
|
|
val = data.get(json_field) |
|
|
if isinstance(val, str): |
|
|
if isinstance(val, str): |
|
|
try: |
|
|
try: |
|
|
@ -526,11 +529,20 @@ class AdminHadisCorrectionSerializer(serializers.ModelSerializer): |
|
|
return super().to_internal_value(data) |
|
|
return super().to_internal_value(data) |
|
|
|
|
|
|
|
|
def to_representation(self, instance): |
|
|
def to_representation(self, instance): |
|
|
|
|
|
import json |
|
|
ret = super().to_representation(instance) |
|
|
ret = super().to_representation(instance) |
|
|
refs = list(instance.references.all()) |
|
|
refs = list(instance.references.all()) |
|
|
ref = refs[0] if refs else None |
|
|
ref = refs[0] if refs else None |
|
|
ret["book_reference"] = ref.book_reference_id if ref else None |
|
|
ret["book_reference"] = ref.book_reference_id if ref else None |
|
|
ret["address"] = ref.address if ref else "" |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
addr_val = ref.address if ref and ref.address else "" |
|
|
|
|
|
if isinstance(addr_val, str) and (addr_val.strip().startswith("[") or addr_val.strip().startswith("{")): |
|
|
|
|
|
try: |
|
|
|
|
|
ret["address"] = json.loads(addr_val) |
|
|
|
|
|
except (ValueError, TypeError): |
|
|
|
|
|
ret["address"] = addr_val |
|
|
|
|
|
else: |
|
|
|
|
|
ret["address"] = addr_val |
|
|
|
|
|
|
|
|
request = self.context.get("request") |
|
|
request = self.context.get("request") |
|
|
images = list(ref.images.all()) if ref else [] |
|
|
images = list(ref.images.all()) if ref else [] |
|
|
@ -586,11 +598,10 @@ class AdminHadisInterpretationSerializer(serializers.ModelSerializer): |
|
|
write_only=True, |
|
|
write_only=True, |
|
|
allow_null=True |
|
|
allow_null=True |
|
|
) |
|
|
) |
|
|
address = serializers.CharField( |
|
|
|
|
|
|
|
|
address = serializers.JSONField( |
|
|
required=False, |
|
|
required=False, |
|
|
write_only=True, |
|
|
write_only=True, |
|
|
allow_null=True, |
|
|
|
|
|
allow_blank=True |
|
|
|
|
|
|
|
|
allow_null=True |
|
|
) |
|
|
) |
|
|
delete_image_ids = serializers.ListField( |
|
|
delete_image_ids = serializers.ListField( |
|
|
child=serializers.IntegerField(), |
|
|
child=serializers.IntegerField(), |
|
|
@ -620,7 +631,7 @@ class AdminHadisInterpretationSerializer(serializers.ModelSerializer): |
|
|
def to_internal_value(self, data): |
|
|
def to_internal_value(self, data): |
|
|
import json |
|
|
import json |
|
|
data = safe_copy_data(data) |
|
|
data = safe_copy_data(data) |
|
|
for json_field in ["title", "translation", "links"]: |
|
|
|
|
|
|
|
|
for json_field in ["title", "translation", "links", "address"]: |
|
|
val = data.get(json_field) |
|
|
val = data.get(json_field) |
|
|
if isinstance(val, str): |
|
|
if isinstance(val, str): |
|
|
try: |
|
|
try: |
|
|
@ -645,11 +656,20 @@ class AdminHadisInterpretationSerializer(serializers.ModelSerializer): |
|
|
return super().to_internal_value(data) |
|
|
return super().to_internal_value(data) |
|
|
|
|
|
|
|
|
def to_representation(self, instance): |
|
|
def to_representation(self, instance): |
|
|
|
|
|
import json |
|
|
ret = super().to_representation(instance) |
|
|
ret = super().to_representation(instance) |
|
|
refs = list(instance.references.all()) |
|
|
refs = list(instance.references.all()) |
|
|
ref = refs[0] if refs else None |
|
|
ref = refs[0] if refs else None |
|
|
ret["book_reference"] = ref.book_reference_id if ref else None |
|
|
ret["book_reference"] = ref.book_reference_id if ref else None |
|
|
ret["address"] = ref.address if ref else "" |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
addr_val = ref.address if ref and ref.address else "" |
|
|
|
|
|
if isinstance(addr_val, str) and (addr_val.strip().startswith("[") or addr_val.strip().startswith("{")): |
|
|
|
|
|
try: |
|
|
|
|
|
ret["address"] = json.loads(addr_val) |
|
|
|
|
|
except (ValueError, TypeError): |
|
|
|
|
|
ret["address"] = addr_val |
|
|
|
|
|
else: |
|
|
|
|
|
ret["address"] = addr_val |
|
|
|
|
|
|
|
|
request = self.context.get("request") |
|
|
request = self.context.get("request") |
|
|
images = list(ref.images.all()) if ref else [] |
|
|
images = list(ref.images.all()) if ref else [] |
|
|
@ -1642,11 +1662,10 @@ class AdminTransmitterOriginalTextSerializer(serializers.ModelSerializer): |
|
|
write_only=True, |
|
|
write_only=True, |
|
|
allow_null=True |
|
|
allow_null=True |
|
|
) |
|
|
) |
|
|
address = serializers.CharField( |
|
|
|
|
|
|
|
|
address = serializers.JSONField( |
|
|
required=False, |
|
|
required=False, |
|
|
write_only=True, |
|
|
write_only=True, |
|
|
allow_null=True, |
|
|
|
|
|
allow_blank=True |
|
|
|
|
|
|
|
|
allow_null=True |
|
|
) |
|
|
) |
|
|
delete_image_ids = serializers.ListField( |
|
|
delete_image_ids = serializers.ListField( |
|
|
child=serializers.IntegerField(), |
|
|
child=serializers.IntegerField(), |
|
|
@ -1674,7 +1693,7 @@ class AdminTransmitterOriginalTextSerializer(serializers.ModelSerializer): |
|
|
def to_internal_value(self, data): |
|
|
def to_internal_value(self, data): |
|
|
import json |
|
|
import json |
|
|
data = safe_copy_data(data) |
|
|
data = safe_copy_data(data) |
|
|
for json_field in ["title", "text", "translation"]: |
|
|
|
|
|
|
|
|
for json_field in ["title", "text", "translation", "address"]: |
|
|
val = data.get(json_field) |
|
|
val = data.get(json_field) |
|
|
if isinstance(val, str): |
|
|
if isinstance(val, str): |
|
|
try: |
|
|
try: |
|
|
@ -1699,10 +1718,19 @@ class AdminTransmitterOriginalTextSerializer(serializers.ModelSerializer): |
|
|
return super().to_internal_value(data) |
|
|
return super().to_internal_value(data) |
|
|
|
|
|
|
|
|
def to_representation(self, instance): |
|
|
def to_representation(self, instance): |
|
|
|
|
|
import json |
|
|
ret = super().to_representation(instance) |
|
|
ret = super().to_representation(instance) |
|
|
ref = instance.references.first() |
|
|
ref = instance.references.first() |
|
|
ret["book_reference"] = ref.book_reference_id if ref else None |
|
|
ret["book_reference"] = ref.book_reference_id if ref else None |
|
|
ret["address"] = ref.address if ref else "" |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
addr_val = ref.address if ref and ref.address else "" |
|
|
|
|
|
if isinstance(addr_val, str) and (addr_val.strip().startswith("[") or addr_val.strip().startswith("{")): |
|
|
|
|
|
try: |
|
|
|
|
|
ret["address"] = json.loads(addr_val) |
|
|
|
|
|
except (ValueError, TypeError): |
|
|
|
|
|
ret["address"] = addr_val |
|
|
|
|
|
else: |
|
|
|
|
|
ret["address"] = addr_val |
|
|
|
|
|
|
|
|
request = self.context.get("request") |
|
|
request = self.context.get("request") |
|
|
ret["images"] = [ |
|
|
ret["images"] = [ |
|
|
|