
    >:h$                     2   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
 d dlmZ d dlmZ dd	lmZmZ  G d
 dej                  Z G d dej                  Z G d dej                  Z ej        e           G d dej                              ZdS )    )forms)admin)format_html)TemplateResponse)pathreverse)JsonResponse)csrf_exempt   )
ReferenciaReferenciaImagenc                   (    e Zd Z G d d          ZdS )ReferenciaImagenFormc                   B    e Zd ZeZdZd ej        ddd          iZdS )ReferenciaImagenForm.Metaimagenr   zimagen-inputzimage/*)classacceptattrsN)	__name__
__module____qualname__r   modelfieldsr   	FileInputwidgets     :C:\Users\a_gir\Desktop\Interacto\siip\referencias\admin.pyMetar      s<         oeonPY,Z,Z[[[
r    r"   Nr   r   r   r"   r   r    r!   r   r   
   s<        
 
 
 
 
 
 
 
 
 
r    r   c                   @    e Zd ZeZdZeZdZddZ	 G d d          Z
dS )ReferenciaImagenInliner   z%admin/referencias/galeria_inline.htmlNc                     dS )NFr   )selfrequestobjs      r!   has_add_permissionz)ReferenciaImagenInline.has_add_permission   s    ur    c                       e Zd ZddiZdZdS )ReferenciaImagenInline.Mediaall)zcss/galeria_inline.css)zjs/galeria_inline.jsNr   r   r   cssjsr   r    r!   Mediar,      s"        .
 'r    r1   N)r   r   r   r   r   extrar   formtemplater*   r1   r   r    r!   r%   r%      sd        EED6H   ' ' ' ' ' ' ' ' ' 'r    r%   c                   (    e Zd Z G d d          ZdS )ReferenciaAdminFormc                       e Zd ZeZdZ ej        ddi           ej        ddd           ej        ddi           ej        dd	i          d
Z	dS )ReferenciaAdminForm.Meta__all__rows   r   z0.00010)stepminr>   z0.01)descripcionstockprecio_costoprecio_venta_unitarioN)
r   r   r   r   r   r   r   TextareaNumberInputr   r   r    r!   r"   r9   "   s        )5><<<&U&hs-K-KLLL-E-VX4FGGG%6U%6ff=M%N%N%N	
 
r    r"   Nr#   r   r    r!   r7   r7   !   s<        
 
 
 
 
 
 
 
 
 
r    r7   c                   .    e Zd ZeZegZdZdZdZ	dZ
dZdZddd	ifd
ddifdddifdddiffZdZdZddd	ifd
ddifdddifdddiffZd Z fdZd Zed             Zed             Zd Zde_        d Zde_         fdZ fdZ G d d          Z xZS )ReferenciaAdmin)skudescripcion_cortatipoclasificaciongruposubgruporA   rB   rC   sku_abcactivoimagen_miniatura)rJ   rN   tipo_abastecimientorO   rK   rL   rM   )rH   r@   )rP   galeria_imagenes)rA   rC   Tu   Información básicar   )rH   r@   unidadrJ   rO   u   Clasificación)rK   rL   rM   rN   u   Información logística)rQ   rA   rB   rC   u   Galería de imágenes)rR   )rA   )rQ   rA   rC   c           	         |j         sdS d}|dz  }|j         r?|j                                        D ]%}|d|j         d|j        j         d|j         dz  }&|dz  }|d	z  }|d
|j         r|j        nd dz  }|d	z  }t          |          S )uO   Renderiza la galería de imágenes horizontal con botones para agregar/eliminaru5   Guarde primero la referencia para gestionar imágenesz<div class="galeria-container">z<div class="galeria-imagenes">z4
                <div class="galeria-item" data-id="zW">
                    <div class="galeria-preview">
                        <img src="z" alt="Imagen de referencia">
                    </div>
                    <div class="galeria-actions">
                        <button type="button" class="eliminar-imagen" data-id="u   ">
                            <span class="icon">×</span>
                        </button>
                    </div>
                </div>
                u  
        <div class="galeria-item galeria-agregar">
            <div class="galeria-drop-area" id="galeria-drop-area">
                <span class="icon">+</span>
                <p>Arrastre imágenes aquí<br>o haga clic para seleccionar</p>
                <input type="file" id="galeria-file-input" accept="image/*" multiple style="display:none">
            </div>
        </div>
        z</div>z/<input type="hidden" id="referencia-id" value=" z">)pkimagenesr-   idr   urlr   )r'   r)   htmlr   s       r!   rR   z ReferenciaAdmin.galeria_imagenesb   s    v 	KJJ000 6 	,**,,   4:I  $*=#4  QWPY    	  	 	^CFBZ#&&XZ^^^^4   r    c                 f   t                                                      }t          d| j                            | j                  d          t          d| j                            | j                  d          t          d| j                            | j                  d          g}||z   S )Nz<int:referencia_id>/galeria/zreferencia-galeria)namezimagen/upload/zreferencia-imagen-uploadzimagen/delete/<int:imagen_id>/z$referencias_referencia-imagen-delete)superget_urlsr   
admin_site
admin_viewgaleria_viewupload_imagendelete_imagen)r'   urlscustom_urls	__class__s      r!   r^   zReferenciaAdmin.get_urls   s    ww!!/++D,=>>*, , , !++D,>??02 2 2 1++D,>??<> > >

 T!!r    c                     t           j                            |          }d|j         ||j                                        | j        j        d}t          |d|          S )u@   Vista de galería para ver todas las imágenes de una referenciarV   u   Galería de imágenes para )title
referenciarW   optszadmin/referencias/galeria.html)	r   objectsgetrH   rW   r-   r   _metar   )r'   r(   referencia_idrj   contexts        r!   ra   zReferenciaAdmin.galeria_view   sf    '++}+==
C:>CC$"+//11J$	
 
  )I7SSSr    c                 2   |j         dk    r|j                            d          r	 |j                            d          }|r=t          j                            |          }t          ||j        d                   }nt          |j        d                   }|                                 t          d|j	        |j
        j        d          S # t          $ r)}t          d	t          |          d
          cY d}~S d}~ww xY wt          d	dd
          S )u2   Endpoint para subir imágenes temporales vía AJAXPOSTr   ro   rh   )rj   r   r   T)success	imagen_id
imagen_urlFrs   errorN   Método no permitido)methodFILESrm   rr   r   rl   r   saver	   rX   r   rY   	Exceptionstr)r'   r(   ro   rj   r   es         r!   rb   zReferenciaAdmin.upload_imagen   s8    >V##(9(9((C(C#I ' 0 0 A A  N!+!3!7!7=!7!I!IJ-GMZbLcdddFF .W]85LMMMF##!'"(-"3% %   
  I I I#A$G$GHHHHHHHHI8NOOPPPs   B)C 
DC?9D?Dc                    |j         dk    rm	 t          j                            |          }|                                 t          ddi          S # t          j        $ r t          ddd          cY S w xY wt          ddd          S )	u*   Endpoint para eliminar imágenes vía AJAXrr   rh   rs   TFzImagen no encontradarv   rx   )ry   r   rl   rm   deleter	   DoesNotExist)r'   r(   rt   r   s       r!   rc   zReferenciaAdmin.delete_imagen   s     >V##Y)1555CC#Y$5666#0 Y Y Y#@V$W$WXXXXXY8NOOPPPs   AA !A65A6c                 d    t          |j                  dk    r|j        dd          dS |j        S )u-   Muestra una versión corta de la descripción2   Nz...)lenr@   r'   r)   s     r!   rI   z!ReferenciaAdmin.descripcion_corta   s9    s"$$ocrc*////r    u   Descripciónc                 l    |j         rt          d|j         j        j                  S t          d          S )z(Muestra la imagen principal en miniaturaz&<img src="{}" style="height: 50px;" />z,<span style="color: #999;">Sin imagen</span>)imagen_principalr   r   rY   r   s     r!   rP   z ReferenciaAdmin.imagen_miniatura   s7     	jGI]IdIhiiiIJJJr    Imagenc                     t                                          ||||           t          j                            d                              |           d S )NT)referencia__isnull)rj   )r]   
save_modelr   rl   filterupdate)r'   r(   r)   r4   changerf   s        r!   r   zReferenciaAdmin.save_model   sY    7Cv666 	 ''# 	( 	
 	

