o
    PGfG5                     @   s  d dl mZ d dlmZ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mZ 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mZm Z m!Z! d dl"m#Z# d dl$m%Z% d dl&m'Z'm(Z(m)Z)m*Z* G dd deeZ+G dd deeZ,G dd de#eZ-G dd deee#e Z.G dd de#e!Z/G dd dee#eZ0G dd de#e Z1G dd  d e#eZ2G d!d" d"e#eZ3G d#d$ d$e#e!Z4G d%d& d&eZ5d'S )(    )get_user_model)check_passwordmake_password)LoginRequiredMixin)Group
Permission)PasswordChangeView)Q)HttpResponseRedirectJsonResponse)renderget_object_or_404redirect)SuccessMessageMixin)reverse_lazy)messages)View)
UpdateViewListView
CreateView
DeleteView)ValidatePermissionRequiredMixin)Usuario)
PerfilFormChangePwdFormCreateUserForm	GroupFormc                       sF   e Zd ZeZdZeZedZ	dZ
dddZ fddZd	d
 Z  ZS )ViewProfilezprofile.htmlperfilPerfil ActualizadoNc                 C   s   | j jS N)requestuserselfqueryset r&   (/var/www/vitalapp/apps/usuarios/views.py
get_object   s   zViewProfile.get_objectc                    s@   t t| jdi |}| jjj}tjj|d	 }|j
|d< |S )Nidimg_profiler&   )superr   get_context_datar!   r"   r*   r   objectsfilterfirstr+   )r$   kwargscontextidenticadorr%   	__class__r&   r'   r-      s
   

zViewProfile.get_context_datac           
      O   s   t t| jjjd}| jjj}|j}tjj|d }t	|j
|j|d}| r7|jdd}	td|	 |	  ntd| t|j t||j t|| j||ddS )	NpkinstanceFcommitzform valido : zFormulario de mierda ==>>)formr+   r2   )r   r   r!   r"   r*   r+   r.   r/   r0   r   POSTFILESis_validsaveprinterrorsr   errorr   template_name)
r$   r!   argsr1   objtpidr+   objr<   registror&   r&   r'   post'   s   




zViewProfile.postr    )__name__
__module____qualname__r   modelrE   r   
form_classr   success_urlsuccess_messager(   r-   rK   __classcell__r&   r&   r4   r'   r      s    
r   c                       4   e Zd ZeZeZdZdZ fddZ	dd Z
  ZS )EditPaswordProfilezupdatePass.htmlr   c                    s,   t t| jdi |}| jd }||d< |S )Nr7   namer&   )r,   rU   r-   r1   )r$   r1   r2   r3   r4   r&   r'   r-   =   s   
z#EditPaswordProfile.get_context_datac                 O   s   t t| jd d}| jd }tj j|d}t|j|d}| r_|j	
d}t||d jrY|j	
d|j	
dkrR|j	
d}	t|	}
|j|
d ttd	S t|d
 nt|d t|| jd|idS )Nr7   r6   r8   old_passwordr   new_password1new_password2)passwordcloseu$   Las nuevas contraseñas no coincidenu#   Las antigua contraseña no coincider<   r=   )r   r   r1   r.   allr/   r   r>   r@   cleaned_datagetr   rZ   r   updater
   r   r   rD   r   rE   )r$   r!   rF   r1   rG   rH   rI   r<   contranew_passwordhashed_passwordr&   r&   r'   rK   C   s   
zEditPaswordProfile.post)rL   rM   rN   r   rO   r   rP   rE   rR   r-   rK   rS   r&   r&   r4   r'   rU   7   s    rU   c                   @   s    e Zd ZdZeZdZdd ZdS )listausuarioszUserList.htmlzusuarios.view_usuarioc                 O   s"   t jjdd}t|| jd|idS )N0)is_superuserlistar=   )r   r.   r/   r   rE   )r$   r!   rF   r1   r%   r&   r&   r'   r^   [   s   zlistausuarios.getN)rL   rM   rN   rE   r   rO   permission_requiredr^   r&   r&   r&   r'   rc   V   s
    rc   c                       s<   e Zd ZeZeZdZedZ	dZ
 fddZdd Z  ZS )
