403Webshell
Server IP : 65.108.144.40  /  Your IP : 216.73.217.165
Web Server : Apache/2.4.52 (Ubuntu)
System : Linux ubuntu-8gb-hel1-1 5.15.0-173-generic #183-Ubuntu SMP Fri Mar 6 13:29:34 UTC 2026 x86_64
User : dev ( 1000)
PHP Version : 8.2.30
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : ON  |  Sudo : ON  |  Pkexec : ON
Directory :  /var/www/erp/helpdesk/__pycache__/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /var/www/erp/helpdesk/__pycache__/views.cpython-310.pyc
o

hͦh���@s>ddlZddlZddlZddlmZddlmZddlmZddlm	Z	ddl
mZddlm
Z
ddlmZmZdd	lmZmZmZdd
lmZmZddlmZddlmZdd
lmZddlm Z ddl!m"Z"ddl#m$Z$ddl%m&Z&m'Z'm(Z(m)Z)m*Z*ddl+m,Z,m-Z-m.Z.ddl/m0Z0m1Z1ddl2m3Z3ddl4m5Z5ddl6m7Z7m8Z8m9Z9m:Z:ddl;m<Z<m=Z=m>Z>m?Z?m@Z@mAZAmBZBmCZCmDZDmEZEddlFmGZGddlHmIZImJZJmKZKmLZLmMZMmNZNmOZOmPZPmQZQddlRmSZSmTZTmUZUddlVmWZWmXZXmYZYmZZZddl[m\Z\ddl]m^Z^e�_e`�ZaeXeZd�dd ���ZbeXeWeZd!�d"d#����ZceXeWeZd$�d%d&����ZdeXeZd'�d(d)���ZeeXeWd*d+���ZfeXd,d-��ZgeXeWeZd.�d/d0����ZheXeWeZd1�d2d3����ZieXeWd4d5���ZjeXeWd6d7���ZkeXd8d9��ZleXeZd:�d;d<���ZmeXd=d>��ZneXeWd?d@���ZoeXeWdAdB���ZpeXdCdD��ZqeXdEdF��ZreXe5dGePdH�dIdJ���ZsdKdL�ZteXeWdMdN���ZueXdOdP��ZveXdQdR��ZweXdSdT��ZxeXdUdV��ZyeXeWdWdX���ZzeXeWdYdZ���Z{eXd[d\��Z|eXd]d^��Z}eXeWd_d`���Z~eXeWdadb���ZeXdcdd��Z�eXdedf��Z�eXeZdg�dhdi���Z�eXdjdk��Z�eXdldm��Z�eXdndo��Z�eXdpdq��Z�eXeZdr�dsdt���Z�eXeZdG�dudv���Z�eXdwdx��Z�eXeWdydz���Z�eXeWd{d|���Z�eXeZd}�d~d���Z�eXd�d���Z�eXeZd��d�d����Z�eXeZd��d�d����Z�eXeWeZd��d�d�����Z�eXe d�d�g�eZd��d�d�����Z�eXeZd��d�d����Z�eXeZd��d�d����Z�dS)��N)�datetime)�	strtobool)�
itemgetter)�parse_qs)�messages)�	Paginator)�ProtectedError�Q)�HttpResponse�HttpResponseRedirect�JsonResponse)�redirect�render)�render_to_string)�reverse)�gettext)�require_http_methods)�SearchQuerySet)�TagsForm)�filtersubordinates�get_key_instances�is_reportingmanager�
paginator_qry�sortby)�
Department�JobPosition�Tags)�Employee�EmployeeWorkInformation)�get_content_type)�ticket_owner_can_enter)�FAQCategoryFilter�	FAQFilter�TicketFilter�
TicketReGroup)
�AttachmentForm�CommentForm�DepartmentManagerCreateForm�FAQCategoryForm�FAQForm�TicketAssigneesForm�
TicketForm�TicketRaisedOnForm�
TicketTagForm�TicketTypeForm)�is_department_manager)	�FAQ�
TICKET_STATUS�
Attachment�ClaimRequest�Comment�DepartmentManager�FAQCategory�Ticket�
TicketType)�AddAssigneeThread�RemoveAssigneeThread�TicketSendThread)�hx_request_required�login_required�manager_can_enter�permission_required)�group_by_queryset)�notifyzhelpdesk.view_faqcategorycCs(tj��}|t|j�d�}t|d|d�S)z�
    This function is responsible for rendering the FAQ category view.

    Parameters:
        request (HttpRequest): The HTTP request object.
    )�faq_categories�fzhelpdesk/faq/faq_view.html��context)r6�objects�allr"�GETr)�requestrBrE�rJ�/var/www/erp/helpdesk/views.py�faq_category_viewHs


