
     _?h/                        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	ej                        Z G d
 dej                        Z e
j                  d       G d dej                                Z ej$                  e       G d dej&                               Z ej$                  e	       G d dej&                               Zdej,                  _        dej,                  _        dej,                  _        y)    )admin)forms)format_html)models   )PropertyPropertyGalleryNc                   "     e Zd ZdZ fdZ xZS )MultipleChoiceWidgetu7   Widget personalizado para campos múltiples más bonitoc                 `    t        |   |i | | j                  j                  ddd       y )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__s      ;C:\Users\User\Documents\GitHub\espacioelite\agency\admin.pyr   zMultipleChoiceWidget.__init__   s2    $)&)

$|
 	    )__name__
__module____qualname____doc__r   __classcell__r   s   @r   r   r   	   s    A r   r   c                       e Zd ZdZ ej
                  ej                  eddd      Z	 ej
                  ej                  eddd      Z ej
                  ej                  eddd	      Z G d
 d      Z fdZd fd	Z x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                      e Zd ZeZdZ ej                  dddd       ej                  dddd       ej                  dd	d
       ej                  ddd
       ej                  ddd
       ej                  ddd
       ej                  ddd       ej                  ddd       ej                  ddd       ej                  ddd       ej                  ddd      dZy)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widgets r   r   Metar(   /   sK   )5>>91 
 $U^^9+ 
 'u'5.  ''<.  ('8/  !/',6 ! 'U&&(.  &E%%(-  *))'1  +**'2  'U&&'. W/
r   rH   c                     t        |   |i | | j                  j                  r| j                  j                  xs g | j
                  d   _        | j                  j                  xs g | j
                  d   _        | j                  j                  xs g | j
                  d   _        d| j
                  d   _	        d| j
                  d   _	        d| j
                  d	   _	        d
| j
                  d   _	        d| j
                  d   _	        y )Nfeatures_choicesservices_choicesrules_choicesz"Nombre descriptivo de la propiedadproperty_nameu%   Se genera automáticamente del nombreslugzPrecio en pesos colombianosr;   u   Área en metros cuadradosr<   z%Marcar si la propiedad viene amobladais_furnished)
r   r   instancepkfeaturesrA   initialservicesrulesr&   r   s      r   r   zPropertyAdminForm.__init__c   s    $)&) ==6:mm6L6L6RPRDKK*+36:mm6L6L6RPRDKK*+337==3F3F3L"DKK(0 2VO$.(OF%)FG&(CF%0WN#-r   c                    t         |   d      }| j                  j                  dg       |_        | j                  j                  dg       |_        | j                  j                  dg       |_        |r|j                          |S )NF)commitrJ   rK   rL   )r   savecleaned_datagetrR   rT   rU   )r   rW   rP   r   s      r   rX   zPropertyAdminForm.saves   sv    7<u<- --112DbI --112DbI**..CMMOr   )T)r   r   r   r   r   MultipleChoiceFieldr   FEATURESr   rJ   SERVICESrK   RULESrL   rH   r   rX   r   r   s   @r   r!   r!      s    4 1u00!!# F 1u00!!##< .E--#&6M2
 2
hX 	 	r   r!   imagec                   <    e Zd ZeZdZdZdZdZdZ	dZ
 G d d      Zy	)
PropertyGalleryInliner.   
   )r_   image_thumbnailis_featuredorder)rc   u   Imagen de la galeríau   Galería de imágenesc                       e Zd ZddiZy)PropertyGalleryInline.Mediaall)zadmin/css/custom_inline.cssN)r   r   r   cssrG   r   r   Mediarg      s    3
r   rj   N)r   r   r   r	   r@   extramax_numrA   readonly_fieldsverbose_nameverbose_name_pluralrj   rG   r   r   ra   ra      s0    EEGAF*O*L1
 
