o
    g                    @   sF  d dl 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 e Zdedfd	ed
fgZdedfd	edfgZdedfd	edfgZG dd dejZG dd dejZG dd dejZG dd dejZG dd dejZG dd dejZG dd dejZG dd dejZG dd  d ejZG d!d" d"ejZG d#d$ d$ejZG d%d& d&ejZG d'd( d(ejZG d)d* d*ejZG d+d, d,ejZG d-d. d.ejZ G d/d0 d0ejZ!d ed1fd2ed3fd4ed5fd6ed7fd8ed9fd:ed;fd<ed=fd>ed?fd@edAfdBedCfdDedEfdFedGfdHedIfdJedKfdLedMfdNedOfdPedQfdRedSfdTedUfdVedWfgZ"G dXdY dYejZ#G dZd[ d[ejZ$G d\d] d]ejZ%d^d_ Z&G d`da daejZ'd edbfd2edcfd4eddfd6edefgZ(G dfdg dgejZ)G dhdi diejZ*G djdk dkejZ+dS )l    N)models)get_user_model)gettext_lazy)slugify)	WEBPFieldT	submittedFignoredactivedeactiveyesnoc                       sd  e Zd ZejeddddZejedddddddZejeddddZ	ej
ed	dddd
ZejdeddejdddZejdeddejdddZejedddddZejeddedZejeddedZejeddddddZejeddddZejeddedZejeddd Zejed!dd"Z fd#d$Zd%d& Z G d'd( d(Z!  Z"S ))Countryname   T
max_lengthdb_indexSlug   r   r   uniquenullblankcodesimilar namer   r   r   main.Languagezdefault languagecountry_languageverbose_namerelated_name	on_deleter   r   zdevelopment.Currencyzdefault currencycountry_currencycoordinates  sridr   r   FeaturedFdefaultchoices
translatediconzcountry/icons/)	upload_tor   r   r   datar   r   
data check
created atauto_now_add
updated atauto_nowc                    0  | j rt| j dd| _| jd u s| jdkrg }| jr%| j|vr%|| j | jr3| j|vr3|| j | j r|| j  t| j dd|vrO|t| j dd | j dd|vrb|| j dd | j dd|vru|| j dd | j dd|vr|| j dd d|| _n| jd}| jr| j|vr|| j | jr| j|vr|| j | j r| j |vr|| j  t| j dd|vr|t| j dd | j dd|vr|| j dd | j dd|vr|| j dd | j dd|vr|| j dd d|| _t	 
 S NTallow_unicode  -_|,| r   r   slugsimilar_namer   appendreplacejoinsplitsupersaveselfkwargssn	__class__ 4/var/www/Entralon-Web-Backend/geo_location/models.pyrH   :   H   

zCountry.savec                 C      | j  S Nr   rJ   rO   rO   rP   __str__a      zCountry.__str__c                   @   "   e Zd ZedZedZdgZdS )zCountry.Metar   	Countriesr   N__name__
__module____qualname__r>   r   verbose_name_pluralorderingrO   rO   rO   rP   Metad       
r`   )#r[   r\   r]   r   	CharFieldr>   r   	SlugFieldrA   r   	TextFieldrB   
ForeignKeyCASCADEdefault_languagedefault_currencyMultiPolygonFieldr#   BooleanFieldQUESTION_BOOLEANis_featuredr+   	FileFieldr,   	JSONFieldr.   CHECK_BOOLEAN
data_checkDateTimeField
created_at
updated_atrH   rV   r`   __classcell__rO   rO   rM   rP   r   &   s$    'r   c                       s   e Zd ZejeejedddZejdeddejdZ	ej
edd	d
dZejeddd
d
d
dZejedd
d
d
dZejedd
d
dZejedd
d
dZ fddZdd ZG dd dZ  ZS )CountryTranslatecountry
translatesr!   r   r    r   languagecountry_translatesr   r    r!   r   r   Tr   r   r   r   r   r   r   r   r   descriptionr/   filter textc                    s  t | jjdd| _| jd u s| jdkrg }| jr#| j|vr#|| j | jrx|| j t | jdd|vr?|t | jdd | jdd|vrR|| jdd | jdd|vre|| jdd | jdd|vrx|| jdd d|| _nt| jd}| jr| j|vr|| j | jr| j|vr|| j t | jdd|vr|t | jdd | jdd|vr|| jdd | jdd|vr|| jdd | jdd|vr|| jdd d|| _t	 
 S r8   )r   rv   r   rA   rB   rC   rD   rE   rF   rG   rH   rI   rM   rO   rP   rH   r   s@   