�rLzhelpdesk.add_faqcategorycCsTt�}|jdkr t|j�}|��r |��t�|td��t�}d|i}t|d|�S)z�
    This function is responsible for creating the FAQ Category.

    Parameters:
        request (HttpRequest): The HTTP request object.

    Returns:
    GET : return faq category create form template
    POST : return faq category view
    �POSTz&The FAQ Category created successfully.�form�%helpdesk/faq/faq_category_create.html)	r(�methodrM�is_valid�saver�success�_r�rIrNrErJrJrK�faq_category_create[s

�rVzhelpdesk.change_faqcategorycCsftjj|d�}t|d�}|jdkr(t|j|d�}|��r(|��t�	|t
d��||d�}t|d|�S)��
    This function is responsible for updating the FAQ.

    Parameters:
        request (HttpRequest): The HTTP request object.
        id : id of the faq to update.

    Returns:
    GET : return faq create form template
    POST : return faq view
    ��id��instancerMz&The FAQ category updated successfully.)rN�faq_categoryrO)r6rF�getr(rPrMrQrRrrSrTr)rIrYr\rNrErJrJrK�faq_category_updatexs

�r^zhelpdesk.delete_faqcategorycCsZztjj|d�}|��t�|td��td�WSty,t�	|td��Ytd�Sw)NrXz/The FAQ category has been deleted successfully.�z$You cannot delete this FAQ category.�)<script>window.location.reload()</script>)
r6rFr]�deleterrSrTr
r�error)rIrY�faqrJrJrK�faq_category_delete�s
�rdcCsH|j��}t|j�j}t|�}tt|�|t|j�||d�}t|d|�S)��
    This function is responsible for search and filter the FAQ.

    Parameters:
        request (HttpRequest): The HTTP request object.

    Returns:
    GET : return faq filter form template
    POST : return faq view
    )rBrC�pd�filter_dictz#helpdesk/faq/faq_category_list.html)rH�	urlencoder!�qsrrr6r)rI�
previous_datarB�	data_dictrErJrJrK�faq_category_search�s

�rlcKs2tjj|d�}|t|j�|t�d�}t|d|d�S)z�
    This function is responsible for rendering the FAQ view.

    Parameters:
        request (HttpRequest): The HTTP request object.
        obj_id (int): The id of the the faq category.
    ��category)�faqsrC�cat_id�create_tag_fzhelpdesk/faq/faq_list_view.htmlrD)r0rF�filterr"rHrr)rI�obj_id�kwargsrorErJrJrK�faq_view�s
�ruzhelpdesk.add_faqcCsXtd|id�}|jdkr!t|j�}|��r!|��t�|td��||d�}t|d|�S)z�
    This function is responsible for creating the FAQ.

    Parameters:
        request (HttpRequest): The HTTP request object.

    Returns:
    GET : return faq create form template
    POST : return faq view
    rn��initialrMzThe FAQ created successfully.)rNrp�helpdesk/faq/faq_create.html)	r)rPrMrQrRrrSrTr)rIrsrNrErJrJrK�
create_faq�s

�ryzhelpdesk.change_faqcCsltjj|d�}t|d�}|jdkr(t|j|d�}|��r(|��t�	|t
d��|||jjd�}t
|d|�S)rWrXrZrMzThe FAQ updated successfully.)rNrcrprx)r0rFr]r)rPrMrQrRrrSrTrnrYr)rIrsrcrNrErJrJrK�
faq_update�s

�rzc
Cs�|j�dd�}|j�dd�}|j��}|j�dd�}tjjdd�}t|�}tt|�|rLt��t	|d�t	|d�B��
d	�}d
d�|D�}tjj|d�}n
tjjdd�}|rYtt�S|rf|�
d�|j|d
�}|rm|�
d�|t|j�|||d�}	t|d|	�S)rerpr_rn�searchT��	is_active)�question__icontains)�answer__icontains�defaultcS�g|]}|j�qSrJ)�pk)�.0�resultrJrJrK�
<listcomp>+�zfaq_search.<locals>.<listcomp>)�pk__inrm)rorCrfrg�query�helpdesk/faq/faq_list.html)rHr]rhr0rFrrrrrr	�usingr
rl�popr"r)
rIrYrnrjr�rork�results_list�
result_pksrErJrJrK�
faq_searchs:


�

�r�cCsT|j��}t|j�j}|j|d�}t|�}tt|�|t|j�||d�}t|d|�S)z�
    This function is responsible for filter the FAQ.

    Parameters:
        request (HttpRequest): The HTTP request object.

    Returns:
    GET : return faq filter form template
    POST : return faq view
    rm)rorCrfrgr�)	rHrhr"rirrrrr0r)rIrYrjrorkrErJrJrK�
faq_filterBs

