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.
81 lines
1.9 KiB
81 lines
1.9 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(['<a target="_blank" href="'+doc.file.url+'">' + doc.file.name + '</a>' for doc in documents])
|
|
out += '<br />' + documents_str
|
|
return out
|
|
|
|
|
|
class NoteSerializer(ModelSerializer):
|
|
|
|
class Meta:
|
|
model = Notes
|
|
|
|
fields = (
|
|
'text',
|
|
'created',
|
|
'order',
|
|
'sender',
|
|
'recipent',
|
|
)
|
|
|