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m	Z	 d dl
Z
G dd	 d	ejZG d
d dejZe
d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ej_dej_dej_dS )    )admin)forms)format_html)models   )PropertyPropertyGalleryNc                       s    e Zd ZdZ fddZ  ZS )MultipleChoiceWidgetu7   Widget personalizado para campos múltiples más bonitoc                    s(   t  j|i | | jddd d S )Nzcheckbox-gridzedisplay: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 10px; padding: 10px;)classstyle)super__init__attrsupdateselfargskwargs	__class__ 7/var/www/html/tuespacioelite.com/public/agency/admin.pyr      s
   zMultipleChoiceWidget.__init__)__name__
__module____qualname____doc__r   __classcell__r   r   r   r   r	   	   s    r	   c                       s~   e Zd ZdZejejeddddZ	ejej
eddddZejejeddd	dZG d
d dZ fddZd fdd	Z  ZS )PropertyAdminFormz*Form personalizado para el modelo PropertyFu   Característicasu2   Selecciona todas las características que apliquen)choiceswidgetrequiredlabel	help_textzServicios Incluidosz(Selecciona todos los servicios incluidoszReglas de la Propiedadz"Selecciona las reglas que apliquenc                   @   s   e Zd ZeZdZejdddddejdddddejdd	d
dej	ddd
dej	ddd
dej	ddd
dej
ddddej
ddddej
ddddej
ddddej
dddddZdS )zPropertyAdminForm.Meta__all__   P   zwidth: 100%; resize: vertical;)rowscolsr   )r      zwidth: 100%;zEj: Calle 123 #45-67)r   placeholderzhttps://maps.google.com/...zhttps://youtube.com/...zhttps://...zwidth: 150px;10000)r   stepzwidth: 100px;1)r   minzwidth: 80px;0)descriptionnotesaddressmaps_url	video_urlvirtual_tour_urlpriceareabedrooms	bathroomsfloorN)r   r   r   r   modelfieldsr   Textarea	TextInputURLInputNumberInputwidgetsr   r   r   r   Meta/   sd    
rA   c                    s   t  j|i | | jjr+| jjpg | jd _| jjpg | jd _| jjp&g | jd _d| jd _	d| jd _	d| jd	 _	d
| jd _	d| jd _	d S )Nfeatures_choicesservices_choicesrules_choicesz"Nombre descriptivo de la propiedadproperty_nameu%   Se genera automáticamente del nombreslugzPrecio en pesos colombianosr5   u   Área en metros cuadradosr6   z%Marcar si la propiedad viene amobladais_furnished)
r   r   instancepkfeaturesr;   initialservicesrulesr"   r   r   r   r   r   c   s   zPropertyAdminForm.__init__Tc                    sN   t  jdd}| jdg |_| jdg |_| jdg |_|r%|  |S )NF)commitrB   rC   rD   )r   savecleaned_datagetrJ   rL   rM   )r   rN   rH   r   r   r   rO   s   s   zPropertyAdminForm.save)T)r   r   r   r   r   MultipleChoiceFieldr   FEATURESr	   rB   SERVICESrC   RULESrD   rA   r   rO   r   r   r   r   r   r      s4    4r   imagec                   @   s6   e Zd ZeZdZdZdZdZdZ	dZ
G dd dZd	S )
PropertyGalleryInliner(   
   )rV   image_thumbnailis_featuredorder)rY   u   Imagen de la galeríau   Galería de imágenesc                   @   s   e Zd ZddiZdS )zPropertyGalleryInline.Mediaall)zadmin/css/custom_inline.cssN)r   r   r   cssr   r   r   r   Media   s    r^   N)r   r   r   r   r:   extramax_numr;   readonly_fieldsverbose_nameverbose_name_pluralr^   r   r   r   r   rW      s    rW   c                   @   s"  e Zd ZeZdZdZdZddiZe	gZ
