
    vg:"                        d dl Z d dlmZ d dlmZ 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 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mZ g dZg dZg dZ g dZ! G d de      Z" G d de      Z# G d de      Z$ G d de      Z% G d de      Z& G d de      Z' G d de      Z( G d  d!e      Z)d" Z*d# Z+ ejX                  e*e)$        ejX                  e+e)$       y)%    N)datetime)apps)models)post_delete	post_save)ValidationError)gettext_lazy)HorillaCompanyManager)Company
DepartmentJobPositionTags)Employee)HorillaModelget_diff)HorillaAuditInfoHorillaAuditLog))lowLow)mediumMedium)highHigh))
departmentr   )job_positionzJob Position)
individual
Individual))
suggestion
Suggestion)	complaint	Complaint)service_requestzService Request)meeting_requestzMeeting Request)anounymous_complaintzAnonymous Complaint)othersOthers))newNew)in_progresszIn Progress)on_holdzOn Hold)resolvedResolved)canceledCanceledc                       e Zd Z ej                  eddej                        Z ej                  eddej                        Z	 ej                  e
ddej                        Z ed	      Z G d
 d      Z fdZ xZS )DepartmentManagerManagerdep_manager)verbose_namerelated_name	on_deleter   dept_managerTFnulleditabler6   'manager__employee_work_info__company_idc                       e Zd ZdZy)DepartmentManager.Meta)r   managerN__name__
__module____qualname__unique_together     #/var/www/horilla/helpdesk/models.pyMetar=   @   s    3rE   rG   c                     t        |   |i | | j                  j                         | j                  k(  s"t        t        d| j                   d            y )NzThis employee is not from z .)supercleanr>   get_departmentr   r   _selfargskwargs	__class__s      rF   rJ   zDepartmentManager.cleanC   sS    t&v&||**,?!!&@@QQS$T"UVV @rE   )r@   rA   rB   r   
ForeignKeyr   CASCADEr>   r   r   r   PROTECT
company_idr
   objectsrG   rJ   __classcell__rQ   s   @rF   r1   r1   .   s    f"..	G #""!#..	J #""dUfnnJ $$MNG4 4W WrE   r1   c                       e Zd Z ej                  dd      Z ej                  ed      Z ej                  dd      Z ej                  e
ddej                        Z ed	
      Zd Zy)
