a
    d$                     @   s&  d dl 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m	Z	 d dl
mZ 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mZ e Zdd ZG dd de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 )    N)datetime)get_user_model)GinIndex)SearchVectorSearchVectorField)models)QUniqueConstraint)AutoCreatedFieldAutoLastModifiedField)TimeStampedModel)HistoricalRecords)CompanyManagerCompanyQuerySetc                 C   s\   t t d}|d}| jr@d| jj||t|d  S d| j||t|d  S )Nz%Y_%m_%d_%H_%M_%S.zcompany/{0}_{1}.{2}   )	strr   nowstrftimesplituserformatidlen)instancefilenametimestrnew_filename r   ?/var/www/html/Ranjet/backend/verify_trusted/companies/models.pyuser_directory_path   s    
r    c                   @   s  e Zd Zej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
Z
ejd	dddZeje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Zejd	dZejddddZej	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
Zej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Z!ejddddZ"ejddddZ#ejddddZ$ejddddZ%ejddddZ&ejddddZ'ejddd
Z(ejddd
Z)ej*e+ej,ddddZ-ej.ddZ/ej.ddZ0ej.dddZ1ejddd
Z2ejdddd d!Z3ejddddZ4ejddddZ5e6dddd"Z7e8g d#d$Z9e:;e< Z=G d%d& d&Z>e?d'd( Z@d)d* ZAdS )+Company  T)
max_lengthdb_indexr   zFirst letter of name)r#   r$   blanknull	help_texti&  )r#   r%   r&   r$      r%   r&   r#   r%   r&   )	upload_tor%   r&   r#   )uniquer#   r%   r&   N)r%   r&   defaultr#   i  )r%   r&   r-   r$   r   iy	  !   i  -   i     	companies)	on_deleterelated_namer%   r&   r-   F)r-   r$      ZUSD)r#   r%   r&   r-   )r&   r%   editable)search_vectorfirst_lettercreatedmodified)excluded_fieldsc                   @   s   e Zd ZdZedgdgZdS )zCompany.MetaZ	Companiesr8   )fieldsN)__name__
__module____qualname__verbose_name_pluralr   indexesr   r   r   r   Metal   s   rC   c                   C   s   t dS )Nname)r   r   r   r   r   get_search_vectorv   s    zCompany.get_search_vectorc                 C   s   | j  d| j d| j S )N )rD   urlr   )selfr   r   r   __str__z   s    zCompany.__str__)Br>   r?   r@   r   	CharFieldrD   r9   categoryZcategory_main	TextFieldemailphone
ImageFieldr    logorG   Znormalized_domainIntegerFieldstatusZurl_displayaddressZaboutZreviews_count
FloatFieldZaverage_ratingdomainDateTimeFieldZ
crawled_atZlast_review_date	JSONFieldopeningZlast_synced_atZnew_reviewsZ	owner_ceoZid_businessZheadquartersZyears_onsiteyearsZbusiness_typeZaccreditationotherZlast_http_status
ForeignKeyUserSET_NULLr   BooleanFieldZone_yearZ
ssl_statusis_verifiedmapcurrency_symbolZ	web_aliasZcountry_coder   r8   r   historyr   from_querysetr   objectsrC   staticmethodrE   rI   r   r   r   r   r!   !   s   

r!   c                   @   s   e Zd ZejdddejdZejddddZej	ddddZ
ejddddZejddd	ZejddddZejddd	Ze Zej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dZe ZejddddZG dd dZdS )Reviewzreviews.ReviewSourceTreviews)r&   r4   r3      r*   )r%   r&   r$   i	  r)   r"   F)r-   r%   r&   r$   x   N)r#   r-   r%   r&   r$   )r-   r%   r&   c                   @   s&   e Zd ZeddgdedddgZdS )zReview.Metasourceexternal_idZsource__external_id__idxF)Zexternal_id__isnull)r=   rD   	conditionN)r>   r?   r@   r	   r   constraintsr   r   r   r   rC      s   rC   )r>   r?   r@   r   r[   CASCADErj   rJ   Zauthor	DateFielddateZheadlinerL   bodyrQ   ZratingrV   Z
date_parser   Zdate_modifydisplay_orderrG   r^   	is_activerk   r   rb   Z	lock_editrC   r   r   r   r   rf   ~   s4   rf   c                   @   sT   e Zd ZejddZejddddZejddddZejdddZ	G dd dZ
d	S )
SourceSocial2   r.   rh   Tr#   r&   r%   r&   r%   c                   @   s   e Zd ZdZdS )zSourceSocial.MetazSource SocialNr>   r?   r@   rA   r   r   r   r   rC      s   rC   N)r>   r?   r@   r   rJ   rD   rG   rP   rQ   rr   rC   r   r   r   r   rt      s
   rt   c                   @   sP   e Zd ZejddddZejeejddddZ	eje
ejdZG dd dZd	S )
Socialrh   Trv   Zsocials)r3   r4   r&   r%   r3   c                   @   s   e Zd ZdZdS )zSocial.MetaZSocialsNrx   r   r   r   r   rC      s   rC   N)r>   r?   r@   r   rJ   rG   r[   r!   rn   companyrt   rj   rC   r   r   r   r   ry      s   ry   c                   @   sh   e Zd ZejddZejdddZejdddZ	ejddZ
ejddZejdddd	ZejddZd
S )Pland   r.   Tr)   g{G#@r5      r6   rv   N)r>   r?   r@   r   rJ   rD   rL   descriptionrT   ZcostZpricerQ   packcurrencyr^   rs   r   r   r   r   r|      s   r|   c                   @   s`  e Zd ZG dd dejZejddejddZ	ej
ddddZej
ddddZej
ddddZej
ddddZejeejdZej
d	dddZej
d
dddZejeejdZej
d	dddZej
ddddZej
ddddZej
ddddZej
dejejdddZej
ddddZej
d	dddZej dddZ!e" Z#e$ Z%ej dddZ&ej dddZ'dS )Paymentc                   @   s    e Zd ZdZdZdZdZdZdS )zPayment.StatusCANCELFAILEDCOMPLETEPENDINGDRAFTN)r>   r?   r@   r   r   r   r   r   r   r   r   r   Status   s
   r   TF)primary_keyr,   r-   r7   rh   rv   rz   r"   r6   r}   ru   )r#   choicesr-   r&   r%   rw   N)(r>   r?   r@   r   TextChoicesr   	UUIDFielduuiduuid4r   rJ   Z	stripe_idZstripe_customer_idZstripe_subscription_idZstripe_payment_method_idr[   r!   rn   r{   r   r   r|   planrS   countryZcityZzip_coder   r   rR   Zstripe_statusZ
stripe_urlrT   Zprice_to_usdr
   create_dater   Zmodify_dateZvatZtotal_amountr   r   r   r   r      s<   
r   c                   @   sB   e Zd ZejeejdddZeje	ejdddZ
e Ze ZdS )SubscriptionTZsubscriptions)r3   r   r4   )r3   r&   r%   N)r>   r?   r@   r   OneToOneFieldr!   rn   r{   r[   r   paymentro   due_dater
   r   r   r   r   r   r      s   
r   )#r   r   Z
tldextractdjango.contrib.authr   Zdjango.contrib.postgres.indexesr   Zdjango.contrib.postgres.searchr   r   	django.dbr   django.db.modelsr   r	   Zmodel_utils.fieldsr
   r   Zmodel_utils.modelsr   Zsimple_history.modelsr   Z!verify_trusted.companies.managersr   r   r\   r    r!   Modelrf   rt   ry   r|   r   r   r   r   r   r   <module>   s(   ]%

'