�r�cCs(t|j�j}t|���}d|i}t|�S)Nro)r"rHri�list�valuesr)rIro�	data_list�responserJrJrK�faq_suggestion^s
�r�zhelpdesk.delete_faqcCshztjj|d�}|jj}|��t�|td��	|��t
d�WSty3t�|td��Yt
d�Sw)NrXz+The FAQ "{}" has been deleted successfully.r_zYou cannot delete this FAQ.r`)
r0rFr]rnrYrarrSrT�formatr
rrb)rIrYrcrprJrJrK�
faq_deletehs�
�r�c
Csltjjdd�}|j�d�r|j�d�nd}|jj}|j��}|j�d�}|j�d�}|j�d�}|j|d�|j|jd	�B}g}	|j�d
�rG|}	g}
|jdd�}|jj}t	|d�r||j
j}
|j
j}|
rn|j|
j
dd
�}|
|7}
|r||j|j
dd
�}|
|7}
|j|dd�}|
|7}
t|�}tt|�d}t||�t|	|�t|
|�t|j�tjt|t����|d�	}t|||d�S)z�
    This function is responsible for rendering the Ticket view.

    Parameters:
        request (HttpRequest): The HTTP request object.
    Tr|�viewr��my_page�all_page�allocated_page��employee_id��
created_by�helpdesk.view_ticket�employee_work_info�
department��	raised_on�assigning_type�job_position�
individual)�assigned_tor�z helpdesk/ticket/ticket_view.html)	�
my_tickets�all_tickets�allocated_ticketsrC�	gp_fields�
ticket_statusr��todayrgrD)r7rFrrrHr]�user�employee_getrh�has_perm�hasattrr��
department_id�job_position_idrYrrrr#r$�fieldsr1rr��dater)rI�ticketsr��employeerj�my_page_number�all_page_number�allocated_page_numberr�r�r��ticket_listr�r�r��
tickets_itemsrk�templaterErJrJrK�ticket_viewxsZ	
�
��

�r�c
Cst�}|j�d�r|j�d�}td|id�}|jdkr�|j��}|j�d�}tjj|d�}tjj	|j
d���}dd�|D�}|rJt|d	j
�|d
<nt�|d�t|dd
|i�St||jd�}|��r�|jdd�}t|d	j
�|_|��|j�d�}	|	D]}
t|
|d�}|��q}|D]}|j�|�q�|j��}
dd�|
D�}|�|jj�t||dd�}|��t� |t!d��t"|�#�d�r�|�#�j$��r�|�#�j$���%�j&}|�|j�t'j(|j)j*|ddddddt+dd|j
id �d!�	t,d"�S|t-�d#�}t|d|�S)$z�
    This function is responsible for creating the Ticket.

    Parameters:
        request (HttpRequest): The HTTP request object.

    Returns:
    GET : return Ticket create form template
    POST : return Ticket view
    �statusrvrM�ticket_typerX)�tags__titlecSr�rJr�)r��wirJrJrKr��r�z!ticket_create.<locals>.<listcomp>rr�z;No employee found with a matching tag for this ticket type.� helpdesk/ticket/ticket_form.htmlrN)�data�filesF��commit�
attachment��file�ticketcSr�rJ��employee_user_id�r�r�rJrJrKr��r��create��typez The Ticket created successfully.�dept_managerz&You have been assigned to a new Ticketu0لقد تم تعيينك لتذكرة جديدةz'Ihnen wurde ein neues Ticket zugewiesenz!Se te ha asignado un nuevo ticketu(Un nouveau ticket vous a été attribué�infinite�
ticket-detail�	ticket_id�rt��	recipient�verb�verb_ar�verb_de�verb_es�verb_fr�iconr
r`)rN�t_type_form).r+rHr]rPrM�copyr8rFrrr�title�distinct�strrYrrbr�FILESrQrRr�r��getlistr2r��addrG�appendr�r�r;�startrSrTr��get_raised_on_objectr��first�managerrA�sendr�r�rr
r.)rIrNr��mutable�ticket_type_id�ticket_type_obj�work_info_qs�matched_employeer��attachmentsr��attachment_instance�emp�	employees�	assignees�mail_threadr�rErJrJrK�
ticket_create�sn��



