
    owi#                         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
 d dlZd dlmZ d dlmZ d d	lmZmZmZ d
 Zd Zd Zd Zd Zd ZdS )    )renderredirect)settings)JsonResponse)make_password)	PaginatorN)Image)Usuario)	Solicitud
PermisoUrlUrlc                     | st           j         dS t          j                            t           j        d|           }t          j                            |          rt           j         d|  S t           j         dS )z3Devuelve la URL de la imagen de perfil del usuario.zprofile/default.pngprofilezprofile/)r   	MEDIA_URLospathjoin
MEDIA_ROOTexists)img_filenameimg_paths     +/var/www/html/Desarrollo/bi/perfil/views.py_get_profile_urlr      su     :$9999w||H/LIIH	w~~h =$<<l<<< 5555    c                 :   | j                             d          }| j                             d          }|r|st          ddd          S ||k    rt          ddd          S t          |          |_        |                                 t          ddd          S )	u%   Actualiza la contraseña del usuario.pass1pass2F%   La contraseña no puede estar vacía.successmessage   Las contraseñas no coinciden.T&   Contraseña actualizada correctamente.)POSTgetr   r   
contrasenasave)requestuserr   r   s       r   _update_passwordr*      s    LW%%ELW%%E d d:abbccc~~:Z[[\\\#E**DOIIKKKD5]^^___r   c                     d| j         vrt          ddd          S | j         d         }|j        dk    rt          ddd          S 	 t          j        |          }|j                                        dvrt          ddd          S |j                                        d	k    rd
nd}|j        }|rd|dk    r^t          j	        
                    t          j        d|          }t          j	                            |          rt          j        |           |j         d| }t          j	        
                    t          j        d|          }|j        dk    r|                    d          }|                    ||d
k    rd	ndd           ||_        |                                 || j        d<   t)          |          }	t          dd|	d          S # t*          $ r}
t          dd|
 d          cY d}
