davidtran999 commited on
Commit
c1096bd
·
verified ·
1 Parent(s): 1807c0f

Upload backend/core/serializers.py with huggingface_hub

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