���r�c	Cstjj|d�}|j�d�s"t||�s"|jj|jks"|jj|j�	�vrkt
|d�}|jdkr^t
|j|j
|d�}|��r^|��}|j�d�}|D]}t||d�}|��qEt�|td��td�S||t�d	�}t|d
|�St�|td��|j�dd
�}d|jvr�t|d�Std|�d��S)a
    This function is responsible for updating the Ticket.

    Parameters:
        request (HttpRequest): The HTTP request object.
        ticket_id : id of the ticket to update.
    Returns:
    GET : return Ticket update form template
    POST : return Ticket view
    rX�helpdesk.change_ticketrZrMr�r�� The Ticket updated successfully.r`)rNr�r�r��You don't have permission.�HTTP_REFERER�/�HTTP_HX_REQUEST�decorator_404.html� <script>window.location.href = "�
"</script>)r7rFr]r�r�r/r�r�r�rGr+rPrMr�rQrRr�r�r2rrSrTr
r.r�info�META)	rIr�r�rNr�r�r�rE�previous_urlrJrJrK�
ticket_update	s<
��


�


�rcCs�tjj|d�}|j�d�s|j|jjkst||�r?|j|_|�	�|jr.t
�|td��nt
�|td��t
|j�dd��St
�|td��|j�dd�}d|jvrXt|d	�Std
|�d��S)z�
    This function is responsible for archiving the Ticket.

    Parameters:
        request (HttpRequest): The HTTP request object.
        ticket_id : id of the ticket to update.
    Returns:
        return Ticket view
    rXr�z$The Ticket un-archived successfully.z!The Ticket archived successfully.r�r�r�r�r�rr)r7rFr]r�r�r�r�r/r}rRrrSrTrrrrr
)rIr�r�rrJrJrK�ticket_archive=s&
��



�rc
Csrtjj|d�}|��}|j�d�}|jj}|j|kr�||jks,||j	�
�vs,|j�d�r�||_|��t
��}|�d�}dtd�|��||��|d�}|j	�
�}dd	�|D�}	|	�|jj�t|��d
�r||��j�
�r||��j�
���j}
|	�|
j�tj|jj|	d|j�d�d
ddddtdd|jid�d�	t||dd�}|��ndtd�d�}|jdkr�t
��|_ t!|�S)z�
    This function is responsible for changing the Ticket status.

    Parameters:
    request (HttpRequest): The HTTP request object.
    ticket_id (int): The ID of the Ticket

    Returns:
        return Ticket view
    rXr�r�z%b. %d, %Y, %I:%M %prSz'The Ticket status updated successfully.)r��messager��
pre_status�
cur_status�timecSr�rJr�r�rJrJrKr��r�z(change_ticket_status.<locals>.<listcomp>r�z-The status of the ticket has been changed to �.u(تم تغيير حالة التذكرة.u'Der Status des Tickets wurde geändert.z&El estado del ticket ha sido cambiado.u%Le statut du ticket a été modifié.r�r�r�r�r��
status_changer��dangerzYou Don't have the permission.�r�r�resolved)"r7rFr]�get_status_displayrMr�r�r�r�r�rGr�rRr�now�strftimerT�
get_full_namer�r�r�r�r�r�r�rAr�rrYr;r�r��
resolved_dater)rIr�r�rr�r�r
r�r�r�r�r�rJrJrK�change_ticket_statusksf



�
�
���
�

rzhelpdesk.delete_ticket)�perm�modelcCszttjj|d�}|jdkrkt||dd�}|��|j��}dd�|D�}|�|j	j
�t|��d�rI|��j
��rI|��j
����j}|�|j
�tj|jj|dd	d
ddd
td�d�	|��t�|td��|��nt�|td��Wnty�t�|td��Ynwt|j�dd��S)z�
    This function is responsible for deleting the Ticket.

    Parameters:
    request (HttpRequest): The HTTP request object.
    ticket_id (int): The ID of the Ticket

    Returns:
    return Ticket view
    rX�newrar�cSr�rJr�r�rJrJrKr��r�z!ticket_delete.<locals>.<listcomp>r��The ticket has been deleted.�تم حذف التذكرة.�Das Ticket wurde gelöscht�El billete ha sido eliminado.�Le ticket a été supprimé.r��ticket-viewr��.The Ticket "{}" has been deleted successfully.z%The ticket is not in the "New" status�You cannot delete this Ticket.r�r�)r7rFr]r�r;r�r�rGr�r�r�r�r�r�r�r�rAr�r�r�rrarrSrTr�rbrrr)rIr�r�r�r�r�r�rJrJrK�
ticket_delete�sN

�
�����r!cCsd|jj}|jj}|jj}tjjd|jdd�}tjjd|jdd�}tjjd|jdd�}||B|B}|S)NTr�)r}r�r�r�r�)	r�r�r�r�r�r7rFrrrY)rIr�r�r��tickets_items1�tickets_items2�tickets_items3r�rJrJrK�get_allocated_tickets�s���r%c
Cs�|j��}t|j�j}|j�d�}|j�d�}|j�d�}tj��}tj��}|j|j	j
d�|j|j	d�B}|jdd�}	t||d�}	|j	�d	�rJ|}	tj��}
|j	j
}|j
j}|j
j}
|jdd�}t|d
�r�|j
j}|j
j}
|rx|j|jdd�}|
r�|j|
jd
d�}|j|jdd�}d}|j�d�dkr�d}t|�t|�t|�}
|j�d�r�t||	d�}	t||d�}||B|B}
t||
d�}
|j�d�}|dk�r|du�rt|||j�d�d�}t|	||j�d�d�}	t|||j�d�d�}t|||j�d�d�}t|||j�d�d�}d}t|�t|�t|�}
nt||�}t|	|�}	t|
|�}
t|�}tt|�||	|
t|j�|t||t����d�	}t|||�S)z�
    This function is responsible for search and filter the Ticket.

    Parameters:
        request (HttpRequest): The HTTP request object.

    Returns:
    GET : return ticket filter form template
    POST : return ticket view
    r�r�r�r�r�Tr|zhelpdesk.add_ticketsr�r�r�r�r�r�z helpdesk/ticket/ticket_list.htmlr��cardz helpdesk/ticket/ticket_card.htmlr�fieldr_Nz!helpdesk/ticket/ticket_group.html)	r�r�r�rCrfr�rgr'r�)rHrhr#rir]r7rF�nonerrr�r�rr�r�r�r�r�rYr�rr@rrrr1rr�r�r)rIrjr�r�r�r�r"r#r�r�r�r�r�r�r�r$r�r'rkrErJrJrK�
ticket_filter�s�



�

���������




�r)cKs�tjj|d�}|j�d�s+|j��|jjks+t||�s+|jj|jks+|jj|j	�
�vr�t���
�}t�}t�}|j�
�}g}|j�
�}	|��}
|	D]}|�d||j
d��qI|
D]}|�d||ddjd��qXt|td	�d
�}
d}|j|}d|j�d
�}|jdkr�t|j��d�}d}n	|jdkr�d}d}d}|jdkr�d}n
|jdkr�d}nd}||||tt|d�|
t�|||d�}t|d|d�St� |t!d��|j"�dd�}d|j"vr�t|d �St#d!|�d"��S)#NrXr��comment)r�r*r��history�pairr)r�r+r�r�)�keyrSzDue in z daysz
 days overduer
z	Due Today�warningr_�low�1�medium�2�3rZ)r��c_form�f_formr�r��tag_form�sorted_activity_listrq�color�	remaining�ratingz"helpdesk/ticket/ticket_detail.htmlrDr�r�r�r�r�rr)$r7rFr]r�r�r��get_reporting_managerr�r/r�rGrrr�r&r%�ticket_attachmentr*�trackingr��history_date�sortedr�deadline�days�abs�priorityr1r-rrrrrTrr
)rIr�rtr�r�r4r5r��
activity_list�comments�	trackingsr*r+r7r8�remaining_daysr9r:rErrJrJrK�
ticket_detailhs|
��

���




�



�rHcCs(tjj|d���}d|i}t|d|d�S)NrXr�z+helpdesk/ticket/ticket_individual_view.htmlrD)r7rFrrr�r)rIr�r�rErJrJrK�ticket_individual_view�s��rIcCs�tjj|d���}|j�d�s|j�d�st||�r)|j��}d|i}t	|d|�St
�|td��|j
�dd�}d	|j
vrBt	|d
�Std|�d��S)
NrXzhelpdesk.change_claimrequestr��claim_requests�*helpdesk/ticket/ticket_claim_requests.htmlr�r�r�r�r�rr)r7rFrrr�r�r�r/�claimrequest_setrGrrrrTrr]r
)rIr�r�rJrErrJrJrK�view_ticket_claim_request�s$
�
��
�


�rMcCs�|j}tjj|dd�}|j�d�s|jj|jkst||�rE|�	d�}|j
��|D]}tjj|d�}|j
�
|�q*dtd�d�}t|�St�|td��|j�d	d
�}d|jvr^t|d�Std
|�d��S)z-
    method to update the tags of ticket
    �ticketIdrXr�zselectedValues[]rSz$The Ticket tag updated successfully.rr�r�r�r�r�rr)rHr7rFr]r�r�r�r�r/r��tags�clearrr�rTrrrrrr
)rIr�r��tagids�tagId�tagr�rrJrJrK�ticket_update_tag�s.
��

�


�rTcCs�tjj|d�}|j�d�s|jj|jkrDt|d�}|jdkr;t|j	|d�}|�
�r;|��t�
|td��tt|d�St|d||d��St�|td	��|j�d
d�}d|jvr]t|d
�Std|�d��S)NrXr�rZrMz%Responsibility updated for the Ticket�r�z+helpdesk/ticket/forms/change_raised_on.html�rNr�r�r�r�r�r�rr)r7rFr]r�r�r�r�r,rPrMrQrRrrSrTr
rHrrrr
)rIr�r�rNrrJrJrK�ticket_change_raised_on�s.
�

�


�rWcCsVtjj|d�}|j�d�st||�r�|jjddd�}t|d�}|j	dkr�t|j
|d�}|��r�|jdd	�|j
d
jddd�}t|�t|�}t|�t|�}tjj|d�}tjj|d�}	|��t|||�}
|
��t|||	�}
|
��t�|td��td
�St|d||d��St�|td��|j�dd�}d|jvr�t|d�Std|�d��S)NrXr�rYT)�flatrZrMFr�r�)�id__inzAssinees updated for the Ticketr`z*helpdesk/ticket/forms/change_assinees.htmlrVr�r�r�r�r�rr)r7rFr]r�r�r/r��values_listr*rPrMrQrR�cleaned_data�setrrrr9r�r:rrSrTr
rrr)rIr�r��prev_assignee_idsrN�new_assignee_ids�added_assignee_ids�removed_assignee_ids�added_assignees�removed_assigneesr�rrJrJrK�ticket_change_assigneessX�


