o
    -0ca                     @   sj  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	 d dl
T d dlmZ d dlmZmZmZmZmZmZmZ d d	lmZ 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! 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+d
S )"    )models)RichTextField)Location)Locality)Builder)*)MultiSelectField)PROJECT_TYPEPROJECT_STATUSPROJECT_AREADETAIL_TRANSACTION_TYPEDETAIL_FLOORINGDETAIL_FURNISHINGDETAIL_PARKING)ImageN)BytesIO)InMemoryUploadedFile)ImageSpecField)ResizeToFill)reversec                   @   s   e Zd ZejdddddZejddddd	d
ZejdddddZej	dddddZ
ejddddddZedddddZedddddZejddZejddZdd ZG dd dZdS )Category@   NzCategory NamezValues: Enter Category Name.
max_lengthdefaultverbose_name	help_text   TzCategory SlugzValues: Enter Category Slug.r   uniquer   r   r   Category Titlez"Values: Enter Category Meta Title.   Category Description(Values: Enter Category Meta Description.   Category Keyword%Values: Enter Category Meta Keywords.r   nullblankr   r   zCategory Header Contentz  Values: Category Header Contentr(   r)   r   r   zCategory Footer Contentz  Values: Category Footer Contentauto_now_addauto_nowc                 C      | j S Nnameself r5   !/var/www/jaguar/project/models.py__str__.      zCategory.__str__c                   @      e Zd ZdZdS )zCategory.Metar   N__name__
__module____qualname__verbose_name_pluralr5   r5   r5   r6   Meta1       r?   )r;   r<   r=   r   	CharFieldr2   	SlugFieldslugtitle	TextFielddescriptionkeywordr   header_contentfooter_contentDateTimeField
created_at
updated_atr7   r?   r5   r5   r5   r6   r      sH    
r   c                   @   s   e Zd ZejedejdddZejdddddZ	ej
dd	dd
ddZejdddddZejdddddZejdd	d	dddZed	d	dddZed	d	dddZejd	dZejd	dZdd ZdS ) SubCategorysubcategoriesNz"Type: Int, Values: Select Category)related_name	on_deleter   r       zSub Category NameType: Int, Values: Enter Namer   TzSub Category SlugType: Int, Values: Enter Slugr   r   r    z&Values: Enter Sub Category Meta Title.r!   zSub Category Descriptionr#   r$   zSub Category Keywordr&   r'   Sub Category Header Content$ Values: Sub Category Header Contentr*   Sub Category Footer Content$ Values: Sub Category Footer Contentr+   r-   c                 C   r/   r0   r1   r3   r5   r5   r6   r7   V   r8   zSubCategory.__str__)r;   r<   r=   r   
ForeignKeyr   CASCADEcategoryrA   r2   rB   rC   rD   rE   rF   rG   r   rH   rI   rJ   rK   rL   r7   r5   r5   r5   r6   rM   5   sR    

rM   c                   @   s   e Zd ZejedejddddZejddddd	Z	ej
dd
ddddZejddddd	Zejddddd	Zejdd
d
dddZed
d
dddZed
d
dddZejd
dZejd
dZdd  ZdS )!SubChildCategorysubchildNzSelect Sub Categoryz&Type: Int, Values: Select Sub Category)rO   rP   r   r   r   rQ   zSub Child Category NamerR   r   TzSub Child Category SlugrS   r   U   zSub Category Titlez#Type: Int, Values: Enter Meta Titler!   r"   z-Type: String, Values: Enter Meta Description.r$   r%   z*Type: String, Values: Enter Meta Keywords.r'   rT   rU   r*   rV   rW   r+   r-   c                 C   r/   r0   r1   r3   r5   r5   r6   r7   |   r8   zSubChildCategory.__str__)r;   r<   r=   r   rX   rM   rY   subcategoryrA   r2   rB   rC   rD   rE   rF   rG   r   rH   rI   rJ   rK   rL   r7   r5   r5   r5   r6   r[   Y   sV    
r[   c                   @   s2   e Zd ZejdddZejddddZdd ZdS )Amenityx   N)r   r   Tr   r(   r)   c                 C   r/   r0   )amenity_namer3   r5   r5   r6   r7      r8   zAmenity.__str__)r;   r<   r=   r   rA   rb   amenity_iconr7   r5   r5   r5   r6   r_      s    r_   c                	       s  e Zd ZejedddZejedej	dddddZ
ejed	ej	d
ddZejedej	dddZejedej	dddZejedddZejddddZejdddddZejdddZejdddZejdddZejd ddd!d"d#Zejd$ddd%d&d#Zejd ddd'd(d#Zeddd)d*d+Z eddd,d-d+Z!eddd.d/d+Z"eddd0d1d+Z#ej$d2ddd$d3d4Z%ej$d5ddd$d6d4Z&ej$d7ddd$d8d4Z' fd9d:Z(ej)dd;Z*ej)dd<Z+d=d> Z,G d?d@ d@Z-dAdB Z.  Z/S )CProjectzSelect CategoryPROJECTCATEGORY)r   rO   buildersTzSelect Builderz"Type: Int, Values: Select Builder.)rO   rP   r(   r)   r   r   
localitieszSelect Localityz(Type: Int, Values: Select Locality Name.)rO   rP   r   r   propcityzSelect Cityz$Type: Int, Values: Select City Name.proplocationzSelect Locationz#Type: Int, Values: Select Location.zSelect Project AmenityProjectAmenityr   z)Type: string, Values: Enter Project Name.)r(   r   r   z)Type: string, Values: Enter Project Slug.)r(   r   r   r   r   zCheck for Featured Project)r   r   zCheck for Premium Project   zCheck Status Active/In-Activer!   z
Meta Titlez8Type: string, Default: null, Values: Project Meta Title.r'   r$   zMeta Descriptionz>Type: string, Default: null, Values: Project Meta Description.zMeta Keywordz:Type: string, Default: null, Values: Project Meta Keyword.zProject Descriptionz9Type: string, Default: null, Values: Project Description.r*   zPayment Planz:Type: string, Default: null, Values: Project Payment Plan.zKey Featuresz:Type: string, Default: null, Values: Project Key Features.zLocation AdvantageszAType: string, Default: null, Values: Project Location Advantages.zlocation_image/%Y/%m/%dz;Type: string, Default: null, Values: Upload Location Image.)	upload_tor(   r)   r   r   zsitemap_image/%Y/%m/%dz:Type: string, Default: null, Values: Upload SiteMap Image.zproject_thumb/%Y/%m/%dz"Values: Upload Project Main Image.c                    sf   t    | jr-t| jj}|jdks|jdkr'|d}|| jj d S t	d d S t	d d S )Ni,     )iH     znot find imgzNot find any images)
supersaveproject_thumbr   openpathwidthheightresizeprint)r4   	thump_img	__class__r5   r6   rq      s   

