a
    h                     @   s   d dl mZ d dlmZ ddlmZmZmZ G dd dejZ	G dd dejZ
G d	d
 d
ejZG dd dejZG dd dejZdS )    )serializers)User   )MedicalRecordChatSessionChatMessagec                   @   s   e Zd ZG dd dZdS )UserSerializerc                   @   s   e Zd ZeZg dZdS )zUserSerializer.Meta)idusernameemailN)__name__
__module____qualname__r   modelfields r   r   6/home/qiu/health_record_app/backend/api/serializers.pyMeta   s   r   N)r   r   r   r   r   r   r   r   r      s   r   c                   @   s4   e Zd ZeddZe ZG dd dZdd Z	dS )MedicalRecordSerializerT	read_onlyc                   @   s    e Zd ZeZg dZg dZdS )zMedicalRecordSerializer.Meta)r	   usertitlerecord_typedescriptionfilefile_url	file_typeextracted_textmetadata
created_at
updated_at)r   r   r   N)r   r   r   r   r   r   read_only_fieldsr   r   r   r   r      s   r   c                 C   s(   | j d}|jr$|r$||jjS d S )Nrequest)contextgetr   build_absolute_uriurl)selfobjr#   r   r   r   get_file_url   s    
z$MedicalRecordSerializer.get_file_urlN)
r   r   r   r   r   r   SerializerMethodFieldr   r   r*   r   r   r   r   r      s   
	r   c                   @   s&   e Zd ZedddZG dd dZdS )ChatMessageSerializerTmanyr   c                   @   s   e Zd ZeZg dZdS )zChatMessageSerializer.Meta)r	   rolecontentreferenced_recordsr    N)r   r   r   r   r   r   r   r   r   r   r   #   s   r   N)r   r   r   r   r1   r   r   r   r   r   r,       s   r,   c                   @   s0   e Zd ZedddZeddZG dd dZdS )ChatSessionSerializerTr-   r   c                   @   s   e Zd ZeZg dZdS )zChatSessionSerializer.Meta)r	   r   r   messagesr    r!   Nr   r   r   r   r   r   r   r   r   r   r   ,   s   r   N)r   r   r   r,   r3   r   r   r   r   r   r   r   r2   (   s   
r2   c                   @   s8   e Zd Ze ZejdddZG dd dZdd Z	dS )	ChatSessionListSerializerzmessages.countT)sourcer   c                   @   s   e Zd ZeZg dZdS )zChatSessionListSerializer.Meta)r	   r   last_messagemessage_countr    r!   Nr4   r   r   r   r   r   5   s   r   c                 C   sD   |j  }|r@|jt|jdkr2|jd d d n|j|jdS d S )Nd   z...)r/   r0   r    )r3   lastr/   lenr0   r    )r(   r)   Zlast_msgr   r   r   get_last_message9   s    
$z*ChatSessionListSerializer.get_last_messageN)
r   r   r   r   r+   r7   IntegerFieldr8   r   r<   r   r   r   r   r5   1   s   r5   N)rest_frameworkr   django.contrib.auth.modelsr   modelsr   r   r   ModelSerializerr   r   r,   r2   r5   r   r   r   r   <module>   s   	