o
    >:h&                     @   s   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 ddlmZ d d	lmZ G d
d dejZG dd dejZG dd dejZeeG dd dejZeeG dd dejZdS )    )admin)Q)format_html)forms)
Referencia   )ListaMaterialesComponenteListaMateriales)views)pathc                       *   e Zd ZG dd dZ fddZ  ZS )ComponenteListaMaterialesFormc                   @      e Zd ZeZdZdS )z"ComponenteListaMaterialesForm.Meta__all__N)__name__
__module____qualname__r	   modelfields r   r   1/var/www/html/public/lista_de_materiales/admin.pyMeta       r   c                    b   t  j|i | d| jv r/tjjtddtddB ddd| jd _dd	 | jd _	d S d S )
N
referenciaMPtipoPPTactivounidadc                 S   0   | j  d| jd d  d|   d| jj dS Nz - 2   z [z] ()skudescripcionget_tipo_displayr!   abreviaturaobjr   r   r   <lambda>   
   z8ComponenteListaMaterialesForm.__init__.<locals>.<lambda>
super__init__r   r   objectsfilterr   select_relatedquerysetlabel_from_instanceselfargskwargs	__class__r   r   r1         

z&ComponenteListaMaterialesForm.__init__r   r   r   r   r1   __classcell__r   r   r;   r   r   
       r   c                   @   s   e Zd ZeZeZdZdZdS )ComponenteListaMaterialesInliner   )r   cantidaddesperdicioordenobligatorionotasN)	r   r   r   r	   r   r   formextrar   r   r   r   r   rA      s
    rA   c                       r   )ListaMaterialesFormc                   @   r   )zListaMaterialesForm.Metar   N)r   r   r   r   r   r   r   r   r   r   r   2   r   r   c                    r   )
Nr   r   r   PTTr   r!   c                 S   r"   r#   r&   r+   r   r   r   r-   @   r.   z.ListaMaterialesForm.__init__.<locals>.<lambda>r/   r7   r;   r   r   r1   6   r=   zListaMaterialesForm.__init__r>   r   r   r;   r   rI   1   r@   rI   c                       s   e Zd ZeZdZdZdZegZ	dZ
G dd dZddd	ifd
ddifddddffZdd Zde_dd Zde_dd Zde_ fddZ fddZ fddZ  ZS )ListaMaterialesAdmin)codigoreferencia_infoversionestado_displayfecha_creacioncomponentes_count)estadoreferencia__tiporeferencia__gruporeferencia__subgrupo)rL   referencia__skureferencia__descripcionr(   )rP   fecha_actualizacionfecha_activacionrL   c                   @   s   e Zd ZddgiZdS )zListaMaterialesAdmin.Mediaallzadmin/css/selectors.cssN)r   r   r   cssr   r   r   r   MediaN   s    r\   u   Información Básicar   )r   rN   rL   rR   r(   u   Información Técnica)rF   u
   Auditoría)collapse)
creado_porrP   rX   rY   )classesr   c                 C   ,   t d|jj|j |jjd d |jjjS )Nj<div style="min-width: 300px;"><strong>{}</strong><br><span style="color: #666;">{} - {} ({})</span></div>r$   r   r   r'   r)   r(   r!   r*   r8   r,   r   r   r   rM   `      z$ListaMaterialesAdmin.referencia_infor   c                 C   s(   ddddd}t d||jd| S )Nz#777#4CAF50z#2196F3#F44336)DAHIza<span style="color: white; background-color: {}; padding: 3px 8px; border-radius: 4px;">{}</span>black)r   getrR   get_estado_display)r8   r,   estado_colorsr   r   r   rO   k   s   z#ListaMaterialesAdmin.estado_displayEstadoc                 C   s2   |j  }td|dkrdnd||dkrdS dS )NzB<span style="font-weight: bold; color: {};">{}</span> componente{}r   re   rf   r    s)componentescountr   )r8   r,   rs   r   r   r   rQ   z   s   

