o
    JAh.                     @   s   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
mZ d dlmZmZmZmZ d dlmZmZ d d	lmZ d d
lZd dlmZ dddZdddZdd Zdd Zdd Zedd Zedd Zd
S )    )renderget_object_or_404   )PropertyPropertyGallery)category)Location)staff_member_required)CountAvgQSum)now	timedelta)JsonResponseN)sitec           
      C      d }t jjddd}|rtt|d}|j|d}tjjddd }| }t|jddd}|r5t	|nd }|r=t
|nd }|||||d	}	t| d
|	S )NsaleTpurposeis_availablesluglocationproperty__purposeproperty__is_availablepriceflat
properties	locationsproperty_countprecio_maximoprecio_minimozagency/comprar.htmlr   objectsfilterr   r   distinctcountlistvalues_listmaxminr   
requestlocation_slugr   r"   r#   r$   preciosr%   r&   context r5   7/var/www/html/tuespacioelite.com/public/agency/views.pycomprar   s,   r7   c           
      C   r   )NrentTr   r   r   r   r   r   r!   zagency/rentar.htmlr'   r0   r5   r5   r6   rentar*   s,   r9   c           	   
   C   s   z
t jj||d}W n ty } z|d }~ww tjj|jd}tt|j	}d|j
dd d | d }|||d}t| d	|S )
N)category__slugr   )property_id' z%20z'%20por%20valor%20de%20$%20u4   %20COP,%20por%20favor%20darme%20más%20información.)single_propertyproperty_gallerymensajezagency/property_detail.html)r   r(   get	Exceptionr   r)   idint_a_moneda_strintr   property_namereplacer   )	r1   category_slugproperty_slugr>   er?   precior@   r4   r5   r5   r6   property_detailH   s   rL   c                 C   s
   t | dS )Nzagency/inicio.html)r   )r1   r5   r5   r6   inicioY   s   
rM   c                 C   sD   t | }g }|r||dd   |d d }|sdt|}|S )N.)strappendjoinreversed)numero
numero_strgruposnumero_formateador5   r5   r6   rD   \   s   rD   c           "      C   sx  t j }t jjdd }t jjdd }t jjdd }t jjdd }t jjdd }t jtdd	 p=d
}t jtdd pId
}t jtdd pUd
}	t jtdd pad
}
tjjtdtdt	dddtdd
d}tjjtdtdt	dddtdd
d}t tdd }t jj|d }t jj|d }i }i }i }i }t jD ]&\}}t jt	d| ddt	d| ddB  }|d
kr||t|< qi }t jD ]'\}}t jt	d| ddt	d| ddB  }|d
kr||t|< qi }t jD ](\}}t jt	d| ddt	d| ddB  }|d
kr5||t|< qt jjdd  }t jjd!d  }t jjd"d# t jjd"d$d% t jjd$d&d% t jjd&d'd% t jjd'd( d)}t jjd*d+ t jjd*d,d- t jjd,d.d- t jjd.d/d- t jjd/d0 d1}tj }t jjd!d2  }t| } i d3|d4|d5|d6|d7|d8|d9t|d
d:t|d;d<t|	d;d=t|
d;d>|d?|d@|dA|dB|dC|dD|||||||tdEdF |D tdGdF |dHdI D tdJ|dKdL|dKgtdMdF | D dN
}!|!|  t| dO|!S )Pu.   Vista principal del dashboard de estadísticasT)r   )is_featured)is_verifiedr8   )r   r   r   
price__avgr   area	area__avgbedroomsbedrooms__avg	bathroomsbathrooms__avgproperty)r   )r)   property__price)total_propertiesavailable_properties	avg_pricez-total_properties   dayscreated_date__gte)modified_date__gte")features__icontainsr<   )services__icontains)rules__icontains)is_furnishedFi  )	price__lti@B )
price__gterq   i i@KL )rr   )zMenos de $500,000z$500,000 - $1,000,000z$1,000,000 - $2,000,000z$2,000,000 - $5,000,000u   Más de $5,000,0002   )area__ltd   )	area__gtert      i,  )rv   )u   Menos de 50 m²u
   50-100 m²u   100-200 m²u   200-300 m²u   Más de 300 m²)images__isnullrc   rd   featured_propertiesverified_propertiesrent_propertiessale_propertiesre   avg_arear   avg_bedroomsavg_bathroomsproperties_by_categoryproperties_by_locationrecent_propertiesrecent_modificationsfeatures_statsservices_statsrules_statsc                 S      g | ]	}|j |jd qS namer+   )category_namerc   ).0catr5   r5   r6   
<listcomp>   
    
z#dashboard_stats.<locals>.<listcomp>c                 S   r   r   )location_namerc   r   locr5   r5   r6   r      r   N
   Ventar   Rentac                 S   s"   g | ]\}}|d kr||dqS )r   )ranger+   r5   )r   kvr5   r5   r6   r   	  s    )
furnished_countunfurnished_countprice_rangesarea_rangestotal_imagesproperties_with_imagescategories_datalocations_datapurpose_dataprice_ranges_datazadmin/dashboard_stats.html)r   r(   r+   r)   	aggregater   r   annotater
   r   order_byr   r   r   FEATURESrP   SERVICESRULESr   r*   r   each_contextroundjsondumpsitemsupdater   )"r1   rc   rd   ry   rz   r{   r|   re   r}   r~   r   r   r   thirty_days_agor   r   r   r   r   feature_codefeature_namer+   service_codeservice_name	rule_code	rule_namer   r   r   r   r   r   admin_contextr4   r5   r5   r6   dashboard_statsk   s  




	










>r   c                 C   s   | j dd}|dkr8ddlm} tjjt tdd dj	|d	d

dj	tddd}tdt|iS |dkrdtjj	tdtddjddddd }tdd |D dd |D dS tddiS )u&   API para datos de gráficos dinámicostype monthly_propertiesr   )
TruncMonthim  rg   ri   created_date)monthr   rC   )r+   dataprice_by_locationrb   ra   )re   r+   )	count__gtz
-avg_priceNr   c                 S   s   g | ]}|j qS r5   )r   r   r5   r5   r6   r   /  s    z"api_chart_data.<locals>.<listcomp>c                 S   s   g | ]	}t |jp	d qS )r   )floatre   r   r5   r5   r6   r   0  s    )labelspriceserrorzInvalid chart type)GETrA   django.db.models.functionsr   r   r(   r)   r   r   r   valuesr
   r   r   r,   r   r   )r1   
chart_typer   monthly_datalocation_pricesr5   r5   r6   api_chart_data  s>   r   )N) django.shortcutsr   r   modelsr   r   category.modelsr   location.modelsr   %django.contrib.admin.views.decoratorsr	   django.db.modelsr
   r   r   r   django.utils.timezoner   r   django.httpr   r   django.contrib.adminr   r7   r9   rL   rM   rD   r   r   r5   r5   r5   r6   <module>   s(    


 (