Spaces:
Sleeping
Sleeping
File size: 2,309 Bytes
c1096bd |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 |
from rest_framework import serializers
from .models import (
Procedure,
Fine,
Office,
Advisory,
LegalSection,
LegalDocument,
IngestionJob,
)
class ProcedureSerializer(serializers.ModelSerializer):
class Meta:
model = Procedure
fields = "__all__"
class FineSerializer(serializers.ModelSerializer):
class Meta:
model = Fine
fields = "__all__"
class OfficeSerializer(serializers.ModelSerializer):
class Meta:
model = Office
fields = "__all__"
class AdvisorySerializer(serializers.ModelSerializer):
class Meta:
model = Advisory
fields = "__all__"
class LegalDocumentSerializer(serializers.ModelSerializer):
uploaded_file_url = serializers.SerializerMethodField()
image_count = serializers.SerializerMethodField()
class Meta:
model = LegalDocument
fields = "__all__"
def get_uploaded_file_url(self, obj):
if not obj.uploaded_file:
return None
try:
url = obj.uploaded_file.url
except ValueError:
url = obj.uploaded_file.name
request = self.context.get("request")
if request:
return request.build_absolute_uri(url)
return url
def get_image_count(self, obj):
if hasattr(obj, "_prefetched_objects_cache") and "images" in obj._prefetched_objects_cache:
return len(obj._prefetched_objects_cache["images"])
return obj.images.count()
class LegalSectionSerializer(serializers.ModelSerializer):
document = LegalDocumentSerializer(read_only=True)
document_id = serializers.IntegerField(source="document.id", read_only=True)
download_url = serializers.SerializerMethodField()
class Meta:
model = LegalSection
fields = "__all__"
def get_download_url(self, obj):
request = self.context.get("request")
if not obj.document:
return None
path = f"/api/legal-documents/{obj.document.id}/download/"
if request:
return request.build_absolute_uri(path)
return path
class IngestionJobSerializer(serializers.ModelSerializer):
document = LegalDocumentSerializer(read_only=True)
class Meta:
model = IngestionJob
fields = "__all__"
|