CreateUserzCreate_user.htmlgestor_usuarioszusuarios.add_usuarioc                    s"   t t| jdi |}d|d< |S )Nzprofile.pngr+   r&   )r,   rh   r-   )r$   r1   r2   r4   r&   r'   r-   f   s   zCreateUser.get_context_datac                 O   s   t |jpd |jp	d }| r>|jd }tjj|d}|jd|j	_
|j	|jd |  |j	j| ttdS t||j t|j ttdS )Ntipo_usuariorV   rZ   ri   
list_group)r   r>   r?   r@   r]   r   r.   r/   r^   r9   rj   set_passwordrA   groupssetr
   r   r   rD   rC   rB   )r$   r!   rF   r1   r<   	selecciongrupos_seleccionadosr&   r&   r'   rK   k   s   

zCreateUser.post)rL   rM   rN   r   rO   r   rP   rE   r   rQ   rg   r-   rK   rS   r&   r&   r4   r'   rh   _   s    rh   c                   @   s    e Zd ZdZeZdZedZdS )
DeleteUserzdelete_user.htmlzusuarios.delete_usuariori   N)	rL   rM   rN   rE   r   rO   rg   r   rQ   r&   r&   r&   r'   rr   |   s
    rr   c                       sZ   e Zd ZeZeZdZedZ	dZ
 fddZ fddZ fdd	Zd fdd	Z  ZS )
UpdateUserzupdate_user.htmlri   zusuarios.change_usuarioc                       t | jd t |S )Nz!Usuario modificado correctamente.)r   successr!   r,   
form_validr$   r<   r4   r&   r'   rv         zUpdateUser.form_validc                    rt   )NzEHubo un error al modificar el usuario. Por favor, verifica los datos.)r   rD   r!   r,   form_invalidrw   r4   r&   r'   ry      rx   zUpdateUser.form_invalidc                    sP   t  jdi |}| jd}tjj|d}|j|d< td|j |j|d< |S )Nr7   r)   r+   zTP USEtipo_usuario_1r&   )	r,   r-   r1   r^   r   r.   r+   rB   rj   )r$   r1   r2   user_idUser_Selectr4   r&   r'   r-      s   

zUpdateUser.get_context_dataNc                    s    t  |}| jj|jd _|S )Nrj   )r,   get_formobjectrj   fieldsinitial)r$   rP   r<   r4   r&   r'   r}      s   zUpdateUser.get_formr    )rL   rM   rN   r   rO   r   rP   rE   r   rQ   rg   rv   ry   r-   r}   rS   r&   r&   r4   r'   rs      s    	rs   c                       s<   e Zd ZeZeZdZdZ fddZ	dd Z
dd Z  ZS )	CreateGroupzauth.add_groupgrupo_permiso.htmlc                       t  j|g|R i |S r    r,   dispatchr$   r!   rF   r1   r4   r&   r'   r         zCreateGroup.dispatchc                 O   s   dt  i}t|d|dS )Nr<   r   r=   )r   r   )r$   r!   rF   r1   r2   r&   r&   r'   r^      s   
zCreateGroup.getc                 O   sD  t |j}|jdd}| rtd |j}g }|D ]"}||}	|	dkr<|	|jdkr<|	D ]}
|tj	j|
d q/qtd| |jd}td| t
j	j|d	 ratd
 t|d n(td t
j	j|d	 t
j	j|d	}td|d| |j|krtd |j| ttdS td|j t| j| j||jddS )NFr:   zform.is_valid() rV   codename	El dato: z---rk   existezEl grupo ya existez..............z	Grupazo:  --- -->rl   ERRORr<   errr=   )r   r>   rA   r@   rB   r]   r^   appendr   r.   r   r/   existsr   rD   createrV   permissionsro   r
   r   rC   r   r!   rE   )r$   r!   rF   r1   r<   rJ   boxdataicampojrV   grupor&   r&   r'   rK      s8   




