Move serializer
This commit is contained in:
parent
b7a0c0eb6f
commit
5fdda05afb
@ -796,6 +796,34 @@ class DocumentSerializer(
|
|||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
class SearchResultSerializer(DocumentSerializer):
|
||||||
|
def to_representation(self, instance):
|
||||||
|
doc = (
|
||||||
|
Document.objects.select_related(
|
||||||
|
"correspondent",
|
||||||
|
"storage_path",
|
||||||
|
"document_type",
|
||||||
|
"owner",
|
||||||
|
)
|
||||||
|
.prefetch_related("tags", "custom_fields", "notes")
|
||||||
|
.get(id=instance["id"])
|
||||||
|
)
|
||||||
|
notes = ",".join(
|
||||||
|
[str(c.note) for c in doc.notes.all()],
|
||||||
|
)
|
||||||
|
r = super().to_representation(doc)
|
||||||
|
r["__search_hit__"] = {
|
||||||
|
"score": instance.score,
|
||||||
|
"highlights": instance.highlights("content", text=doc.content),
|
||||||
|
"note_highlights": (
|
||||||
|
instance.highlights("notes", text=notes) if doc else None
|
||||||
|
),
|
||||||
|
"rank": instance.rank,
|
||||||
|
}
|
||||||
|
|
||||||
|
return r
|
||||||
|
|
||||||
|
|
||||||
class SavedViewFilterRuleSerializer(serializers.ModelSerializer):
|
class SavedViewFilterRuleSerializer(serializers.ModelSerializer):
|
||||||
class Meta:
|
class Meta:
|
||||||
model = SavedViewFilterRule
|
model = SavedViewFilterRule
|
||||||
|
@ -138,6 +138,7 @@ from documents.serialisers import DocumentSerializer
|
|||||||
from documents.serialisers import DocumentTypeSerializer
|
from documents.serialisers import DocumentTypeSerializer
|
||||||
from documents.serialisers import PostDocumentSerializer
|
from documents.serialisers import PostDocumentSerializer
|
||||||
from documents.serialisers import SavedViewSerializer
|
from documents.serialisers import SavedViewSerializer
|
||||||
|
from documents.serialisers import SearchResultSerializer
|
||||||
from documents.serialisers import ShareLinkSerializer
|
from documents.serialisers import ShareLinkSerializer
|
||||||
from documents.serialisers import StoragePathSerializer
|
from documents.serialisers import StoragePathSerializer
|
||||||
from documents.serialisers import TagSerializer
|
from documents.serialisers import TagSerializer
|
||||||
@ -799,34 +800,6 @@ class DocumentViewSet(
|
|||||||
return Response(sorted(entries, key=lambda x: x["timestamp"], reverse=True))
|
return Response(sorted(entries, key=lambda x: x["timestamp"], reverse=True))
|
||||||
|
|
||||||
|
|
||||||
class SearchResultSerializer(DocumentSerializer, PassUserMixin):
|
|
||||||
def to_representation(self, instance):
|
|
||||||
doc = (
|
|
||||||
Document.objects.select_related(
|
|
||||||
"correspondent",
|
|
||||||
"storage_path",
|
|
||||||
"document_type",
|
|
||||||
"owner",
|
|
||||||
)
|
|
||||||
.prefetch_related("tags", "custom_fields", "notes")
|
|
||||||
.get(id=instance["id"])
|
|
||||||
)
|
|
||||||
notes = ",".join(
|
|
||||||
[str(c.note) for c in doc.notes.all()],
|
|
||||||
)
|
|
||||||
r = super().to_representation(doc)
|
|
||||||
r["__search_hit__"] = {
|
|
||||||
"score": instance.score,
|
|
||||||
"highlights": instance.highlights("content", text=doc.content),
|
|
||||||
"note_highlights": (
|
|
||||||
instance.highlights("notes", text=notes) if doc else None
|
|
||||||
),
|
|
||||||
"rank": instance.rank,
|
|
||||||
}
|
|
||||||
|
|
||||||
return r
|
|
||||||
|
|
||||||
|
|
||||||
class UnifiedSearchViewSet(DocumentViewSet):
|
class UnifiedSearchViewSet(DocumentViewSet):
|
||||||
def __init__(self, *args, **kwargs):
|
def __init__(self, *args, **kwargs):
|
||||||
super().__init__(*args, **kwargs)
|
super().__init__(*args, **kwargs)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user