a
    ;Xh#                     @   s$  d dl 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 d dlmZ d dlmZ d dl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 d dlmZ d dlmZ dd Z dd Z!edd Z"e	dd Z#dd Z$edd Z%dd Z&dd Z'dd  Z(ed!d" Z)d#d$ Z*d%S )&    )renderredirectget_object_or_404)messages)User)login_required)update_session_auth_hash)require_POST)JsonResponse)default_storage)IntegrityError)Session)timezone)FuncionarioUsuarioFuncionarioCargo)FuncionarioForm)get_user_infoc                 C   s   | j jstdS t| j j}| jdkrt| j| j}|	 r|j
dd}|
  | jd}td| |rv|j| t| d tdS nt }tj }t| d	|||d
S )NindexPOSTFcommitcargozCargos enviados:u$   Funcionário cadastrado com sucesso!funcionario_listz$funcionarios/create_funcionario.html)form	user_infocargos_disponiveis)useris_authenticatedr   r   idmethodr   r   FILESis_validsavegetlistprintr   setr   successr   objectsallr   )requestr   r   funcionarioZ	cargo_idsr    r,   :/var/www/viveiro_mudafortebrasil/apps/funcionario/views.pycreate_funcionario   s*    



r.   c                 C   s   | j jstdS t| j j}tt|d}| jdkrt| j	| j
|d}| r|jdd}|  | j	d}|j| t| d td	S t| d
 td|j n
t|d}tj }t| d||||dS )Nr   r   r   )instanceFr   r   u$   Funcionário atualizado com sucesso!r   zCorrija os erros abaixo.u   Erros no formulário:z"funcionarios/edit_funcionario.html)r   r+   r   r   )r   r   r   r   r   r   r   r    r   r   r!   r"   r#   r$   r   r&   r   r'   errorr%   errorsr   r(   r)   r   )r*   r   r   r+   r   Z
cargos_idsr   r,   r,   r-   edit_funcionario2   s.    


r3   c                 C   s(   t t|d}|  t| d tdS )Nr/   u"   Funcionário deletado com sucesso!r   )r   r   deleter   r'   r   )r*   r   r+   r,   r,   r-   delete_funcionarioU   s    r5   c                 C   sf   t | jj}tj }g }|D ]4}t|dr>|jj}t	|}nd}|
||d qt| d||dS )NusuariofuncionarioF)r+   online_statusz"funcionarios/funcionario_list.html)funcionarios_statusr   )r   r   r   r   r(   r)   hasattrr6   usuariois_user_logged_inappendr   )r*   r   funcionariosr8   r+   r:   r7   r,   r,   r-   r   ]   s     



r   c           
   
   C   sz  t t|d}| jdkrh| jd}| jd}| jd}| jddk}| jd}|sjtd	d
dS ||krtd	ddS tjj	|d
 rtd	ddS zftjj|||j|j d d|j dd  d}|rg d}tjj||||d tdddW S  ty(   td	dd Y S  tyd }	 z$td	dt|	 dW  Y d }	~	S d }	~	0 0 ntd	ddS d S )Nr/   r   usernamepasswordpassword_confirmis_adminonmenu_permissionsFu!   Nome de usuário é obrigatório.r'   r1      As senhas não correspondem.r>      Nome de usuário já existe.r       )r>   r?   email
first_name	last_name)	dashboard
calendarioespeciessementesrepiqueestufaaclimatacao
protocolosclientesfornecedoresestoque
relatoriosr=   )r+   r:   rC   rA   Tu   Usuário criado com sucesso.r'   messageu   Erro ao criar usuário: u   Método inválido.)r   r   r    r   getr$   r
   r   r(   filterexistscreate_userrJ   nome_completosplitjoinr   creater   	Exceptionstr)
r*   funcionario_idr+   r>   r?   r@   rA   rC   r   er,   r,   r-   create_user_for_funcionariou   sF    0rg   c                 C   sN   | j d}|r@tt|d}|j}|  |  tdddS tdddS )	Nuser_id
usuario_idTu   Usuário deletado com sucesso.rY   Fu$   Erro: ID do usuário não fornecido.rD   )r   r[   r   r   r:   r4   r
   )r*   rh   usuario_funcionarior   r,   r,   r-   delete_user_for_funcionario   s    rl   c                 C   s   | j dkr| jd}| jd}| jd}tt|d}||sRtdddS tjj|d		 rrtdd
dS ||_
|  tdddS d S )Nr   rh   r>   current_passwordr/   FzSenha atual incorreta.rD   rF   rG   Tu(   Nome de usuário atualizado com sucesso.rY   )r    r   r[   r   r   check_passwordr
   r(   r\   r]   r>   r#   )r*   rh   Znew_usernamerm   r   r,   r,   r-   update_username   s    

ro   c                 C   s~   | j dkrz| jd}| jd}| jd}tt|d}||krPtdddS || |  t| | td	d
dS d S )Nr   rh   new_passwordconfirm_passwordr/   FrE   rD   TzSenha alterada com sucesso.rY   )	r    r   r[   r   r   r
   set_passwordr#   r   )r*   rh   rp   rq   r   r,   r,   r-   update_password   s    


rs   c                 C   sB   t jjt d}|D ]&}| }|dt| jkr dS qdS )N)Zexpire_date__gte_auth_user_idTF)	r   r(   r\   r   nowget_decodedr[   rd   r   )r   sessionssessiondatar,   r,   r-   r;      s    r;   c                 C   st   | j d}| j ddk}| j d}|s:tdddS tt|d}|rRg d	}||_||_|  td
ddS )Nrh   rA   truerC   Fu   ID do usuário não fornecido.rD   ri   )rM   rN   rO   rP   rQ   rR   rS   rT   rU   rV   rW   rX   r=   paperpotTu$   Permissões atualizadas com sucesso.rY   )	r   r[   r$   r
   r   r   rC   rA   r#   )r*   rh   rA   rC   rk   r,   r,   r-   update_permissions   s    r|   c                 C   s
   t | dS )Nz(funcionarios/partials/no_permission.html)r   )r*   r,   r,   r-   no_permission   s    r}   N)+django.shortcutsr   r   r   django.contribr   django.contrib.auth.modelsr   django.contrib.auth.decoratorsr   django.contrib.authr   django.views.decorators.httpr	   django.httpr
   django.core.files.storager   	django.dbr   django.contrib.sessions.modelsr   django.utilsr   apps.funcionario.modelsr   r   r   Zapps.funcionario.formsr   apps.dashboard.utilsr   r.   r3   r5   r   rg   rl   ro   rs   r;   r|   r}   r,   r,   r,   r-   <module>   s8   #

/
	