����


�rccCsV|jdkr)t|j�}|��r|��}d|j|jd�}t|�S|j�	�}td|i�SdS)z^
    This is an ajax method to return json response to create tag in the change tag form.
    rM�no_error)�errors�tag_idr�reN)
rPrrMrQrRrYr�rre�as_json�rIrNr[r�rerJrJrK�
create_tagYs

�
�ricCsv|j}|d}|d}ztjj|d�}tjj|d�}|j�|�td�}d}Wnt�	|td��}Yt
||d��S)z>
    This is an ajax method to  remove tag from a ticket.
    r�rfrXrS�Failed)rr�)rHr7rFr]rrO�removerTrrbr)rIr�r�rfr�rSrr�rJrJrK�
remove_tagosrlc	Cs�tjj|d���}d|i}|jrT|jj}tj�|�ddd���}t	|�}zt
|d��}|��}Wd�n1s;wYWnd}Y||d<||d<||d<t|d	|�S)
z�
    This function used to view the uploaded document in the modal.
    Parameters:

    request (HttpRequest): The HTTP request object.
    id (int): The id of the document.

    Returns: return view_file template
    rX�document�N�rb�file_content�file_extension�content_typez$helpdesk/ticket/ticket_document.html)
r2rFrrr�r��path�os�splitext�lowerr�open�readr)	rI�doc_id�document_objrE�	file_pathrqrrr�rprJrJrK�view_ticket_document�s,
���
��r|cCs*tjj|d���t�|td��td�S)z�
    This function used to delete the uploaded document in the modal.
    Parameters:

    request (HttpRequest): The HTTP request object.
    id (int): The id of the document.

    rXzDocument has been deleted.r`)r2rFr]rarrSrTr
)rIryrJrJrK�delete_ticket_document�sr}c	Cs�|jdkrXtjj|d�}t|j�}|��rZ|jdd�}|jj	|_
||_|��|jrJt
|j�}|��rJ|j�d�}|D]}t
|||d��}|��q;t�|td��tt|d�Sd	Sd	S)
z= "
    This method is used to create comment to a ticket
    rMrXFr�r�)r�r*r�zA new comment has been created.rUN)rPr7rFr]r&rMrQrRr�r�r�r�r�r%r�rrSrTr
rH)	rIr�r�r4r*r5r�r��a_formrJrJrK�comment_create�s*




�
�rcCsr|j�d�}|j�d�}t|�dkr)tjj|d�}||_|��t�|t	d��nt�
|t	d��ddi}t|�S)	N�
comment_id�new_commentrnrXz!The comment updated successfully.z-The comment needs to be atleast 2 charactors.rerd)rMr]�lenr4rFr*rRrrSrTrbr)rIr�r�r*r�rJrJrK�comment_edit�s�r�zhelpdesk.delete_commentcCsHtjj|d���}|j}|��t�|td��	|��t
|j�dd��S)NrXz+{}'s comment has been deleted successfully.r�r�)
r4rFrrr�r�rarrSrTr�rrr])rIr�r*r�rJrJrK�comment_delete�s�r�cCs�|j}|d}|dkrtj�dd�}dd�|D�}n&|dkr-tj�dd�}dd�|D�}n|dkr@tj�dd	d
�}dd�|D�}dt|�i}t|�S)
zD
    This is an ajax method to return list for raised on field.
    r�r�rYcS�g|]}|d|dd��qS)rYr��rY�namerJ)r��deptrJrJrKr����z!get_raised_on.<locals>.<listcomp>r�cSr�)rYr�r�rJ)r��jobrJrJrKr�r�r��employee_first_name�employee_last_namecSs,g|]}|d|d�d|d��d��qS)rYr�� r�r�rJr�rJrJrKr�s���r�)rHrrFr�rrr�r)rIr�r��departmentsr��jobpositionsr�r�rJrJrK�
get_raised_on�s*����r�cCsLtjj|d�}tjj|jj|d���st|jj|d���t	|j
�dd��S)zM
    This is a function to create a claim request for requested employee
    rX)r�r�r�r�)r7rFr]r3rrr�r��existsrRrr)rIrYr�rJrJrK�claim_tickets��r�cCstjj|d���}|stddd�St|j�dd��}|j}|j	}d}|�r4t
d�}d	}||j��v�r3|j�
|�z.tj|jj|jd
|�d�d|�d�d
|�d�d|�d�d|�d�dtdd|jid�d�	Wnty~}zt�|�WYd}~nd}~ww|j	|jjks�|jj|j	fD]R}	z9tj|jj|	j|�d|�d�d|�d|�d�|�d|�d�|�d|�d�|�d|�d�dtdd|jid�d�	Wq�ty�}zt�|�WYd}~q�d}~wwz:tj|jj|j	j|�d|�d�d|�d|�d�|�d|�d�|�d|�d�|�d|�d�dtdd|jid�d�	WnPt�y2}zt�|�WYd}~n=d}~wwn7t
d�}d	}||j��v�rk|j�|�tj|jj|jd|��d |�d�d!|�d"�d#|�d�d$|�d%�dd&�|��||_||_|��td'|j��|d(��}
t� ||�t|
�S))zX
    Function for approve claim request and send notifications to the responsibles.
    rXzInvalid claim requesti�)r��approve�FalseFz$Claim request approved successfully.Tz'You have been assigned to a new Ticket-ru1لقد تم تعيينك لتذكرة جديدة zIhnen wurde ein neues Ticket z zugewiesen.z"Se te ha asignado un nuevo ticket zUn nouveau ticket u vous a été attribué.r�r�r�r�r�Nz assigned to your ticket - uتم تعيين u إلى تذكرتك - z wurde Ihrem Ticket z  ha sido asignado a tu ticket - u$ a été assigné à votre ticket - z$Claim request rejected successfully.z*Your claim request is rejected for Ticket-u7تم رفض طلبك للمطالبة بالتذكرة u"Ihre Anspruchsanfrage für Ticket-z wurde abgelehnt.u>Tu solicitud de reclamación ha sido rechazada para el ticket u-Votre demande de réclamation pour le ticket u a été rejetée.)r�r�r�r�r�r�r�rK)rJ�refresh)!r3rFrrr�r
rrHr]r�r�rTr�rGr�rAr�r�r�r�rrY�	Exception�loggerrbr�rkrR�is_approved�is_rejectedrrLrrS)rI�req_id�
claim_requestr�r�r�r�r�er��htmlrJrJrK�approve_claim_requests��





���
�
�
��
����3



�
�r�cCs�|j�d�}|j�d�}|rt�|�ni}|j�d�}|jj}t|tjj	dd�d�}|dkrm|dkr<t|tj�
�d�}n|dkrLt|tjj	|d	�d�}n
t|�}t||d�}|j}d
d�|D�}	|�
�}
|	|
d�}t|�Sd
S)zK
    This method is used to return all the ids of the filtered tickets
    �pagerr�	tableNameTr|)�querysetrG�myr�cSsg|]}t|j��qSrJ)r�rY)r�r�rJrJrKr��sz)tickets_select_filter.<locals>.<listcomp>)�
ticket_ids�total_countN)rHr]�json�loadsr�r�r#r7rFrrrGr%ri�countr)rI�page_number�filtered�filters�tabler��tickets_filterr��filtered_ticketsr�r�rErJrJrK�tickets_select_filter�s.��
�r�r�cCs�|jd}t�|�}d}|j�d�dkrd}|D]}tjj|d�}||_|��qt	�
|td��|j�dd	�}d
|�d�}t
|�S)zH
    This is a ajax method used to archive bulk of Ticket instances
    �idsFr}�TrueTrXr�r�r�rr)rMr�r�rHr]r7rFr}rRrrSrTrr
)rIr�r}r�r�r�scriptrJrJrK�tickets_bulk_archive�s


r�c
Cs.|jd}t�|�}|D]y}zftjj|d�}t||dd�}|��|j�	�}dd�|D�}|�
|jj�t
|��d�rR|��j�	�rR|��j�	���j}|�
|j�tj|jj|dd	d
ddd
td�d�	|��t�|td��|��Wqty�t�|td��Yqw|j�dd�}d|�d�}	t|	�S)zG
    This is a ajax method used to delete bulk of Ticket instances
    r�rXrar�cSr�rJr�r�rJrJrKr��r�z'tickets_bulk_delete.<locals>.<listcomp>r�rrrrrr�rr�rr r�r�rr) rMr�r�r7rFr]r;r�r�rGr�r�r�r�r�r�r�r�rAr�r�r�rrarrSrTr�rrbrr
)
rIr�r�r�r�r�r�r�rr�rJrJrK�tickets_bulk_delete�sR

�
����r�cCsJt�}|jdkrt|j|j�}|��r|��td�Sd|i}t|d|�S)NrMr`rNz*helpdesk/faq/department_managers_form.html)r'rPrMr�rQrRr
rrUrJrJrK�add_department_manager�s
�r�cCsZt�}|jdkr#t|j|j�}|��r#|��t�|td��t	d�Sd|i}t
|d|�S)NrMz,The department manager created successfully.r`rN�1department_managers/department_managers_form.html)r'rPrMr�rQrRrrSrTr
rrUrJrJrK�create_department_manager�s
�r�cCsntjj|d�}t|d�}|jdkr,t|j|d�}|��r,|��t�	|t
d��td�S||d�}t|d|�S)NrXrZrMz,The department manager updated successfully.r`)rN�dep_idr�)
r5rFr]r'rPrMrQrRrrSrTr
r)rIr��department_managerrNrErJrJrK�update_department_manager
s

