
    si                     \   d Z ddlmZ ddlmZ ddlmZ ddlm	Z	m
Z
mZmZ ddlmZ ddlmZ ddlmZ dd	lmZ  G d
 dej*                        Z G d dej.                        Z G d de      Z G d dej4                        Z G d dej4                        Z G d dej4                        Zy)z0
chat/forms.py

Forms for the Chat application.
    )forms)gettext_lazy)	ModelForm)ChatAttachmentChatMessageChatRoomChatRoomMember)EmployeeFilter)Employee)HorillaMultiSelectField)HorillaMultiSelectWidgetc                       e Zd ZdZdZy)MultipleFileInputz+Widget that allows multiple file selection.TN)__name__
__module____qualname____doc__allow_multiple_selected     ./var/www/python-projects/worksol/chat/forms.pyr   r      s    5"r   r   c                   .     e Zd ZdZ fdZd fd	Z xZS )MultipleFileFieldz)Field that handles multiple file uploads.c                 X    |j                  dt                      t        |   |i | y )Nwidget)
setdefaultr   super__init__)selfargskwargs	__class__s      r   r   zMultipleFileField.__init__   s)    ($5$78$)&)r   c                     t         |   }t        |t        t        f      r|D cg c]  } |||       }}n
 |||      g}|r|d   S d S c c}w )Nr   )r   clean
isinstancelisttuple)r   datainitialsingle_file_cleandresultr"   s         r   r$   zMultipleFileField.clean   s\    !GMdT5M*=AB'73BFB'g67F"vay,, Cs   A)N)r   r   r   r   r   r$   __classcell__r"   s   @r   r   r      s    3*- -r   r   c            	            e Zd ZdZ ej
                  ej                  j                  d      d ej                  ddd       e
d      	      Z G d
 d      Z fdZ xZS )ChatRoomFormz6
    Form for creating/editing a group chat room.
    T	is_active/oh-select oh-select-2 select2-hidden-accessiblemultiple)classr4   attrsMembersquerysetrequiredr   labelc                       e Zd ZeZg dZ ej                  d ed      d       ej                  dd ed      d      d	Z
y
)ChatRoomForm.Meta)namedescription
room_imageoh-input w-100z
Group Name)r5   placeholderr6      zGroup Description (optional))r5   rowsrC   )r?   r@   N)r   r   r   r   modelfieldsr   	TextInput_Textareawidgetsr   r   r   Metar>   8   sQ    6#EOO 0<Q *5>>-#$%C#D	
r   rL   c                 F   |j                  dd       | _        t        |   |i | | j                  rt	        | j                  j
                  d      r| j                  j
                  j                  }|j                         }|rNt        j                  j                  d|      j                  |j                        | j                  d   _        y t        j                  j                  d      j                  |j                        | j                  d   _        y y y )Nrequestemployee_getTr2   employee_work_info__company_ididmembersr1   poprN   r   r   hasattruserrO   get_companyr   objectsfilterexcluderS   rG   r:   r   r    r!   current_employeecompanyr"   s        r   r   zChatRoomForm.__init__H   s    zz)T2$)&) <<GDLL$5$5~F#||00==&224G2:2B2B2I2I"3: 3J 3 '-00'1 I&/
 3;2B2B2I2I" 3J 3'-00'1 I&/ G<r   )r   r   r   r   r   ModelMultipleChoiceFieldr   rZ   r[   SelectMultiplerI   rT   rL   r   r-   r.   s   @r   r0   r0   '   sn     -e,,!!((4(8#u##J&
 	l
G
 
 2 2r   r0   c            
            e Zd ZdZ ej
                  d ej                  dd ed      dd      	      Z e	d
      Z
 ej                  d ej                         	      Z fdZ xZS )ChatMessageFormz*
    Form for sending a chat message.
    FrB      zType a message...messageInput)r5   rE   rC   rS   r6   )r;   r   )r;   c                     t         |          }|j                  dd      j                         }| j                  j                  d      }|s |st        j                  t        d            |S )Ncontent attachmentsz(Please enter a message or attach a file.)	r   r$   getstripfilesgetlistr   ValidationErrorrI   )r   cleaned_datarg   ri   r"   s       r   r$   zChatMessageForm.cleanp   sf    w}""9b1779jj((7{''<=  r   )r   r   r   r   r   	CharFieldrJ   rI   rg   r   ri   IntegerFieldHiddenInputreply_tor$   r-   r.   s   @r   rc   rc   [   s}     eoou~~) !45$	

G $K "u!!59J9J9J9LMH	 	r   rc   c                        e Zd ZdZ ej
                  ej                  j                  d      d ej                  ddi       e
d            Z fd	Z xZS )
StartDirectChatFormz;
    Form for starting a direct chat with an employee.
    Tr1   r5   r3   r6   r   r9   c                 F   |j                  dd       | _        t        |   |i | | j                  rt	        | j                  j
                  d      r| j                  j
                  j                  }|j                         }|rNt        j                  j                  d|      j                  |j                        | j                  d   _        y t        j                  j                  d      j                  |j                        | j                  d   _        y y y )NrN   rO   TrP   rR   employee_idr1   rU   r]   s        r   r   zStartDirectChatForm.__init__   s    zz)T2$)&) <<GDLL$5$5~F#||00==&224G6>6F6F6M6M"3: 7N 7 '-00'1 M*3
 7?6F6F6M6M" 7N 7'-00'1 M*3 G<r   )r   r   r   r   r   ModelChoiceFieldr   rZ   r[   SelectrI   rw   r   r-   r.   s   @r   ru   ru   |   s`     )%((!!((4(8u||MN
 
mK2 2r   ru   c                   "     e Zd ZdZ fdZ xZS )AddMembersFormz2
    Form for adding members to a group chat.
    c           	         |j                  dd       | _        |j                  dd       | _        t        |   |i | t
        j                  j                  d      }| j                  r9| j                  j                  j                  dd      }|j                  |      }| j                  rdt        | j                  j                  d      rD| j                  j                  j                  }|j                         }|r|j                  |	      }t        |t!        d
t"        dd      t%        d            | j&                  d<   y )N	chat_roomrN   Tr1   rw   )flat)id__inrO   )rQ   zemployee-widget-filterfzemployee_filters.html)filter_route_namefilter_classfilter_instance_contex_namefilter_template_pathr8   )r:   r   r<   rT   )rV   r}   rN   r   r   r   rZ   r[   rT   values_listr\   rW   rX   rO   rY   r   r   r
   rI   rG   )r   r    r!   r:   existing_member_idsr^   r_   r"   s          r   r   zAddMembersForm.__init__   s   K6zz)T2$)&) ##**T*:>>"&.."8"8"D"DD #E #  ''/B'CH<<GDLL$5$5~F#||00==&224G#??'?R!8+":+,/%<	 I,	"
Ir   )r   r   r   r   r   r-   r.   s   @r   r{   r{      s    
 
r   r{   N)r   djangor   django.utils.translationr   rI   
base.formsr   chat.modelsr   r   r   r	   employee.filtersr
   employee.modelsr   2horilla_widgets.widgets.horilla_multi_select_fieldr   &horilla_widgets.widgets.select_widgetsr   ClearableFileInputr   	FileFieldr   r0   Formrc   ru   r{   r   r   r   <module>r      s     6   M M + $ V K#00 #
- - 129 12hejj B2%** 2B!
UZZ !
r   