TicketTyped   T)
max_lengthunique2   choicesr\      Fr8   rU   related_company_fieldc                     | j                   S NtitlerN   s    rF   __str__zTicketType.__str__R       zzrE   N)r@   rA   rB   r   	CharFieldrg   TICKET_TYPEStypeprefixrR   r   rT   rU   r
   rV   ri   rD   rE   rF   rZ   rZ   I   sn    FD9E6LR@DV48F"""dUfnnJ $,GGrE   rZ   c                       e Zd Z ej                  d      Z ej                  eej                  dd      Z	 ej                  e
ej                  d      Z ej                  d      Z ej                  ed	d
      Z ej                   d      Z ej                   dd      Z ej                  ed	      Z ej                  d	d      Z ej,                  edd      Z ej                   dd      Z ej,                  edd      Z ej                  edd      Z edeg      Z e d      Z! G d d      Z" fdZ#d Z$d  Z%d! Z&d" Z' xZ(S )#Ticketr^   r\   ticketOwner)r6   r5   r4   zTicket Type)r6   r4      r[   r   )r`   r\   defaultTauto_now_add)blankr9   r_   z
Forward To)r\   r4   ticket_assigned_to)rx   r5   r9   rx   ticket_tagsr(   )r`   ru   r\   history_set)r5   bases+employee_id__employee_work_info__company_idrb   c                       e Zd ZdgZy)Ticket.Metaz-created_dateN)r@   rA   rB   orderingrD   rE   rF   rG   r   w   s
    #$rE   rG   c                     t        |   |i | | j                  }t        j                         j                         }||k  rt        t        d            y )Nz%Deadline should be greater than today)rI   rJ   deadliner   todaydater   rL   )rN   rO   rP   r   r   rQ   s        rF   rJ   zTicket.cleanz   sP    t&v&== %%'e!!$K"LMM rE   c                    | j                   }| j                  dk(  r,t        j                  j	                  |      j
                  }|S | j                  dk(  r,t        j                  j	                  |      j                  }|S | j                  dk(  r.t        j                  j	                  |      j                         }S Nr   )idr   r   )
	raised_onassigning_typer   rV   getr   r   r   r   get_full_namerN   obj_idr   s      rF   get_raised_onzTicket.get_raised_on   s    ,."**..&.9DDI
 	   N2#++//6/:GGI    L0 ((,,,7EEGIrE   c                 @   | j                   }| j                  dk(  r"t        j                  j	                  |      }|S | j                  dk(  r"t
        j                  j	                  |      }|S | j                  dk(  r t        j                  j	                  |      }S r   )r   r   r   rV   r   r   r   r   s      rF   get_raised_on_objectzTicket.get_raised_on_object   s    ,."**..&.9I
 	   N2#++//6/:I    L0 ((,,,7IrE   c                     | j                   S re   rf   rh   s    rF   ri   zTicket.__str__   rj   rE   c                     t        |       S )zS
        This method is used to return the tracked history of the instance
        r   rh   s    rF   trackingzTicket.tracking   s     ~rE   ))r@   rA   rB   r   rk   rg   rR   r   rT   employee_idrZ   ticket_type	TextFielddescriptionPRIORITYpriority	DateFieldcreated_dateresolved_dateMANAGER_TYPESr   r   ManyToManyFieldassigned_tor   r   tagsTICKET_STATUSstatusr   r   historyr
   rV   rG   rJ   r   r   ri   r   rW   rX   s   @rF   rp   rp   V   sr   F+E#&##FNNPWK $&##.."K
 #&""c2KvS%PH#6##6L$F$$4d;M%V%%mLN   ClKI(&((+?K  vT6H!6!!$dODVmUrRF"
G $KG% %NrE   rp   c                   
    e Zd Z ej                  eej                  dd      Z ej                  eej                  dd      Z	 ej                  d      Z ej                  d      Z G d d      ZdefdZ fd	Z xZS )
ClaimRequestT)r6   r9   rx   F)ru   c                       e Zd ZdZy)ClaimRequest.Meta	ticket_idr   Nr?   rD   rE   rF   rG   r      s    6rE   rG   returnc                 8    | j                    d| j                   S )N|r   rh   s    rF   ri   zClaimRequest.__str__   s    ..!4#3#3"455rE   c                     t        |   |i | | j                  st        dt	        d      i      | j
                  st        dt	        d      i      y )Nr   zThis field is required.r   )rI   rJ   r   r   rL   r   rM   s      rF   rJ   zClaimRequest.clean   sU    t&v&~~!;2K0L"MNN!=!4M2N"OPP  rE   )r@   rA   rB   r   rR   rp   rS   r   r   r   BooleanFieldis_approvedis_rejectedrG   strri   rJ   rW   rX   s   @rF   r   r      s    !!!..	I $&##..	K &&%%e4K%&%%e4K7 76 6Q QrE   r   c                       e Zd Z ej                  dd      Z ej                  eej                  d      Z	 ej                  e
ej                  d      Z ej                  d      Zd Zy)	CommentTrz   comment)r6   r5   employee_commentrv   c                     | j                   S re   )r   rh   s    rF   ri   zComment.__str__   s    ||rE   N)r@   rA   rB   r   r   r   rR   rp   rS   rr   r   
DO_NOTHINGr   DateTimeFieldr   ri   rD   rE   rF   r   r      si    fD5GVviXF#&##F--<NK  6T2DrE   r   c                   (    e Zd Z ej                  d      Z ej                  ddd      Z ej                  ddd      Z ej                  e
ej                  ddd      Z ej                  eej                  ddd	      Zd
 Z fdZd Z xZS )
AttachmentzTickets/Attachment)	upload_tor[   T)r\   rx   r9   r^   ticket_attachment)r6   r9   rx   r5   comment_attachmentc                     g d}ddg}t         j                  j                  | j                  j                        d   j                         }||v rd| _        y ||v rd| _        y d| _        y )N)z.jpgz.jpegz.pngz.svgz.m4az.mp3   audioimagefile)ospathsplitextr   urllowerformat)rN   image_formataudio_formatfile_extensions       rF   get_file_formatzAttachment.get_file_format   s`    8'))$))--8;AAC\)!DK|+!DK DKrE   c                 L    | j                          t        |   | g|i | y re   )r   rI   saverM   s      rF   r   zAttachment.save   s%    T+D+F+rE   c                 h    t         j                  j                  | j                  j                        S re   )r   r   basenamer   namerh   s    rF   ri   zAttachment.__str__   s    ww		//rE   )r@   rA   rB   r   	FileFieldr   rk   r   r   rR   rp   rS   rr   r   r   r   r   ri   rW   rX   s   @rF   r   r      s    6&:;D"&""cDIKV4dCFV..(F  f..)G	!,
0rE   r   c                   b    e Zd Z ej                  d      Z ej                  ddd      Zd Zy)FAQCategory   rq   Trt   )rx   r9   r\   c                     | j                   S re   rf   rh   s    rF   ri   zFAQCategory.__str__   rj   rE   N)	r@   rA   rB   r   rk   rg   r   r   ri   rD   rE   rF   r   r      s/    F+E"&""DSIKrE   r   c                      e Zd Z ej                  d      Z ej                  d      Z ej                  e	      Z
 ej                  eej                        Z ej                  eddej                        Z ed      Zd	 Zy
)FAQrt   rq   )r6   TFr8   rU   rb   c                     | j                   S re   )questionrh   s    rF   ri   zFAQ.__str__  s    }}rE   N)r@   rA   rB   r   rk   r   r   answerr   r   r   rR   r   rT   categoryr   rU   r
   rV   ri   rD   rE   rF   r   r      s    v3/HV-F!6!!$'D v  GH"""dUfnnJ $,GGrE   r   c                 @    ddl m}  |       }|j                  |       y Nr   )FAQIndex)search_indexesr   update_objectsenderinstancerP   r   indexs        rF   update_indexr   	      (JE	!rE   c                 @    ddl m}  |       }|j                  |       y r   )r   r   remove_objectr   s        rF   remove_from_indexr     r   rE   )r   )-r   r   djangor   	django.dbr   django.db.models.signalsr   r   django.formsr   django.utils.translationr	   rL   base.horilla_company_managerr
   base.modelsr   r   r   r   employee.modelsr   horilla.modelsr   horilla_audit.methodsr   horilla_audit.modelsr   r   r   r   rl   r   r1   rZ   rp   r   r   r   r   r   r   r   connectrD   rE   rF   <module>r      s    	    ; ( 6 > > > $ ' * B
W W6
 
F\ FRQ< Q<	l 	$0 $0N, , """ 	  ,s +   %c 2rE   