�r�z!helpdesk.delete_departmentmanagercCs8tjj|d�}|��t�|td��t|j�dd��S)NrXz4The department manager has been deleted successfullyr�r�)	r5rFr]rarrSrTrr)rIr�r�rJrJrK�delete_department_managersr�cCs�tjj|d�}|j�d�s+|j��|jjks+t||�s+|jj|jks+|jj|j	�
�vrY|j�d�}|dkr9d|_n|dkrAd|_nd|_|�
�t�|td	��t|j�d
d��St�|td��|j�d
d�}d
|jvrrt|d�Std|�d��S)zQ
    This function is used to update the priority
    from the detailed view
    rXr�r:r0r/r2r1�highzPriority updated successfully.r�r�r�r�r�rr)r7rFr]r�r�r�r;r�r/r�rGrMrCrRrrSrTrrrrr
)rIr�r�r:rrJrJrK�update_priority)s0
��


�r�zhelpdesk.view_tickettypecCstj��}t|dd|i�S)z1
    This method is used to show Ticket type
    z!base/ticket_type/ticket_type.html�ticket_types)r8rFrGr)rIr�rJrJrK�ticket_type_viewOs

�r�zhelpdesk.create_tickettypecCs�t�}|jdkrIt|j�}|j�d�r2|��r'|��}d|j|jd�}t	|�S|j
��}t	d|i�S|��rI|��t�}t�
|td��td�St|dd	|i�S)
�E
    This method renders form and template to create Ticket type
    rM�ajaxrd)rer�r�rez*Ticket type has been created successfully!r`�&base/ticket_type/ticket_type_form.htmlrN)r.rPrMrHr]rQrRrYr�rrergrrSrTr
rrhrJrJrK�ticket_type_create[s0

�
��r�zhelpdesk.update_tickettypecCsptjj|d�}t|d�}|jdkr/t|j|d�}|��r/|��t�}t�	|t
d��td�St|d||d��S)r�rXrZrMz*Ticket type has been updated successfully!r`r�)rN�	t_type_id)
r8rFr]r.rPrMrQrRrrSrTr
r)rIr�r�rNrJrJrK�ticket_type_updates