~
S d}
~
ww xY w)z*Actualiza la imagen de perfil del usuario.profileImageFNo se ha subido ninguna imagen.r       )   La imagen es demasiado grande (máx 2MB).JPEGPNG8   Formato de imagen no válido. Solo se permite JPG y PNG.r1   jpgpngdefault.pngr   .RGBr2   U   formatqualityuser_imgTImagen de perfil actualizada.r    r!   new_image_urlError procesando la imagen: N)FILESr   sizer	   openr;   upperimgr   r   r   r   r   r   removeccmodeconvertr'   sessionr   	Exception)r(   r)   
image_filerF   extold_img_nameold_img_pathnew_filenamenew_pathr@   es              r   _update_imagerT   %   s   W]**:[\\]]]~.J((:effggg_j$$:_44E>x y yzzzz''))V33eex 	(LM997<<(;YUULw~~l++ (	,''''))C))7<< 3YMM8u++e$$CC5LL&&eRPPP		&2
#(669Xkxyyzzz _ _ _:\YZ:\:\]]^^^^^^^^_s&   A G EG 
G=G82G=8G=c                 
   d| j         vrt          d          S | j        dk    r;| j                            d          }| j                             d          }	 t
          j                            |          }n)# t
          j        $ r t          dddd	
          cY S w xY w|dk    r| j                            d          }| j                            d          }|r|st          ddd          S ||k    rt          ddd          S t          |          |_
        |                                 t          ddd          S |dk    rd| j        vrt          ddd          S | j        d         }|j        dk    rt          ddd          S 	 t          j        |          }|j                                        dvrt          ddd          S |j                                        dk    rdnd}|j        }	|	rd|	dk    r^t&          j                            t,          j        d|	          }
t&          j                            |
          rt'          j        |
           |j         d| }t&          j                            t,          j        d|          }|j        dk    r|                    d          }|                    ||dk    rdnd d!"           ||_        |                                 || j         d#<   t;          |          }t          dd$|d%          S # t<          $ r}t          dd&| d          cY d'}~S d'}~ww xY wt          dd(dd)
          S | j                             d          }t>          j                             |d*+          !                    d,          }tE          |d-          }| j#                            d.          }|$                    |          }tJ          j                             |d*+          !                    d/d0          &                    d1          }| j#                            d2d3          }|rf|                     tN          (                    |4          tN          (                    |5          z  tN          (                    |6          z            }tE          |d-          }| j#                            d7          }|$                    |          }|||d8}tS          | d9|          S ):z2Vista para mostrar y actualizar perfil de usuario.user_id/r$   action)idFzUsuario no encontrado.r   i  )statusupdate_passwordr   r   r   r"   Tr#   update_imager,   r-   r.   r/   r0   r3   r1   r4   r5   r6   r   r7   r8   r2   r9   r:   r=   r>   r?   rA   Nu   Acción no válida.i     
usuario_idestadosolicitud_url   page_notificacionesurl	url__areaurl__nombresearch_permisos )url__nombre__icontains)url__descrip__icontains)url__area__nombre__icontainspage_permisos)notificacionespermisos_urlsearch_queryzperfil.html)*rK   r   methodr$   r%   r
   objectsDoesNotExistr   r   r&   r'   rB   rC   r	   rD   r;   rE   rF   r   r   r   r   r   r   rG   rH   rI   rJ   r   rL   r   filterselect_relatedr   GETget_pager   order_bymodelsQr   )r(   rX   rV   r)   r   r   rM   rF   rN   rO   rP   rQ   rR   r@   rS   notificaciones_listpaginator_notificacionespage_number_notificacionesrm   permisos_url_listro   paginator_permisospage_number_permisosrn   contexts                            r   perfil_viewr   N   s    ''}}~!!(++/%%i00	e?&&'&22DD# 	e 	e 	eE>V W W`cdddddd	e &&&L$$W--EL$$W--E l l#Bi$j$jkkk~~#Bb$c$cddd+E22DOIIKKKD=e f fggg ^##W]22#Bc$d$deee ~6J 00#Bm$n$nooo)gj,,:##%%_<<'#(#]) )     #z//11V;;ee  $x 0LM$A$A#%7<<0CYP\#]#]Lw~~l33 0	,/// #''11C117<<(;YUU8u$$++e,,CC5LL&&eUWXXX (		.:
+ 0 > >##>%2% %     g g g#BdabBdBd$e$effffffffg :OPPY\]]]] o!!),,G#+22 3   n_%% 
  ))<a@@!(1F!G!G-667QRRN #*11 2   nUK((-)@)@ 
 ;??#4b99L 
-44HHLH99HH\H::;HH,H??@
 
 ##4a88";???;;%../CDDL )$$ G '='222s8    A; ;#B! B!A L  EL   
M	*M>M	M	c                 "   | j                             d          }|st          g dd          S t          j                            |d                              dd          }t          |          }d |D             }t          ||d          S )	z:Devuelve las notificaciones de un usuario en formato JSON.rV   r   resultcountr]   r^   ra   solicitud_url__areac                 p    g | ]3}|j         j        |j         j        j        |                                d 4S ))informearear`   )ra   nombrer   get_estado_display).0ns     r   
<listcomp>z'notificaciones_json.<locals>.<listcomp>   sS     $ $ $  ?)$+&&((  $ $ $r   )rK   r%   r   r   rq   rs   rt   len)r(   rV   rz   r   datas        r   notificaciones_jsonr      s    o!!),,G 8rA66777#+22 3   n_&;<< 
 #$$E$ $ #	$ $ $D 4%88999r   c                 H   | j                             d          }|st          g dd          S t          j                            |d                              dd                              d          }t          |          }d	 |D             }t          ||d          S )
z4Devuelve los permisos de un usuario en formato JSON.rV   r   r   r]   r^   rd   re   rf   c                 J    g | ] }|j         j        |j         j        j        d !S ))r   r   )rd   r   r   )r   ps     r   r   z!permisos_json.<locals>.<listcomp>   sB     " " "  %,
!  " " "r   )	rK   r%   r   r   rq   rs   rt   rw   r   )r(   rV   r}   r   r   s        r   permisos_jsonr      s    o!!),,G 8rA66777"*11 2   nUK((-)@)@ 
 !""E" " !" " "D
 4%88999r   )django.shortcutsr   r   django.confr   django.httpr   django.contrib.auth.hashersr   django.core.paginatorr   r   PILr	   login.modelsr
   usuarios.modelsr   r   r   r   r*   rT   r   r   r    r   r   <module>r      s   - - - - - - - -             $ $ $ $ $ $ 5 5 5 5 5 5 + + + + + + 				                   6 6 6 6 6 6 6 6 6 66 6 6` ` `'_ '_ '_Rz3 z3 z3z: : :,: : : : :r   