&C&
 
 
 
 
 r    c                     |j         j        s|j                                           t                      j        ||g|R i |S r2   )sessionsession_keycreater]   render_change_form)r'   r(   rp   argskwargsrf   s        r!   r   z"ReferenciaAdmin.render_change_form   sM    * 	%O""$$$)uww)'7LTLLLVLLLr    c                       e Zd ZddiZdZdS )ReferenciaAdmin.Mediar-   )zcss/referencias_admin.csszcss/galeria.css)zadmin/js/jquery.init.jszjs/referencias_admin.jszjs/galeria.jsNr.   r   r    r!   r1   r      s"        C

r    r1   )r   r   r   r7   r4   r%   inlineslist_displaylist_filtersearch_fieldsreadonly_fieldslist_editablesave_on_top	fieldsetsrR   r^   ra   r
   rb   rc   rI   short_descriptionrP   r   r   r1   __classcell__)rf   s   @r!   rG   rG   ,   s       D%&GL
9K*M>O6MK 
 H"
 	 
G
 	 
# %
 	 
!+#
 	I& MK 
 H"
 	 
G
 	 
#O%
 	 
!+#
 	I&! &! &!P" " " " "	T 	T 	T Q Q [Q. 	Q 	Q [	Q  
 +9'K K K
 *2&! ! ! ! !M M M M M
 
 
 
 
 
 
 
 
 
 
 
r    rG   N)djangor   django.contribr   django.utils.htmlr   django.template.responser   django.urlsr   r   django.httpr	   django.views.decorators.csrfr
   modelsr   r   	ModelFormr   TabularInliner%   r7   register
ModelAdminrG   r   r    r!   <module>r      s                     ) ) ) ) ) ) 5 5 5 5 5 5 % % % % % % % % $ $ $ $ $ $ 4 4 4 4 4 4 0 0 0 0 0 0 0 0
 
 
 
 
5? 
 
 
' ' ' ' 'U0 ' ' '	
 	
 	
 	
 	
%/ 	
 	
 	
 
@
 @
 @
 @
 @
e& @
 @
 @
 @
 @
r    