o
    Mdh                     @   s   d dl mZ d dlmZmZ d dl mZ d dlmZ d dlm	Z	 G dd deZ
G dd deZd dl mZ d dlm	Z	 G d	d
 d
ejZG dd dejZG dd dejZdS )    )models)AbstractUserBaseUserManager)gettext_lazy)settingsc                   @   s    e Zd ZdddZdddZdS )CustomUserManagerNc                 K   sJ   |st td| |}| jdd|i|}|| |j| jd |S )NzThe Email field must be setemail)using )
ValueError_normalize_emailmodelset_passwordsave_db)selfr   passwordextra_fieldsuserr
   r
   1/var/www/ai-chatbot-integration/chatbot/models.pycreate_user   s   

zCustomUserManager.create_userc                 K   s`   | dd | dd |ddurttd|ddur&ttd| j||fi |S )Nis_staffTis_superuserz"Superuser must have is_staff=True.z&Superuser must have is_superuser=True.)
setdefaultgetr   r   r   )r   r   r   r   r
   r
   r   create_superuser   s   z"CustomUserManager.create_superuserN)__name__
__module____qualname__r   r   r
   r
   r
   r   r   
   s    
	r   c                   @   s   e Zd ZdZejedddZejedddddZ	ej
edd	dded
dZejeddddeddZejedddeddZejeddejdeddZdZg Ze Zdd ZdS )
CustomUserNzEmail AddressT)verbose_nameuniquez	Full Name   )r"   
max_lengthblanknullzProfile Photozprofile_photos/zUser's profile photo)r"   	upload_tor&   r'   	help_textzPhone Number   z(User's phone number (e.g., +12345678901))r"   r%   r&   r'   r)   z	Last Seenz7Timestamp of the user's last activity (e.g., page load))r"   r'   r&   r)   zDefault Language
   enz;User's preferred language for communications (e.g., emails))r"   r%   choicesdefaultr)   r   c                 C   s    | j r| j  d| j dS | jS )Nz ())namer   r   r
   r
   r   __str__L   s    zCustomUser.__str__)r   r   r    usernamer   
EmailFieldr   r   	CharFieldr0   
ImageFieldprofile_photophoneDateTimeField	last_seenr   	LANGUAGESdefault_languageUSERNAME_FIELDREQUIRED_FIELDSr   objectsr2   r
   r
   r
   r   r!      sV    r!   c                   @   sL   e Zd ZejejejddZej	ddZ
ejddZejddZdd	 Zd
S )Chatbotchatbots	on_deleterelated_named   )r%   Tauto_now_addauto_nowc                 C   s   | j S r   )r0   r1   r
   r
   r   r2   [   s   zChatbot.__str__N)r   r   r    r   
ForeignKeyr   AUTH_USER_MODELCASCADEr   r5   r0   r9   
created_at
updated_atr2   r
   r
   r
   r   r@   U   s    r@   c                   @   s>   e Zd ZejeejddZejddZ	ej
ddZdd Zd	S )
FilefilesrB   zchatbot_files/%Y/%m/%d/)r(   TrF   c                 C   s   | j j d| jj S )Nz - )chatbotr0   filer1   r
   r
   r   r2   c   s   zFile.__str__N)r   r   r    r   rJ   r@   rL   rQ   	FileFieldrR   r9   uploaded_atr2   r
   r
   r
   r   rO   ^   s
    rO   c                   @   s`   e Zd ZejeejddZejddZ	ej
ddZejdg dd	d
ZejdddZdd ZdS )RAGMetadatarag_metadatarB   r   )r.   TrH      ))PENDINGPending)
PROCESSING
Processing)	COMPLETED	Completed)FAILEDFailedrX   )r%   r-   r.   )r&   r'   c                 C   s   d| j  S )NzRAG for )rR   r1   r
   r
   r   r2   r   s   zRAGMetadata.__str__N)r   r   r    r   OneToOneFieldrO   rL   rR   PositiveIntegerFieldchunk_countr9   processed_atr5   status	TextFielderror_messager2   r
   r
   r
   r   rU   f   s    rU   N)	django.dbr   django.contrib.auth.modelsr   r   django.utils.translationr   r   django.confr   r   r!   Modelr@   rO   rU   r
   r
   r
   r   <module>   s    3	