z&ListaMaterialesAdmin.componentes_countComponentesc                    s"   |s|j |_t |||| d S )N)userr^   r0   
save_model)r8   requestr,   rG   changer;   r   r   rv      s   zListaMaterialesAdmin.save_modelc                    s   t  |dddS )Nr   referencia__unidadrr   )r0   get_querysetr4   prefetch_related)r8   rw   r;   r   r   rz      s
   z!ListaMaterialesAdmin.get_querysetc                    s,   t   }td| jtjddg}|| S )Nzbom/6lista_de_materiales_listamateriales_arbol_bom_selector)name)r0   get_urlsr   
admin_site
admin_viewr
   arbol_bom_selector_view)r8   urlscustom_urlsr;   r   r   r~      s   
zListaMaterialesAdmin.get_urls)r   r   r   rI   rG   list_displaylist_filtersearch_fieldsrA   inlinesreadonly_fieldsr\   	fieldsetsrM   short_descriptionrO   rQ   rv   rz   r~   r?   r   r   r;   r   rK   E   s8    	rK   c                       sj   e Zd ZdZdZdZdZdZdd Zde_	d	d
 Z
de
_	dd Zdd Zdd Zde_	 fddZ  ZS )ComponenteListaMaterialesAdmin)lista_materiales_inforM   cantidad_displaydesperdicio_displayobligatorio_iconrD   )lista_materiales__estadorS   rE   )lista_materiales__codigorV   rW   )lista_materialesr   lista_materiales__referenciary   r$   c                 C   s   t d|jj|jj|jjjS )Nzd<div style="min-width: 200px;"><strong>{}</strong> v{}<br><span style="color: #666;">{}</span></div>)r   r   rL   rN   r   r'   rc   r   r   r   r      s   z4ComponenteListaMaterialesAdmin.lista_materiales_infozLista de Materialesc                 C   r`   )Nra   (   rb   rc   r   r   r   rM      rd   z.ComponenteListaMaterialesAdmin.referencia_info
Componentec              
   C   sd   zt t|jd}|jjj}d||}t|W S  ty1 } ztdt	|W  Y d }~S d }~ww )N   zf<div style="text-align: center;"><strong>{:.4f}</strong><br><span style="color: #666;">{}</span></div>*<span style="color: red;">Error: {}</span>)
roundfloatrB   r   r!   r*   formatr   	Exceptionstr)r8   r,   rB   r!   htmler   r   r   r      s   

z/ComponenteListaMaterialesAdmin.cantidad_displayc              
   C   sr   zt |jd}t |jd}dj|dkrdnd||d}t|W S  ty8 } ztdt|W  Y d }~S d }~ww )	N   r   z<div style="text-align: center; color: {color};">{desperdicio:.2f}%<br><span style="color: #666;">Total: {total:.4f}</span></div>r   z#FF5722z#666)colorrC   totalr   )r   rC   cantidad_totalr   r   r   r   )r8   r,   rC   r   r   r   r   r   r   r      s   

z2ComponenteListaMaterialesAdmin.desperdicio_displayc                 C   s"   t d|jrdnd|jrdS dS )Nz\<div style="text-align: center;"><span style="color: {}; font-weight: bold;">{}</span></div>re   rf   u   ✓u   ✗)r   rE   rc   r   r   r   r      s   z/ComponenteListaMaterialesAdmin.obligatorio_iconObligatorioc                    sf   |j dkrtjjtddtddB ddd|d< n|j d	kr(tjd|d< t j||fi |S )
Nr   r   r   r   Tr   r!   r5   r   )	r}   r   r2   r3   r   r4   r   r0   formfield_for_foreignkey)r8   db_fieldrw   r:   r;   r   r   r      s   

z7ComponenteListaMaterialesAdmin.formfield_for_foreignkey)r   r   r   r   r   r   list_select_relatedlist_per_pager   r   rM   r   r   r   r   r?   r   r   r;   r   r      s    	r   N)django.contribr   django.db.modelsr   django.utils.htmlr   djangor   referencias.modelsr   modelsr   r	   rp   r
   django.urlsr   	ModelFormr   TabularInlinerA   rI   register
ModelAdminrK   r   r   r   r   r   <module>   s    T