
    iI!                        d dl mZmZ d dlmZmZ d dlmZ d dlm	Z	 d dl
Z
d dlmZmZ d Zd Ze	 ed	g          d
                         Ze	 ed	g          d                         Ze	 ed	g          d                         ZdS )    )renderredirect)JsonResponseHttpResponse)require_http_methods)csrf_exemptN)AreaGerenciac                 R   d| j         vs<| j                             d          dk    s| j                             d          dk    rt          d          S t          j                                        }t          |                    dd                    }t          | dd	|i          S )
Nuser_id	user_tipo      /idnombrezorganigrama.html	gerencias)	sessiongetr   r
   objectsalllistvaluesr   )requestgerencias_qsgerencias_lists      0/var/www/html/Desarrollo/bi/organigrama/views.pyorganigrama_viewr   
   s    ''7?+>+>{+K+Kq+P+PT[TcTgTghsTtTtxyTyTy}} #''))L,--dH==>>N '-^/LMMM    c                 
   d| j         vrt          g dd          S | j                            d          pM| j                            d          p3| j                            d          p| j                            d          }| j                            d          pM| j                            d	          p3| j                            d
          p| j                            d          }| j                            d          dk    r$t          t	          | j                  dd          S t
          j                            d          }|                                }|}	 |;|9t          |          }t          |          }|dk     rd}|dk    r||||z            }n# t          t          f$ r Y nw xY wt          |                    ddd                    }||d}	t          t          j        |	          d          S )uY  
    Endpoint que devuelve los datos en el formato que Syncfusion UrlAdaptor espera:
    { "result": [...], "count": N }

    Acepta múltiples variantes de parámetros de paginación:
    $skip / skip / offset / start  y  $top / top / take / limit

    Si añades ?debug=1 te devolverá los parámetros que recibió (útil para verificar).
    r   r   )resultcountz$skipskipoffsetstartz$toptoptakelimitdebug1z>Use this to see exact params Syncfusion sends to this endpoint)debug_received_paramsnoter   Nr   gerencia_idzapplication/json)content_type)r   r   GETr   dictr	   r   order_byr"   int
ValueError	TypeErrorr   r   r   jsondumps)
r   skip_rawtop_rawquerysettotal_countpaginated_querysetstdataresponse_payloads
             r   get_areas_datar@      s    ''rA66777 (( FGKOOF,C,C F))F-4[__W-E-E {v&& C'+//%*@*@ C{v&&C*1+//'*B*B  {w3&&%)'+%6%6T
 
   	 |$$T**H..""K "G$7HAGA1uu1uu%-aAg%6"	"   
 "))$-HHIID #'==
#344CUVVVVs   $=F" "F65F6POSTc                    	 t          j        | j                            d          pd          }t	          |t
                    rd|v r|                    d          n|}t	          |t
                    r|                    d          nd }t	          |t
                    r|                    d          nd }|r|r	 t          j                            |          }n)# t          j	        $ r t          ddd	d
          cY S w xY wt          j                            ||          }t          d|j        |j        |j        j        dd          S t          ddd	d          S # t           j        $ r t          ddd	d          cY S t"          $ r+}t          dt%          |          d	d          cY d }~S d }~ww xY w)Nutf-8{}valuer   r-   r   errorzGerencia not foundstatusmessage  rI   r   gerenciasuccess)r   r   r-   )rI   r!   zMissing data  Invalid JSON  )r5   loadsbodydecode
isinstancer0   r   r
   r   DoesNotExistr   r	   creater   r   rN   JSONDecodeError	Exceptionstr)r   payloadr>   r   r-   rN   areaes           r   add_arear_   L   s/   P*W\0099ATBB'1'4'@'@dWPWEWEWw{{7###]d'1$'='=G(###41;D$1G1GQdhh}---T 	Jk 	Jf#+//;/??( f f f#wCW$X$Xadeeeeeef <&&fx&HHD9twZ^Zevz  wD  wG  AH  AH  !I  !I  J  J  Jw>JJSVWWWW X X Xw>JJSVWWWWWW P P Pw3q66BB3OOOOOOOOOPsO   B:E& = C E& #DE& DAE& E& &#F?	F? F:4F?:F?c           
         	 t          j        | j                            d          pd          }t	          |t
                    r|ni }d}g }d|v r|d         r|d         D ]}|                    dd          }|                    d          }|                    d          }|r|r	 t          j	                            |	          }	t          j	                            ||	
           d}# t          j        $ r |                    d| d           Y t          $ r/}
|                    dt          |
                      Y d}
