o
    gK                     @   sR  d dl 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mZmZ d dlmZmZmZmZmZmZmZmZ d d	lmZmZmZmZ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. e%j/Z/dd Z0e'dddZ1e'dd Z2dd Z3dd Z4dd Z5e'dddZ6dS )     N)JsonResponse)redirect)QCountMaxMin)get_object_or_404render)	Developer)MasterDevelopmentEditForm"MasterDevelopmentTranslateEditForm)CurrencyDevelopmentDevelopmentTranslateONHAreaONHDistrictONHPostcode
ONHStationONHZone)CityCountryLocation
LondonArea
LondonZone)Language)cache)settings)login_required)GEOSGeometryPolygon)user_control)get_settingsc           <      C   s  | j }| j dd}tjj|d }|d u r tjjdd }d| dddd | D  }t|}|r;|S |dd	}z	t	jj|d}W n   t	jjd	d}Y t
d
ddd
d}d|v rs|d dkrs|t
|d dkdM }d|v r!|d}	|	dd}	|	d}
t|
dkr|
|	 d  } } } } } } } }}|
D ]V}|d u rt
|dt
|dB t
|dB t
|dB }n|t
|dt
|dB t
|dB t
|dB O }|d u rt
|dt
|dB t
|dB t
|dB }n|t
|dt
|dB t
|dB t
|dB O }|d u r"t
|dt
|dB t
|dB t
|dB }n|t
|dt
|dB t
|dB t
|dB O }|d u rWt
|dt
|dB t
|dB t
|dB t
|dB }n|t
|dt
|dB t
|dB t
|dB t
|dB O }|d u rt
|dt
|dB }n|t
|dt
|dB O }|d u rt
|dt
|dB }n|t
|dt
|dB O }|d u rt
|dt
|dB }n|t
|dt
|dB O }|d u rt
|dt
|dB }n|t
|dt
|dB O }|d u rt
|dt
|dB }q|t
|dt
|dB O }q|d urtj| }|d u rt
|d}n|t
|dO }|d ur=tj| }|d u r6t
|d}n|t
|dO }|d ur\tj| }|d u rUt
|d}n|t
|dO }|d ur{tj| }|d u rtt
|d}n|t
|dO }|d urtj| }|d u rt
|d}n|t
|dO }|d urtj| }|d u rt
|d }n|t
|d O }d }|d urtj| }|d u rt
|d }n|t
|d O }|d urtj| }|d u rt
|d }n|t
|d O }|d urtj| }|d u rt
|d!}n|t
|d!O }|d ur!||M }d"|v r<|d"}|d#}|t
|d$t
|d%B M }d&|v r]|d&} | d'd(} | d#} |t
| d)t
| d*B M }d+|v r~|d+}!|!d,d(}!|!d#}!|t
|!d-t
|!d.B M }d/|v r|d/}"|"d0d(}"|"d#}"|t
|"d1M }d2|v r|d2}#|#d3d(}#|#d#}#|t
|#d4M }d5|v r|d5}$|$d6d(}$|$d#}$|t
|$d7M }d8|v r|d8}%|%d9d(}%|%d#}%|t
|%d:M }d;|v rVz	t|d;}&W n   d<}&Y |t
d<d=M }|jd	kr$|&|j }'|t
||&d>t
d?|'d@B M }n2|jd?kr>|&|j }'|t
||&d>t
d	|'d@B M }n|&|j }'|&|j }(|t
d?|)d@t
d	|(d@B M }dA|v rz	t|dA})W n   d<})Y |t
d<d=M }|jd	kr|)|j }'|t
||)dBt
d?|'dCB M }n2|jd?kr|)|j }'|t
||)dBt
d	|'dCB M }n|)|j }'|)|j }(|t
d?|)dCt
d	|(dCB M }dD|v r|dD}*|*dEd(}*|*d#}*|t
|*dFM }dG|v r|dG}+|+d#}+|t
|+dHM }dI|v r|dI},|,dJd(},|,d#},|t
|,dKM }dL|v r(|dL}-|-dMd(}-|-d#}-|t
|-dNM }dO|v rU|dO}.|.d#}.dP|.v rN|.dP |t
d
dQt
|.dRB M }n|t
|.dRM }dS|v rk|dS}/|/d#}/|t
|/dTM }dU|v r|dU}0|0d#}0|t
|0dVM }dW|v r|dW}1|1dXd(}1|1d#}1|t
|1dYM }dZ|v r|dZ}2|2d#}2|t
|2d[d\M }d]|v r|d]}3|3d#}3|t
|3d^d\M }d_|v r|d_ dkr|d_d`k}4|t
|4daM }db|v r|db dkr|dbdk}5|t
|5dQM }dc|v r)|dc}6t|6}7|7d< |7dd kr|7|7d<  t |7}8|t
|8deM }t!j|"df }9t#|9j$dgd
dh}:t%didjdjdkidl|:dmdnddo};t&||;t' |;S )pNlanguageen)code	map_data__c                 s   s    | ]}|V  qd S )N ).0itemr'   r'   2/var/www/Entralon-Web-Backend/development/views.py	<genexpr>   s    zmap_data.<locals>.<genexpr>currencyGBPTF)	is_active
is_deletedgeo_json__isnulldeveloper__is_activefeaturedtrue)is_featuredsearch+    title__icontains)translates__title__icontainsslug__icontains)translates__slug__icontains)name__icontains)translates__name__icontains)code__icontains)developer__in)city__in)country__in)onh_station__in)onh_district__in)onh_postcode__in)location__in	developer,)developer__slug__in)developer__translates__slug__incityzcity- )city__slug__in)city__translates__slug__incountryzcountry-)country__slug__in)country__translates__slug__inpay_optzpay_opt-)payment_option__slug__inpay_planz	pay_plan-)payment_plan__slug__inkey_featurezkey_feature-)key_features__feature__slug__inbedroomzbedroom-)flats__bedrooms_num__inpriceMinr   )flats__base_price__gt)default_currencyflats__base_price__gteAED)default_currency__coder_   priceMax)r^   flats__base_price__lte)ra   rc   districtz	district-)onh_district__slug__inzone)location__london_zone__slug__inareazarea-)location__london_area__slug__inzipcodezzipcode-)onh_postcode__slug__incompletionDatezready-to-move)is_ready_to_move)completed_at__year__inpostCode)!location__post_code__out_code__inregion)%location__post_code__region__slug__instationzstation-)onh_station__slug__intrainStation   ),public_facilities__public_facility__slug__in+public_facilities__public_facility__type_id
busStation   	availablefalse)is_sold_outreadyToMovepolygon)coordinates__withinr}   geo_json)flatFeatureCollectionnamez	EPSG:4326)type
properties)r   crsfeatureszapplication/geojson)content_typesafe)(GETgetr   objectsfilterfirstjoinvaluesr   r   r   replacesplitlenappendr
   distinctr   r   r   r   r   r   r   r   floatr$   aed_rategbp_rateremovejsonloadsr   r   order_bylistvalues_listr   set
CACHE_TIME)<requestkwargsr"   lang	cache_keycached_resultr,   r^   fr5   search_listsdev_scity_s	country_s	station_s
district_slondon_zone_slondon_area_slondon_zip_code_sqs_developers_city	s_country	s_station
s_districts_london_zip_code
location_ss_london_zones_london_area
s_locationrI   rM   rQ   payment_optionspayment_planskey_featuresbedrooms
price_fromp1p2price_tord   london_zonelondon_arealondon_zip_codecompletion_date	post_coderq   rs   train_stationbus_stationr}   ready_to_mover   coordinatespolygon_objdevelopmentsgeojsonresultr'   r'   r*   map_data   s  $




$
2,2,4,>6     










































































 r   c                 C   sd   t | }|d st|d S t| }|jdv rd|_|j d}|j d}tj }t| |t	 S )Nhas_permredirect_urirN   NNonezDevelopment Listz/developments.html
/base.html)
r    r   r!   	page_name
theme_namer   r   allr	   locals)r   rQ   rM   user_controllersite_settingspage_adrbase_adrr   r'   r'   r*   master_developments   s   

r   c                 C   s   t | }|d st|d S t| }|jdv rd|_tt|d}|j d|_tj	 }t
jj|d}g }d }|D ]}	t|	d}|	jjd	v rHd
nd}
||	jj |	j|
|d q9|j d}|j d}t| |t S )Nr   r   r   zDevelopment Detailsidz Details)developmentinstance)r#   rurN   zdir-rtl)r"   r   dirformz/development.htmlr   )r    r   r!   r   r   r   titler   r   r   r   r   r   r"   r$   r   r   r   r   r	   r   )r   r   r   r   r   	languages
translatesformsr   	translater   r   r   r'   r'   r*   master_development   s&   


r   c              
   C   s   t | }|d st|d S t| }|jdv rd|_d }ztjj|d}t|d}d|j }W n t	yD } zd}W Y d }~nd }~ww d	}d
}	d| d}
|j
 d}|j
 d}t| |t S )Nr   r   r   Development Editr   r   zEdit Development: zEdit Development
MasterEditEditz/master/developments/z/edit/z/modal.htmlr   )r    r   r!   r   r   r   r   r   r   	Exceptionr   r	   r   )r   r   r   r   r   rQ   r   emodal_idbtn_footer_valueform_urlr   r   r'   r'   r*   master_development_edit_form  s*   

r   c              	   C      t | }|d st|d S t| }|jdv rd|_tt|d}t| j|d}z| r:|	  t
ddg g d	W S t
d
d|jg d	W S    t
d
dg g d	 Y S Nr   r   r   r   r   r   TzEdit is success.)successmessageerrorsresultsFerrorz	not Found)r    r   r!   r   r   r   r   POSTis_validsaver   r   r   r   r   r   r   r   r'   r'   r*   master_development_edit$     
r  c              	   C   r   r   )r    r   r!   r   r   r   r   r   r  r  r   r   r  r'   r'   r*   master_development_text_edit6  r  r  c                 C   s  t | }|d st|d S | jdd}| jdkr| jdd}| jdd}| jdd	}| jd
}| jdd}| jdd}	d}
|rr|dkrNd}
n|dkrUd}
n|dkr\d}
n|dkrcd}
n|dkrid}
|	dkrrd|
 }
zt|}W n   d	}Y zt|}W n   d}Y tj	 }|r|j
|d}|r|j
|d}|d ur|
t|dt|dB }||
}t||||  dd}|| | |jd }t|S | jdd}t|ddg d S )!Nr   r   drawr8   r   startr   length
   zsearch[value]zorder[0][column]0zorder[0][dir]descrN   r   1r   2slug3country__name4
city__name-)
country_id)city_idr9   r<   T)many)r  recordsTotalrecordsFiltereddata)r    r   r   r   methodr   intr   r   r   r   r   r   MasterDevelopmentSerializercountr  r   )r   rQ   rM   r   r  r  r	  r5   order_column	order_dirr   obj
serializerr   r'   r'   r*   master_developments_listH  sP   


r#  )NN)7r   django.httpr   django.shortcutsr   django.db.modelsr   r   r   r   r   r	   developer.modelsr
   development.formsr   r   development.modelsr   r   r   r   r   r   r   r   geo_location.modelsr   r   r   r   r   main.modelsr   django.core.cacher   django.confr   django.contrib.auth.decoratorsr   django.contrib.gis.geosr   r   
main.utilsr    
user.utilsr!   r   r   r   r   r   r  r  r#  r'   r'   r'   r*   <module>   s8    ( X