zCountryTranslate.savec                 C   rR   rS   rT   rU   rO   rO   rP   rV      rW   zCountryTranslate.__str__c                   @   6   e Zd ZedZedZdgZejddgddgZ	dS )	zCountryTranslate.MetazCountry TranslatezCountries Translatesr   ry   rv   #repeated_language_country_translatefieldsr   N
r[   r\   r]   r>   r   r^   r_   r   UniqueConstraintconstraintsrO   rO   rO   rP   r`          r`   )r[   r\   r]   r   re   r   rf   r>   rv   ry   rb   r   rc   rA   rd   rB   r}   filter_textrH   rV   r`   rt   rO   rO   rM   rP   ru   i   s    #ru   c                       s>  e Zd ZejedddZejeddddddZejedddZ	ej
eed	d
ejdddZejedddddZejeddddZejeddedZejeddedZejedddddZejeddddZejeddedZejedddZejedddZ fddZd d! Z G d"d# d#Z!  Z"S )$Stater   r   r   r   r   Tr   r   r   r   r   rv   statesr   r#   r$   r%   r   r/   r+   Fr(   r'   r,   zstate/icons/r-   r   r   r.   r0   r1   r2   r4   r5   c                    r7   r8   r@   rI   rM   rO   rP   rH      rQ   z
State.savec                 C   rR   rS   rT   rU   rO   rO   rP   rV      rW   zState.__str__c                   @   rX   )z
State.Metar   Statesr   NrZ   rO   rO   rO   rP   r`      ra   r`   )#r[   r\   r]   r   rb   r>   r   rc   rA   r   re   r   rf   rv   ri   r#   rd   rB   rj   rk   r+   rl   rm   r,   rn   r.   ro   rp   rq   rr   rs   rH   rV   r`   rt   rO   rO   rM   rP   r      s"    'r   c                       s   e Zd ZejeejedddZejdeddejdZ	ej
edd	d
ZejedddddZejeddddZejeddddZejeddddZ fddZdd ZG dd dZ  ZS )StateTranslatestaterw   rx   r   ry   state_translatesr{   r   r   r   r   r   Tr   r   r   r   r/   r}   r~   c                      | j d u s
| j dkrt| jjdd| _ | jd u s| jdkrg }| j r-| j |vr-|| j  | jr|| j t| jdd|vrI|t| jdd | jdd|vr\|| jdd | jdd|vro|| jdd | jdd|vr|| jdd d|| _nt| jd}| j r| j |vr|| j  | jr| j|vr|| j t| jdd|vr|t| jdd | jdd|vr|| jdd | jdd|vr|| jdd | jdd|vr|| jdd d|| _t	 
 S Nr;   Tr9   r<   r=   r>   r?   )rA   r   r   r   rB   rC   rD   rE   rF   rG   rH   rI   rM   rO   rP   rH      B   