zProject.saver+   r-   c                 C   r/   r0   r1   r3   r5   r5   r6   r7      r8   zProject.__str__c                   @   r9   )zProject.Metard   Nr:   r5   r5   r5   r6   r?      r@   r?   c                 C   s   t dd| jidS )Nzproject:project_viewrC   )kwargs)r   rC   r3   r5   r5   r6   get_absolute_url   s   zProject.get_absolute_url)0r;   r<   r=   r   ManyToManyFieldrM   rZ   rX   r   rY   builderr   localityCitycityr   locationr_   amenityrA   r2   rB   rC   BooleanField
isFeaturedpremiumstatusrD   rE   rF   rG   r   overviewpaymentplankeyfeatureslocation_advantages
ImageFieldlocation_imagesitemap_imagerr   rq   rJ   rK   rL   r7   r?   r}   __classcell__r5   r5   rz   r6   rd      s    rd   c                   @   s  e Zd ZejedejdZejddde	dddZ
ejdddd	d
dZejdddeddZejddedddZejddddddZejdddddZejdddddZejdddddZejdddddZejd ddd!d"dZejd#ddd$Zejddd%d&dZejddd'd(dZejd)ddd*d+dZejd,ddd-d.Zejd/ddd0d.Zejddded1d2Zejddd)e d3d4d5Z!ejddde"d6d7d5Z#ej$dd8Z%ej$dd9Z&d:d; Z'e(d<d= Z)e(d>d? Z*d@S )ADetailproject_details)rO   rP   T   zProject Possessionz(Type: int, Values: Select Project Status)r(   r   r)   choicesr   r   rQ   zMinimum Areaz&Type: Int, Values: Enter Minimum Area.)r(   r   r)   r   r   r   zSelect Project Areaz(Type: Int, Default:0, Values: Select One)r   r   r   r   r   	   zTotal Land Areaz3Type: Int, Default: 9, Values: Select Project Area.)r   r   r   r   r   zMaximum Areaz%Type: Int, Values: Enter Maximum Arear'   zMinimum Pricez&Type: Int, Values: Enter Minimum Pricer*   zMaximum Pricez&Type: Int, Values: Enter Maximum PricezTotal TowerszType: Int, Values: Total TowerszTotal FloorszType: Int, Values: Total Floors`   zRera Numberz'Type: String, Values: Enter Rera Numberi  ra   zTotal Unitsz,Type: Int, Values: Enter Total Project Unitsz
Total Areaz+Type: Int, Values: Enter Total Project Arear   z	Favour Ofz/Type: String, Values: Enter Cheque in Favour OfzAvailable Fromz4Type: String, Values: Enter Project Possession Date.)r   r(   r)   r   zLaunch Datez0Type: String, Values: Enter Project Launch Date.zType: Int, Values: Select One)r(   r   r)   r   r   zProject Flooringz"Type: Int, Values: Select Flooring)r(   r)   r   r   r   r   zFurnishing Typez$Type: Int, Values: Select Furnishingr+   r-   c                 C      | j jS r0   projectr2   r3   r5   r5   r6   r7   ^     zDetail.__str__c                 C      | j d u rtd d S | j dkr!| j dkr!| j d | _ | j  dS | j dkr7| j dkr7| j d | _ | j  dS | j d | _ | j  d	S 
NzNo Price Match  韆  K順   Lac逖  Cr)minpricerx   strr3   r5   r5   r6   min_price_tage     
zDetail.min_price_tagc                 C   r   )
NzNO Price Matchr   r   r   r   r   r   r   r   )maxpricerx   r   r3   r5   r5   r6   max_price_tagu  r   zDetail.max_price_tagN)+r;   r<   r=   r   OneToOneFieldrd   rY   r   rA   r
   