zCreateGroup.post)rL   rM   rN   r   rO   r   rP   rg   rE   r   r^   rK   rS   r&   r&   r4   r'   r      s    r   c                       rT   )ListaGruposzauth.view_groupzlistar_grupos.htmlc                    r   r    r   r   r4   r&   r'   r      r   zListaGrupos.dispatchc                 O   s,   t j   }t |d}t|| j|S )N)r<   object_list)r   r.   r\   order_byr   r   rE   )r$   r!   rF   r1   qsr2   r&   r&   r'   r^      s   zListaGrupos.get)rL   rM   rN   r   rO   r   rP   rg   rE   r   r^   rS   r&   r&   r4   r'   r      s    r   c                       sl   e Zd ZeZeZede dZdZ	dZ
edZ fddZ fdd	ZdddZ fddZdd Z  ZS )UpdateGroupr   zauth.change_groupr   z$Grupo actualizado satisfactoriamenterl   c                    r   r    r   r   r4   r&   r'   r      r   zUpdateGroup.dispatchc           
         s   t t| jdi |}tj j| jd d}g }d}|D ]}|j }|	|j
 |j
}|D ]}|	|j q/q| j||d}	|	S )Nr7   r6   r   )r<   
formularionombrer&   )r,   r   r-   r   r.   r\   r/   r1   r   r   rV   r   rP   )
r$   r1   contextor   r   formutr   permisosr   r2   r4   r&   r'   r-      s   
zUpdateGroup.get_context_dataNc                 C   s   t t| jd dS )Nr7   r6   )r   r   r1   r#   r&   r&   r'   r(     s   zUpdateGroup.get_objectc                    s   |j }|  t |S r    )r]   rA   r,   rv   )r$   r<   r]   r4   r&   r'   rv     s   zUpdateGroup.form_validc                 O   sz  t |j|  d}td td| dd|  j | r|j}g }|D ]0}||}td| |dkrU||jdkrUtd	|jd |D ]}	|t	j
j|	d
 qHq%|jd}
td|d|
 |
|  jkrtd tj
j|jdd}|j| n+td| jd d|jd |  }|  |jd}tj
j|d\}}|j| t| jS t| j| j||jddS )Nr8   z form.cleaned_datar<    z--->>>>zcampo r   rV   z)()()(r   r   z name zNo se actulizo el nombrerk   zSe cambio el nombre r7   r   r   r=   )r   r>   r(   rB   r@   rV   r]   r^   r   r   r.   r   r   ro   r1   deleteget_or_creater
   rQ   r   r!   rE   rC   )r$   r!   rF   r1   r<   r   r   r   r   r   rV   r   grupofnuevo_nombrenuevo_grupocreador&   r&   r'   rK     s8   


zUpdateGroup.postr    )rL   rM   rN   r   rO   r   rP   rB   rg   rE   rR   r   rQ   r   r-   r(   rv   rK   rS   r&   r&   r4   r'   r      s    

r   c                       s4   e Zd ZdZeZeZdZe	dZ
 fddZ  ZS )DeleteGrupozdelete_group.htmlzauth.delete_grouprl   c                    r   r    r   r   r4   r&   r'   r   7  r   zDeleteGrupo.dispatch)rL   rM   rN   rE   r   rO   r   rP   rg   r   rQ   r   rS   r&   r&   r4   r'   r   0  s    r   c                   @   s   e Zd Zedd ZdS )CheckPermisosAjaxc                 O   s   t j t| jdd d }g }|D ]'}|j }|	d|j
i |dkr=|D ]}|	|jj|ji q+td| qtdd|iiS )Nr*   r)   rV   r   zCode names =  
dictionary
datos_json)r   r.   r\   r/   r	   GETr^   r0   r   r   rV   content_type	app_labelr   rB   r   )r!   rF   r1   consultr   r   r   r   r&   r&   r'   r^   <  s   $

zCheckPermisosAjax.getN)rL   rM   rN   staticmethodr^   r&   r&   r&   r'   r   :  s    r   N)6django.contrib.authr   django.contrib.auth.hashersr   r   django.contrib.auth.mixinsr   django.contrib.auth.modelsr   r   django.contrib.auth.viewsr   django.db.modelsr	   django.httpr
   r   django.shortcutsr   r   r   django.contrib.messages.viewsr   django.urlsr   django.contribr   django.viewsr   django.views.genericr   r   r   r   apps.usuarios.mixinr   apps.usuarios.modelsr   apps.usuarios.formsr   r   r   r   r   rU   rc   rh   rr   rs   r   r   r   r   r   r&   r&   r&   r'   <module>   s6    "		2L
