o
    g^                     @   sj  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
 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 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dd ZdedfdedfdedfgZG dd dejZG dd dejZdd  ZG d!d" d"ejZ G d#d$ d$ejZ!G d%d& d&ejZ"d'd( 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'G d1d2 d2ejZ(G d3d4 d4ejZ)G d5d6 d6ejZ*G d7d8 d8ejZ+G d9d: d:ejZ,G d;d< d<ejZ-G d=d> d>ejZ.g d?Z/G d@dA dAejZ0G dBdC dCejZ1G dDdE dEejZ2dS )F    N)Iterable)models)gettext_lazy)
Permission)CityCountry)	WEBPField)slugify)CKEditor5Field)get_user_modelT	submittedFignoredactivedeactiveyesnoc                 C      dt  j dS )Nzlinks/.webpuuiduuid4hexinstancefilename r   ,/var/www/Entralon-Web-Backend/main/models.pylink_folder!      r   masterzmaster pagecustomerzcustomer pagemainz
main pagesc                       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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	ZejedddZejeedejdddZejedddZejeddedZ fddZdd ZG d d! d!Z  ZS )"Linksnamed   T
max_lengthnullblanksluglink   #r&   defaultz	view name  selfparent	sub_links)verbose_namerelated_name	on_deleter(   r'   zrelated linkrelated_linksiconzfa-solid fa-sliderspriorityr.   r   )r3   r5   r'   r(   	show/hideuse For2   r&   choicesc                    sP   | j rt| j dd| _| j d ur| j }r| j |_ |  t j|i | d S NT)allow_unicode)r#   r	   r)   
permissionsavesuper)r0   argskwargsper	__class__r   r   rB   7   s   

