o
    h{.                     @   s   d dl mZ ddlmZmZmZ d dlmZ d dlm	Z	 e	 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 )    )forms   )TicketTicketCommentTicketAttachment)Customer)get_user_modelc                          e Zd ZejdejddddddZejddd	ejdd
ddddZ	ejdddejdd
ddddZ
ejddd	ejdd
ddddZejdddejdd
ddddZG dd dZ fddZdd Zd fdd	Z  ZS )
TicketFormFform-controldatetime-localclasstypeattrs9Optional: Schedule this task for a specific date and timerequiredwidget	help_textr      0r   placeholderHoursr   	min_value	max_valuer   r   ;   MinutesReminder before - HoursReminder before - Minutesc                
   @   s   e Zd ZeZg dZejddidejddidejddidejddidejddidej	ddddejddidej
ddidd	Zd
S )zTicketForm.Meta)	customerassigned_toassigned_employeecategorytitledescriptionpriorityscheduled_dateis_scheduledr   form-selectr   r      r   rowsform-check-input)r#   r$   r%   r&   r'   r(   r)   r+   N__name__
__module____qualname__r   modelfieldsr   Select	TextInputTextareaCheckboxInputwidgets r<   r<   -/var/www/html/optinet_system/tickets/forms.pyMeta+   s    
r>   c                    s:  t  j|i | ddlm} |jjdddjddd}tjj|d	| jd
 _	d| jd
 _
|jjdd| jd _	d| jd _
d| jd _
d| jd _| jr| jjr| jjrst| jj }|d }|d d }|| jd _|| jd _| jjrt| jj }|d }|d d }|| jd _|| jd _d S d S d S d S )Nr   EmployeeFactiveuser__isnullemployment_statususer_idTflatid__inr$   
UnassignedrD   r%   zCompany/Infrastructure Ticketr#     <   estimated_duration_hoursestimated_duration_minutesreminder_before_hoursreminder_before_minutes)super__init__	hr.modelsr@   objectsfiltervalues_listUserr6   querysetempty_labelr   instancepkestimated_durationinttotal_secondsinitialreminder_beforeselfargskwargsr@   employee_user_idsr_   hoursminutes	__class__r<   r=   rS   9   s:   zTicketForm.__init__c                 C   4   | j d}|r|j}|dk s|dkrtd|S Nr*         z8Please schedule within working hours (8:00 AM - 5:00 PM)cleaned_datagethourr   ValidationErrorrc   r*   rr   r<   r<   r=   clean_scheduled_date\      
zTicketForm.clean_scheduled_dateTc                       t  jdd}| jddpd}| jddpd}|dks!|dkr/ddlm} |||d|_nd |_| jddp:d}| jd	dpCd}|dksL|dkrZddlm} |||d|_nd |_|rc|  |S 
NF)commitrN   r   rO   )	timedelta)rg   rh   rP   rQ   rR   saverp   rq   datetimerz   r]   ra   rc   ry   r[   rg   rh   rz   	rem_hoursrem_minutesri   r<   r=   r|   e       zTicketForm.saveTr2   r3   r4   r   DateTimeFieldDateTimeInputr*   IntegerFieldNumberInputrN   rO   rP   rQ   r>   rS   ru   r|   __classcell__r<   r<   ri   r=   r
      sL    #	r
   c                       r	   )TicketUpdateFormFr   r   r   r   r   r   r   r   r   r   r   r   r   r    r!   r"   c                
   @   s   e Zd ZeZg dZejddidejddidejddidejddidej	ddddejddidejddidej
ddidd	Zd
S )zTicketUpdateForm.Meta)	r$   r%   r'   r(   r)   statusr&   r*   r+   r   r,   r   r   r-   r.   r0   )r&   r$   r%   r'   r(   r)   r   r+   Nr1   r<   r<   r<   r=   r>      s    
r>   c                    s  t  j|i | ddlm} |jjdddjddd}tjj|d	| jd
 _	|jjdd| jd _	d| jd _
| jr| jjr| jjrat| jj }|d }|d d }|| jd _|| jd _| jjrt| jj }|d }|d d }|| jd _|| jd _d S d S d S d S )Nr   r?   FrA   rB   rE   TrF   rH   r$   rK   r%   rJ   rL   rM   rN   rO   rP   rQ   )rR   rS   rT   r@   rU   rV   rW   rX   r6   rY   rZ   r[   r\   r]   r^   r_   r`   ra   rb   ri   r<   r=   rS      s4   zTicketUpdateForm.__init__c                 C   rk   rl   ro   rt   r<   r<   r=   ru      rv   z%TicketUpdateForm.clean_scheduled_dateTc                    rw   rx   r{   r~   ri   r<   r=   r|      r   zTicketUpdateForm.saver   r   r<   r<   ri   r=   r      sL    	r   c                   @   s   e Zd ZG dd dZdS )TicketCommentFormc                   @   s>   e Zd ZeZddgZejdddddejdd	idd
Z	dS )zTicketCommentForm.Metacommentis_internalr      zAdd your comment...)r   r/   r   r   r   r0   )r   r   N)
r2   r3   r4   r   r5   r6   r   r9   r:   r;   r<   r<   r<   r=   r>      s    
r>   N)r2   r3   r4   r>   r<   r<   r<   r=   r      s    r   c                   @   s"   e Zd ZG dd dZdd ZdS )TicketAttachmentFormc                   @   s>   e Zd ZeZddgZejddddejddddd	Z	d
S )zTicketAttachmentForm.Metafiler(   r   z'image/*,application/pdf,.doc,.docx,.txt)r   acceptr   zOptional description...r   )r   r(   N)
r2   r3   r4   r   r5   r6   r   	FileInputr8   r;   r<   r<   r<   r=   r>      s    
r>   c                 C   sd   | j d}|r0|jdkrtdg d}d|jv r%|j dd nd}||vr0td|S )	Nr   i   zFile size cannot exceed 10MB.)
jpgjpegpnggifbmpwebppdfdocdocxtxt. z>File type not allowed. Please upload images or documents only.)rp   rq   sizer   rs   namelowersplit)rc   r   allowed_extensionsfile_extr<   r<   r=   
clean_file  s   

"
zTicketAttachmentForm.clean_fileN)r2   r3   r4   r>   r   r<   r<   r<   r=   r      s    r   N)djangor   modelsr   r   r   customers.modelsr   django.contrib.authr   rX   	ModelFormr
   r   r   r   r<   r<   r<   r=   <module>   s    xs	