zStateTranslate.savec                 C   rR   rS   rT   rU   rO   rO   rP   rV     rW   zStateTranslate.__str__c                   @   r   )	zStateTranslate.MetazState TranslatezStates Translatesr   ry   r   !repeated_language_state_translater   Nr   rO   rO   rO   rP   r`     r   r`   )r[   r\   r]   r   re   r   rf   r>   r   ry   rb   r   rc   rA   rd   rB   r}   r   rH   rV   r`   rt   rO   rO   rM   rP   r      s    $r   c                       sJ  e Zd ZejeddddZejedddddddZejedddddd	Z	ej
ed
ddddZejedddddZejeddedZejeddedZejedddddZejeejedddddZejeddddZejeddedZejedddZejedddZ fd d!Zd"d# Z G d$d% d%Z!  Z"S )&Cityr   r   Tr   r   r   r   r   r|   r   r   r#   r$   r%   r+   Fr(   r'   r,   zcities/icons/r   rv   citiesr!   r   r    r   r   r.   r/   r0   r1   r2   r4   r5   c                    r7   r8   r@   rI   rM   rO   rP   rH   (  rQ   z	City.savec                 C   rR   rS   rT   rU   rO   rO   rP   rV   O  rW   zCity.__str__c                   @   rX   )z	City.Metar   Citiesr   NrZ   rO   rO   rO   rP   r`   R  ra   r`   )#r[   r\   r]   r   rb   r>   r   rc   rA   r   rd   rB   ri   r#   rj   rk   r+   rl   rm   r,   re   r   rf   rv   rn   r.   ro   rp   rq   rr   rs   rH   rV   r`   rt   rO   rO   rM   rP   r     s"    'r   c                       s   e Zd ZejeejedddZejdeddejdZ	ej
edd	d
dZejeddd
d
d
dZejedd
d
dZejedd
d
dZejedd
d
dZ fddZdd ZG dd dZ  ZS )CityTranslatecityrw   rx   r   ry   city_translatesr{   r   r   Tr   r   r   r|   r   r/   r}   r~   c                    s  t | jjdd| _| jd u s| jdkrg }| jr#| j|vr#|| j | jrx|| j t | jdd|vr?|t | jdd | jdd|vrR|| jdd | jdd|vre|| jdd | jdd|vrx|| jdd d|| _nt| jd}| jr| j|vr|| j | jr| j|vr|| j t | jdd|vr|t | jdd | jdd|vr|| jdd | jdd|vr|| jdd | jdd|vr|| jdd d|| _t	 j
|i |S r8   )r   r   r   rA   rB   rC   rD   rE   rF   rG   rH   rJ   argsrK   rL   rM   rO   rP   rH   `  s@   
zCityTranslate.savec                 C   rR   rS   rT   rU   rO   rO   rP   rV     rW   zCityTranslate.__str__c                   @   r   )	zCityTranslate.MetazCity TranslatezCities Translatesr   ry   r    repeated_language_city_translater   Nr   rO   rO   rO   rP   r`     r   r`   )r[   r\   r]   r   re   r   rf   r>   r   ry   rb   r   rc   rA   rd   rB   r}   r   rH   rV   r`   rt   rO   rO   rM   rP   r   W  s    #r   c                          e Zd ZejeejedddddZeje	ejedddddZ
ejedddZejed	d
dddZejedddddZejeddddZejedddddZejedddZejedddZ fddZdd ZG dd dZ  ZS )LondonZipStaterv   london_zip_stateTr   r   r   r   r   r   r   r   r   r   r/   r#   r$   r%   r1   r2   r4   r5   c                    r7   r8   r@   rI   rM   rO   rP   rH     rQ   zLondonZipState.savec                 C   rR   rS   rT   rU   rO   rO   rP   rV     rW   zLondonZipState.__str__c                   @   rX   )zLondonZipState.MetaLondon Zip StatezLondon Zip Statesr   NrZ   rO   rO   rO   rP   r`     ra   r`   r[   r\   r]   r   re   r   rf   r>   rv   r   r   rb   r   rc   rA   r   rd   rB   ri   r#   rq   rr   rs   rH   rV   r`   rt   rO   rO   rM   rP   r         'r   c                       r   )
LondonArearv   lonson_areaTr   r   r   r   r   r   r   r   r   r   r/   r#   r$   r%   r1   r2   r4   r5   c                    r7   r8   r@   rI   rM   rO   rP   rH     rQ   zLondonArea.savec                 C   rR   rS   rT   rU   rO   rO   rP   rV     rW   zLondonArea.__str__c                   @   rX   )zLondonArea.MetaLondon AreazLondon Areasr   NrZ   rO   rO   rO   rP   r`     ra   r`   r   rO   rO   rM   rP   r     r   r   c                       r   )
LondonZonerv   london_zoneTr   r   r   r   r   r   r   r   r   r   r/   r#   r$   r%   r1   r2   r4   r5   c                    r7   r8   r@   rI   rM   rO   rP   rH     rQ   zLondonZone.savec                 C   rR   rS   rT   rU   rO   rO   rP   rV   4  rW   zLondonZone.__str__c                   @   rX   )zLondonZone.MetaLondon ZonezLondon Zonesr   NrZ   rO   rO   rO   rP   r`   7  ra   r`   r   rO   rO   rM   rP   r     r   r   c                       s  e Zd ZejeejedddddZeje	ejedddddZ
ejedddZejed	d
dddZejedddddZejeddddZejedddddZejdejedddddZejedddZejedddZ fddZdd ZG dd dZ  ZS )Districtrv   	districtsTr   r   r   r   r   r   r   r   r   r   r/   r#   r$   r%   rJ   parentchildrenr1   r2   r4   r5   c                    s8  | j rt| j dd| _| jd u s| jdkrg }| jr%| j|vr%|| j | jr3| j|vr3|| j | j r|| j  t| j dd|vrO|t| j dd | j dd|vrb|| j dd | j dd|vru|| j dd | j dd|vr|| j dd d|| _n| jd}| jr| j|vr|| j | jr| j|vr|| j | j r| j |vr|| j  t| j dd|vr|t| j dd | j dd|vr|| j dd | j dd|vr|| j dd | j dd|vr|| j dd d|| _t	 j
|i |S r8   r@   r   rM   rO   rP   rH   H  sH   
zDistrict.savec                 C   rR   rS   rT   rU   rO   rO   rP   rV   o  rW   zDistrict.__str__c                   @   "   e Zd ZedZedZdgZdS )zDistrict.Metar   r   NrZ   rO   rO   rO   rP   r`   r  ra   r`   )r[   r\   r]   r   re   r   rf   r>   rv   r   r   rb   r   rc   rA   r   rd   rB   ri   r#   r   rq   rr   rs   rH   rV   r`   rt   rO   rO   rM   rP   r   <  s    'r   c                       s   e Zd ZejedddZejedddddZejedddddZ	ej
ed	d
dZejdejedddddZ fddZdd ZG dd dZ  ZS )Iso31662Typer   r   r   r   r   Tr   r   levelr   r)   rJ   r   childr   c                    s    | j rt| j dd| _t  S NTr9   r   r   rA   rG   rH   )rJ   rK   rM   rO   rP   rH   ~  s   
zIso31662Type.savec                 C   rR   rS   rT   rU   rO   rO   rP   rV     rW   zIso31662Type.__str__c                   @   rX   )zIso31662Type.MetazIso31662 TypezIso31662 Typesr   NrZ   rO   rO   rO   rP   r`     ra   r`   )r[   r\   r]   r   rb   r>   r   rc   rA   r   IntegerFieldr   re   rf   r   rH   rV   r`   rt   rO   rO   rM   rP   r   w  s    r   c                       s  e Zd ZejeejeddZej	edddZ
ejeddddd	Zej	ed
dddd	ZejeddddZej	eddddd	ZejedddddZejedddZej	eddddddZejdejedddddZej	eddddd	Zej	eddddd	Zej	eddddd	Zej	eddddd	Zej	eddddd	Zej	eddddd	Zej	ed dddd	Zej	ed!dddd	Zej	ed"dddd	Zej	ed#dddd	Z ej	ed$dddd	Z!ej	ed%dddd	Z"ej	ed&dddd	Z#ej	ed'dddd	Z$ej	ed(dddd	Z%ej	ed)dddd	Z&ej	ed*dddd	Z'ej	ed+dddd	Z(ej	ed,dddd	Z)ej	ed-dddd	Z*ej	ed.dddd	Z+ej	ed/dddd	Z,ej	ed0dddd	Z-ej	ed1dddd	Z.ej	ed2dddd	Z/ej	ed3dddd	Z0ej	ed4dddd	Z1ej	ed5dddd	Z2ej	ed6dddd	Z3ej	ed7dddd	Z4ej	ed8dddd	Z5ej	ed9dddd	Z6ej	ed:dddd	Z7ej	ed;dddd	Z8ej	ed<dddd	Z9ej	ed=dddd	Z:ej	ed>dddd	Z;ej	ed?dddd	Z<ej	ed@dddd	Z=ej	edAdddd	Z>ej	edBdddd	Z?ej	edCdddd	Z@ejAedDddEZBejAedFddGZC fdHdIZDdJdK ZEG dLdM dMZF  ZGS )NIso31662rv   )r!   r   r   r   r   r   r   Tr   r   r   r/   typer#   r$   r%   r   r   r   gidr   rJ   r   r   r   zGID 0zGID 1zGID 2zGID 3zGID 4zname 0zname 1zname 2zname 3zname 4znational name 0znational name 1znational name 2znational name 3znational name 4z
var_name 0z
var_name 1z
var_name 2z
var_name 3z
var_name 4ztype 0ztype 1ztype 2ztype 3ztype 4zenglish type 0zenglish type 1zenglish type 2zenglish type 3zenglish type 4zcc 0zcc 1zcc 2zcc 3zcc 4zhasc 0zhasc 1zhasc 2zhasc 3zhasc 4ziso 1zcountry namer1   r2   r4   r5   c                    r7   r8   r@   rI   rM   rO   rP   rH     rQ   zIso31662.savec                 C   rR   rS   rT   rU   rO   rO   rP   rV     rW   zIso31662.__str__c                   @   r   )zIso31662.MetazISO 3166 V2r   NrZ   rO   rO   rO   rP   r`     ra   r`   )Hr[   r\   r]   r   re   r   rf   r>   rv   rb   r   rc   rA   r   rd   rB   r   ri   r#   r   r   r   r   gid_0gid_1gid_2gid_3gid_4name_0name_1name_2name_3name_4	nl_name_0	nl_name_1	nl_name_2	nl_name_3	nl_name_4
var_name_0
var_name_1
var_name_2
var_name_3
var_name_4type_0type_1type_2type_3type_4
eng_type_0
eng_type_1
eng_type_2
eng_type_3
eng_type_4cc_0cc_1cc_2cc_3cc_4hasc_0hasc_1hasc_2hasc_3hasc_4iso_1country_namerq   rr   rs   rH   rV   r`   rt   rO   rO   rM   rP   r     st    'r   c                       s   e Zd ZejeejedddZejdeddejdZ	ej
edd	d
ZejedddddZejeddddZejeddddZ fddZdd ZG dd dZ  ZS )Iso31662Translateiso31662rw   rx   r   ry   iso31662_translatesr{   r   r   r   r   r   Tr   r   r/   r}   c                    r   r   )rA   r   r   r   rB   rC   rD   rE   rF   rG   rH   rI   rM   rO   rP   rH     r   zIso31662Translate.savec                 C   rR   rS   rT   rU   rO   rO   rP   rV   &  rW   zIso31662Translate.__str__c                   @   rX   )zIso31662Translate.MetazISO 3166 V2 TranslatezISO 3166 V2 Translatesr   NrZ   rO   rO   rO   rP   r`   )  ra   r`   )r[   r\   r]   r   re   r   rf   r>   r   ry   rb   r   rc   rA   rd   rB   r}   rH   rV   r`   rt   rO   rO   rM   rP   r     s    $r   c                       s   e Zd ZdZejedddZejeddddZ	ej
edddd	Zejeejed
ddZejedddZejedddZdd Z fddZ  ZS )Regionz
    For the /postcode-key-stats endpoint, available regions are:    
    north_east
    north_west
    east_midlands
    west_midlands
    east_of_england
    greater_london
    south_east
    south_west
    wales
    scotland
    northern_ireland

    Namer   r   r   T)r   r   r   r/   r   regionsrx   r1   r2   r4   r5   c                 C   rR   rS   rT   rU   rO   rO   rP   rV   F  rW   zRegion.__str__c                    s   | j rt| j dd| _| jd u s| jdkrg }| jr%| j|vr%|| j | j rz|| j  t| j dd|vrA|t| j dd | j dd|vrT|| j dd | j dd|vrg|| j dd | j dd|vrz|| j dd d|| _nt| jd}| jr| j|vr|| j | j r| j |vr|| j  t| j dd|vr|t| j dd | j dd|vr|| j dd | j dd|vr|| j dd | j dd|vr|| j dd d|| _t j	|i | d S r8   )
r   r   rA   rB   rC   rD   rE   rF   rG   rH   r   rM   rO   rP   rH   I  s@   
zRegion.save)r[   r\   r]   __doc__r   rb   r>   r   rc   rA   rd   rB   re   r   rf   rv   rq   rr   rs   rV   rH   rt   rO   rO   rM   rP   r   .  s    r   c                   @   s2  e Zd ZejeejedddZeje	ejedddZ
ejedddddZejed	ddd
Zejedddd
Zejedddd
Zejedddd
Zejedddd
Zejedddd
Zejedddd
Zejedddd
Zejedddd
ZejedddZejedddZdd ZdS )PostCoder   	postcodesrx   r   zOut coder   Tr   zAverage Pricer/   zAverage Price per Square FootzAverage RentzAverage YieldzGrowth 1 YearzGrowth 3 YearzGrowth 5 YearzSales per MonthTurnoverr1   r2   r4   r5   c                 C   rR   rS   out_coderU   rO   rO   rP   rV   }  rW   zPostCode.__str__N)r[   r\   r]   r   re   r   rf   r>   regionr   rv   rb   r   
FloatField	avg_priceavg_price_psfavg_rent	avg_yield	growth_1y	growth_3y	growth_5yr   sales_per_monthturnoverrq   rr   rs   rV   rO   rO   rO   rP   r   l  s     r   c                       s  e Zd ZejedddZejedddddZej	edd	dddZ
ejed
dddZejedddddZejedddddZejedddddZejeejeddddZejeejeddddZejeejeddddZejedddddZejedddddZejedddddZejeddddZejedddddZejedddddZejeejedddddZ ej!eddddZ"ejeddddZ#ej$eddddZ%ej&eddd Z'eje(ejed!ddddZ)eje*ejed"ddddZ+eje,ejed#ddddZ-eje.ejed$ddddZ/eje0ejed%d&dddZ1eje0ejed'd(dddZ2eje0ejed)d*dddZ3eje0ejed+d,dddZ4eje0ejed-d.dddZ5eje0ejed/d0dddZ6eje0ejed1d2dddZ7eje0ejed3d4dddZ8eje0ejed5d6dddZ9eje0ejed7d8dddZ:ej;ed9dd:Z<ej;ed;dd<Z= fd=d>Z>d?d@ Z?G dAdB dBZ@  ZAS )CLocationr#   r$   )r&   r   r   Tr   r   r   r   r/   r   r   classrv   )r!   r   r   r   r   r   streetzaddress typeaddresszplace idzip codez	post code	locationsr   rankdisplay nameraw	raw checkFr   districtr   r   r   ziso 3166 2 lvl 0location_lvl_0ziso 3166 2 lvl 1location_lvl_1ziso 3166 2 lvl 2location_lvl_2ziso 3166 2 lvl 3location_lvl_3ziso 3166 2 lvl 4location_lvl_4ziso 3166 2 lvl 5location_lvl_5ziso 3166 2 lvl 6location_lvl_6ziso 3166 2 lvl 7location_lvl_7ziso 3166 2 lvl 8location_lvl_8ziso 3166 2 lvl 9location_lvl_9r1   r2   r4   r5   c                    s  | j rt| j dd| _| jd u r,| jd ur,| jdd }z
tjj|d| _W n   Y | j	d u s6| j	dkrg }| j
rF| j
|vrF|| j
 | jrT| j|vrT|| j | j r|| j  t| j dd|vrp|t| j dd | j dd|vr|| j dd | j dd|vr|| j dd | j dd|vr|| j dd d	|| _	n| j	d	}| j
r| j
|vr|| j
 | jr| j|vr|| j | j r0| j |vr|| j  t| j dd|vr|t| j dd | j dd|vr|| j dd | j dd|vr|| j dd | j dd|vr0|| j dd d	|| _	tt| j|i | d S )
NTr9   r<   r   r   r;   r=   r>   r?   )r   r   rA   	post_codezip_coderF   r   objectsgetrB   r   rC   rD   rE   rG   r   rH   )rJ   r   rK   postcoderL   rM   rO   rP   rH     sP   
zLocation.savec                 C   rR   rS   rT   rU   rO   rO   rP   rV     rW   zLocation.__str__c                   @   r   )	zLocation.Metar   	Locationsr   rA   r#   "repeated_slug_coordinates_locationr   Nr   rO   rO   rO   rP   r`     r   r`   )Br[   r\   r]   r   
PointFieldr>   r#   rb   r   rc   rA   rd   rB   r   
point_typepoint_classre   r   rf   rv   r   r   r   r   r   street_numberaddress_typer   place_idr  r   SET_NULLr  r   r  display_namern   r  rj   	raw_checkr   r  r   r   r   london_arear   r   r   iso_3166_2_lvl_0iso_3166_2_lvl_1iso_3166_2_lvl_2iso_3166_2_lvl_3iso_3166_2_lvl_4iso_3166_2_lvl_5iso_3166_2_lvl_6iso_3166_2_lvl_7iso_3166_2_lvl_8iso_3166_2_lvl_9rq   rr   rs   rH   rV   r`   rt   rO   rO   rM   rP   r     sR    ,r   c                       sX  e Zd ZejeejedddZejdejedddZ	ej
eddd	d	d
Zej
eddd	d	d
Zejedd	d	dZej
eddd	d	d
Zej
eddd	d	d
Zej
eddd	d	d
Zej
eddd	d	d
Zejedd	d	dZejedddZejedd	d	dZejedd	dZejedd	dZ fddZdd ZG dd  d Z  ZS )!LocationTranslatelocationrw   rx   r   ry   location_translatesr  r   Tr   r   r   r/   r   buildingr   zstreet numberr  r  Fr   r   r1   r2   r4   r5   c                    s  | j d u s
| j dkrvg }| jr| j|vr|| j | jro|| j t| jdd|vr6|t| jdd | jdd|vrI|| jdd | jdd|vr\|| jdd | jdd|vro|| jdd d|| _ nt| j d}| jr| j|vr|| j | jr| j|vr|| j t| jdd|vr|t| jdd | jdd|vr|| jdd | jdd|vr|| jdd | jdd|vr|| jdd d|| _ t j	|i | d S r   )
rB   r  rC   r   r   rD   rE   rF   rG   rH   r   rM   rO   rP   rH     s>   
zLocationTranslate.savec                 C   rR   rS   rT   rU   rO   rO   rP   rV     rW   zLocationTranslate.__str__c                   @   r   )	zLocationTranslate.MetazLocation TranslatezLocation Translatesr   ry   r-  $repeated_language_location_translater   Nr   rO   rO   rO   rP   r`     r   r`   )r[   r\   r]   r   re   r   rf   r>   r-  ry   rb   r  r   rd   r   r   r/  r  r  rn   r  rj   r   rB   rq   rr   rs   rH   rV   r`   rt   rO   rO   rM   rP   r,    s$    "r,  Schools   zSubway stations   zTrain stations   zBus stations   Airports   Restaurants   	Hospitals   Parking   Banks	   Cinemas
   
Pharmacies   Markets   Cafes   Malls   Bars   Theaters   Parks   Gym   Supermarkets   123c                       s   e Zd ZejedddZejeddddddZej	eddddd	Z
ejed
ddZejedddZ fddZdd ZG dd dZ  ZS )PublicFacilityTyper     r   r   T)r   r   r   r   Iconzicons/r   r1   r2   r4   r5   c                    s,   | j rt| j dd| _t j|i | d S r   r   rJ   r   rK   rM   rO   rP   rH   ?  s   zPublicFacilityType.savec                 C      | j S rS   rT   rU   rO   rO   rP   rV   C     zPublicFacilityType.__str__c                   @   rX   )zPublicFacilityType.MetazPublic Facility typezPublic Facilities Typesr   NrZ   rO   rO   rO   rP   r`   F  ra   r`   )r[   r\   r]   r   rb   r>   r   rc   rA   rm   r,   rq   rr   rs   rH   rV   r`   rt   rO   rO   rM   rP   rU  8  s    rU  c                       s   e Zd ZejdejedddZejeejedddZ	ej
eddd	d	d
Zejeddd	d	d
Zejedd	dZejedd	dZ fddZdd ZG dd dZ  ZS )PublicFacilityTypeTranslater   ry   public_facility_type_translatesrx   r   rw   r   rV  Tr   r   r1   r2   r4   r5   c                    s(   t | jjdd| _t j|i | d S r   )r   r   r   rA   rG   rH   rX  rM   rO   rP   rH   T  s   z PublicFacilityTypeTranslate.savec                 C   rY  rS   rT   rU   rO   rO   rP   rV   X  rZ  z#PublicFacilityTypeTranslate.__str__c                   @   rX   )z PublicFacilityTypeTranslate.MetazPublic Facility type Translatez"Public Facilities Types Translatesr   NrZ   rO   rO   rO   rP   r`   [  ra   r`   )r[   r\   r]   r   re   rf   r>   ry   rU  r   rb   r   rc   rA   rq   rr   rs   rH   rV   r`   rt   rO   rO   rM   rP   r[  K  s    r[  c                       s  e Zd ZejedddddZejedddddZej	eddddZ
ejeejedd	d
ZejedddZejeejedddddZejedddddZejedddZejedddZejedddZ fddZdd ZG dd dZ  ZS ) PublicFacilityr   rV  Tr   r   r   r/   r   
facilitiesrx   r	   Fr   r-  public_facilitiesr   r#   r$   r%   RankrA  r1   r2   r4   r5   c                    s  | j r| j dd| _ | j rt| j dd| _| jd u s | jdkrg }| jr0| j|vr0|| j | j r|| j  t| j dd|vrL|t| j dd | j dd|vr_|| j dd | j dd|vrr|| j dd | j dd|vr|| j dd d	|| _nt| jd	}| jr| j|vr|| j | j r| j |vr|| j  t| j dd|vr|t| j dd | j dd|vr|| j dd | j dd|vr|| j dd | j dd|vr|| j dd d	|| _t j	|i | d S )
Nz\''Tr9   r;   r<   r=   r>   r?   )
r   rD   r   rA   rB   rC   rE   rF   rG   rH   r   rM   rO   rP   rH   m  sB   
zPublicFacility.savec                 C   rR   rS   rT   rU   rO   rO   rP   rV     rW   zPublicFacility.__str__c                   @   s6   e Zd ZedZedZdgZejg dddgZ	dS )zPublicFacility.MetazPublic FacilityzPublic Facilitiesr   )rA   r   r#   "repeated_slug_type_public_facilityr   Nr   rO   rO   rO   rP   r`     r   r`   )r[   r\   r]   r   rb   r>   r   rc   rA   rd   rB   re   rU  rf   r   rj   	is_activer   r-  r  r#   PositiveSmallIntegerFieldr  rq   rr   rs   rH   rV   r`   rt   rO   rO   rM   rP   r]  `  s    $r]  c                 C   s   dt  j dS )Nzstreet_view/z.webp)uuiduuid4hex)instancefilenamerO   rO   rP   image_street_view_folder     rj  c                   @   s0  e Zd ZdZejeejedddZ	ejdejedddZ
eeded	d	d
Zejeddd	d	d	dZejedd	d	dZejedd	d	dZejedd	d	dZejedd	d	dZejedd	d	dZejeddd	d	dZejedd	d	dZejedddZejedd	dZejedd	dZdS )
StreetViewa6  
    Represents a street view image associated with a location.
    
    The `StreetView` model stores information about a street view image, including the location it is associated with, the image file, and various metadata about the image such as the panorama ID, coordinates, orientation, and date.
    
    The `image_street_view_folder` function is used to generate a unique file path for the street view image when it is uploaded.
    get image from https://cbk{num}.google.com/cbk?output=tile&panoid={panorama_id}&zoom=1&x={x}&y={y}  # num: 1,2,3
    
    zoom    x   y   2**n   example
    0       0   0   2**0[0]   [0,0]
    1       1   1   2**1[0,1]   [0,0],[0,1],[1,0],[1,1]
    2       3   3   2**2[0,1,2,3]   [0,0],[0,1],[0,2],[0,3],[1,0],[1,1],[1,2],[1,3],[2,0],[2,1],[2,2],[2,3],[3,0],[3,1],[3,2],[3,3]
    r-  street_viewrx   zdevelopment.Developmentdevelopmentstreet_viewsImageT)r-   r   r   zPanorama ID2   )r   r   r   r   Latitude)r   r   	LongitudeHeadingPitchRollzDate of image)r   r   r   	ElevationzImage downloadedFr   r1   r2   r4   r5   N)r[   r\   r]   r   r   re   r   rf   r>   r-  rn  r   rj  imagerb   panorama_idr   latlonheadingpitchrolldate	elevationrj   image_downloadedrq   rr   rs   rO   rO   rO   rP   rl    s     rl  growthpricer  demographicsc                   @   s   e Zd ZejeejedddddZeje	ejedddddZ