z
Links.savec                 C      | j  S Nr#   r0   r   r   r   __str__?      zLinks.__str__c                   @   s$   e Zd ZedZedZg dZdS )z
Links.Metar*   )r8   use_forviewsN__name__
__module____qualname___r3   verbose_name_pluralorderingr   r   r   r   MetaB       rX   )rR   rS   rT   r   	CharFieldrU   r#   	SlugFieldr)   r*   rP   
ForeignKeyRESTRICTr1   related_linkr7   SmallIntegerFieldr8   r   rA   BooleanFieldshowUSE_FORrO   rB   rM   rX   __classcell__r   r   rG   r   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
eddd	Zejed
dedZ fddZdd ZG dd dZ  ZS )Menusr#   r$   r&   r)   Tr%   links	menu_link)r3   r4   r;   r<   r=   c                    s,   | j rt| j dd| _t j|i | d S r?   )r#   r	   r)   rC   rB   r0   rD   rE   rG   r   r   rB   N   s   z
Menus.savec                 C   s   | j S rJ   rK   rL   r   r   r   rM   R   s   zMenus.__str__c                   @   "   e Zd ZedZedZdgZdS )z
Menus.MetamenurO   NrQ   r   r   r   r   rX   U       
rX   )rR   rS   rT   r   rZ   rU   r#   r[   r)   ManyToManyFieldr"   rf   rb   rO   rB   rM   rX   rc   r   r   rG   r   rd   H   s    rd   c                 C   s   d| j  dS )Nz
languages/r   )coder   r   r   r   image_language_folder[   s   rn   c                   @   s   e Zd ZejedddZejedddZeede	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d ZG dd dZdS )LanguageName   re   Code
   FlagT)	upload_tor(   r'   r   Fr9   
created atauto_now_add
updated atauto_nowc                 C   rI   rJ   rK   rL   r   r   r   rM   h   rN   zLanguage.__str__c                   @   "   e Zd ZedZedZdgZdS )zLanguage.Metaro   	Languagesr#   NrQ   r   r   r   r   rX   k   rk   rX   N)rR   rS   rT   r   rZ   rU   r#   rm   r   rn   flagr`   	is_activeDateTimeField
created_at
updated_atrM   rX   r   r   r   r   ro   ^   s    ro   c                       s   e Z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 fddZdd ZG dd dZ  ZS )
FooterMenur#   r$   Tr%   r*   r+   r,   r-   r8   r   r9   r:   c                    s   t  j|i | d S rJ   )rC   rB   rh   rG   r   r   rB   x   s   zFooterMenu.savec                 C   rI   rJ   rK   rL   r   r   r   rM   {   rN   zFooterMenu.__str__c                   @   ri   )zFooterMenu.MetazFooter Menur8   NrQ   r   r   r   r   rX   ~   rk   rX   )rR   rS   rT   r   rZ   rU   r#   r*   r_   r8   r`   r   rB   rM   rX   rc   r   r   rG   r   r   r   s    r   c                   @   sf   e Zd ZejeedejdZeje	edej
ddZejeddddd	Zd
d ZG dd dZdS )FooterMenuTranslatelanguage)r3   r5   zfooter menu
translates)r3   r5   r4   r#   r$   Tr%   c                 C   rI   rJ   rK   rL   r   r   r   rM      rN   zFooterMenuTranslate.__str__c                   @   s$   e Zd ZedZedZddgZdS )zFooterMenuTranslate.MetazFooter Menu Translatefooter_menur#   NrQ   r   r   r   r   rX      rY   rX   N)rR   rS   rT   r   r\   ro   rU   r]   r   r   CASCADEr   rZ   r#   rM   rX   r   r   r   r   r      s    r   c                 C   r   )Nz	settings/r   r   r   r   r   r   image_site_settings_folder   r   r   c                   @   s  e Zd Zeje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dZ
eededddZeededddZeede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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ddZejedd
dddZejeded ejddd!Zejed"ed#ejddd!Zeed$ed%d&Zeed'ed%d&Z eed(ed%d&Z!ej"ed)dd*Z#ej"ed+dd,Z$d-d. Z%G d/d0 d0Z&d1S )2SiteSettingsTitlerq   re   	site namezsite url   zhttps://entralon.comr-   zfiles prefixr+   zhttps://files.entralon.comzfav iconT)ru   r'   r(   z	main logozmobile logozcan user loginr9   zcan user registerzcan admin loginzuse recaptchaFzrecaptcha keyr%   zrecaptcha secretzis translatedzmain theme address )r&   r.   r(   zmaster theme address	main_menuz	main menu)r4   r3   r5   r'   r(   master_menuzmaster menuzDefault news imagezblank/image-placeholder.webp)ru   r.   zDefault developer imagezDefault development imagerv   rw   ry   rz   c                 C   rI   rJ   )titlerL   r   r   r   rM      rN   zSiteSettings.__str__c                   @   ri   )zSiteSettings.MetazSite Settings-idNrQ   r   r   r   r   rX      rk   rX   N)'rR   rS   rT   r   rZ   rU   r   	site_nameURLFieldsite_urlfiles_prefix_urlr   r   fav_icon	main_logomobile_logor`   can_user_logincan_user_registercan_admin_loginuse_recaptcharecaptcha_keyrecaptcha_secretis_translatedmain_theme_addressmaster_theme_addressr\   rd   r]   r   r   default_news_imagedefault_developer_imagedefault_development_imager   r   r   rM   rX   r   r   r   r   r      s4    r   c                   @   s|  e Zd ZejeejddZejeej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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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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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 )/SettingTranslater   r5   r4   site_settings_translatesr   rq   re   zshort descriptionr   Tr%   Descriptionr'   r(   Addressr/   zAddress localityzAddress countryKeywordszphone numberemailzDevelopment list titler+   zDevelopment search titlezDevelopment list descriptionzDeveloper list titlezDeveloper search titlezDeveloper list descriptionzBlog list titlezBlog search titlezBlog list descriptionRuleszAbout usz
About us 2zAbout us in homezPrivacy policyzTerms of usezprivacy noticezHome seo textrv   rw   ry   rz   c                 C   rI   rJ   )r   rL   r   r   r   rM      rN   zSettingTranslate.__str__c                   @   r|   )zSettingTranslate.MetazSite Settings translatezSite Settings translatesr   NrQ   r   r   r   r   rX      rk   rX   N)-rR   rS   rT   r   r\   r   r   site_settingsro   r   rZ   rU   r   short_description	TextFielddescriptionaddressaddress_localityaddress_countrykeywordsphone_number
EmailFieldr   development_list_titledevelopment_search_titledevelopment_list_descriptiondeveloper_list_titledeveloper_search_titledeveloper_list_descriptionblog_list_titleblog_search_titleblog_list_descriptionrulesabout_us
about_us_2about_us_homeprivacy_policyterms_of_useprivacy_noticehome_seo_textr   r   r   rM   rX   r   r   r   r   r      sB    r   c                   @   s   e Zd ZejedddZeedZej	e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d ZG dd dZdS )FaqQuestionr+   re   Answerr   Fr9   
translatedrv   Trw   ry   rz   c                 C   rI   rJ   questionrL   r   r   r   rM      rN   zFaq.__str__c                   @   r|   )zFaq.MetaFAQFAQsr   NrQ   r   r   r   r   rX      rk   rX   N)rR   rS   rT   r   rZ   rU   r   r   answerr`   r   r   r   r   r   rM   rX   r   r   r   r   r      s    r   c                   @   s   e Zd ZejeejddZejeejddZ	ej
edddZee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 )FaqTranslater   r   faq_translationsr   r+   re   r   rv   Trw   ry   rz   c                 C   rI   rJ   r   rL   r   r   r   rM     rN   zFaqTranslate.__str__c                   @   s*   e Zd ZedZedZdgZddgZdS )zFaqTranslate.MetazFAQ TranslationzFAQ Translationsr   faqr   N)rR   rS   rT   rU   r3   rV   rW   unique_togetherr   r   r   r   rX   	  s
    rX   N)rR   rS   rT   r   r\   r   r   r   ro   r   rZ   rU   r   r   r   r   r   r   rM   rX   r   r   r   r   r      s    r   c                       sn  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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edZejdejddddZejdejddddZejdej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Zeje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"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'Z(ej'ed(dd)Z) fd*d+Z*d,d- Z+G d.d/ d/Z,  Z-S )0RequestCallBackrp   rq   Tr%   z	Last NamePhone Numberre   EmailMessager   Date   zpage urlzdevelopment.Developmentrequest_call_backs)r5   r4   r'   r(   zdevelopment.Flatzdeveloper.Developerzbedroom numberBudgetPurposezPayment MethodzTime to movero   ReadFr9   CheckedzSend to bitrixz	Send timezWhatsapp chatzTelegram chatzUTM Campaignr   z
UTM SourcezUTM Contentz
UTM Mediumrv   rw   ry   rz   c                    sx   | j d ur| jd u r| j j| _| jd ur3| j d u r| jj | _ | jd u r)| jj j| _| jd u r3| jj| _t j|i |S rJ   )development	developerflatbedroom_numbedrooms_numrC   rB   rh   rG   r   r   rB   1  s   








zRequestCallBack.savec                 C   s   | j  d| j S N )
first_name	last_namerL   r   r   r   rM   >  r   zRequestCallBack.__str__c                   @   r|   )zRequestCallBack.MetazRequest Call BackzRequest Call Backsr   NrQ   r   r   r   r   rX   A  rk   rX   ).rR   rS   rT   r   rZ   rU   r   r   r   r   r   r   messagedater   page_urlr\   r   r   r   r   r   budgetpurposepayment_methodtime_to_mover   r`   is_read
is_checkedsend_to_bitrix
FloatField	send_timewhatsapp_chattelegram_chatutm_campaign
utm_sourceutm_content
utm_mediumr   r   r   rB   rM   rX   rc   r   r   rG   r   r     s@    r   c                   @   sl   e Zd ZejedddZejedddZejedddZ	ej
eddddZd	d
 ZG dd dZdS )	ContactUsrp   rq   re   r   r   r   Tr   c                 C   rI   rJ   rK   rL   r   r   r   rM   L  rN   zContactUs.__str__c                   @   ri   )zContactUs.Metaz
