You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

83 lines
2.0 KiB

from rest_framework import serializers
from rest_framework.serializers import ModelSerializer
from .models import Message, Notes, Documents
from users.serializers import UserSerializer
class DocumentsSerializer(ModelSerializer):
file = serializers.SerializerMethodField()
file_size = serializers.SerializerMethodField()
file_url = serializers.SerializerMethodField()
class Meta:
model = Documents
fields = (
'id',
'file',
'file_size',
'file_url',
'sender',
'recipent',
'team',
'order',
'is_send',
'is_delete',
'message',
)
def get_file(self, obj):
return obj.file.name
def get_file_size(self, obj):
return obj.file.size
def get_file_url(self, obj):
return obj.file.url
class MessageSerializer(ModelSerializer):
sender = UserSerializer()
recipent = UserSerializer()
created = serializers.DateTimeField(format="%Y-%m-%d %H:%M:%S")
documents = DocumentsSerializer(read_only=True, many=True)
text = serializers.SerializerMethodField()
class Meta:
model = Message
fields = (
'text',
'created',
'order',
'sender',
'recipent',
'private_type',
'team',
'documents',
)
def get_text(self, obj):
out = obj.text
documents = obj.documents.all()
if len(documents)>0:
documents_str = '<br>'.join(['Приложенный файл: <br><a target="_blank" href="/chat/download/' + doc.file.name + '">' + doc.file.name + '</a>' for doc in documents])
out += '<br><br>' + documents_str
return out
class NoteSerializer(ModelSerializer):
class Meta:
model = Notes
fields = (
'text',
'created',
'order',
'sender',
'recipent',
'team',
)