possessionminarear   
areaselectproject_area_typemaxareaIntegerFieldr   r   towersfloorsrera	sqft_areaunites
FloatField
total_areacheque_favour_of	DateFieldavailable_fromlaunch_dater   transaction_typer   flooringr   
furnishingrJ   rK   rL   r7   propertyr   r   r5   r5   r5   r6   r      s    


r   c                       s   e Zd ZejeddejdZejddddZ	ej
ddZed	ed
dgdddidZejddZejddZdd Z fddZdd Zedd Z  ZS )ProjectImagesPROJECTIMAGEN)rO   r   rP   d   Tra   zproject_images/%Y/%m/%d)rm   project_imagei  i@  JPEGquality2   )source
processorsformatoptionsr+   r-   c                 C   r   r0   r   r3   r5   r5   r6   r7     r   zProjectImages.__str__c                    .   | j s
| | j| _tt| j|i | d S r0   )idcompressImager   rp   r   rq   r4   argsr|   rz   r5   r6   rq        zProjectImages.savec                 C   t   t |}|jdv r|d}t }|d}|j|ddd |d t|dd	|j	
d
d  dt|d }|S )NRGBAPr   )r   i  r   <   r   r   r   r   %s.jpg.
image/jpegr   rs   modeconvertr   rw   rq   seekr   r2   splitsys	getsizeof)r4   r   imageTemproaryoutputIoStreamimageTemproaryResizedr5   r5   r6   r        




(zProjectImages.compressImagec                 C   s    z| j j}W |S    d}Y |S )N )r   url)r4   r   r5   r5   r6   imageURL  s   
zProjectImages.imageURL)r;   r<   r=   r   rX   rd   rY   r   rA   rD   r   r   r   r   rr   rJ   rK   rL   r7   rq   r   r   r   r   r5   r5   rz   r6   r     s     
r   c                       s   e Zd ZejedejddZejddddZ	ej
ddddd	Zej
ddddd	Zej
ddddd	Zejdddd
Zej
ddddd	ZejddZejddZdd Zedd Z fddZdd Z  ZS )ProjectFloorPlanPROJECTFLOORPLANN)rO   rP   r   zfloorplan_image/%Y/%m/%dT)rm   r(   r)   r   z!Type: String, Values: Enter Value)r   r(   r)   r   )r(   r)   r   r+   r-   c                 C   r   r0   r   r3   r5   r5   r6   r7     r   zProjectFloorPlan.__str__c                 C   s   | j d u rtd d S t| j dkr%t| j dkr%| j d | _ | j  dS t| j dkrAt| j dkrAt| j d | _ | j  dS t| j d | _ | j  d	S r   )pricerx   intr   r3   r5   r5   r6   floorplan_price  s   
z ProjectFloorPlan.floorplan_pricec                    r   r0   )r   r   floorplan_imagerp   r   rq   r   rz   r5   r6   rq     r   zProjectFloorPlan.savec                 C   r   )Nr   r   )i   iX  r   P   r   r   r   r   r   r   r   )r4   r   r   r   r   r5   r5   r6   r     r   zProjectFloorPlan.compressImage)r;   r<   r=   r   rX   rd   rY   r   r   r   rA   bhksizer   r   price_persqftbooking_amountrJ   rK   rL   r7   r   r   rq   r   r   r5   r5   rz   r6   r     s    
r   c                   @   s   e Zd ZejeejddddZejddddZ	ejdddd	d
Z
ejddddd
ZejddddZejddZejddZdd ZdS )OffersNProjectOffersz)Type: String, Values: Select Any Project.)rP   r   rO   r   r!   z%Type:String, values: Enter Offer Type)r   r   r   Tz"Type:String, values: Enter Offer 1)r(   r)   r   r   z"Type:String, values: Enter Offer 2zOffer Ends Date)r(   r)   r   r+   r-   c                 C   r/   r0   )
offer_typer3   r5   r5   r6   r7     r8   zOffers.__str__)r;   r<   r=   r   rX   rd   rY   r   rA   r   offer1offer2r   offer_ends_daterJ   rK   rL   r7   r5   r5   r5   r6   r     s2    r   ),	django.dbr   ckeditor.fieldsr   location.modelsr   locality.modelsr   builder.modelsr   addons.modelsmultiselectfieldr   addons.optionsr	   r
   r   r   r   r   r   PILr   r   ior   django.core.files.uploadedfiler   imagekit.modelsr   imagekit.processorsr   django.urlsr   Modelr   rM   r[   r_   rd   r   r   r   r   r5   r5   r5   r6   <module>   s2    $#$&u &.