Contact Usr   NrQ   r   r   r   r   rX   O  rk   rX   N)rR   rS   rT   r   rZ   rU   r#   r   r   r   r   r   rM   rX   r   r   r   r   r   F  s    r   c                   @   sX   e Zd Zeje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 )SubscribeNewsletterr   T)uniquerv   rw   ry   rz   c                 C   rI   rJ   )r   rL   r   r   r   rM   Y  rN   zSubscribeNewsletter.__str__c                   @   r|   )zSubscribeNewsletter.MetazSubscribe NewsletterzSubscribe Newslettersr   NrQ   r   r   r   r   rX   \  rk   rX   N)rR   rS   rT   r   r   rU   r   r   r   r   rM   rX   r   r   r   r   r   T  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dZe	edZ
eje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 )ErrorLogurlr   Tr%   locationtypeerrorzunique timer   r9   numberrv   rw   ry   rz   c                    s.   | j d u rtt d | _t j|i |S )Ni  )idinttimeunique_timerC   rB   rh   rG   r   r   rB   k  s   
zErrorLog.savec                 C   rI   rJ   )r  rL   r   r   r   rM   p  rN   zErrorLog.__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ErrorLog.Metaz	Error Logz
Error Logsr   )r  r  r	  %repeated_error_log_type_location_timefieldsr#   N
rR   rS   rT   rU   r3   rV   rW   r   UniqueConstraintconstraintsr   r   r   r   rX   s      rX   )rR   rS   rT   r   rZ   rU   r  r  r  r   r  IntegerFieldr	  r  r   r   r   rB   rM   rX   rc   r   r   rG   r   r   a  s    r   c                   @   sZ   e Z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 )
FilterTyper#   r   T)r&   r   rv   rw   ry   rz   c                 C   rI   rJ   rK   rL   r   r   r   rM     rN   zFilterType.__str__c                   @   r|   )zFilterType.MetazFilter List TypezFilter List Typesr#   NrQ   r   r   r   r   rX     rk   rX   N)rR   rS   rT   r   rZ   rU   r#   r   r   r   rM   rX   r   r   r   r   r  {  s    r  c                   @   s   e Zd Zeje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
ejed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G dd dZdS )FilterElementr      re   r#   r   r)   countrycityTr%   r  filter_elementr5   r3   r4   rv   rw   ry   rz   c                 C   rI   rJ   rK   rL   r   r   r   rM     rN   zFilterElement.__str__c                   @   s8   e Zd ZedZedZddgZejg dddgZ	dS )	zFilterElement.MetazFilter ElementzFilter Elementsr)   r#   )r   r)   r  r  r  )repeated_filter_element_type_country_cityr  Nr  r   r   r   r   rX         rX   N)rR   rS   rT   r   rZ   rU   r   r#   r[   r)   r  r  r\   r  r   r  r   r   r   rM   rX   r   r   r   r   r    s    r  c                   @   s  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ejedddddZejeedddd	Zejeed
d
dd	Zejeedddd	Zejeedddd	Zejeedddd	Zejeedddd	Zejeedddd	Zejeedddd	Zejeedddd	Zejeedddd	ZejeeddejdddZejeeddej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 )%
FilterListr   filter_listr  r  r  T)r5   r3   r4   r'   r(   stations)r3   r4   r(   	districts	postcodesbedroomsareaszoneszkey featureskey_featureszpayment optionspayment_optionszcompletion datescompletion_dateszbuilding typesbuilding_typesz	min price
min_prices)r3   r4   r5   r'   r(   z	max price
max_pricesrv   rw   ry   rz   c                 C   s   | j  d| j d| j S r   r   r  r  rL   r   r   r   rM     s   zFilterList.__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FilterList.MetazFilter Listr  r)  *repeated_filter_list_language_country_cityr  Nr  r   r   r   r   rX     r  rX   N) rR   rS   rT   r   r\   ro   r   rU   r   r   r  r   r  rl   r  stationdistrictpostcodebedroomareazonekey_featurepayment_optioncompletion_datebuilding_type	min_price	max_pricer   r   r   rM   rX   r   r   r   r   r    s(    r  ))zgpt-4ozgpt 4o)zchatgpt-4o-latestzchatgpt 4o latest)gpt-4o-minizgpt 4o mini)o1r8  )zo1-minizo1 minic                   @   s   e Zd ZejedddddZejedddZeedZ	ejed	de
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dd ZG dd dZdS )PromptCheckerr#   r   Tr%   zsystem promptzIYou are an experienced real estate consultant with deep market knowledge.r9   zuser promptzai modelr7  )r&   r>   r.   temperaturegffffff?responser   rv   rw   ry   rz   c                 C   rI   rJ   rK   rL   r   r   r   rM     rN   zPromptChecker.__str__c                   @   r|   )zPromptChecker.MetazPrompt CheckerzPrompt Checkersr  NrQ   r   r   r   r   rX     rk   rX   N)rR   rS   rT   r   rZ   rU   r#   r   system_promptuser_prompt	AI_MODELSai_modelr   r:  r;  r   r   r   rM   rX   r   r   r   r   r9    s    r9  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	ej
e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 )SiteMapTyper#   r   Tr%   r   r   site_map_typesr  rv   rw   ry   rz   c                 C   rI   rJ   rK   rL   r   r   r   rM     rN   zSiteMapType.__str__c                   @   r|   )zSiteMapType.MetazSite Map TypezSite Map Typesr  NrQ   r   r   r   r   rX     rk   rX   N)rR   rS   rT   r   rZ   rU   r#   r   r\   ro   r   r   r   r   r   rM   rX   r   r   r   r   r@    s    r@  c                   @   s   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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ZejedddZdd ZG dd dZdS )SiteMapzsite map type	site_mapsr  r   r#   r   Tr%   r*   r8   r   zlast modifiedzchange frequencyrv   rw   ry   rz   c                 C   rI   rJ   rK   rL   r   r   r   rM     rN   zSiteMap.__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SiteMap.MetazSite Mapz	Site Maps)r  r8   r  )r  r   r  )repeated_error_site_map_type_language_urlr  Nr  r   r   r   r   rX     r  rX   N)rR   rS   rT   r   r\   r@  r   rU   r  ro   r   rZ   r#   r  r   r8   r   last_modifiedchange_frequencyr   r   rM   rX   r   r   r   r   rB    s    rB  )3r  typingr   r   	django.dbr   django.utils.translationr   rU   django.contrib.auth.modelsr   geo_location.modelsr   r   main.fieldsr   django.utils.textr	   django_ckeditor_5.fieldsr
   django.contrib.authr   UserCHECK_BOOLEANACTIVE_BOOLEANQUESTION_BOOLEANr   rb   Modelr"   rd   rn   ro   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r>  r9  r@  rB  r   r   r   r   <module>   s`    








*/6!	