r   ra   c                   Z   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# Zd$e_        d%e_        d& Zd'e_        d( Zd)e_        d* Zd+e_        d, Zd-e_        d. Zd/e_        d0 Zd1e_         G d2 d3      Zy4)5PropertyAdmin)rM   locationformatted_pricearea_bedrooms_bathroomsavailability_statusis_availablepurposethumbnail_preview)rv   categoryrw   rr   rO   created_date)rM   r7   r5   rN   )rM   )rx   rz   modified_date   rz   u   📋 Información Básica)rM   rN   r5   ry   rw   r;   
main_imagerx   )wide)rA   classesu   📍 Ubicación)rr   r7   r?   r8   u!   🏠 Características Principales)r<   r=   r>   rO   u    ✨ Características Adicionales)rJ   )r~   collapseu:   Selecciona las características especiales de la propiedad)rA   r   r5   u   🛠️ Servicios Incluidos)rK   u;   Marca todos los servicios que están incluidos en el preciou   📝 Reglas de la Propiedad)rL   u.   Define las reglas y políticas de la propiedadu   📱 Multimedia)r9   r:   u   🎯 Estado y Disponibilidad))rv   rd   is_verifiedu   📊 Información del Sistema))rz   r{   r6   )r   c                 J    t        dj                  |j                              S )Nz;<span style="font-weight: bold; color: #28a745;">${}</span>)r   formatr;   r   objs     r   rs   zPropertyAdmin.formatted_price   s$    IPPQTQZQZ[
 	
r   Precior;   c                 Z    t        d|j                  |j                  |j                        S )Nu,   <small>{} m² | {} 🛏️ | {} 🚿</small>)r   r<   r=   r>   r   s     r   rt   z%PropertyAdmin.area_bedrooms_bathrooms   s%    :HHcllCMM
 	
r   Detallesc                    g }|j                   r|j                  d       n|j                  d       |j                  r|j                  d       |j                  r|j                  d       t	        dj                  |            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>)rv   appendrd   r   r   join)r   r   iconss      r   ru   z!PropertyAdmin.availability_status  sf    LLLMLLMN??LLJK??LLNO6;;u-..r   Estadoc                 p    |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>)r}   r   urlr   s     r   rx   zPropertyAdmin.thumbnail_preview  s@    >> D""    Z  [  	[r   Vista previac                 R    |j                  d      }| j                  || d       y )NT)rd   z& propiedades marcadas como destacadas.r   message_userr   requestquerysetupdateds       r   mark_as_featuredzPropertyAdmin.mark_as_featured  s*    //d/3'gY.T#UVr   zMarcar como destacadasc                 R    |j                  d      }| j                  || d       y )NTrv   z' propiedades marcadas como disponibles.r   r   s       r   mark_as_availablezPropertyAdmin.mark_as_available   s*    //t/4'gY.U#VWr   zMarcar como disponiblesc                 R    |j                  d      }| j                  || d       y )NFr   z* propiedades marcadas como no disponibles.r   r   s       r   mark_as_unavailablez!PropertyAdmin.mark_as_unavailable%  s*    //u/5'gY.X#YZr   zMarcar como no disponiblesc                       e Zd ZddiZdZy)PropertyAdmin.Mediarh   )zadmin/css/property_admin.css)zadmin/js/property_admin.jsN)r   r   r   ri   jsrG   r   r   rj   r   *  s    4
 -r   rj   N)r   r   r   r!   formlist_displaylist_filtersearch_fieldsprepopulated_fieldsra   inlinesrm   list_per_pagedate_hierarchy	fieldsetsrs   short_descriptionadmin_order_fieldrt   ru   rx   r   r   r   rj   rG   r   r   rq   rq      s   D	LK @M!#56$%GLOM#N 
%	 !'
 	 
 !
 	 
- !/
 	 
,++W.
 	
 
'++X)
 	
 
'(+K)
 	
 
 ,
 	 
( !	*
 	 
) %+
 	yCIL
 )1O%(/O%

 1;-/ -5)[ +9'W *B&X +D'[ -I)- -r   rq   c                   J    e Zd ZdZdZdZdZdZdZdZ	d Z
d	e
_        d
ddiffZy)PropertyGalleryAdmin)propertyre   rd   image_preview)rd   property__locationproperty__categoryrd   re   )property__property_name   )r   )r   re   c                 \    |j                   r t        d|j                   j                        S y)NzY<img src="{}" style="width: 60px; height: 45px; object-fit: cover; border-radius: 3px;"/>-)r_   r   r   r   s     r   r   z"PropertyGalleryAdmin.image_preview;  s)    99k		  r   r   u   Información de la ImagenrA   )r   )r_   r   r   N)r   r   r   r   r   list_editabler   r   rm   orderingr   r   r   rG   r   r   r   r   1  sR    HLMK,M0MM(O$H '5M# 
% '
 	Ir   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TabularInlinera   register
ModelAdminrq   r   sitesite_header
site_titleindex_titlerG   r   r   <module>r      s       )  - 577 i iX G$
E// 
 %
 ^-E$$ ^- ^-B  5++  !: ?

 +

 +

 r   