dZdZdZd	d
ddfddddfddddfdddddfdddddfdddddfddddfddddfd d!d"dff	Zd#d$ Zd%e_d&e_d'd( Zd)e_d*d+ Zd,e_d-d. Zd/e_d0d1 Zd2e_d3d4 Zd5e_d6d7 Zd8e_G d9d: d:Zd;S )<PropertyAdmin)rE   locationformatted_pricearea_bedrooms_bathroomsavailability_statusis_availablepurposethumbnail_preview)ri   categoryrj   re   rG   created_date)rE   r1   r/   rF   )rE   )rk   rm   modified_date   rm   u   📋 Información Básica)rE   rF   r/   rl   rj   r5   
main_imagerk   )wide)r;   classesu   📍 Ubicación)re   r1   r9   r2   u!   🏠 Características Principales)r6   r7   r8   rG   u    ✨ Características Adicionales)rB   )rq   collapseu:   Selecciona las características especiales de la propiedad)r;   rr   r/   u   🛠️ Servicios Incluidos)rC   u;   Marca todos los servicios que están incluidos en el preciou   📝 Reglas de la Propiedad)rD   u.   Define las reglas y políticas de la propiedadu   📱 Multimedia)r3   r4   u   🎯 Estado y Disponibilidad))ri   rZ   is_verifiedu   📊 Información del Sistema))rm   rn   r0   )rs   c                 C   s   t d|jS )Nz;<span style="font-weight: bold; color: #28a745;">${}</span>)r   formatr5   r   objr   r   r   rf      s   
zPropertyAdmin.formatted_pricePrecior5   c                 C   s   t d|j|j|jS )Nu,   <small>{} m² | {} 🛏️ | {} 🚿</small>)r   r6   r7   r8   rv   r   r   r   rg      s   z%PropertyAdmin.area_bedrooms_bathroomsDetallesc                 C   sN   g }|j r|d n|d |jr|d |jr |d td|S )Nu1   <span style="color: green;">✅ Disponible</span>u2   <span style="color: red;">❌ No disponible</span>u/   <span style="color: gold;">⭐ Destacado</span>u3   <span style="color: blue;">✔️ Verificado</span>z<br>)ri   appendrZ   rt   r   join)r   rw   iconsr   r   r   rh     s   


z!PropertyAdmin.availability_statusEstadoc                 C   s   |j r
td|j jS tdS )Nzq<img src="{}" style="width: 80px; height: 60px; object-fit: cover; border-radius: 4px; border: 1px solid #ddd;"/>z<div style="width: 80px; height: 60px; background: #f0f0f0; border-radius: 4px; display: flex; align-items: center; justify-content: center; font-size: 12px; color: #666;">Sin imagen</div>)rp   r   urlrv   r   r   r   rk     s   zPropertyAdmin.thumbnail_previewVista previac                 C   "   |j dd}| || d d S )NT)rZ   z& propiedades marcadas como destacadas.r   message_userr   requestquerysetupdatedr   r   r   mark_as_featured     zPropertyAdmin.mark_as_featuredzMarcar como destacadasc                 C   r   )NTri   z' propiedades marcadas como disponibles.r   r   r   r   r   mark_as_available   r   zPropertyAdmin.mark_as_availablezMarcar como disponiblesc                 C   r   )NFr   z* propiedades marcadas como no disponibles.r   r   r   r   r   mark_as_unavailable%  r   z!PropertyAdmin.mark_as_unavailablezMarcar como no disponiblesc                   @   s   e Zd ZddiZdZdS )zPropertyAdmin.Mediar\   )zadmin/css/property_admin.css)zadmin/js/property_admin.jsN)r   r   r   r]   jsr   r   r   r   r^   *  s    r^   N)r   r   r   r   formlist_displaylist_filtersearch_fieldsprepopulated_fieldsrW   inlinesra   list_per_pagedate_hierarchy	fieldsetsrf   short_descriptionadmin_order_fieldrg   rh   rk   r   r   r   r^   r   r   r   r   rd      s    

		Frd   c                   @   sD   e Zd ZdZdZdZdZdZdZdZ	dd	 Z
d
e
_dddiffZdS )PropertyGalleryAdmin)propertyr[   rZ   image_preview)rZ   property__locationproperty__categoryrZ   r[   )property__property_name   )r   )r   r[   c                 C   s   |j r
td|j jS dS )NzY<img src="{}" style="width: 60px; height: 45px; object-fit: cover; border-radius: 3px;"/>-)rV   r   r~   rv   r   r   r   r   ;  s   z"PropertyGalleryAdmin.image_previewr   u   Información de la Imagenr;   )r   )rV   r   r   N)r   r   r   r   r   list_editabler   r   ra   orderingr   r   r   r   r   r   r   r   1  s    r   u#   🏠 Administración de PropiedadeszAdmin PropiedadeszPanel de Control)django.contribr   djangor   django.utils.htmlr   	django.dbr   r   r   admin_thumbnailsCheckboxSelectMultipler	   	ModelFormr   	thumbnailTabularInlinerW   register
ModelAdminrd   r   sitesite_header
site_titleindex_titler   r   r   r   <module>   s$    
l "