�r�rM�DELETEzhelpdesk.delete_tickettypecCsBt�|�}|r|��t�|td��t�St�|td��t�S)Nz*Ticket type has been deleted successfully!zTicket type not found)r8�findrarrSrTrbr
)rIr�r�rJrJrK�ticket_type_delete�s
�r�zhelpdesk.view_departmentmanagercCstj��}d|i}t|d|�S)N�department_managersz,department_managers/department_managers.html)r5rFrGr)rIr�rErJrJrK�view_department_managers�s
�r�z!helpdesk.change_departmentmanagercCsh|j�d�rtjj|j�d�d���nd}|r!|j���dd�}nd}t	|�}d|i}t
d|�}t|�S)z5
    Method to return employee in the department
    r�rXN�employee_id__id� employee_id__employee_first_namer�zemployee/employees_select.html)rHr]rrFrrr��employeeworkinformation_setrGrZr�rr
)rIr��employees_querysetr�rE�
employee_htmlrJrJrK�get_department_employees�s
��
�
r�)�r��loggingrtr�distutils.utilr�operatorr�urllib.parser�django.contribr�django.core.paginatorr�django.db.modelsrr	�django.httpr
rr�django.shortcutsr
r�django.template.loaderr�django.urlsr�django.utils.translationrrT�django.views.decorators.httpr�haystack.queryr�
base.formsr�base.methodsrrrrr�base.modelsrrr�employee.modelsrr�employee.viewsr�helpdesk.decoratorsr �helpdesk.filterr!r"r#r$�helpdesk.formsr%r&r'r(r)r*r+r,r-r.�helpdesk.methodsr/�helpdesk.modelsr0r1r2r3r4r5r6r7r8�helpdesk.threadingr9r:r;�horilla.decoratorsr<r=r>r?�horilla.group_byr@�notifications.signalsrA�	getLogger�__name__r�rLrVr^rdrlruryrzr�r�r�r�r�r�rrrr!r%r)rHrIrMrTrWrcrirlr|r}rr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rJrJrJrK�<module>sN0,

0
	
=P2
-
F
4h
M



"8

!



!

b
#/

%
!

	

Youez - 2016 - github.com/yon3zu
LinuXploit