~
d}
~
ww xY w|                    d           d|v rn|d         re|d         D ][}|                    d          }|                    d          }|                    d          }|r|r|r	 t          j	                            |	          }t          j	                            |	          }	||_        |	|_        |                                 d}# t          j        $ r |                    d| d           Y t          j        $ r |                    d| d|            Y t          $ r3}
|                    d| dt          |
                      Y d}
~
;d}
~
ww xY w|                    d|            ]d|v r|d         r|d         D ]}|                    d          p|                    d          }|r	 t          j	                            |	                                           d}d# t          j        $ r |                    d| d           Y t          $ r2}
|                    d| dt          |
                      Y d}
~
d}
~
ww xY w|                    d           |r|st)          ddd          S |r|rt)          dd |d!          S t)          d"d#|d!          S # t           j        $ r t)          d$d%dd&'          cY S t          $ r+}
t)          d$t          |
          dd('          cY d}
~
S d}
~
ww xY w))zB
    Espera JSON tipo batch con added/changed/deleted arrays.
    rC   rD   Faddedr   Nr   r-   rF   rM   Tz	Gerencia z not found for added recordzError creating area: z-Missing nombre or gerencia_id in added recordchangedzArea z
 not foundz not found for area zError updating area z: z1Missing id/nombre/gerencia_id in changed record: deletedkeyz not found for deletionzError deleting area zMissing id in deleted recordrO   zData saved successfullyrH   partialzSome operations succeeded)rI   rJ   errorsnoopzNo data to processrG   rQ   rP   rL   rR   )r5   rS   rT   rU   rV   r0   popr   r
   r   r	   rX   rW   appendrZ   r[   r   rN   savedeleter   rY   )r   r\   r>   	processedrf   record	record_idr   r-   rN   r^   area_idr]   s                r   update_arearp   g   s   IP*W\0099ATBB$Wd33;ww	 d??tG}?w- S S"JJtT22	H--$jj77 
Sk 
SH#+#3#7#7;#7#G#G++6H+MMM$(		#0 \ \ \&Z+&Z&Z&Z[[[[[$ H H H&Fc!ff&F&FGGGGGGGGH MM"QRRRR iy/ ` ` **T**H--$jj77 `v `+ `R#|//7/;;#+#3#7#7;#7#G#G&,(0		$(		, C C C&Ag&A&A&ABBBBB#0 ^ ^ ^&\+&\&\SZ&\&\]]]]]$ R R R&PW&P&PA&P&PQQQQQQQQR MM"^V\"^"^____ iy/ B B **T**?fjj.?.? 	BR((G(44;;===$(		, P P P&Ng&N&N&NOOOOO$ R R R&PW&P&PA&P&PQQQQQQQQR MM"@AAAA 	gV 	g9AZ [ [\\\ 	g6 	g9A\hn o oppp6>R^d e efff X X Xw>JJSVWWWWWW P P Pw3q66BB3OOOOOOOOOPs   B(P +AC/.P /(EP 	E"%EP EA8P 
A$H/.P /(KP )KP 	K(J<6P <KAP !4MP (N;>P  	N;	(N61P 6N;;.P *P P #Q-9	Q- Q("Q-(Q-c                    	 t          j        | j                            d          pd          }|                    d          p)|                    d          p|                    d          }|rm	 t
          j                            |                                           t          ddi          S # t
          j	        $ r t          d	d
dd          cY S w xY wt          d	ddd          S # t           j
        $ r t          d	ddd          cY S t          $ r+}t          d	t          |          dd          cY d }~S d }~ww xY w)NrC   rD   rd   r   ro   rF   rI   rO   rG   zArea not foundrH   rK   rL   z
Missing IDrP   rQ   rR   )r5   rS   rT   rU   r   r	   r   rk   r   rW   rY   rZ   r[   )r   r\   ro   r^   s       r   delete_arearr      s   P*W\0099ATBB++e$$SD(9(9SW[[=S=S 	bb  G ,,33555#Xy$9:::$ b b b#wCS$T$T]`aaaaaab w<HHQTUUUU X X Xw>JJSVWWWWWW P P Pw3q66BB3OOOOOOOOOPsC   A/C2 2AB5 5#CC2 CC2 2#E	E  E EE)django.shortcutsr   r   django.httpr   r   django.views.decorators.httpr   django.views.decorators.csrfr   r5   login.modelsr	   r
   r   r@   r_   rp   rr    r   r   <module>ry      sQ   - - - - - - - - 2 2 2 2 2 2 2 2 = = = = = = 4 4 4 4 4 4  ' ' ' ' ' ' ' '
N 
N 
N2W 2W 2Wj vhP P   P2 vhMP MP   MP` vhP P   P P Pr   