ejededdZejed	ddd
ZejedddZejedddZejedddZdS )PropertyDataRawr   property_data_rawTr   PostcodeTyper   )r*   r)   Datar/   CheckedFr   r1   r2   r4   r5   N)r[   r\   r]   r   re   r   rf   r>   r   r   r  SmallIntegerField	DATA_TYPEr   rn   r.   rj   checkedrq   rr   rs   rO   rO   rO   rP   r    s    r  c                       s  e Zd ZejeejedddZej	eddddZ
ejeddddd	Zejed
dddd	ZejeejedddddZejeddddZejeddddZejeddddZejedddZejedddZ fddZdd ZG dd dZ  ZS )PriceGrowthr   price_growthrx   DateTr/   r  r   r   Postcode Typer   PricezPrice ChangezChange Percentr1   r2   r4   r5   c                    s   t  j|i |S rS   )rG   rH   rX  rM   rO   rP   rH     rk  zPriceGrowth.savec                 C   s   | j  d| j S )Nr<   )r  r  rU   rO   rO   rP   rV     rk  zPriceGrowth.__str__c                   @   s8   e Zd ZedZedZg dZejg dddgZ	dS )zPriceGrowth.MetazPrice Growth)r  r  -id)rv   r  r  +repeated_country_date_postcode_price_growthr   Nr   rO   rO   rO   rP   r`         r`   )r[   r\   r]   r   re   r   rf   r>   rv   	DateFieldr  rb   r  postcode_typer   r  r   r  price_changechange_percentrq   rr   rs   rH   rV   r`   rt   rO   rO   rM   rP   r    s    r  c                   @   sF  e Zd ZejeejedddZej	edddddZ
ej	edddddZejeejeddddd	Zejed
dddZejeddddZejeddddZejeddddZejeddddZejeddddZejeddddZejeddddZejedddZejedddZdd ZG dd dZdS )Demographicr   demographicrx   r  r   Tr   r  r   Deprivationr/   HealthzSocial GradeAgePoliticszProportion with DegreezVehicles per HouseholdzCommute Methodr1   r2   r4   r5   c                 C   rR   rS   )r  rU   rO   rO   rP   rV     rW   zDemographic.__str__c                   @   s8   e Zd ZedZedZddgZejddgddgZ	dS )zDemographic.Metar  r  r  rv   %repeated_country_postcode_demographicr   Nr   rO   rO   rO   rP   r`     r  r`   N)r[   r\   r]   r   re   r   rf   r>   rv   rb   r  r  r   r  r   deprivationhealthrn   social_gradeagepoliticsproportion_with_degreevehicles_per_householdcommute_methodrq   rr   rs   rV   r`   rO   rO   rO   rP   r    s"    r  ),re  django.contrib.gis.dbr   django.contrib.authr   django.utils.translationr   r>   django.utils.textr   main.fieldsr   Userro   ACTIVE_BOOLEANrk   Modelr   ru   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r,  FACILITY_TYPErU  r[  r]  rj  rl  r  r  r  r  rO   rO   rO   rP   <module>   s    





C7@9>7:::;p4>b
?


















=
$



