
    f                    
   d dl mZ d dlmZ d dlmZ d dlT d dlZd dlmZm	Z	m
Z
 d dlmZ d dlmZ d dlZd dlT 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mZ d dlm Z  d dl!m"Z" d dl#Z#d dlZd dl$Z$d dl%Z%d dl&m'Z' d dl(T d dl)m*Z* d dl+m,Z, d dl+m-Z- d dl.Z.d dl/Z/d dl0Z0d dl1m2Z2 d dl3Z3d dl4Z5d dl6Z7d dl3Z3d dl8m9Z9 d dl:Z:d dl6Z7ddl;m<Z<  G d de          Z= G d de          Z> G d de          Z? G d d e          Z@ G d! d"e          ZA G d# d$e          ZB G d% d&e          ZC G d' d(e          ZD G d) d*e          ZE G d+ d,e          ZF G d- d.e          ZG G d/ d0e          ZH G d1 d2e          ZI G d3 d4e          ZJ G d5 d6e          ZK G d7 d8e          ZL G d9 d:e          ZM G d; d<e          ZN G d= d>e          ZO G d? d@e          ZP G dA dBe          ZQ G dC dDe          ZR G dE dFe          ZS G dG dHe          ZT G dI dJe          ZU G dK dLe          ZV G dM dNe          ZW G dO dPe          ZX G dQ dRe          ZY G dS dTe          ZZ G dU dVe          Z[ G dW dXe          Z\ G dY dZe          Z] G d[ d\e          Z^ G d] d^e          Z_ G d_ d`e          Z` G da dbe          Za G dc dde          Zb G de dfe          Zc G dg dhe          Zd G di dje          Ze G dk dle          Zf G dm dne          Zg G do dpe          Zh G dq dre          Zi G ds dte          Zj G du dve          Zk G dw dxe          Zl G dy dze          Zm G d{ d|e          Zn G d} d~e          Zo G d de          Zp G d de          Zq G d de          Zr G d de          Zs G d de          Zt G d de          Zu G d de          Zv G d de          Zw G d de          Zx G d de          Zy G d de          Zz G d de          Z{ G d de          Z| G d de          Z} G d de          Z~ G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          ZdS )    )APIView)Responsestatus)*N)datetime	timedeltadate)settings)django_pbkdf2_sha256)get_authorization_header)RefreshToken)TokenBackend)EmailMultiAlternatives)
exceptions)renderredirect)mail)render_to_string)messages)	timesince)Max)Q)NewsApiClient)BeautifulSoup   )formsc                       e Zd Zd ZdS )UploadImagesc                 N   	 |j         }|                    d          }g }|D ]&}t          |          }|                    |           't	          t
          j        d|d          S # t          $ r4}t	          dt          |          it
          j	                  cY d }~S d }~ww xY w)NimagesSuccessstatus_codestatus_messagedatamessager   )
r&   getlistuploadTheImagesappendr   r   HTTP_200_OK	ExceptionstrHTTP_500_INTERNAL_SERVER_ERROR)selfrequestr&   r!   
image_urlsimage
image_pathes           ;/var/www/html/Investors/ModernInvestors/panel_apis/views.pypostzUploadImages.post/   s    	V
,4LL""6: " "u ''Jj!!!!
&"4iWabb
c
cc	 V V V
Is1vv&v/T
U
U
UUUUUUUVs   A#A& &
B$0)BB$B$N__name__
__module____qualname__r6        r5   r   r   .   s(        
V 
V 
V 
V 
Vr<   r   c                       e Zd Zd ZdS )getPrivacyPolicyc                 <   	 | j         j                            d          }|dk    r3t          j                            d                                          }n2t          j                            d                                          }|si }n|j        |j        |j	        d}t          t          j        d|d          S # t          $ rN}t          |           t          t          j        t!          |          dt          j        	          cY d }~S d }~ww xY w)
Npage_type_paramPrivacy	page_typeTermsidtitlecontentr"   r#   r$   r%   r   )r0   query_paramsgetContentPagesobjectsfilterfirstrF   rG   rH   r   r   r+   r,   printr.   r-   )r/   r0   r@   data_objall_datar4   s         r5   rK   zgetPrivacyPolicy.get<   sK   	X#|8<<=NOOO)++'/666KKQQSS'/666IIOOQQ  "$N&. 
 6+=y`hiijjj 	X 	X 	X!HHH6+Pbefgbhbhiiqw  rW  X  X  X  X  X  X  X  X  X	Xs   C C 
DADDDNr8   r9   r:   rK   r;   r<   r5   r>   r>   ;   s(        X X X X Xr<   r>   c                       e Zd Zd ZdS )getTermsConditionsc                    	 t           j                            d                                          }|si }n|j        |j        |j        d}t          t          j	        d|d          S # t          $ rN}t          |           t          t          j        t          |          dt          j                  cY d }~S d }~ww xY w)NrD   rB   rE   r"   r#   rI   r   )rL   rM   rN   rO   rF   rG   rH   r   r   r+   r,   rP   r.   r-   )r/   r0   	terms_objrR   r4   s        r5   rK   zgetTermsConditions.getQ   s    	X$,33g3FFLLNNI  #%O'/ 
 6+=y`hiijjj 	X 	X 	X!HHH6+Pbefgbhbhiiqw  rW  X  X  X  X  X  X  X  X  X	Xs   A(A+ +
C5AB>8C>CNrS   r;   r<   r5   rU   rU   P   (        X X X X Xr<   rU   c                       e Zd Zd ZdS )
faqListingc                    	 t           j                            d                              d          }g }|D ],}|j        |j        |j        d}|                    |           -t          t          j
        d|d          S # t          $ rN}t          |           t          t          j        t          |          dt          j                  cY d }~S d }~ww xY w)	NTend_date__isnull-idrE   r"   r#   rI   r   )FaqrM   rN   order_byrF   rG   rH   r*   r   r   r+   r,   rP   r.   r-   )r/   r0   faq_objall_DatafaqrR   r4   s          r5   rK   zfaqListing.getb   s   	Xk((4(@@II%PPGH * *I!k 
 ))))6+=y`hiijjj 	X 	X 	X!HHH6+Pbefgbhbhiiqw  rW  X  X  X  X  X  X  X  X  X	Xs   B B 
CACCCNrS   r;   r<   r5   rZ   rZ   a   rX   r<   rZ   c                       e Zd Zd Zd ZdS )userRegisterc                 j   t           j                            d          }g }|D ]&}|j        |j        d}|                    |           't          j                            d          }g }|D ]&}|j        |j        d}|                    |           't          t          j	        d||d          S )NTr\   rF   rG   r"   )r$   r%   job_function	job_level)
JobFunctionsrM   rN   rF   rG   r*   JobLevelr   r   r+   )	r/   r0   rh   job_Datafuncjob_datari   	job_Levellevels	            r5   rK   zuserRegister.getv   s    #+22D2II  	& 	&DW
 H OOH%%%%$++t+DD		 	( 	(EX I Y''''v'99dl  zC  D  D  E  E  	Er<   c                 
   	 |j                             d          }|s(t          t          j        ddt          j                  S |j                             d          }|s(t          t          j        ddt          j                  S |j                             d          }|s(t          t          j        ddt          j                  S |j                             d	                                          }|s(t          t          j        d
dt          j                  S t          j                            |          	                                }|r(t          t          j        ddt          j                  S |j                             d          }|s(t          t          j        ddt          j                  S |j                             d          }|s(t          t          j        ddt          j                  S ||k    r(t          t          j        ddt          j                  S |j                             d          }	|	s(t          t          j        ddt          j                  S |j                             d          }
|
s(t          t          j        ddt          j                  S |j                             d          }|s(t          t          j        ddt          j                  S t          j                            |          }t          j                            |          }|}t          j        |          }t          j        ddd          }t          j                            |          	                                }|r4||_        t#          j                    |_        |                                 n[t          j                            |||||d|
||		  	        }||_        t#          j                    |_        |                                 |j        }d}t/          dd |i          }|}d!}|}t1          j        ||||g|"           t4          j                            |j        d#z   d$%           t          t          j        d&|d'          S # t:          $ rN}t=          |           t          t          j        tA          |          dt          j                  cY d }~S d }~ww xY w)(Nusernamezusername is requiredrI   r   ri   job_level is requiredrh   job_function is requiredemailEmail is requiredru   z)This email is already registered with us.passwordPassword is requiredconfirm_passwordzConfirm Password is requiredz+Password and Confirm Password are not same.fcmTokenfcmToken is required deviceTokendeviceToken is required 
deviceTypedeviceType is required rF     '     T)	rx   ru   rr   ri   rh   is_userdevice_tokendevice_type	fcm_tokenVerify Accountemail_verifcation.htmlotptestsingh28@gmail.comhtml_messagez* has been successfully registered with us.new_user)r'   typezGYou have been successfully registered with us.Please verify your email.r$   r%   r   )!r&   rK   r   r   HTTP_400_BAD_REQUESTlowerUserrM   rN   rO   rj   rk   handlerhashrandom	randrangeregister_otpr   nowotp_created_atsavecreateru   r   r   	send_mailAdminNotificationsrr   r+   r,   rP   r.   r-   )r/   r0   rr   ri   rh   ru   check_emailrx   rz   r{   r}   r   function_obj	level_objstring_passwordfinal_passwordtheotpcustomerObj	to_emailssubjectr   plain_message
from_emailtor4   s                            r5   r6   zuserRegister.post   s+   C	X|''
33H Xv/J\r s s  |B  |W  X  X  X  X((55I Yv/J\s t t  }C  }X  Y  Y  Y  Y"<++N;;L \v/J\v w w  @F  @[  \  \  \  \L$$W--3355E Uv/J\o p px~  yT  U  U  U  U,--E-::@@BBK mv/J  ]H  !I  !I  QW  Ql  m  m  m  m|''
33H Xv/J\r s s  |B  |W  X  X  X  X&|//0BCC# `v/J\z { {  DJ  D_  `  `  `  `+++v/J  ]J  !K  !K  SY  Sn  o  o  o  o|''
33H Yv/J\s t t  }C  }X  Y  Y  Y  Y!,**=99K \v/J\v w w  @F  @[  \  \  \  \ )),77J [v/J\u v v  E  Z  [  [  [  [(044,4GGL!)--9-==I/O$\/::N#D$22F,--e-<<BBDDK #)/(-5\^^*  """" L//>PU_gr{  JV  ae  u@  OY  fn/  p  p)/(-5\^^*  """#)I&G+,DufoVVL(M0JBN7M:tR^____&--k6JLx6x  I-  J  J  J6+=  PY  `f  g  g  h  h  h 	X 	X 	X!HHH6+Pbefgbhbhiiqw  rW  X  X  X  X  X  X  X  X  X	Xsk   AR2 AR2 
AR2 AR2 $AR2  AR2 AR2 -R2 6AR2 :AR2 >AR2 F/R2 2
T
<AT?T
T
Nr8   r9   r:   rK   r6   r;   r<   r5   re   re   u   s?        E E E*DX DX DX DX DXr<   re   c                       e Zd Zd ZdS )otpVerificationc                    	 |j                             d          }|s(t          t          j        ddt          j                  S |j                             d          }|s(t          t          j        ddt          j                  S t
          j                            |                                          }|s(t          t          j        ddt          j                  S t
          j                            ||	                                          }|rJd
|_	        t                      |_        |                                 t          t          j        dd          S t          t          j        dd          S # t          $ rN}t          |           t          t          j        t#          |          dt          j                  cY d }~S d }~ww xY w)Nru   rv   rI   r   r   zOtp is requiredrw   zEmail not exist)ru   r   r   zSuccessfully VerifiedzInvalid otp)r&   rK   r   r   r   r   rM   rN   rO   is_otp_verifiedgenerate_strip_iduser_stripe_idr   r+   r,   rP   r.   r-   )r/   r0   ru   r   r   user_objr4   s          r5   r6   zotpVerification.post   s$   \((11 Y#63N`s$t$t  }C  }X  Y  Y  Y  Yl&&u-- W#63N`q$r$r  {A  {V  W  W  W  W"l111>>DDFF" W#63N`q$r$r  {A  {V  W  W  W  W<..U#.NNTTVV p/0H,.?.A.AH+MMOOO#63EWn$o$oppp#63N`m$n$nooo \ \ \av/Tfijkflfl m mu{  v[  \  \  \  \  \  \  \  \  \\s:   AF AF 
AF &A>F %F 
GAGGGNr7   r;   r<   r5   r   r      s(        \ \ \ \ \r<   r   c                       e Zd Zd ZdS )userResendOtpc                    	 |j                             d          }|s(t          t          j        ddt          j                  S t
          j                            |                                          }|st          t          j        dd          S t          j
        ddd	          }||_        |                                 d
}t          dd|i          }|}d}|}	t          j        ||||	g|           t          t          j        d|d          S # t"          $ rN}
t%          |
           t          t          j        t)          |
          dt          j                  cY d }
~
S d }
~
ww xY w)Nru   rv   rI   r   rw   zPhone number not existr   r   r   r   r   r   r   r   zOtp Send successfullyr   )r&   rK   r   r   r   r   rM   rN   lastr   r   r   r   r   r   r   r+   r,   rP   r.   r-   )r/   r0   ru   r   r   r   r   r   r   r   r4   s              r5   r6   zuserResendOtp.post   s   	\\%%g..E Uv/J\o p px~  yT  U  U  U  U|**%*88==??H zv/J\t u uvvv'dA66&,%*/0H5RX/ZZ ,4
wzB4Vbccccv/ASjqw x xyyy 	\ 	\ 	\av/Tfijkflfl m mu{  v[  \  \  \  \  \  \  \  \  \	\s-   AD AD BD 
E0"AE+%E0+E0Nr7   r;   r<   r5   r   r      s(        \ \ \ \ \r<   r   c                       e Zd Zd ZdS )	userLoginc           	         	 |j                             d                                          }|s(t          t          j        ddt          j                  S |j                             d          }|s(t          t          j        ddt          j                  S t          j                            |          	                                }|dk    r(t          t          j        d	dt          j                  S t          j                            |          
                                }|s(t          t          j        d
dt          j                  S t          j                            |d          
                                }|rt          j        ddd          }||_        |                                 d}t          dd|i          }	|	}
d}|}t!          j        ||
||g|	           t          t          j        ddt          j                  S |j                             d          }|s(t          t          j        ddt          j                  S |j                             d          }|s(t          t          j        ddt          j                  S |j                             d          }|s(t          t          j        ddt          j                  S |j        (t          t          j        ddt          j                  S ||_        ||_        ||_        |                                 |j        }t/          j        |j                             d          |          }|rst3          j        |          }|j        |j        |j        |j        |j        t?          |          t?          |j                   d}t          t          j!        d|d          S t          t          j        d dt          j                  S # tD          $ rN}tG          |           t          t          j$        t?          |          dt          j$                  cY d }~S d }~ww xY w)!Nru   rv   rI   r   rx   ry   rw   r   z:This email does not exist in our database, please registerzNo account foundF)ru   r   r   r   r   r   r   r   r   r   zPlease verify your email.r{   r|   r}   r~   r   r   zThis account is deleted. )rF   ru   rr   r   has_subscriptionrefreshaccesszLogin Successfullyr#   zInvalid password)%r&   rK   r   r   r   r   r   rM   rN   countrO   r   r   r   r   r   r   r   end_dater   r   r   rx   r   verifyr   for_userrF   ru   rr   r   r-   access_tokenr+   r,   rP   r.   )r/   r0   ru   rx   useruserObjcheck_otp_verifiedr   r   r   r   r   r   r{   r}   r   new_passcheckrefresh_tokenallDatar4   s                        r5   r6   zuserLogin.post  s!   ?	XL$$W--3355E Uv/J\o p px~  yT  U  U  U  U|''
33H Xv/J\r s s  |B  |W  X  X  X  XL''e'44::<<Dqyyv/J  ]Y  !Z  !Z  bh  b}  ~  ~  ~  ~|***77==??G Tv/J\n o ow}  xS  T  T  T  T!%!4!45QV!4!W!W!]!]!_!_! 
]'dA66%+$*/0H5RX/ZZ ,4
wzB4Vbccccv/J\w x x  AG  A\  ]  ]  ]  ]|''
33H Yv/J\s t t  }C  }X  Y  Y  Y  Y!,**=99K \v/J\v w w  @F  @[  \  \  \  \ )),77J [v/J\u v v  E  Z  [  [  [  [+v/J\w x x  AG  A\  ]  ]  ]  ]#.G ",G (GLLNNN'HN7<#3#3J#?#?IIE T , 5g > >%j#M&/#*#7'.'?"=11=-..   v/ASgov w wxxxv/J\n o ow}  xS  T  T  T  T 	X 	X 	X!HHH6+Pbefgbhbhiiqw  rW  X  X  X  X  X  X  X  X  X	Xsc   AP AP AP <AP CP AP AP "AP &.P CP ''P 
Q'AQ"Q'"Q'Nr7   r;   r<   r5   r   r   
  s-        @X @X @X @X @Xr<   r   c                       e Zd Zd ZdS )userForgetPasswordc                    |j                             d                                          }|s(t          t          j        ddt          j                  S t          j                            |          	                                }|dk    r(t          t          j        ddt          j                  S t          j                            |          
                                }|rd                    d	 t          d
          D                       }dt          |j                  z   dz   |z   }t          t          j                  |z   }||_        |                                 d}t'          dd|i          }	|	}
d}|}t)          j        ||
||g|	           t          t          j        dd          S t          t          j        ddt          j                  S )Nru   rv   rI   r   rw   r   zPThis email does not exist in our database, please enter the valid email address. c                 d    g | ]-}t          j        t          j        t          j        z             .S r;   )r   choicestringascii_lettersdigits).0ns     r5   
<listcomp>z+userForgetPassword.post.<locals>.<listcomp>Y  s-    &n&n&n_`v}V5IFM5Y'Z'Z&n&n&nr<      z/api-panel/forgoten//zForgot Passwordzuser_forget_password_email.htmllinkztesteresfera@gmail.comr   z8Reset password link has been sent to this email address.zEmail not exists)r&   rK   r   r   r   r   r   rM   rN   r   rO   joinranger-   ru   r   BASE_URLforgot_password_linkr   r   r   r   r+   )r/   r0   ru   r   r   ran_numbaselinkcompletelinkr   r   r   r   r   s                r5   r6   zuserForgetPassword.postO  s   ((117799 Y#63N`s$t$t  }C  }X  Y  Y  Y  Y++%+88>>@@199#63N  as  %t  %t  |B  |W  X  X  X  X<..U.;;AACC X gg&n&ndijldmdm&n&n&nooG 6W]9K9K Kc QT[ [H#&x'8#9#9H#DL3;G0LLNNN/G#34UX^`lWm#n#nL$0M!9JBN7M:tZfgggg#63E  XR  %S  %S  T  T  T#63N`r$s$s  |B  |W  X  X  X  Xr<   Nr7   r;   r<   r5   r   r   N  (        X X X X Xr<   r   c                       e Zd Zd Zd ZdS )forgetPasswordVerificationc                    t          | j        j                  }t          |           |                    d          d         }t
          j                            |                                          }|j	        dk    rt          |d          S t
          j                            ||                                          }|rt          d           d}nt          d	           d
}t          |dd|i          S )Nr   rw   
LinkExpiryzlink-expire.html)ru   r   TrueTFalseFforgot.htmlvalid)r-   r0   pathrP   splitr   rM   rN   rO   r   r   )r/   r0   r   
user_emaillink_expiryr   r   s          r5   rK   zforgetPasswordVerification.getj  s    4<$%%dZZ__R(
l))*)==CCEE+|;;'"4555<&&zRV&WW]]__ 	&MMMEE'NNNEgmWUO<<<r<   c                    t          j        |j                  }|                                r|j                            d          }|j                            d          }t          | j        j                  }|	                    d          d         }t          |           t          j                            |                                          }|rU|                    |           d|_        |                                 t%          j        |d           t)          |d          S d S t)          |d	d
|i          S )Nnew_passwordconfirm_new_passwordr   rw   r   zChanged successfullyzpassword_success.htmlr   form)r   forgetverificationPOSTis_validcleaned_datarK   r-   r0   r   r   rP   r   rM   rN   rO   set_passwordr   r   r   successr   )r/   r0   r   r   r   r   r   r   s           r5   r6   zforgetPasswordVerification.post{  s#   '55==?? 	B,00@@L#'#4#8#89O#P#P t|())DC,J*|**:*>>DDFFH ?%%l3330<- *@AAAg&=>>>? ? '=64.AAAr<   Nr   r;   r<   r5   r   r   i  s7        = = ="B B B B Br<   r   c                       e Zd Zd Zd ZdS )userUpdateProfilec                 ^   	 t          |          }||dk    s|                                dk    rt          j        d          t	          j        |t          j        dg          }|d         }t          j	        
                    |d                                          }|s(t          t          j        d	d
t          j                  S t          j	        
                    d          }g }|D ]&}|j        |j        d}	|                    |	           't&          j	        
                    d          }
g }|
D ]&}|j        |j        d}
|                    |
           '|j        |j        |j        |j        |j        |j        j        |j        j        |j        j        |j        j        |j        d
}t          t          j        d|||d          S # t8          $ rN}t;          |           t          t          j        t?          |          d
t          j                  cY d }~S d }~ww xY w)Nnullr   ;Authorization Header or Token is missing on Request HeadersHS256
algorithmsuser_idr   rF   r   User does not exists.rI   r   Tr\   rg   )
r  avatarru   phone_numberrr   job_level_idri   job_function_idrh   r   r"   )r$   r%   r&   rh   ri   ) r   stripr   AuthenticationFailedjwtdecoder   
SECRET_KEYr   rM   rN   rO   r   r   r   rj   rF   rG   r*   rk   r  ru   r  rr   ri   rh   r   r+   r,   rP   r.   r-   )r/   r0   tokendecodedr  r   rh   rl   rm   rn   ri   ro   rp   rR   r4   s                  r5   rK   zuserUpdateProfile.get  s   (	X,W55E}5;;==B3F3F 56stttj(;yQQQGi(G+++CCIIKKH Yv/J\s t t  }C  }X  Y  Y  Y  Y'/666MMLH$ * * J  )))) (//4/HHII" , ,!K 	   ++++"+! '4#,'14$.4"*"7":'4:#+#< H 6+=y`h  yA  NW  X  X  Y  Y  Y 	X 	X 	X!HHH6+Pbefgbhbhiiqw  rW  X  X  X  X  X  X  X  X  X	Xs&   C	G DG 
H,AH'!H,'H,c           
         	 t          |          }||dk    s|                                dk    rt          j        d          t	          j        |t          j        dg          }|d         }t          j	        
                    |d                                          }|s(t          t          j        d	d
t          j                  S |j                            d          }|s(t          t          j        dd
t          j                  S |j                            d          }|s(t          t          j        dd
t          j                  S t          j	        
                    |                              |j                  }|r(t          t          j        dd
t          j                  S |j                            d          }	|	s(t          t          j        dd
t          j                  S |j                            d          }
|
s(t          t          j        dd
t          j                  S t&          j	                            |
          }|j                            d          }|s(t          t          j        dd
t          j                  S t(          j	                            |          }|j                            d          }||_        ||_        ||_        |	|_        ||_        ||_        |                                 |j        |j        |j        |j        |j        j        |j        j        |j        j        |j        j        |j        d	}t          t          j        d|d          S # t<          $ rN}t?          |           t          t          j         tC          |          d
t          j                   cY d }~S d }~ww xY w)Nr   r   r   r   r   r  r   r  r  rI   r   rr   zUsername is requiredru   rv   rw   r   z3This email is already associated with some account.r  zPhone number is requiredrh   rt   ri   rs   r  )	r  r  ru   rr   r  ri   r  rh   r  zProfile updated successfullyr#   )"r   r  r   r	  r
  r  r   r  r   rM   rN   rO   r   r   r   r&   rK   excluderF   rj   rk   rr   ru   r  r  rh   ri   r   rG   r+   r,   rP   r.   r-   )r/   r0   r  r  r  r   rr   ru   email_checkr  rh   r   ri   r   r  rR   r4   s                    r5   r6   zuserUpdateProfile.post  s_   4	X,W55E}5;;==B3F3F 56stttj(;yQQQGi(G+++CCIIKKH Yv/J\s t t  }C  }X  Y  Y  Y  Y|''
33H Xv/J\r s s  |B  |W  X  X  X  XL$$W--E Uv/J\o p px~  yT  U  U  U  U,--e-<<DDDTTK wv/J  ]R  !S  !S  [a  [v  w  w  w  w"<++N;;L \v/J\v w w  @F  @[  \  \  \  \#L,,^<<L \v/J\v w w  @F  @[  \  \  \  \(044,4GGL ))+66I Yv/J\s t t  }C  }X  Y  Y  Y  Y!)--9-==I\%%h//F (H"HN$HO$0H!$0H!!*HMMOOO"+! #,'14$.4"*"7":'4:'4 H 6+=Omu}~~ 	X 	X 	X!HHH6+Pbefgbhbhiiqw  rW  X  X  X  X  X  X  X  X  X	XsP   C	N AN AN A"N 7AN ;AN ?A#N #C!N 
OAOOONr   r;   r<   r5   r   r     s;        )X )X )XV5X 5X 5X 5X 5Xr<   r   c                       e Zd Zd ZdS )userChangePasswordc                 x   	 t          |          }||dk    s|                                dk    rt          j        d          t	          j        |t          j        dg          }|d         }t          j	        
                    |d                                          }|s(t          t          j        d	d
t          j                  S |j                            d          }|s(t          t          j        dd
t          j                  S |j                            d          }|s(t          t          j        dd
t          j                  S |j                            d          }|s(t          t          j        dd
t          j                  S |                    |          dk    r(t          t          j        dd
t          j                  S |                    |          |k    r(t          t          j        dd
t          j                  S |}	|                    |	           |                                 t          t          j        dd
          S # t*          $ rN}
t-          |
           t          t          j        t1          |
          d
t          j                  cY d }
~
S d }
~
ww xY w)Nr   r   r   r   r   r  r   r  r  rI   r   old_passwordzold password is requiredr   znew password is requirednew_confirm_passwordz new confirm password is requiredFz$Does not match with the old passwordz0New password should not be same as old password.zPassword Changed Successfully)r   r  r   r	  r
  r  r   r  r   rM   rN   rO   r   r   r   r&   rK   check_passwordr   r   r+   r,   rP   r.   r-   )r/   r0   r  r  r  r   r  r   r  rx   r4   s              r5   r6   zuserChangePassword.post  sO   	X,W55E}5;;==B3F3F 56stttj(;yQQQGi(G+++CCIIKKH Yv/J\s t t  }C  }X  Y  Y  Y  Y"<++N;;L \v/J\v w w  @F  @[  \  \  \  \"<++N;;L \v/J\v w w  @F  @[  \  \  \  \#*<#3#34J#K#K ' dv/J\~    HN  Hc  d  d  d  d&&|44==v/J  ]C  !D  !D  LR  Lg  h  h  h  h&&|448LLLv/J  ]O  !P  !P  X^  Xs  t  t  t  t+H!!(+++MMOOO6+=Onooppp 	X 	X 	X!HHH6+Pbefgbhbhiiqw  rW  X  X  X  X  X  X  X  X  X	XsI   C	I! AI! AI! AI! A I! A I! AI! !
J9+AJ4.J94J9Nr7   r;   r<   r5   r  r    (        X X X X Xr<   r  c                       e Zd Zd ZdS )userDeleteAccountc                    	 t          |          }||dk    s|                                dk    rt          j        d          t	          j        |t          j        dg          }|d         }t          j	        
                    |d                                          }|s(t          t          j        d	d
t          j                  S t          j                    |_        |                                 t          t          j        dd
          S # t(          $ rN}t+          |           t          t          j        t/          |          d
t          j                  cY d }~S d }~ww xY w)Nr   r   r   r   r   r  r   r  r  rI   r   zAccount deleted successfully)r   r  r   r	  r
  r  r   r  r   rM   rN   rO   r   r   r   r   r   r   r   r+   r,   rP   r.   r-   )r/   r0   r  r  r  r   r4   s          r5   r6   zuserDeleteAccount.post  s   	X,W55E}5;;==B3F3F 56stttj(;yQQQGi(G+++CCIIKKH Yv/J\s t t  }C  }X  Y  Y  Y  Y (HMMOOO6+=Omnnooo 	X 	X 	X!HHH6+Pbefgbhbhiiqw  rW  X  X  X  X  X  X  X  X  X	Xs&   C	D AD 
E,AE'!E,'E,Nr7   r;   r<   r5   r  r    s(        X X X X Xr<   r  c                       e Zd Zd ZdS )getCustomerNotificationsc                 j   	 t          |          }||dk    s|                                dk    rt          j        d          t	          j        |t          j        dg          }|d         }t          j	        
                    |d                                          }|s(t          t          j        d	d
t          j                  S t          j	        
                    |j        d                              d          }g }|D ]B}|j        |j        |j        t)          |j                  dz   d}	|                    |	           Ct          t          j        d|d          S # t0          $ r?}
t          t          j        t5          |
          d
t          j                  cY d }
~
S d }
~
ww xY w)Nr   r   r   r   r   r  r   r  r  rI   r   Tr   r]   r^   z ago)rF   r'   notification_type
start_dater"   r#   )r   r  r   r	  r
  r  r   r  r   rM   rN   rO   r   r   r   CustomerNotificationsrF   r`   r'   r   r   r!  r*   r+   r,   r.   r-   )r/   r0   r  r  r  r   
notify_objr   notifyalldatar4   s              r5   rK   zgetCustomerNotifications.get*  s   	X,W55E}5;;==B3F3F 56stttj(;yQQQGi(G+++CCIIKKH Yv/J\s t t  }C  }X  Y  Y  Y  Y.6==8;bf=ggppqvwwJG$ ( (%~*0*B!*6+<!=!=f!D	  w''''F,>PYahiijjj 	X 	X 	X6+Pbefgbhbhiiqw  rW  X  X  X  X  X  X  X  X  X	Xs%   C	E) BE) )
F234F-'F2-F2NrS   r;   r<   r5   r  r  )  s(        X X X X Xr<   r  c                       e Zd Zd ZdS )deleteCustomerNotificationsc                    t          |          }||dk    s|                                dk    rt          j        d          t	          j        |t          j        dg          }|d         }t          j	        
                    |d                                          }|s(t          t          j        d	d
t          j                  S |j                            d          }|s(t          t          j        dd
t          j                  S t"          j	        
                    |                              t'          j                               t          t          j        dd
          S )Nr   r   r   r   r   r  r   r  r  rI   r   notification_idzNotification Id is requiredr   )r   z!Notification Deleted Successfully)r   r  r   r	  r
  r  r   r  r   rM   rN   rO   r   r   r   r&   rK   r"  updater   r   r+   )r/   r0   r  r  r  r   r)  s          r5   r6   z deleteCustomerNotifications.postC  sl   (11=EVOOu{{}}/B/B12oppp*UH$7G9MMM)$L''WQ'??EEGG 	U6+FXoppx~  yT  U  U  U  U"<++,=>> 	[6+FXuvv  E  Z  [  [  [  [%,,,@@GGQYQ]Q_Q_G```v'9Knoopppr<   Nr7   r;   r<   r5   r'  r'  B  s(        q q q q qr<   r'  c                       e Zd Zd ZdS )HelpSupportUserc                    	 t          |          }||dk    s|                                dk    rt          j        d          t	          j        |t          j        dg          }|d         }t          j	        
                    |d                                          }|s(t          t          j        d	d
t          j                  S |j                            d          }|s(t          t          j        dd
t          j                  S |j                            d          }|s(t          t          j        dd
t          j                  S t"          j	                            |||j                   t          t          j        dd
          S # t*          $ r?}t          t          j        t/          |          d
t          j                  cY d }~S d }~ww xY w)Nr   r   r   r   r   r  r   r  r  rI   r   rG   title is requireddescriptiondescription is required)rG   r/  r  z Help & Support Send Successfully)r   r  r   r	  r
  r  r   r  r   rM   rN   rO   r   r   r   r&   rK   HelpSupportr   rF   r+   r,   r.   r-   )	r/   r0   r  r  r  r   rG   r/  r4   s	            r5   r6   zHelpSupportUser.postS  s0   	X,W55E}5;;==B3F3F 56stttj(;yQQQGi(G+++CCIIKKH Yv/J\s t t  }C  }X  Y  Y  Y  YL$$W--E Uv/J\o p px~  yT  U  U  U  U!,**=99K [v/J\u v v  E  Z  [  [  [  [&&U{S[S^&___6+=Oqrrsss 	X 	X 	X6+Pbefgbhbhiiqw  rW  X  X  X  X  X  X  X  X  X	Xs3   C	F AF AF AF 
G !4GG G Nr7   r;   r<   r5   r,  r,  R  s(        X X X X Xr<   r,  c                       e Zd Zd ZdS )SendServiceFeedbackc                 :   	 |j                             d          }|s(t          t          j        ddt          j                  S |j                             d          }|s(t          t          j        ddt          j                  S |j                             d          }|s(t          t          j        ddt          j                  S |j                             d	          }|s(t          t          j        d
dt          j                  S t
          j                            ||||           t          t          j        dd          S # t          $ r?}t          t          j
        t          |          dt          j
                  cY d }~S d }~ww xY w)N
first_namezfirst_name is requiredrI   r   	last_namezlast_name is requiredqualityzquality is requiredcommentcomment is required)r5  r6  r7  r8  z"Service Feedback Send Successfully)r&   rK   r   r   r   ServiceFeedbackrM   r   r+   r,   r.   r-   )r/   r0   r5  r6  r7  r8  r4   s          r5   r6   zSendServiceFeedback.postj  s   	X!,**<88J ^#63N`x$y$y  BH  B]  ^  ^  ^  ^((55I ]#63N`w$x$x  AG  A\  ]  ]  ]  ]|''	22G [#63N`u$v$v  E  Z  [  [  [  [l&&y11G [#63N`u$v$v  E  Z  [  [  [  [#**j9]dmt*uuu6+=Osttuuu 	X 	X 	X6+Pbefgbhbhiiqw  rW  X  X  X  X  X  X  X  X  X	Xs9   AE AE 
AE AE >E 
F4FFFNr7   r;   r<   r5   r3  r3  i  (        X X X X Xr<   r3  c                       e Zd Zd ZdS )GetSubscriptionListc           
      H   	 t          |          }||dk    s|                                dk    rt          j        d          t	          j        |t          j        dg          }|d         }t          j	        
                    |d                                          }|s(t          t          j        d	d
t          j                  S t          j	        
                    d          }g }|D ]J}|j        |j        |j        |j        |j        |j        |j        |j        d}	|                    |	           Kt          t          j        d|d          S # t2          $ r?}
t          t          j        t7          |
          d
t          j                  cY d }
~
S d }
~
ww xY w)Nr   r   r   r   r   r  r   r  r  rI   r   Tr\   )rF   subscription_namesubscription_descriptiondurationpriceunlock_realinvestment_toolr   r"   r#   )r   r  r   r	  r
  r  r   r  r   rM   rN   rO   r   r   r   SubscriptionPlansrF   r?  r@  rA  rB  rC  rD  r*   r+   r,   r.   r-   )r/   r0   r  r  r  r   sub_objrb   subrR   r4   s              r5   rK   zGetSubscriptionList.get~  s   	X,W55E}5;;==B3F3F 56stttj(;yQQQGi(G+++CCIIKKH Yv/J\s t t  }C  }X  Y  Y  Y  Y(0777NNGH * *(+(=/2/K"|I"%/&)&9 Z	 	 ))))6+=y`hiijjj 	X 	X 	X6+Pbefgbhbhiiqw  rW  X  X  X  X  X  X  X  X  X	Xs%   C	E BE 
F!"4FF!F!NrS   r;   r<   r5   r=  r=  }  (        X X X X Xr<   r=  c                       e Zd Zd Zd ZdS )getAllBlogsc                    	 t          |          }||dk    s|                                dk    rt          j        d          t	          j        |t          j        dg          }|d         }t          j	        
                    |d                                          }|s(t          t          j        d	d
t          j                  S |j                            d          }|r#t"          j	        
                    |dd          }n!t"          j	        
                    dd          }|s(t          t          j        dd
t          j                  S t$          j	        
                    d          }g }	|D ]&}
|
j        |
j        d}|	                    |           'g }|D ]C}|j        |j        |j        j        |j        |j        |j        d}|                    |           Dt          t          j        d||	d          S # t:          $ r?}t          t          j        t?          |          d
t          j                  cY d }~S d }~ww xY w)Nr   r   r   r   r   r  r   r  r  rI   r   category_idTcategoryr]   r   r]   r   No blog foundr\   rF   category_namerF   rG   uploaded_by
blog_imagerH   
created_atr"   )r$   r%   r&   cat_Data) r   r  r   r	  r
  r  r   r  r   rM   rN   rO   r   r   r   r&   rK   BlogsBlogsCategoryrF   namer*   rG   r   rr   rU  rH   r!  r+   r,   r.   r-   )r/   r0   r  r  r  r   rL  blog_objcat_objrW  catcat_datarb   blogrR   r4   s                   r5   rK   zgetAllBlogs.get  s   &	X,W55E}5;;==B3F3F 56stttj(;yQQQGi(G+++CCIIKKH Yv/J\s t t  }C  }X  Y  Y  Y  Y!,**=99K U =//+Z^hi/jj!M00DRS0TT Qv/J\k l ltz  uP  Q  Q  Q  Q$,33T3JJGH * *&%(X  ))))H  	* 	* J"&)"4!%"l!%  ))))6+=y`ht|}}~~~ 	X 	X 	X6+Pbefgbhbhiiqw  rW  X  X  X  X  X  X  X  X  X	Xs,   C	H B	H B0H 
I4IIIc                    	 t          |          }||dk    s|                                dk    rt          j        d          t	          j        |t          j        dg          }|d         }t          j	        
                    |d                                          }|s(t          t          j        d	d
t          j                  S |j                            d          }|s(t          t          j        dd
t          j                  S t"          j	        
                    |dd          }|s(t          t          j        dd
t          j                  S g }|D ]C}	|	j        |	j        |	j        |	j        |	j        |	j        j        d}
|                    |
           Dt          t          j        d|d          S # t6          $ r?}t          t          j        t;          |          d
t          j                  cY d }~S d }~ww xY w)Nr   r   r   r   r   r  r   r  r  rI   r   rL  zcategory id is requiredTrM  rP  )rF   rG   rU  rH   rV  rT  r"   r#   )r   r  r   r	  r
  r  r   r  r   rM   rN   rO   r   r   r   r&   rK   rX  rF   rG   rU  rH   r!  r   rr   r*   r+   r,   r.   r-   )r/   r0   r  r  r  r   rL  r[  rb   r_  rR   r4   s               r5   r6   zgetAllBlogs.post  sq   	X,W55E}5;;==B3F3F 56stttj(;yQQQGi(G+++CCIIKKH Yv/J\s t t  }C  }X  Y  Y  Y  Y!,**=99K [v/J\u v v  E  Z  [  [  [  [}++kVZde+ffH Qv/J\k l ltz  uP  Q  Q  Q  QH  	* 	* J!%"l!%"&)"4  ))))6+=y`hiijjj 	X 	X 	X6+Pbefgbhbhiiqw  rW  X  X  X  X  X  X  X  X  X	Xs3   C	G AG AG A$G 
H
4H?H
H
Nr   r;   r<   r5   rJ  rJ    s;        'X 'X 'XRX X X X Xr<   rJ  c                       e Zd Zd ZdS )getBlogCategoriesc                     	 t          |          }||dk    s|                                dk    rt          j        d          t	          j        |t          j        dg          }|d         }t          j	        
                    |d                                          }|s(t          t          j        d	d
t          j                  S t          j	        
                    d          }g }|D ]&}|j        |j        d}	|                    |	           't          t          j        d|d          S # t(          $ r?}
t          t          j        t-          |
          d
t          j                  cY d }
~
S d }
~
ww xY w)Nr   r   r   r   r   r  r   r  r  rI   r   Tr\   rQ  r"   r#   )r   r  r   r	  r
  r  r   r  r   rM   rN   rO   r   r   r   rY  rF   rZ  r*   r+   r,   r.   r-   )r/   r0   r  r  r  r   r\  rb   r]  rR   r4   s              r5   rK   zgetBlogCategories.get  s   	X,W55E}5;;==B3F3F 56stttj(;yQQQGi(G+++CCIIKKH Yv/J\s t t  }C  }X  Y  Y  Y  Y$,33T3JJGH * *&%(X  ))))6+=y`hiijjj 	X 	X 	X6+Pbefgbhbhiiqw  rW  X  X  X  X  X  X  X  X  X	Xs%   C	D4 A'D4 4
E=>4E82E=8E=NrS   r;   r<   r5   rb  rb    s(        X X X X Xr<   rb  c                       e Zd Zd ZdS )getBlogDetailsc                    	 t          |          }||dk    s|                                dk    rt          j        d          t	          j        |t          j        dg          }|d         }t          j	        
                    |d                                          }|s(t          t          j        d	d
t          j                  S |j                            d          }|s(t          t          j        dd
t          j                  S t"          j	        
                    |                                          }|s(t          t          j        dd
t          j                  S |j        |j        |j        |j        d}t          t          j        d|d          S # t.          $ r?}	t          t          j        t3          |	          d
t          j                  cY d }	~	S d }	~	ww xY w)Nr   r   r   r   r   r  r   r  r  rI   r   blog_idzBlog id is requiredr   rP  )rF   rG   rU  rH   r"   r#   )r   r  r   r	  r
  r  r   r  r   rM   rN   rO   r   r   r   rJ   rK   rX  rF   rG   rU  rH   r+   r,   r.   r-   )
r/   r0   r  r  r  r   rg  r[  rR   r4   s
             r5   rK   zgetBlogDetails.get  sF   	X,W55E}5;;==B3F3F 56stttj(;yQQQGi(G+++CCIIKKH Yv/J\s t t  }C  }X  Y  Y  Y  Y*..y99G Wv/J\q r r  {A  {V  W  W  W  W}+++99??AAH Qv/J\k l ltz  uP  Q  Q  Q  Q [ %0"*	 H 6+=y`hiijjj 	X 	X 	X6+Pbefgbhbhiiqw  rW  X  X  X  X  X  X  X  X  X	Xs2   C	F$ AF$ AF$ ,7F$ $
G-.4G("G-(G-NrS   r;   r<   r5   re  re    rH  r<   re  c                       e Zd Zd ZdS )addBlogBookmarkc                 ~   	 t          |          }||dk    s|                                dk    rt          j        d          t	          j        |t          j        dg          }|d         }t          j	        
                    |d                                          }|s(t          t          j        d	d
t          j                  S |j                            d          }|s(t          t          j        dd
t          j                  S t"          j	        
                    |                                          }|s(t          t          j        dd
t          j                  S t$          j	                            ||d          \  }}	|	s0|                                 t          t          j        dd
          S |                                 t          t          j        dd
          S # t.          $ r?}
t          t          j        t3          |
          d
t          j                  cY d }
~
S d }
~
ww xY w)Nr   r   r   r   r   r  r   r  r  rI   r   rg  zblog id is requiredr   zBlog not found)r_  r   is_bookmarkedRemoved from bookmark listAdded to bookmark list.)r   r  r   r	  r
  r  r   r  r   rM   rN   rO   r   r   r   r&   rK   rX  BlogsBookmarksget_or_createdeleter+   r   r,   r.   r-   )r/   r0   r  r  r  r   rg  r[  bookmark_postcreatedr4   s              r5   r6   zaddBlogBookmark.post!  s   	X,W55E}5;;==B3F3F 56stttj(;yQQQGi(G+++CCIIKKH Yv/J\s t t  }C  }X  Y  Y  Y  Yl&&y11G Wv/J\q r r  {A  {V  W  W  W  W}+++99??AAH Rv/J\l m mu{  vQ  R  R  R  R%3%;%I%Ix]etu%I%v%v"M7 o$$&&&v/ASo p pqqq""$$$v/ASl m mnnn 	X 	X 	X6+Pbefgbhbhiiqw  rW  X  X  X  X  X  X  X  X  X	X9   C	G3 AG3 AG3 ,AG3 /G3 3
H<=4H71H<7H<Nr7   r;   r<   r5   ri  ri     (        X X X X Xr<   ri  c                       e Zd Zd ZdS )bookmarkListc                 X   	 t          |          }||dk    s|                                dk    rt          j        d          t	          j        |t          j        dg          }|d         }t          j	        
                    |d                                          }|s(t          t          j        d	d
t          j                  S t          j	        
                    |j                  }g }|D ]M}|j        |j        j        |j        j        |j        j        |j        j        dd}	|                    |	           Nt          t          j        d|d          S # t2          $ r?}
t          t          j        t7          |
          d
t          j                  cY d }
~
S d }
~
ww xY w)Nr   r   r   r   r   r  r   r  r  rI   r   r   r_  )rF   
blog_titlerU  rH   r!  r   r"   r#   )r   r  r   r	  r
  r  r   r  r   rM   rN   rO   r   r   r   rn  rF   rg  r_  rG   rU  rH   r!  r*   r+   r,   r.   r-   r/   r0   r  r  r  r   r[  	blog_Datar_  	blog_datar4   s              r5   rK   zbookmarkList.get>  s   	X,W55E}5;;==B3F3F 56stttj(;yQQQGi(G+++CCIIKKH Yv/J\s t t  }C  }X  Y  Y  Y  Y%-44HK4HHHI  	, 	,!%!%!5"i/!%!5! 	   ++++6+=y`ijjkkk 	X 	X 	X6+Pbefgbhbhiiqw  rW  X  X  X  X  X  X  X  X  X	Xs%   C	E  BE   
F)*4F$F)$F)NrS   r;   r<   r5   rv  rv  =  rH  r<   rv  c                       e Zd Zd ZdS )addUserCardc           	         	 t          |          }||dk    s|                                dk    rt          j        d          t	          j        |t          j        dg          }|d         }t          j	        
                    |d                                          }|s(t          t          j        d	d
t          j                  S |j                            d          }|st          ddit          j                  S |j        s't%                      |_        |                                 |j        r|j        }t          j        t*          _        t*          j                            ||          }|rvt2          j	                            ||d         |d         |d         |d         |d                   }|j        |j        |j        |j        |j        |j         |j!        |j"        d}	t          t          j#        d|	d          S # tH          $ r4}
t          dtK          |
          it          j&                  cY d }
~
S d }
~
ww xY w)Nr   r   r   r   r   r  r   r  r  rI   r   card_idr'   card_id is required)sourcerF   	exp_monthexp_yearcustomerlast4)r   r  r  r  the_user_stripelast_digitsrF   r  r  r  r  r  r  
is_defaultr"   r#   )'r   r  r   r	  r
  r  r   r  r   rM   rN   rO   r   r   r   r&   rK   r   r   r   STRIPE_SECRET_KEYstripeapi_keyCustomercreate_source	UserCardsr   rF   r  r  r  r  r  r  r  r+   r,   r-   r.   )r/   r0   r  r  r  r   r  
createCardcardObjr%  r4   s              r5   r6   zaddUserCard.post]  s   !V#G,,5mu%++--2*=*=

)*g
h
hhZx2wiHHH7Y7|"""::@@BB8
 M6#>Pghhpv  qL  M  M  M  M\i((7
 \Y 56v?Z[[[[

! /11HMMOOO %G/FN..wg.FFJ  ''Xj>NYcdoYp  {E  FP  {Q  bl  mw  bx  EO  PW  EX'  Y  YW:#!/'%	 	W 6#5yX_``
a
aa	 V V V
Is1vv&v/T
U
U
UUUUUUUVs+   C	H 8H DH 
I)I IINr7   r;   r<   r5   r~  r~  \  s(        "V "V "V "V "Vr<   r~  c                       e Zd Zd ZdS )getUserCardc           
      2   	 t          |          }||dk    s|                                dk    rt          j        d          t	          j        |t          j        dg          }|d         }t          j	        
                    |d                                          }|s(t          t          j        d	d
t          j                  S t          j	        
                    |          }g }|D ]J}|j        |j        |j        |j        |j        |j        |j        |j        d}	|                    |	           Kt          t          j        d|d          S # t4          $ r4}
t          dt7          |
          it          j                  cY d }
~
S d }
~
ww xY w)Nr   r   r   r   r   r  r   r  r  rI   r   rx  r  r"   r#   r'   )r   r  r   r	  r
  r  r   r  r   rM   rN   rO   r   r   r   r  rF   r  r  r  r  r  r  r  r*   r+   r,   r-   r.   )r/   r0   r  r  r  r   card_objrb   cardrR   r4   s              r5   rK   zgetUserCard.get  s   V#G,,5mu%++--2*=*=

)*g
h
hhZx2wiHHH7Y7|"""::@@BB8
 M6#>Pghhpv  qL  M  M  M  M&&h&7788  t
'||+#/	 	H OOH
6#5yX`aa
b
bb	 V V V
Is1vv&v/T
U
U
UUUUUUUV%   C	E BE 
F")FFFNrS   r;   r<   r5   r  r    s(        V V V V Vr<   r  c                       e Zd Zd ZdS )deleteUserCardc                    	 t          |          }||dk    s|                                dk    rt          j        d          t	          j        |t          j        dg          }|d         }t          j	        
                    |d                                          }|s(t          t          j        d	d
t          j                  S |j                            d          }|st          ddit          j                  S t"          j	        
                    |                                          }|st          ddit          j                  S t          j        t&          _        t&          j                            |j        |j                   |                                 t          ddi          S # t4          $ r4}t          dt7          |          it          j                  cY d }~S d }~ww xY w)Nr   r   r   r   r   r  r   r  r  rI   r   r  r'   r  r   zNo card foundr"   )r   r  r   r	  r
  r  r   r  r   rM   rN   rO   r   r   r   r&   rK   r  r  r  r  r  delete_sourcer  r  rp  r,   r-   r.   )	r/   r0   r  r  r  r   r  r  r4   s	            r5   r6   zdeleteUserCard.post  s   V#G,,5mu%++--2*=*=

)*g
h
hhZx2wiHHH7Y7|"""::@@BB8
 M6#>Pghhpv  qL  M  M  M  M\i((7
 \Y 56v?Z[[[[&&'&2288::8
 VY09TUUUU.6>	?     ??
Iy)
*
**	 V V V
Is1vv&v/T
U
U
UUUUUUUVs2   C	F; 8F; AF; A$F; ;
G9)G4.G94G9Nr7   r;   r<   r5   r  r    s(        V V V V Vr<   r  c                       e Zd Zd ZdS )getCommunityListingc                    	 t          |          }||dk    s|                                dk    rt          j        d          t	          j        |t          j        dg          }|d         }t          j	        
                    |d                                          }|s(t          t          j        d	d
t          j                  S t          j	        
                    d          }g }|D ]}t           j	        
                    |j                                                  }	t&          j	        
                    |j                                                  }
t(          j	        
                    |j                                                  }|j        |j        j        |j        j        |j        j        |j        |j        |	|
|d	}|                    |           t          t          j        d|d          S # t8          $ r4}t          dt;          |          it          j                  cY d }~S d }~ww xY w)Nr   r   r   r   r   r  r   r  r  rI   r   Tr\   )	Community)	rF   r  	user_nameuser_avatarrH   rV  total_commentstotal_likestotal_dislikesr"   r#   r'   )r   r  r   r	  r
  r  r   r  r   rM   rN   rO   r   r   r   r  CommentsrF   r   LikesDislikesr   rr   r  rH   r!  r*   r+   r,   r-   r.   )r/   r0   r  r  r  r   community_objrb   	communityr  r  r  rR   r4   s                 r5   rK   zgetCommunityListing.get  s9   	_,W55E}5;;==B3F3F 56stttj(;yQQQGi(G+++CCIIKKH Yv/J\s t t  }C  }X  Y  Y  Y  Y%-44d4KKMH* * *	"*"2"9"9il"9"S"S"Y"Y"["[$}33	3MMSSUU"*"2"9"9il"9"S"S"Y"Y"["[ $,(~0!*!8#,>#8(0"+"6&4#.&4  ))))F,>PYaijjkkk 	_ 	_ 	_YA/8]^^^^^^^^^	_s%   C	H D6H 
I)H<6I<INrS   r;   r<   r5   r  r    s(         _  _  _  _  _r<   r  c                       e Zd Zd ZdS )addCommunityc                    	 t          |          }||dk    s|                                dk    rt          j        d          t	          j        |t          j        dg          }|d         }t          j	        
                    |d                                          }|s(t          t          j        d	d
t          j                  S |j                            d          }|s(t          t          j        dd
t          j                  S t"          j	                            ||           t          t          j        dd
          S # t(          $ r4}t          dt+          |          it          j                  cY d }~S d }~ww xY w)Nr   r   r   r   r   r  r   r  r  rI   r   community_contentcommunity_content is requriedr   rH   r"   r'   )r   r  r   r	  r
  r  r   r  r   rM   rN   rO   r   r   r   r&   rK   r  r   r+   r,   r-   r.   )r/   r0   r  r  r  r   r  r4   s           r5   r6   zaddCommunity.post  s   	_,W55E}5;;==B3F3F 56stttj(;yQQQGi(G+++CCIIKKH Yv/J\s t t  }C  }X  Y  Y  Y  Y ' 0 01D E E$ av/J\{ | |  EK  E`  a  a  a  a$$H=N$OOOF,>PYZZ[[[ 	_ 	_ 	_YA/8]^^^^^^^^^	_s+   C	E AE <E 
F)F FFNr7   r;   r<   r5   r  r    s(        _ _ _ _ _r<   r  c                       e Zd Zd ZdS )myCommunityListingc                 :   	 t          |          }||dk    s|                                dk    rt          j        d          t	          j        |t          j        dg          }|d         }t          j	        
                    |d                                          }|s(t          t          j        d	d
t          j                  S t          j	        
                    |d          }g }|D ]M}|j        |j        j        |j        j        |j        j        |j        |j        d}	|                    |	           Nt          t          j        d|d          S # t0          $ r4}
t          dt3          |
          it          j                  cY d }
~
S d }
~
ww xY w)Nr   r   r   r   r   r  r   r  r  rI   r   Tr  )rF   r  r  r  rH   rV  r"   r#   r'   )r   r  r   r	  r
  r  r   r  r   rM   rN   rO   r   r   r   r  rF   r   rr   r  rH   r!  r*   r+   r,   r-   r.   )r/   r0   r  r  r  r   r  rb   r  rR   r4   s              r5   rK   zmyCommunityListing.get  s   	_,W55E}5;;==B3F3F 56stttj(;yQQQGi(G+++CCIIKKH Yv/J\s t t  }C  }X  Y  Y  Y  Y%-448UY4ZZMH* 	* 	*	#,(~0!*!8#,>#8(0"+"6  ))))F,>PYaijjkkk 	_ 	_ 	_YA/8]^^^^^^^^^	_%   C	E BE 
F&)FFFNrS   r;   r<   r5   r  r    s(        _ _ _ _ _r<   r  c                       e Zd Zd Zd ZdS )editCommunityc                    	 t          |          }||dk    s|                                dk    rt          j        d          t	          j        |t          j        dg          }|d         }t          j	        
                    |d                                          }|s(t          t          j        d	d
t          j                  S | j        j                            d          }|s(t          t          j        dd
t          j                  S t$          j	        
                    |                                          }|s(t          t          j        dd
t          j                  S |j        |j        d}t          t          j        d|d          S # t,          $ r4}	t          dt/          |	          it          j                  cY d }	~	S d }	~	ww xY w)Nr   r   r   r   r   r  r   r  r  rI   r   community_idcommunity_id is requiredr   No community data found)rF   rH   r"   r#   r'   )r   r  r   r	  r
  r  r   r  r   rM   rN   rO   r   r   r   r0   rJ   rK   r  rF   rH   r+   r,   r-   r.   )
r/   r0   r  r  r  r   r  r  rR   r4   s
             r5   rK   zeditCommunity.get  s   	_,W55E}5;;==B3F3F 56stttj(;yQQQGi(G+++CCIIKKH Yv/J\s t t  }C  }X  Y  Y  Y  Y<488HHL \v/J\v w w  @F  @[  \  \  \  \%-44,4GGMMOOM  [v/J\u v v  E  Z  [  [  [  [ $&(0 H F,>PYaijjkkk 	_ 	_ 	_YA/8]^^^^^^^^^	_s2   C	F AF AF 1+F 
G')GGGc                    	 t          |          }||dk    s|                                dk    rt          j        d          t	          j        |t          j        dg          }|d         }t          j	        
                    |d                                          }|s(t          t          j        d	d
t          j                  S |j                            d          }|s(t          t          j        dd
t          j                  S |j                            d          }|s(t          t          j        dd
t          j                  S t"          j	        
                    |                              ||           t          t          j        dd
          S # t(          $ r4}t          dt+          |          it          j                  cY d }~S d }~ww xY w)Nr   r   r   r   r   r  r   r  r  rI   r   r  r  r  r  r   r  r"   r'   )r   r  r   r	  r
  r  r   r  r   rM   rN   rO   r   r   r   r&   rK   r  r*  r+   r,   r-   r.   )	r/   r0   r  r  r  r   r  r  r4   s	            r5   r6   zeditCommunity.post0  s   	_,W55E}5;;==B3F3F 56stttj(;yQQQGi(G+++CCIIKKH Yv/J\s t t  }C  }X  Y  Y  Y  Y"<++N;;L \v/J\v w w  @F  @[  \  \  \  \ ' 0 01D E E$ av/J\{ | |  EK  E`  a  a  a  a$$$55<<HUf<gggF,>PYZZ[[[ 	_ 	_ 	_YA/8]^^^^^^^^^	_s3   C	F% AF% AF% AF% %
G#/)GG#G#Nr   r;   r<   r5   r  r    s:        _ _ _4_ _ _ _ _r<   r  c                       e Zd Zd ZdS )deleteCommunityc                    	 t          |          }||dk    s|                                dk    rt          j        d          t	          j        |t          j        dg          }|d         }t          j	        
                    |d                                          }|s(t          t          j        d	d
t          j                  S |j                            d          }|s(t          t          j        dd
t          j                  S t"          j	        
                    |                                          }|s(t          t          j        dd
t          j                  S |                                 t          t          j        dd
          S # t(          $ r4}t          dt+          |          it          j                  cY d }~S d }~ww xY w)Nr   r   r   r   r   r  r   r  r  rI   r   r  r  r   r  r"   r'   )r   r  r   r	  r
  r  r   r  r   rM   rN   rO   r   r   r   r&   rK   r  rp  r+   r,   r-   r.   )	r/   r0   r  r  r  r   r  r  r4   s	            r5   r6   zdeleteCommunity.postH  s
   	_,W55E}5;;==B3F3F 56stttj(;yQQQGi(G+++CCIIKKH Yv/J\s t t  }C  }X  Y  Y  Y  Y"<++N;;L \v/J\v w w  @F  @[  \  \  \  \%-44,4GGMMOOM  [v/J\u v v  E  Z  [  [  [  [  """F,>PYZZ[[[ 	_ 	_ 	_YA/8]^^^^^^^^^	_s2   C	F AF AF ,/F 
G&)GGGNr7   r;   r<   r5   r  r  G  (        _ _ _ _ _r<   r  c                       e Zd Zd ZdS )likeCommunityc                 P   	 t          |          }||dk    s|                                dk    rt          j        d          t	          j        |t          j        dg          }|d         }t          j	        
                    |d                                          }|s(t          t          j        d	d
t          j                  S |j                            d          }|s(t          t          j        dd
t          j                  S t"          j	        
                    |                                          }|st          t          j        dd
          S t$          j	                            ||d          \  }}	|	s0|                                 t          t          j        dd
          S |                                 t          t          j        dd
          S # t.          $ r4}
t          dt1          |
          it          j                  cY d }
~
S d }
~
ww xY w)Nr   r   r   r   r   r  r   r  r  rI   r   r  r  r   No community found)r  r   is_likedzCommunity post is unlikezCommunity post is likedr'   )r   r  r   r	  r
  r  r   r  r   rM   rN   rO   r   r   r   r&   rK   r  r  ro  rp  r+   r   r,   r-   r.   )r/   r0   r  r  r  r   r  comm_obj
liked_postrr  r4   s              r5   r6   zlikeCommunity.post`  sC   	_,W55E}5;;==B3F3F 56stttj(;yQQQGi(G+++CCIIKKH Yv/J\s t t  }C  }X  Y  Y  Y  Y"<++N;;L \v/J\v w w  @F  @[  \  \  \  \ (//</@@FFHHH sv/J\p q qrrr"'-"="=V^hi"="j"jJ o!!###v/ASm n nooo!!!v/ASl m mnnn 	_ 	_ 	_YA/8]^^^^^^^^^	_9   C	G' AG' AG'  AG' 7/G' '
H%1)H H% H%Nr7   r;   r<   r5   r  r  _  s(        _ _ _ _ _r<   r  c                       e Zd Zd ZdS )dislikeCommunityc                 P   	 t          |          }||dk    s|                                dk    rt          j        d          t	          j        |t          j        dg          }|d         }t          j	        
                    |d                                          }|s(t          t          j        d	d
t          j                  S |j                            d          }|s(t          t          j        dd
t          j                  S t"          j	        
                    |                                          }|st          t          j        dd
          S t$          j	                            ||d          \  }}	|	s0|                                 t          t          j        dd
          S |                                 t          t          j        dd
          S # t.          $ r4}
t          dt1          |
          it          j                  cY d }
~
S d }
~
ww xY w)Nr   r   r   r   r   r  r   r  r  rI   r   r  r  r   r  )r  r   is_dislikedzDisliked is removedzCommunity post is dislikedr'   )r   r  r   r	  r
  r  r   r  r   rM   rN   rO   r   r   r   r&   rK   r  r  ro  rp  r+   r   r,   r-   r.   )r/   r0   r  r  r  r   r  r  disliked_postrr  r4   s              r5   r6   zdislikeCommunity.post  sF   	_,W55E}5;;==B3F3F 56stttj(;yQQQGi(G+++CCIIKKH Yv/J\s t t  }C  }X  Y  Y  Y  Y"<++N;;L \v/J\v w w  @F  @[  \  \  \  \ (//</@@FFHHH sv/J\p q qrrr%-%5%C%Ch\dqr%C%s%s"M7 r$$&&&v/ASh i ijjj""$$$v/ASo p pqqq 	_ 	_ 	_YA/8]^^^^^^^^^	_r  Nr7   r;   r<   r5   r  r  ~  (        _ _ _ _ _r<   r  c                       e Zd Zd ZdS )commentCommunityc                 .   	 t          |          }||dk    s|                                dk    rt          j        d          t	          j        |t          j        dg          }|d         }t          j	        
                    |d                                          }|s(t          t          j        d	d
t          j                  S |j                            d          }|s(t          t          j        dd
t          j                  S t"          j	        
                    |                                          }|st          t          j        dd
          S |j                            d          }|st          t          j        dd
          S t$          j	                            |||           t          t          j        dd
          S # t*          $ r4}	t          dt-          |	          it          j                  cY d }	~	S d }	~	ww xY w)Nr   r   r   r   r   r  r   r  r  rI   r   r  r  r   r  r8  r9  )rH   r  r   zComment added successfullyr'   )r   r  r   r	  r
  r  r   r  r   rM   rN   rO   r   r   r   r&   rK   r  r  r   r+   r,   r-   r.   )
r/   r0   r  r  r  r   r  r  r8  r4   s
             r5   r6   zcommentCommunity.post  s2   	_,W55E}5;;==B3F3F 56stttj(;yQQQGi(G+++CCIIKKH Yv/J\s t t  }C  }X  Y  Y  Y  Y"<++N;;L \v/J\v w w  @F  @[  \  \  \  \%-444EEKKMMM  sv/J\p q qrrrl&&y11G tv/J\q r rsss##GmQY#ZZZ6+=Okllmmm 	_ 	_ 	_YA/8]^^^^^^^^^	_s8   C	G AG AG  7G =G 
H )H	HHNr7   r;   r<   r5   r  r    r  r<   r  c                       e Zd Zd ZdS )editCommentCommunityc                 `   	 t          |          }||dk    s|                                dk    rt          j        d          t	          j        |t          j        dg          }|d         }t          j	        
                    |d                                          }|s(t          t          j        d	d
t          j                  S |j                            d          }|s(t          t          j        dd
t          j                  S |j                            d          }|s(t          t          j        dd
t          j                  S |j                            d          }|s(t          t          j        dd
t          j                  S t"          j	        
                    |||j                                      |           t          t          j        dd
          S # t*          $ r4}	t          dt-          |	          it          j                  cY d }	~	S d }	~	ww xY w)Nr   r   r   r   r   r  r   r  r  rI   r   
comment_idcomment_id is requiredr  r  rH   content is required)rF   Community_idr  )rH   zComment edit successfullyr'   )r   r  r   r	  r
  r  r   r  r   rM   rN   rO   r   r   r   r&   rK   r  rF   r*  r+   r,   r-   r.   )
r/   r0   r  r  r  r   r  r  rH   r4   s
             r5   r6   zeditCommentCommunity.post  sq   	_,W55E}5;;==B3F3F 56stttj(;yQQQGi(G+++CCIIKKH Yv/J\s t t  }C  }X  Y  Y  Y  Y )),77J Zv/J\t u u  ~D  ~Y  Z  Z  Z  Z"<++N;;L \v/J\v w w  @F  @[  \  \  \  \l&&y11G Wv/J\q r r  {A  {V  W  W  W  W##
U]U`#aahhqxhyyy6+=Ojkklll 	_ 	_ 	_YA/8]^^^^^^^^^	_s:   C	G/ AG/ AG/ AG/ AG/ /
H-9)H("H-(H-Nr7   r;   r<   r5   r  r    s(        _ _ _ _ _r<   r  c                       e Zd Zd ZdS )deleteCommentCommunityc                    	 t          |          }||dk    s|                                dk    rt          j        d          t	          j        |t          j        dg          }|d         }t          j	        
                    |d                                          }|s(t          t          j        d	d
t          j                  S |j                            d          }|s(t          t          j        dd
t          j                  S |j                            d          }|s(t          t          j        dd
t          j                  S t"          j	        
                    |||j                                                   t          t          j        dd
          S # t*          $ r4}t          dt-          |          it          j                  cY d }~S d }~ww xY w)Nr   r   r   r   r   r  r   r  r  rI   r   r  r  post_idzpost_id is required)rF   r  r  zComment deleted successfullyr'   )r   r  r   r	  r
  r  r   r  r   rM   rN   rO   r   r   r   r&   rK   r  rF   rp  r+   r,   r-   r.   )	r/   r0   r  r  r  r   r  r  r4   s	            r5   r6   zdeleteCommentCommunity.post  s   	_,W55E}5;;==B3F3F 56stttj(;yQQQGi(G+++CCIIKKH Yv/J\s t t  }C  }X  Y  Y  Y  Y )),77J Zv/J\t u u  ~D  ~Y  Z  Z  Z  Zl&&y11G Wv/J\q r r  {A  {V  W  W  W  W##z'(+#VV]]___6+=Omnnooo 	_ 	_ 	_YA/8]^^^^^^^^^	_s3   C	F) AF) AF) AF) )
G'3)G"G'"G'Nr7   r;   r<   r5   r  r    s(        _ _ _ _ _r<   r  c                       e Zd Zd ZdS )viewCommunityCommentsc                    	 t          |          }||dk    s|                                dk    rt          j        d          t	          j        |t          j        dg          }|d         }t          j	        
                    |d                                          }|s(t          t          j        d	d
t          j                  S | j        j                            d          }|s(t          t          j        dd
t          j                  S t$          j	        
                    |d          }g }|D ]B}	|	j        |	j        |	j        j        |	j        j        |	j        d}
|                    |
           Ct          t          j        d|d          S # t6          $ r4}t          dt9          |          it          j                  cY d }~S d }~ww xY w)Nr   r   r   r   r   r  r   r  r  rI   r   r  r  T)r  r]   )rF   r8  r  r  rV  r"   r#   r'   )r   r  r   r	  r
  r  r   r  r   rM   rN   rO   r   r   r   r0   rJ   rK   r  rF   rH   r   rr   r  r!  r*   r+   r,   r-   r.   )r/   r0   r  r  r  r   r  comment_objrb   r8  rR   r4   s               r5   rK   zviewCommunityComments.get  s   	_,W55E}5;;==B3F3F 56stttj(;yQQQGi(G+++CCIIKKH Yv/J\s t t  }C  }X  Y  Y  Y  Y<488HHL \v/J\v w w  @F  @[  \  \  \  \"*11ae1ffKH& * * %o ' 5"),"5!(!3  ))))F,>PYaijjkkk 	_ 	_ 	_YA/8]^^^^^^^^^	_s,   C	F AF BF 
G$)GGGNrS   r;   r<   r5   r  r    (        _ _ _ _ _r<   r  c                       e Zd Zd ZdS )addBillingDetailsc           
      X   	 t          |          }||dk    s|                                dk    rt          j        d          t	          j        |t          j        dg          }|d         }t          j	        
                    |d                                          }|s(t          t          j        d	d
t          j                  S |j                            d          }|s(t          t          j        dd
t          j                  S |j                            d          }|s(t          t          j        dd
t          j                  S |j                            d          }|s(t          t          j        dd
t          j                  S |j                            d          }	|	s(t          t          j        dd
t          j                  S |j                            d          }
|
s(t          t          j        dd
t          j                  S |j                            d          }|s(t          t          j        dd
t          j                  S |j                            d          }|s(t          t          j        dd
t          j                  S t"          j	                            |||||	|
||           t          t          j        dd
          S # t(          $ r4}t          dt+          |          it          j                  cY d }~S d }~ww xY w)Nr   r   r   r   r   r  r   r  r  rI   r   	full_namezfull name is requiredru   zemail is requiredaddress_onezaddress one is requiredaddress_twopin_codezpin code is requiredstatezstate is requiredcountryzcountry is required)r   r  ru   r  r  r  r  r  r"   r'   )r   r  r   r	  r
  r  r   r  r   rM   rN   rO   r   r   r   r&   rK   CustomerBillingr   r+   r,   r-   r.   )r/   r0   r  r  r  r   r  ru   r  r  r  r  r  r4   s                 r5   r6   zaddBillingDetails.post	  s   "	_,W55E}5;;==B3F3F 56stttj(;yQQQGi(G+++CCIIKKH Yv/J\s t t  }C  }X  Y  Y  Y  Y((55I Yv/J\s t t  }C  }X  Y  Y  Y  YL$$W--E Uv/J\o p px~  yT  U  U  U  U!,**=99K [v/J\u v v  E  Z  [  [  [  [!,**=99K [v/J\u v v  E  Z  [  [  [  [|''
33H Xv/J\r s s  |B  |W  X  X  X  XL$$W--E Uv/J\o p px~  yT  U  U  U  Ul&&y11G Wv/J\q r r  {A  {V  W  W  W  W#**(YUZgr  @K  U]05g + H H HF,>PYZZ[[[ 	_ 	_ 	_YA/8]^^^^^^^^^	_V   C	K+ AK+ AK+ AK+ AK+ AK+  AK+ $AK+ (AK+ +
L)5)L$L)$L)Nr7   r;   r<   r5   r  r    s(        #_ #_ #_ #_ #_r<   r  c                       e Zd Zd ZdS )getMyBillingDetailsc           
      2   	 t          |          }||dk    s|                                dk    rt          j        d          t	          j        |t          j        dg          }|d         }t          j	        
                    |d                                          }|s(t          t          j        d	d
t          j                  S t          j	        
                    |          }g }|D ]J}|j        |j        |j        |j        |j        |j        |j        |j        d}	|                    |	           Kt          t          j        d|d          S # t4          $ r4}
t          dt7          |
          it          j                  cY d }
~
S d }
~
ww xY w)Nr   r   r   r   r   r  r   r  r  rI   r   rx  )rF   r  ru   r  r  r  r  r  r"   )r$   r%   rb   r'   )r   r  r   r	  r
  r  r   r  r   rM   rN   rO   r   r   r   r  rF   r  ru   r  r  r  r  r  r*   r+   r,   r-   r.   )r/   r0   r  r  r  r   billing_objrb   billrR   r4   s              r5   rK   zgetMyBillingDetails.get0  s   	_,W55E}5;;==B3F3F 56stttj(;yQQQGi(G+++CCIIKKH Yv/J\s t t  }C  }X  Y  Y  Y  Y)1888IIKH# * *' $!Z"&"2"&"2#} J"l	 	 ))))F,>PYemnnooo 	_ 	_ 	_YA/8]^^^^^^^^^	_r  NrS   r;   r<   r5   r  r  /  r  r<   r  c                       e Zd Zd ZdS )purchaseSubscriptionc                    	 t          |          }||dk    s|                                dk    rt          j        d          t	          j        |t          j        dg          }|d         }t          j	        
                    |d                                          }|s(t          t          j        d	d
t          j                  S |j                            d          }|s(t          t          j        dd
t          j                  S |j                            d          }|s(t          t          j        dd
t          j                  S t"          j	                            |          }|s(t          t          j        dd
t          j                  S |j        dk    r1t'          j                    t+          d          z   }	|j        }
|
dz  }n0t'          j                    t+          d          z   }	|j        }
|
dz  }t          j        t0          _        t0          j                            |d|d          }|rt8          j	        
                    |d                                          }|rd|_        |                                 t>          j	                            ||t@          j         !                                |	d           d|_"        |                                 d S t          t          j        dd
t          j                  S # tF          $ r4}t          dtI          |          it          j%                  cY d }~S d }~ww xY w) Nr   r   r   r   r   r  r   r  r  rI   r   payment_tokenzpayment_token is requiredsubscription_idzsubscription_id is requiredr   zNo subscription plan foundmonthly   )daysd   im  usdzPurchase Subscription)amountcurrencyr  r/  Tr   	is_activeF)subscriptionr   buyDate
expiryDater  zPayment failedr'   )&r   r  r   r	  r
  r  r   r  r   rM   rN   rO   r   r   r   r&   rK   rE  rA  r
   todayr	   rB  r  r  r  Charger   CustomersSubscriptionsr  r   CustomerSubscriptionr   r   r   r,   r-   r.   )r/   r0   r  r  r  r   r  r  subscription_objexpiry_date
pay_amountr  chargesub_datar4   s                  r5   r6   zpurchaseSubscription.postP  s   /	_,W55E}5;;==B3F3F 56stttj(;yQQQGi(G+++CCIIKKH Yv/J\s t t  }C  }X  Y  Y  Y  Y#L,,_==M  ]v/J\w x x  AG  A\  ]  ]  ]  ]%l../@AAO" _v/J\y z z  CI  C^  _  _  _  _08<</<SS# ^v/J\x y y  BH  B]  ^  ^  ^  ^(I55"jllYB-?-?-??-3
#c)"jllYC-@-@-@@-3
#c)$6FN]))'	 *  F  	R19@@xZ^@__eegg $).H&MMOOO$,33CSZbmum~  nC  nC  nE  nE  T_  jn3  o  o  o,0)v/J\l m mu{  vQ  R  R  R  R 	_ 	_ 	_YA/8]^^^^^^^^^	_s@   C	L AL AL A	L EL 2'L 
M$)MMMNr7   r;   r<   r5   r  r  O  s(        0_ 0_ 0_ 0_ 0_r<   r  c                       e Zd Zd ZdS )mySubscriptionPlanc           	      f   	 t          |          }||dk    s|                                dk    rt          j        d          t	          j        |t          j        dg          }|d         }t          j	        
                    |d                                          }|s(t          t          j        d	d
t          j                  S t          j	        
                    |d                                          }|j        |j        j        |j        j        |j        j        |j        j        |j        j        |j        j        |j        j        d}t          t          j        d|d          S # t2          $ r4}t          dt5          |          it          j                  cY d }~S d }~ww xY w)Nr   r   r   r   r   r  r   r  r  rI   r   Tr  )rF   plan_id	plan_nameplan_descriptionrA  rB  rC  rD  r"   r#   r'   )r   r  r   r	  r
  r  r   r  r   rM   rN   rO   r   r   r   r  rF   r  r?  r@  rA  rB  rC  rD  r+   r,   r-   r.   )	r/   r0   r  r  r  r   r  rR   r4   s	            r5   rK   zmySubscriptionPlan.get  s   	_,W55E}5;;==B3F3F 56stttj(;yQQQGi(G+++CCIIKKH Yv/J\s t t  }C  }X  Y  Y  Y  Y 4 < C C8`d C e e k k m m&)+8;-:L#3#@#Y+8A(5;.;G"2"?"O
 
H F,>PYaijjkkk 	_ 	_ 	_YA/8]^^^^^^^^^	_s%   C	E2 B%E2 2
F0<)F+%F0+F0NrS   r;   r<   r5   r  r    r  r<   r  c                       e Zd Zd ZdS )	eduAiChatc                    	 t          |          }||dk    s|                                dk    rt          j        d          t	          j        |t          j        dg          }|d         }t          j	        
                    |d                                          }|s(t          t          j        d	d
t          j                  S |j                            d          }|s(t          t          j        dd
t          j                  S dt"          _        |}d}| }d|dg}	t"          j                            ||	d          }
|
j        d         j        d         }t          t          j        d|d          S # t0          $ r4}t          dt3          |          it          j                  cY d }~S d }~ww xY w)Nr   r   r   r   r   r  r   r  r  rI   r   questionzquestion is requiredz3sk-FM0b9XQWC5are01qh37mT3BlbkFJ1gtsePQsCq8B7haDMaimzgpt-3.5-turbor   )rolerH   r   )modelr   temperaturerH   r"   r#   r'   )r   r  r   r	  r
  r  r   r  r   rM   rN   rO   r   r   r   r&   rK   openair  ChatCompletionr   choicesr'   r+   r,   r-   r.   )r/   r0   r  r  r  r   r  promptmodel_enginer   responser'   r4   s                r5   r6   zeduAiChat.post  s   ;	_,W55E}5;;==B3F3F 56stttj(;yQQQGi(G+++CCIIKKH Yv/J\s t t  }C  }X  Y  Y  Y  Y|''
33H Xv/J\r s s  |B  |W  X  X  X  XRFNF*LkF!'F;;<H,33 4  H &q)1)<G6 F,>R[elmmnnn
  	_ 	_ 	_YA/8]^^^^^^^^^	_s,   C	F  AF  A/F   
F>
)F93F>9F>Nr7   r;   r<   r5   r  r    s(        <_ <_ <_ <_ <_r<   r  c                       e Zd Zd Zd ZdS )addBlogc                    	 t          |          }||dk    s|                                dk    rt          j        d          t	          j        |t          j        dg          }|d         }t          j	        
                    |d                                          }|s(t          t          j        d	d
t          j                  S t          j	        
                    d          }g }|D ]&}|j        |j        d}	|                    |	           't          t          j        d|d          S # t(          $ r4}
t          dt+          |
          it          j                  cY d }
~
S d }
~
ww xY w)Nr   r   r   r   r   r  r   r  r  rI   r   Tr\   rF   rZ  r"   )r$   r%   category_Datar'   )r   r  r   r	  r
  r  r   r  r   rM   rN   rO   r   r   r   rY  rF   rZ  r*   r+   r,   r-   r.   )r/   r0   r  r  r  r   blog_catr"  r]  r^  r4   s              r5   rK   zaddBlog.get  s   	_,W55E}5;;==B3F3F 56stttj(;yQQQGi(G+++CCIIKKH Yv/J\s t t  }C  }X  Y  Y  Y  Y%-444MMHM / /8  $$X....F,>PYjwxxyyy 	_ 	_ 	_YA/8]^^^^^^^^^	_s%   C	D4 A'D4 4
E2>)E-'E2-E2c                 N   	 t          |          }||dk    s|                                dk    rt          j        d          t	          j        |t          j        dg          }|d         }t          j	        
                    |d                                          }|s(t          t          j        d	d
t          j                  S |j                            d          }|s(t          t          j        dd
t          j                  S |j                            d          }|s(t          t          j        dd
t          j                  S t"          j	                            |          }|s(t          t          j        dd
t          j                  S |j                            d          }	|	s(t          t          j        dd
t          j                  S |j                            d          }
|
s(t          t          j        dd
t          j                  S t$          j	                            |||	|
|           t          t          j        dd
          S # t*          $ r4}t          dt-          |          it          j                  cY d }~S d }~ww xY w)Nr   r   r   r   r   r  r   r  r  rI   r   rU  Blog image is requiredrN  category is requiredr   category not foundrG   r.  rH   r  rU  rN  rG   rH   r   r"   r'   )r   r  r   r	  r
  r  r   r  r   rM   rN   rO   r   r   r   r&   rK   rY  rX  r   r+   r,   r-   r.   )r/   r0   r  r  r  r   rU  rN  catgeory_objrG   rH   r4   s               r5   r6   zaddBlog.post  s	   !	_,W55E}5;;==B3F3F 56stttj(;yQQQGi(G+++CCIIKKH Yv/J\s t t  }C  }X  Y  Y  Y  Y )),77J Zv/J\t u u  ~D  ~Y  Z  Z  Z  Z|''
33H Xv/J\r s s  |B  |W  X  X  X  X(0444AAL Vv/J\p q qy  zU  V  V  V  VL$$W--E Uv/J\o p px~  yT  U  U  U  Ul&&y11G Wv/J\q r r  {A  {V  W  W  W  WM  Z<V[dkqy zzzF,>PYZZ[[[  	_ 	_ 	_YA/8]^^^^^^^^^	_sG   C	I& AI& AI& A	I& AI& "AI& &?I& &
J$0)JJ$J$Nr   r;   r<   r5   r  r    s:        _ _ _0"_ "_ "_ "_ "_r<   r  c                       e Zd Zd Zd ZdS )editBlogc                    	 t          |          }||dk    s|                                dk    rt          j        d          t	          j        |t          j        dg          }|d         }t          j	        
                    |d                                          }|s(t          t          j        d	d
t          j                  S t          j	        
                    d          }g }|D ]&}|j        |j        d}	|                    |	           '|j                            d          }
|
s(t          t          j        dd
t          j                  S t*          j	                            |
          }|j        |j        |j        |j        d}t          t          j        d||d          S # t4          $ r4}t          dt7          |          it          j                  cY d }~S d }~ww xY w)Nr   r   r   r   r   r  r   r  r  rI   r   Tr\   r!  rg  Blog Id is requiredr   )rg  rG   rU  rH   r"   )r$   r%   r&   r"  r'   )r   r  r   r	  r
  r  r   r  r   rM   rN   rO   r   r   r   rY  rF   rZ  r*   rJ   rK   rX  rG   rU  rH   r+   r,   r-   r.   )r/   r0   r  r  r  r   r#  r"  r]  r^  rg  r[  rR   r4   s                 r5   rK   zeditBlog.get  sG   !	_,W55E}5;;==B3F3F 56stttj(;yQQQGi(G+++CCIIKKH Yv/J\s t t  }C  }X  Y  Y  Y  Y%-444MMHM / /8  $$X....*..y99G Wv/J\q r r  {A  {V  W  W  W  W ))w)77H"+ %0"*	 H F,>PYai  {H  I  I  J  J  J 	_ 	_ 	_YA/8]^^^^^^^^^	_s,   C	F4 BF4 AF4 4
G2>)G-'G2-G2c                    	 t          |          }||dk    s|                                dk    rt          j        d          t	          j        |t          j        dg          }|d         }t          j	        
                    |d                                          }|s(t          t          j        d	d
t          j                  S |j                            d          }|s(t          t          j        dd
t          j                  S |j                            d          }|s(t          t          j        dd
t          j                  S |j                            d          }|s(t          t          j        dd
t          j                  S t"          j	                            |          }	|	s(t          t          j        dd
t          j                  S |j                            d          }
|
s(t          t          j        dd
t          j                  S |j                            d          }|s(t          t          j        dd
t          j                  S t$          j	        
                    |                              ||	|
||           t          t          j        dd
          S # t*          $ r4}t          dt-          |          it          j                  cY d }~S d }~ww xY w)Nr   r   r   r   r   r  r   r  r  rI   r   rg  r-  rU  r%  rN  r&  r   r'  rG   r.  rH   r  r(  r"   r'   )r   r  r   r	  r
  r  r   r  r   rM   rN   rO   r   r   r   r&   rK   rY  rX  r*  r+   r,   r-   r.   )r/   r0   r  r  r  r   rg  rU  rN  r)  rG   rH   r4   s                r5   r6   zeditBlog.postB  s   %	_,W55E}5;;==B3F3F 56stttj(;yQQQGi(G+++CCIIKKH Yv/J\s t t  }C  }X  Y  Y  Y  Yl&&y11G Wv/J\q r r  {A  {V  W  W  W  W )),77J Zv/J\t u u  ~D  ~Y  Z  Z  Z  Z|''
33H Xv/J\r s s  |B  |W  X  X  X  X(0444AAL Vv/J\p q qy  zU  V  V  V  VL$$W--E Uv/J\o p px~  yT  U  U  U  Ul&&y11G Wv/J\q r r  {A  {V  W  W  W  WM  g ..55*Xdkp  zA  GO5  P  P  PF,>PYZZ[[[ 	_ 	_ 	_YA/8]^^^^^^^^^	_sO   C	J> AJ> AJ> AJ> A	J> "AJ> &AJ> *AJ> >
K<)K71K<7K<Nr   r;   r<   r5   r+  r+    s;        "_ "_ "_H&_ &_ &_ &_ &_r<   r+  c                       e Zd Zd ZdS )myBlogListingc           	      :   	 t          |          }||dk    s|                                dk    rt          j        d          t	          j        |t          j        dg          }|d         }t          j	        
                    |d                                          }|s(t          t          j        d	d
t          j                  S t          j	        
                    |          }g }|D ]N}|j        |j        |j        |j        j        |j        j        |j        |j        d}	|                    |	           Ot          t          j        d|d          S # t2          $ r4}
t          dt5          |
          it          j                  cY d }
~
S d }
~
ww xY w)Nr   r   r   r   r   r  r   r  r  rI   r   rx  )rF   rU  ry  rL  rN  rH   r!  r"   r#   r'   )r   r  r   r	  r
  r  r   r  r   rM   rN   rO   r   r   r   rX  rF   rU  rG   rN  rZ  rH   r!  r*   r+   r,   r-   r.   rz  s              r5   rK   zmyBlogListing.getl  s   	_,W55E}5;;==B3F3F 56stttj(;yQQQGi(G+++CCIIKKH Yv/J\s t t  }C  }X  Y  Y  Y  Y--X->>HI  , ,'"&/"&*#'=#3 $ 2#|"&/ 	   ++++F,>PYajkklll 	_ 	_ 	_YA/8]^^^^^^^^^	_r  NrS   r;   r<   r5   r0  r0  k  (        _ _ _ _ _r<   r0  c                       e Zd Zd ZdS )deleteMyBlogc                 B   	 t          |          }||dk    s|                                dk    rt          j        d          t	          j        |t          j        dg          }|d         }t          j	        
                    |d                                          }|s(t          t          j        d	d
t          j                  S |j                            d          }|s(t          t          j        dd
t          j                  S t"          j	                            |          }|                                 t          t          j        dd
          S # t(          $ r4}t          dt+          |          it          j                  cY d }~S d }~ww xY w)Nr   r   r   r   r   r  r   r  r  rI   r   rg  zblog_id is requiredr   r"   r'   )r   r  r   r	  r
  r  r   r  r   rM   rN   rO   r   r   r   r&   rK   rX  rp  r+   r,   r-   r.   )	r/   r0   r  r  r  r   rg  r[  r4   s	            r5   r6   zdeleteMyBlog.post  s   	_,W55E}5;;==B3F3F 56stttj(;yQQQGi(G+++CCIIKKH Yv/J\s t t  }C  }X  Y  Y  Y  Yl&&y11G Wv/J\q r r  {A  {V  W  W  W  W***88HOOF,>PYZZ[[[ 	_ 	_ 	_YA/8]^^^^^^^^^	_s,   C	E  AE  AE   
F*)FFFNr7   r;   r<   r5   r4  r4    r  r<   r4  c                       e Zd Zd ZdS )addEventc           
      X   	 t          |          }||dk    s|                                dk    rt          j        d          t	          j        |t          j        dg          }|d         }t          j	        
                    |d                                          }|s(t          t          j        d	d
t          j                  S |j                            d          }|s(t          t          j        dd
t          j                  S |j                            d          }|s(t          t          j        dd
t          j                  S |j                            d          }|s(t          t          j        dd
t          j                  S |j                            d          }	|	s(t          t          j        dd
t          j                  S |j                            d          }
|
s(t          t          j        dd
t          j                  S |j                            d          }|s(t          t          j        dd
t          j                  S |j                            d          }|s(t          t          j        dd
t          j                  S t"          j	                            |||	|
||||          }t          t          j        dd
          S # t(          $ r4}t          dt+          |          it          j                  cY d }~S d }~ww xY w)Nr   r   r   r   r   r  r   r  r  rI   r   event_imageevent image is required
event_nameevent name is requiredr/  r0  r
   date is required
start_timestart time is requiredend_timeend time is requiredlocationlocation is requiredr;  r/  r
   r>  r@  rB  r   r9  r"   r'   )r   r  r   r	  r
  r  r   r  r   rM   rN   rO   r   r   r   r&   rK   Eventsr   r+   r,   r-   r.   )r/   r0   r  r  r  r   r9  r;  r/  r
   r>  r@  rB  	event_objr4   s                  r5   r6   zaddEvent.post  s   )	_,W55E}5;;==B3F3F 56stttj(;yQQQGi(G+++CCIIKKH Yv/J\s t t  }C  }X  Y  Y  Y  Y!,**=99K [v/J\u v v  E  Z  [  [  [  [ )),77J Zv/J\t u u  ~D  ~Y  Z  Z  Z  Z!,**=99K [v/J\u v v  E  Z  [  [  [  [<##F++D Tv/J\n o ow}  xS  T  T  T  T )),77J Zv/J\t u u  ~D  ~Y  Z  Z  Z  Z|''
33H Xv/J\r s s  |B  |W  X  X  X  X|''
33H Xv/J\r s s  |B  |W  X  X  X  X--:T_fj  wA  KS  ]e  ks  @K-  L  LIF,>PYZZ[[[ 	_ 	_ 	_YA/8]^^^^^^^^^	_r  Nr7   r;   r<   r5   r7  r7    s(        *_ *_ *_ *_ *_r<   r7  c                       e Zd Zd Zd ZdS )	editEventc                    	 t          |          }||dk    s|                                dk    rt          j        d          t	          j        |t          j        dg          }|d         }t          j	        
                    |d                                          }|s(t          t          j        d	d
t          j                  S |j                            d          }|s(t          t          j        dd
t          j                  S t"          j	        
                    ||                                          }|s(t          t          j        dd
t          j                  S |j        |j        |j        |j        j        |j        |j        |j        |j        |j        |j        d
}t          t          j        d|d          S # t:          $ r4}	t          dt=          |	          it          j                  cY d }	~	S d }	~	ww xY w)Nr   r   r   r   r   r  r   r  r  rI   r   event_idevent id is required)rF   r  No event found
rF   r9  r;  r   r/  r
   r>  r@  rB  rV  r"   r#   r'    r   r  r   r	  r
  r  r   r  r   rM   rN   rO   r   r   r   GETrK   rE  rF   r9  r;  r   r/  r
   r>  r@  rB  r!  r+   r,   r-   r.   
r/   r0   r  r  r  r   rJ  rF  rR   r4   s
             r5   rK   zeditEvent.get  sB   "	_,W55E}5;;==B3F3F 56stttj(;yQQQGi(G+++CCIIKKH Yv/J\s t t  }C  }X  Y  Y  Y  Y{z22H Xv/J\r s s  |B  |W  X  X  X  X..H.QQWWYYI Rv/J\l m mu{  vQ  R  R  R  R  l'3&1 ~('3 ~&1$-$-&1 H F,>PYaijjkkk 	_ 	_ 	_YA/8]^^^^^^^^^	_s3   C	G AG AG -A G 
H)HHHc           
         	 t          |          }||dk    s|                                dk    rt          j        d          t	          j        |t          j        dg          }|d         }t          j	        
                    |d                                          }|s(t          t          j        d	d
t          j                  S |j                            d          }|s(t          t          j        dd
t          j                  S |j                            d          }|s(t          t          j        dd
t          j                  S |j                            d          }|s(t          t          j        dd
t          j                  S |j                            d          }	|	s(t          t          j        dd
t          j                  S |j                            d          }
|
s(t          t          j        dd
t          j                  S |j                            d          }|s(t          t          j        dd
t          j                  S |j                            d          }|s(t          t          j        dd
t          j                  S |j                            d          }|s(t          t          j        dd
t          j                  S t"          j	        
                    |                              ||	|
|||||          }t          t          j        dd
          S # t(          $ r4}t          dt+          |          it          j                  cY d }~S d }~ww xY w) Nr   r   r   r   r   r  r   r  r  rI   r   rJ  rK  r9  r:  r;  r<  r/  r0  r
   r=  r>  r?  r@  rA  rB  rC  r   rD  r"   r'   )r   r  r   r	  r
  r  r   r  r   rM   rN   rO   r   r   r   r&   rK   rE  r*  r+   r,   r-   r.   )r/   r0   r  r  r  r   rJ  r9  r;  r/  r
   r>  r@  rB  rF  r4   s                   r5   r6   zeditEvent.post  s?   -	_,W55E}5;;==B3F3F 56stttj(;yQQQGi(G+++CCIIKKH Yv/J\s t t  }C  }X  Y  Y  Y  Y|''
33H Xv/J\r s s  |B  |W  X  X  X  X!,**=99K [v/J\u v v  E  Z  [  [  [  [ )),77J Zv/J\t u u  ~D  ~Y  Z  Z  Z  Z!,**=99K [v/J\u v v  E  Z  [  [  [  [<##F++D Tv/J\n o ow}  xS  T  T  T  T )),77J Zv/J\t u u  ~D  ~Y  Z  Z  Z  Z|''
33H Xv/J\r s s  |B  |W  X  X  X  X|''
33H Xv/J\r s s  |B  |W  X  X  X  X--8-<<CCQ[ju  }A  MW  ai  s{  AI  VaC  b  bIF,>PYZZ[[[ 	_ 	_ 	_YA/8]^^^^^^^^^	_s]   C	M AM AM AM AM AM  AM $AM (AM ,AM 
N)M<6N<NNr   r;   r<   r5   rH  rH    s;        #_ #_ #_N._ ._ ._ ._ ._r<   rH  c                       e Zd Zd ZdS )myEventListingc                 V   	 t          |          }||dk    s|                                dk    rt          j        d          t	          j        |t          j        dg          }|d         }t          j	        
                    |d                                          }|s(t          t          j        d	d
t          j                  S t          j	        
                    |d          }g }|D ][}|j        |j        |j        |j        j        |j        |j        |j        |j        |j        |j        d
}	|                    |	           \t          t          j        d|d          S # t8          $ r4}
t          dt;          |
          it          j                  cY d }
~
S d }
~
ww xY w)Nr   r   r   r   r   r  r   r  r  rI   r   T)r  r]   rM  r"   r#   r'   r   r  r   r	  r
  r  r   r  r   rM   rN   rO   r   r   r   rE  rF   r9  r;  r   r/  r
   r>  r@  rB  r!  r*   r+   r,   r-   r.   r/   r0   r  r  r  r   rF  rb   eventrR   r4   s              r5   rK   zmyEventListing.get.  s   	_,W55E}5;;==B3F3F 56stttj(;yQQQGi(G+++CCIIKKH Yv/J\s t t  }C  }X  Y  Y  Y  Y..(VZ.[[IH" * *("'"3!&!1 :="'"3 :!&!1$~$~!&!1  ))))F,>PYaijjkkk 	_ 	_ 	_YA/8]^^^^^^^^^	_s%   C	E* BE* *
F(4)F#F(#F(NrS   r;   r<   r5   rS  rS  -  r2  r<   rS  c                       e Zd Zd ZdS )deleteEventc                    	 t          |          }||dk    s|                                dk    rt          j        d          t	          j        |t          j        dg          }|d         }t          j	        
                    |d                                          }|s(t          t          j        d	d
t          j                  S |j                            d          }|s(t          t          j        dd
t          j                  S t"          j	                            ||          }|s(t          t          j        dd
t          j                  S t%          j                    |_        |                                 t          t          j        dd
          S # t.          $ r4}t          dt1          |          it          j                  cY d }~S d }~ww xY w)Nr   r   r   r   r   r  r   r  r  rI   r   rJ  zevent_id is requiredrF   r   rL  r"   r'   )r   r  r   r	  r
  r  r   r  r   rM   rN   rO   r   r   r   r&   rK   rE  r   r   r   r   r+   r,   r-   r.   )	r/   r0   r  r  r  r   rJ  rF  r4   s	            r5   r6   zdeleteEvent.postO  s   	_,W55E}5;;==B3F3F 56stttj(;yQQQGi(G+++CCIIKKH Yv/J\s t t  }C  }X  Y  Y  Y  Y|''
33H Xv/J\r s s  |B  |W  X  X  X  X .,,((,KKI Rv/J\l m mu{  vQ  R  R  R  R!)INNF,>PYZZ[[[ 	_ 	_ 	_YA/8]^^^^^^^^^	_s3   C	F# AF# A
F# AF# #
G!-)GG!G!Nr7   r;   r<   r5   rY  rY  N  s(        _ _ _ _ _r<   rY  c                       e Zd Zd ZdS )allEventListingc                 T   	 t          |          }||dk    s|                                dk    rt          j        d          t	          j        |t          j        dg          }|d         }t          j	        
                    |d                                          }|s(t          t          j        d	d
t          j                  S t          j	        
                    d          }g }|D ][}|j        |j        |j        |j        j        |j        |j        |j        |j        |j        |j        d
}	|                    |	           \t          t          j        d|d          S # t8          $ r4}
t          dt;          |
          it          j                  cY d }
~
S d }
~
ww xY w)Nr   r   r   r   r   r  r   r  r  rI   r   Tr\   rM  r"   r#   r'   rU  rV  s              r5   rK   zallEventListing.getj  s   	_,W55E}5;;==B3F3F 56stttj(;yQQQGi(G+++CCIIKKH Yv/J\s t t  }C  }X  Y  Y  Y  Y...EEIH" * *("'"3!&!1 :="'"3 :!&!1$~$~!&!1  ))))F,>PYaijjkkk 	_ 	_ 	_YA/8]^^^^^^^^^	_s%   C	E) BE) )
F'3)F"F'"F'NrS   r;   r<   r5   r]  r]  i  r2  r<   r]  c                       e Zd Zd ZdS )viewEventDetailsc                    	 t          |          }||dk    s|                                dk    rt          j        d          t	          j        |t          j        dg          }|d         }t          j	        
                    |d                                          }|s(t          t          j        d	d
t          j                  S |j                            d          }|s(t          t          j        dd
t          j                  S t"          j	        
                    |d                                          }|j        |j        |j        |j        j        |j        |j        |j        |j        |j        |j        d
}t          t          j        d|d          S # t:          $ r4}	t          dt=          |	          it          j                  cY d }	~	S d }	~	ww xY w)Nr   r   r   r   r   r  r   r  r  rI   r   rJ  rK  TrF   r]   rM  r"   r#   r'   rN  rP  s
             r5   rK   zviewEventDetails.get  s    	_,W55E}5;;==B3F3F 56stttj(;yQQQGi(G+++CCIIKKH Yv/J\s t t  }C  }X  Y  Y  Y  Y{z22H Xv/J\r s s  |B  |W  X  X  X  X..8T.RRXXZZI  l'3&1 ~('3 ~&1$-$-&1 H F,>PYaijjkkk 	_ 	_ 	_YA/8]^^^^^^^^^	_s,   C	F$ AF$ BF$ $
G".)GG"G"NrS   r;   r<   r5   r`  r`    s(        !_ !_ !_ !_ !_r<   r`  c                       e Zd Zd ZdS )	saveEventc                 ~   	 t          |          }||dk    s|                                dk    rt          j        d          t	          j        |t          j        dg          }|d         }t          j	        
                    |d                                          }|s(t          t          j        d	d
t          j                  S |j                            d          }|s(t          t          j        dd
t          j                  S t"          j	        
                    |                                          }|s(t          t          j        dd
t          j                  S t$          j	                            ||d          \  }}	|	s0|                                 t          t          j        dd
          S |                                 t          t          j        dd
          S # t.          $ r?}
t          t          j        t3          |
          d
t          j                  cY d }
~
S d }
~
ww xY w)Nr   r   r   r   r   r  r   r  r  rI   r   rJ  rK  r   zEvent not found)rW  r   is_savedzRemoved from saved listzAdded to saved list.)r   r  r   r	  r
  r  r   r  r   rM   rN   rO   r   r   r   r&   rK   rE  SavedEventsro  rp  r+   r   r,   r.   r-   )r/   r0   r  r  r  r   rJ  rF  saved_eventrr  r4   s              r5   r6   zsaveEvent.post  s   	X,W55E}5;;==B3F3F 56stttj(;yQQQGi(G+++CCIIKKH Yv/J\s t t  }C  }X  Y  Y  Y  Y|''
33H Xv/J\r s s  |B  |W  X  X  X  X--8-<<BBDDI Sv/J\m n nv|  wR  S  S  S  S#.#6#D#D9Zblm#D#n#n K l""$$$v/ASl m mnnn  """v/ASi j jkkk 	X 	X 	X6+Pbefgbhbhiiqw  rW  X  X  X  X  X  X  X  X  X	Xrs  Nr7   r;   r<   r5   rd  rd    rt  r<   rd  c                       e Zd Zd ZdS )savedEventListingc                    	 t          |          }||dk    s|                                dk    rt          j        d          t	          j        |t          j        dg          }|d         }t          j	        
                    |d                                          }|s(t          t          j        d	d
t          j                  S t          j	        
                    |          }g }|D ]}|j        |j        j        |j        j        |j        j        |j        j        j        |j        j        |j        j        |j        j        |j        j        |j        j        |j        j        d}	|                    |	           t          t          j        d|d          S # t:          $ r?}
t          t          j        t?          |
          d
t          j                  cY d }
~
S d }
~
ww xY w)Nr   r   r   r   r   r  r   r  r  rI   r   r  )rF   rJ  r9  r;  r   r/  r
   r>  r@  rB  rV  r"   r#   ) r   r  r   r	  r
  r  r   r  r   rM   rN   rO   r   r   r   rg  rF   rW  r9  r;  r   r/  r
   r>  r@  rB  r!  r*   r+   r,   r.   r-   )r/   r0   r  r  r  r   rh  rb   savedrR   r4   s              r5   rK   zsavedEventListing.get  s   	X,W55E}5;;==B3F3F 56stttj(;yQQQGi(G+++CCIIKKH Yv/J\s t t  }C  }X  Y  Y  Y  Y&.555IIKH$ * *( %"'+"9!&!7 ;+."'+"9 ;+!&!7${3${3!&!7  ))))F,>PYaijjkkk 	X 	X 	X6+Pbefgbhbhiiqw  rW  X  X  X  X  X  X  X  X  X	Xs%   C	F! CF! !
G*+4G%G*%G*NrS   r;   r<   r5   rj  rj    s(         X  X  X  X  Xr<   rj  c                       e Zd Zd ZdS )getInvestmentNewsc                    	 t          |          }||dk    s|                                dk    rt          j        d          t	          j        |t          j        dg          }|d         }t          j	        
                    |d                                          }|s(t          t          j        d	d
t          j                  S dd l}d}d}dd|d}	 |j        ||	          }
|
j        dk    rG|
                                }|                    dg           }t          t          j        d|d          S t          t          j        d|
j         d|
j         d
t          j                  S # t*          $ r?}t          t          j        t/          |          d
t          j                  cY d }~S d }~ww xY w)Nr   r   r   r   r   r  r   r  r  rI   r   r   $https://newsapi.org/v2/top-headlines cab020d5af044de3851b2c8ed3955d07usbusinessr  rN  apiKeyparams   articlesr"   r#   zError: z - )r   r  r   r	  r
  r  r   r  r   rM   rN   rO   r   r   r   requestsrK   r$   jsonr+   textr,   r.   r-   )r/   r0   r  r  r  r   r{  urlr  rx  r  r&   rz  r4   s                 r5   rK   zgetInvestmentNews.get  sL   	X,W55E}5;;==B3F3F 56stttj(;yQQQGi(G+++CCIIKKH Yv/J\s t t  }C  }X  Y  Y  Y  YOOO8C8G  &! F $x|C777H#s**}}88J330BT]em!n!nooov/J  ]Ofnfz  ]O  ]O  @H  @M  ]O  ]O  !P  !P  X^  Xs  t  t  t  t 	X 	X 	X6+Pbefgbhbhiiqw  rW  X  X  X  X  X  X  X  X  X	Xs+   C	E6 A1E6 >7E6 6
F? 4F:4F?:F?NrS   r;   r<   r5   ro  ro    r  r<   ro  c                       e Zd Zd ZdS )saveInvestmentNewsc                 Z   	 t          |          }||dk    s|                                dk    rt          j        d          t	          j        |t          j        dg          }|d         }t          j	        
                    |d                                          }|s(t          t          j        d	d
t          j                  S |j                            d          }|s(t          t          j        dd
t          j                  S |j                            d          }|s(t          t          j        dd
t          j                  S |j                            d          }|s(t          t          j        dd
t          j                  S |j                            d          }	|	s(t          t          j        dd
t          j                  S |j                            d          }
|
s(t          t          j        dd
t          j                  S t"          j	                            ||||	|
|           t          t          j        dd
          S # t(          $ r?}t          t          j        t-          |          d
t          j                  cY d }~S d }~ww xY w)Nr   r   r   r   r   r  r   r  r  rI   r   rG   r.  r/  r0  r~  zurl is required
urltoimagezurltoimage is requiredpublished_atzpublished_at is required)rG   r/  r~  r  r  r   r"   )r   r  r   r	  r
  r  r   r  r   rM   rN   rO   r   r   r   r&   rK   	SavedNewsr   r+   r,   r.   r-   )r/   r0   r  r  r  r   rG   r/  r~  r  r  r4   s               r5   r6   zsaveInvestmentNews.post  sA   #	X,W55E}5;;==B3F3F 56stttj(;yQQQGi(G+++CCIIKKH Yv/J\s t t  }C  }X  Y  Y  Y  Y\%%g..E Uv/J\o p px~  yT  U  U  U  U!,**=99K [v/J\u v v  E  Z  [  [  [  [,""5))C Sv/J\m n nv|  wR  S  S  S  S )),77J Zv/J\t u u  ~D  ~Y  Z  Z  Z  Z"<++N;;L \v/J\v w w  @F  @[  \  \  \  \$$5[S\f  uA  GO$  P  P  PF,>PYZZ[[[ 	X 	X 	X6+Pbefgbhbhiiqw  rW  X  X  X  X  X  X  X  X  X	XsH   C	I! AI! AI! AI! AI! AI!  A I! !
J*+4J%J*%J*Nr7   r;   r<   r5   r  r    s(        $X $X $X $X $Xr<   r  c                       e Zd Zd ZdS )removedSavedNewsc                 X   	 t          |          }||dk    s|                                dk    rt          j        d          t	          j        |t          j        dg          }|d         }t          j	        
                    |d                                          }|s(t          t          j        d	d
t          j                  S |j                            d          }|s(t          t          j        dd
t          j                  S t"          j	                            |          }|                                 t          t          j        dd
          S # t(          $ r?}t          t          j        t-          |          d
t          j                  cY d }~S d }~ww xY w)Nr   r   r   r   r   r  r   r  r  rI   r   saved_idzsaved id is requiredr   r"   )r   r  r   r	  r
  r  r   r  r   rM   rN   rO   r   r   r   r&   rK   r  rp  r+   r,   r.   r-   )	r/   r0   r  r  r  r   r  news_objr4   s	            r5   r6   zremovedSavedNews.post=  s   	X,W55E}5;;==B3F3F 56stttj(;yQQQGi(G+++CCIIKKH Yv/J\s t t  }C  }X  Y  Y  Y  Y|''
33H Xv/J\r s s  |B  |W  X  X  X  X (,,(,;;HOOF,>PYZZ[[[ 	X 	X 	X6+Pbefgbhbhiiqw  rW  X  X  X  X  X  X  X  X  X	X,   C	E  AE  AE   
F)*4F$F)$F)Nr7   r;   r<   r5   r  r  <  r;  r<   r  c                       e Zd Zd ZdS )mySavedNewsc           	      F   	 t          |          }||dk    s|                                dk    rt          j        d          t	          j        |t          j        dg          }|d         }t          j	        
                    |d                                          }|s(t          t          j        d	d
t          j                  S t          j	        
                    |j                  }g }|D ]D}|j        |j        |j        |j        |j        |j        |j        d}	|                    |	           Et          t          j        d|d          S # t2          $ r?}
t          t          j        t7          |
          d
t          j                  cY d }
~
S d }
~
ww xY w)Nr   r   r   r   r   r  r   r  r  rI   r   rl  )rF   rG   r/  r~  r  r  
saved_datar"   r#   )r   r  r   r	  r
  r  r   r  r   rM   rN   rO   r   r   r   r  rF   rG   r/  r~  r  r  r!  r*   r+   r,   r.   r-   )r/   r0   r  r  r  r   r  rb   newsrR   r4   s              r5   rK   zmySavedNews.getS  s   	X,W55E}5;;==B3F3F 56stttj(;yQQQGi(G+++CCIIKKH Yv/J\s t t  }C  }X  Y  Y  Y  Y (//(+/FFHH  * * J"&"2(!%$($5"&/	 	 ))))F,>PYaijjkkk 	X 	X 	X6+Pbefgbhbhiiqw  rW  X  X  X  X  X  X  X  X  X	Xs%   C	E B
E 
F !4FF F NrS   r;   r<   r5   r  r  R  rH  r<   r  c                       e Zd Zd ZdS )getInvestmentEducationCategoryc                    	 t          |          }||dk    s|                                dk    rt          j        d          t	          j        |t          j        dg          }|d         }t          j	        
                    |d                                          }|s(t          t          j        d	d
t          j                  S t          j	        
                    dd          }g }|D ],}|j        |j        |j        d}	|                    |	           -t          t          j        d|d          S # t*          $ r?}
t          t          j        t/          |
          d
t          j                  cY d }
~
S d }
~
ww xY w)Nr   r   r   r   r   r  r   r  r  rI   r   TrO  )rF   rZ  
is_premiumr"   r#   )r   r  r   r	  r
  r  r   r  r   rM   rN   rO   r   r   r   InvestmentEducationCategoryrF   rZ  is_subscriptionr*   r+   r,   r.   r-   )r/   r0   r  r  r  r   rN  rb   r]  rR   r4   s              r5   rK   z"getInvestmentEducationCategory.getr  s   	X,W55E}5;;==B3F3F 56stttj(;yQQQGi(G+++CCIIKKH Yv/J\s t t  }C  }X  Y  Y  Y  Y2:AAUYabAccHH * *8!$!4 
 ))))F,>PYaijjkkk 	X 	X 	X6+Pbefgbhbhiiqw  rW  X  X  X  X  X  X  X  X  X	Xs%   C	D; A.D; ;
F4E?9F?FNrS   r;   r<   r5   r  r  q  r   r<   r  c                       e Zd Zd ZdS )!getInvestmentEducationSubcategoryc                    	 t          |          }||dk    s|                                dk    rt          j        d          t	          j        |t          j        dg          }|d         }t          j	        
                    |d                                          }|s(t          t          j        d	d
t          j                  S |j                            d          }|s(t          t          j        dd
t          j                  S t"          j	        
                    |dd          }g }|D ]<}	|	j        |	j        |	j        j        |	j        j        d}
|                    |
           =t          t          j        d|d          S # t.          $ r?}t          t          j        t3          |          d
t          j                  cY d }~S d }~ww xY w)Nr   r   r   r   r   r  r   r  r  rI   r   main_idzMain id is requiredTrM  )rF   rZ  rL  rR  r"   r#   )r   r  r   r	  r
  r  r   r  r   rM   rN   rO   r   r   r   rO  rK   InvestmentEducationSubCategoryrF   rZ  rN  r*   r+   r,   r.   r-   )r/   r0   r  r  r  r   r  rF  rb   rG  rR   r4   s               r5   rK   z%getInvestmentEducationSubcategory.get  s-   	X,W55E}5;;==B3F3F 56stttj(;yQQQGi(G+++CCIIKKH Yv/J\s t t  }C  }X  Y  Y  Y  Ykooi00G Wv/J\q r r  {A  {V  W  W  W  W4<CCwjnvwCyyGH * *8"%,/$'L$5	  ))))F,>PYaijjkkk 	X 	X 	X6+Pbefgbhbhiiqw  rW  X  X  X  X  X  X  X  X  X	Xs,   C	F AF A?F 
G4GGGNrS   r;   r<   r5   r  r    s(        X X X X Xr<   r  c                       e Zd Zd ZdS )getInvestmentEducationDetailsc           
      l   	 t          |          }||dk    s|                                dk    rt          j        d          t	          j        |t          j        dg          }|d         }t          j	        
                    |d                                          }|s(t          t          j        d	d
t          j                  S |j                            d          }|s(t          t          j        dd
t          j                  S t"          j	        
                    |                                          }|s(t          t          j        dd
t          j                  S |j        |j        j        j        |j        j        j        |j        j        j        |j        j        j        |j        |j        |j        |j        d	}t          t          j        d|d          S # t6          $ r?}	t          t          j        t;          |	          d
t          j                  cY d }	~	S d }	~	ww xY w)Nr   r   r   r   r   r  r   r  r  rI   r   sub_category_idzsub_category_id is required)sub_categoryzNo content found)	rF   main_category_idmain_category_namer  sub_category_namerG   rH   videorV  r"   r#   )r   r  r   r	  r
  r  r   r  r   rM   rN   rO   r   r   r   rO  rK   InvestmentEducationContentrF   r  rN  rZ  rG   rH   r  r!  r+   r,   r.   r-   )
r/   r0   r  r  r  r   r  content_objrR   r4   s
             r5   rK   z!getInvestmentEducationDetails.get  s~   !	X,W55E}5;;==B3F3F 56stttj(;yQQQGi(G+++CCIIKKH Yv/J\s t t  }C  }X  Y  Y  Y  Y%koo.?@@O" _v/J\y z z  CI  C^  _  _  _  _4<CCSbCcciikkK Tv/J\n o ow}  xS  T  T  T  T !^#.#;#D#G%0%=%F%K"-":"C"F$/$<$E$J#)%-#)(3
 
H F,>PYaijjkkk 	X 	X 	X6+Pbefgbhbhiiqw  rW  X  X  X  X  X  X  X  X  X	Xs3   C	G* AG* AG* ,A=G* *
H344H.(H3.H3NrS   r;   r<   r5   r  r    s(        "X "X "X "X "Xr<   r  c                       e Zd Zd ZdS )topGainersStocksc                    	 t          |          }||dk    s|                                dk    rt          j        d          t	          j        |t          j        dg          }|d         }t          j	        
                    |d                                          }|s(t          t          j        d	d
t          j                  S t          j        d          }d |D             }d |D             }g }	|D ]}
|	                    |
           t          t          j        d|	d          S # t&          $ r?}t          t          j        t+          |          d
t          j                  cY d }~S d }~ww xY w)Nr   r   r   r   r   r  r   r  r  rI   r   1https://finance.yahoo.com/markets/stocks/gainers/c                 :    g | ]}|                     d           S recordsorientto_jsonr   dfs     r5   r   z(topGainersStocks.get.<locals>.<listcomp>  &    WWW

)
 < <WWWr<   c                 6    g | ]}t          j        |          S r;   r|  loadsr   json_strs     r5   r   z(topGainersStocks.get.<locals>.<listcomp>  "    "Y"Y"YH4:h#7#7"Y"Y"Yr<   r"   r#   r   r  r   r	  r
  r  r   r  r   rM   rN   rO   r   r   r   pd	read_htmlextendr+   r,   r.   r-   r/   r0   r  r  r  r   all_stocks_liststocks_json_liststocks_json_objectsflattened_stocks_listsublistr4   s               r5   rK   ztopGainersStocks.get  s   )	=,W55E}5;;==B3F3F 56stttj(;yQQQGi(G+++CCIIKKH Yv/J\s t t  }C  }X  Y  Y  Y  Y !l+^__O  XWWWW #Z"YHX"Y"Y"Y %'!. 6 6%,,W5555 %1"+-    
  	= 	= 	=%D"%a&&  ;= = = = = = = = =	=%   C	D1 A$D1 1
E:;4E5/E:5E:NrS   r;   r<   r5   r  r    s#        *= *= *= *= *=r<   r  c                       e Zd Zd ZdS )topLooserStocksc                    	 t          |          }||dk    s|                                dk    rt          j        d          t	          j        |t          j        dg          }|d         }t          j	        
                    |d                                          }|s(t          t          j        d	d
t          j                  S t          j        d          }d |D             }d |D             }g }	|D ]}
|	                    |
           t          t          j        d|	d          S # t&          $ r?}t          t          j        t+          |          d
t          j                  cY d }~S d }~ww xY w)Nr   r   r   r   r   r  r   r  r  rI   r   0https://finance.yahoo.com/markets/stocks/losers/c                 :    g | ]}|                     d           S r  r  r  s     r5   r   z'topLooserStocks.get.<locals>.<listcomp>	  r  r<   c                 6    g | ]}t          j        |          S r;   r  r  s     r5   r   z'topLooserStocks.get.<locals>.<listcomp>	  r  r<   r"   r#   r  r  s               r5   rK   ztopLooserStocks.get	  s   !	=,W55E}5;;==B3F3F 56stttj(;yQQQGi(G+++CCIIKKH Yv/J\s t t  }C  }X  Y  Y  Y  Y !l+]^^O  XWWWW #Z"YHX"Y"Y"Y %'!. 6 6%,,W5555%1"+-    
  	= 	= 	=%D"%a&&  ;= = = = = = = = =	=r  NrS   r;   r<   r5   r  r  	  #        "= "= "= "= "=r<   r  c                       e Zd Zd ZdS )topActiveStocksc                    	 t          |          }||dk    s|                                dk    rt          j        d          t	          j        |t          j        dg          }|d         }t          j	        
                    |d                                          }|s(t          t          j        d	d
t          j                  S t          j        d          }d |D             }d |D             }g }	|D ]}
|	                    |
           t          t          j        d|	d          S # t&          $ r?}t          t          j        t+          |          d
t          j                  cY d }~S d }~ww xY w)Nr   r   r   r   r   r  r   r  r  rI   r   5https://finance.yahoo.com/markets/stocks/most-active/c                 :    g | ]}|                     d           S r  r  r  s     r5   r   z'topActiveStocks.get.<locals>.<listcomp>:	  r  r<   c                 6    g | ]}t          j        |          S r;   r  r  s     r5   r   z'topActiveStocks.get.<locals>.<listcomp>=	  r  r<   r"   r#   r  r  s               r5   rK   ztopActiveStocks.get+	  s   !	=,W55E}5;;==B3F3F 56stttj(;yQQQGi(G+++CCIIKKH Yv/J\s t t  }C  }X  Y  Y  Y  Y !l+bccO  XWWWW #Z"YHX"Y"Y"Y %'!. 6 6%,,W5555%1"+-    
  	= 	= 	=%D"%a&&  ;= = = = = = = = =	=r  NrS   r;   r<   r5   r  r  *	  r  r<   r  c                       e Zd Zd ZdS )getAllStocksc                    	 t          |          }||dk    s|                                dk    rt          j        d          t	          j        |t          j        dg          }|d         }t          j	        
                    |d                                          }|s(t          t          j        d	d
t          j                  S t          j        d          }d |D             }d |D             }g }	|D ]}
|	                    |
           t          t          j        d|	d          S # t&          $ r?}t          t          j        t+          |          d
t          j                  cY d }~S d }~ww xY w)Nr   r   r   r   r   r  r   r  r  rI   r   zRhttps://in.tradingview.com/markets/stocks-united-kingdom/market-movers-all-stocks/c                 :    g | ]}|                     d           S r  r  r  s     r5   r   z$getAllStocks.get.<locals>.<listcomp>a	  r  r<   c                 6    g | ]}t          j        |          S r;   r  r  s     r5   r   z$getAllStocks.get.<locals>.<listcomp>d	  r  r<   r"   r#   r  r  s               r5   rK   zgetAllStocks.getR	  s   !	=,W55E}5;;==B3F3F 56stttj(;yQQQGi(G+++CCIIKKH Yv/J\s t t  }C  }X  Y  Y  Y  Y !l+  A  AO  XWWWW #Z"YHX"Y"Y"Y %'!. 6 6%,,W5555%1"+-    
  	= 	= 	=%D"%a&&  ;= = = = = = = = =	=r  NrS   r;   r<   r5   r  r  Q	  r  r<   r  c                       e Zd Zd ZdS )getAllCommoditiesc                    	 t          |          }||dk    s|                                dk    rt          j        d          t	          j        |t          j        dg          }|d         }t          j	        
                    |d                                          }|s(t          t          j        d	d
t          j                  S t          j        d          }d |D             }d |D             }g }	|D ]}
|	                    |
           t          t          j        d|	d          S # t&          $ r?}t          t          j        t+          |          d
t          j                  cY d }~S d }~ww xY w)Nr   r   r   r   r   r  r   r  r  rI   r   z.https://finance.yahoo.com/markets/commodities/c                 :    g | ]}|                     d           S r  r  r  s     r5   r   z)getAllCommodities.get.<locals>.<listcomp>	  r  r<   c                 6    g | ]}t          j        |          S r;   r  r  s     r5   r   z)getAllCommodities.get.<locals>.<listcomp>	  r  r<   r"   r#   r  r  s               r5   rK   zgetAllCommodities.getw	  s   $	=,W55E}5;;==B3F3F 56stttj(;yQQQGi(G+++CCIIKKH Yv/J\s t t  }C  }X  Y  Y  Y  Y !l+[\\O  XWWWW #Z"YHX"Y"Y"Y %'!. 6 6%,,W5555 %1"+-    
  	= 	= 	=%D"%a&&  ;= = = = = = = = =	=r  NrS   r;   r<   r5   r  r  v	  s#        %= %= %= %= %=r<   r  c                       e Zd Zd ZdS )getWorldIndicesc                    	 t          |          }||dk    s|                                dk    rt          j        d          t	          j        |t          j        dg          }|d         }t          j	        
                    |d                                          }|s(t          t          j        d	d
t          j                  S t          j        d          }d |D             }d |D             }g }	|D ]}
|	                    |
           t          t          j        d|	d          S # t&          $ r?}t          t          j        t+          |          d
t          j                  cY d }~S d }~ww xY w)Nr   r   r   r   r   r  r   r  r  rI   r   z0https://finance.yahoo.com/markets/world-indices/c                 :    g | ]}|                     d           S r  r  r  s     r5   r   z'getWorldIndices.get.<locals>.<listcomp>	  s&    NNNrzzz33NNNr<   c                 6    g | ]}t          j        |          S r;   r  r  s     r5   r   z'getWorldIndices.get.<locals>.<listcomp>	  s"    PPP8$*X..PPPr<   r"   r#   r  r  s               r5   rK   zgetWorldIndices.get	  s    4#G,,5mu%++--2*=*=

)*g
h
hhZx2wiHHH7Y7|"""::@@BB8
 M6#>Pghhpv  qL  M  M  M  M\"TUU? ONoNNN QP?OPPP% * *w  )))) %!    
 
 4 4 4
8!ff  24 4 4 4 4 4 4 4 44r  NrS   r;   r<   r5   r  r  	  s#        !4 !4 !4 !4 !4r<   r  c                       e Zd Zd ZdS )getTrendingTickersc                    	 t          |          }||dk    s|                                dk    rt          j        d          t	          j        |t          j        dg          }|d         }t          j	        
                    |d                                          }|s(t          t          j        d	d
t          j                  S t          j        d          }d |D             }d |D             }g }	|D ]}
|	                    |
           t          t          j        d|	d          S # t&          $ r?}t          t          j        t+          |          d
t          j                  cY d }~S d }~ww xY w)Nr   r   r   r   r   r  r   r  r  rI   r   z2https://finance.yahoo.com/markets/stocks/trending/c                 :    g | ]}|                     d           S r  r  r  s     r5   r   z*getTrendingTickers.get.<locals>.<listcomp>	  r  r<   c                 6    g | ]}t          j        |          S r;   r  r  s     r5   r   z*getTrendingTickers.get.<locals>.<listcomp>	  r  r<   r"   r#   r  r  s               r5   rK   zgetTrendingTickers.get	  s    	=,W55E}5;;==B3F3F 56stttj(;yQQQGi(G+++CCIIKKH Yv/J\s t t  }C  }X  Y  Y  Y  Y l+_``O  XWWWW #Z"YHX"Y"Y"Y$&!. 6 6%,,W5555 %1"+-    
  	= 	= 	=%D"%a&&  ;= = = = = = = = =	=r  NrS   r;   r<   r5   r  r  	  #        != != != != !=r<   r  c                       e Zd Zd ZdS )getTopMutalFundsc                    	 t          |          }||dk    s|                                dk    rt          j        d          t	          j        |t          j        dg          }|d         }t          j	        
                    |d                                          }|s(t          t          j        d	d
t          j                  S t          j        d          }d |D             }d |D             }g }	|D ]}
|	                    |
           t          t          j        d|	d          S # t&          $ r?}t          t          j        t+          |          d
t          j                  cY d }~S d }~ww xY w)Nr   r   r   r   r   r  r   r  r  rI   r   z6https://finance.yahoo.com/markets/mutualfunds/gainers/c                 :    g | ]}|                     d           S r  r  r  s     r5   r   z(getTopMutalFunds.get.<locals>.<listcomp>	  r  r<   c                 6    g | ]}t          j        |          S r;   r  r  s     r5   r   z(getTopMutalFunds.get.<locals>.<listcomp>	  r  r<   r"   r#   r  r  s               r5   rK   zgetTopMutalFunds.get	  s   	=,W55E}5;;==B3F3F 56stttj(;yQQQGi(G+++CCIIKKH Yv/J\s t t  }C  }X  Y  Y  Y  Y !l+cddO  XWWWW #Z"YHX"Y"Y"Y$&!. 6 6%,,W5555%1"+-    
  	= 	= 	=%D"%a&&  ;= = = = = = = = =	=r  NrS   r;   r<   r5   r  r  	  #         =  =  =  =  =r<   r  c                       e Zd Zd ZdS )getStocksDetailsc           
      Z   	 t          |          }||dk    s|                                dk    rt          j        d          t	          j        |t          j        dg          }|d         }t          j	        
                    |d                                          }|s(t          t          j        d	d
t          j                  S |j                            d          }|s(t          t          j        dd
t          j                  S t#          j        |          }|j        }|                    d          }	|	j                            d          |	d<   |j        }
t#          j        |dd          }|j                            d          |d<   |                    d          }t          t          j        d||	|
t7          j        |          d          S # t:          $ r?}t          t          j        t?          |          d
t          j                  cY d }~S d }~ww xY w)Nr   r   r   r   r   r  r   r  r  rI   r   symbolzsymbol is required1mo)periodz%Y-%m-%d %H:%M:%SzDate 1d1m)tickersr  intervalDatetimer  r  r"   )r$   r%   
stock_infohistory_monthr  stock_data_frame) r   r  r   r	  r
  r  r   r  r   rM   rN   rO   r   r   r   rO  rK   yfTickerinfohistoryindexstrftimer  downloadr  r+   r|  r  r,   r.   r-   )r/   r0   r  r  r  r   r  
ticker_objall_infohistr  r  data_frame_json_datar4   s                 r5   rK   zgetStocksDetails.get
  sh   0	=,W55E}5;;==B3F3F 56stttj(;yQQQGi(G+++CCIIKKH Yv/J\s t t  }C  }X  Y  Y  Y  Y[__X..F Vv/J\p q qy  zU  V  V  V  V)F++J "H %%U%33D J//0CDDDM ?DVD4HHHB  X../BCCBzN $&::Y:#?#? %1"+& $#':.B#C#C      	= 	= 	=%D"%a&&  ;= = = = = = = = =	=s,   C	G! AG! CG! !
H*+4H%H*%H*NrS   r;   r<   r5   r  r  
  s#        1= 1= 1= 1= 1=r<   r  c                       e Zd Zd ZdS )
getTopEtfsc                    	 t          |          }||dk    s|                                dk    rt          j        d          t	          j        |t          j        dg          }|d         }t          j	        
                    |d                                          }|s(t          t          j        d	d
t          j                  S t          j        d          }d |D             }d |D             }g }	|D ]}
|	                    |
           t          t          j        d|	d          S # t&          $ r?}t          t          j        t+          |          d
t          j                  cY d }~S d }~ww xY w)Nr   r   r   r   r   r  r   r  r  rI   r   z3https://finance.yahoo.com/markets/etfs/most-active/c                 :    g | ]}|                     d           S r  r  r  s     r5   r   z"getTopEtfs.get.<locals>.<listcomp>U
  r  r<   c                 6    g | ]}t          j        |          S r;   r  r  s     r5   r   z"getTopEtfs.get.<locals>.<listcomp>X
  r  r<   r"   r#   r  r  s               r5   rK   zgetTopEtfs.getF
  s   	=,W55E}5;;==B3F3F 56stttj(;yQQQGi(G+++CCIIKKH Yv/J\s t t  }C  }X  Y  Y  Y  Y !l+`aaO  XWWWW #Z"YHX"Y"Y"Y$&!. 6 6%,,W5555%1"+-    
  	= 	= 	=%D"%a&&  ;= = = = = = = = =	=r  NrS   r;   r<   r5   r  r  E
  r  r<   r  c                       e Zd Zd ZdS )getCurrenciesc                    	 t          |          }||dk    s|                                dk    rt          j        d          t	          j        |t          j        dg          }|d         }t          j	        
                    |d                                          }|s(t          t          j        d	d
t          j                  S t          j        d          }d |D             }d |D             }g }	|D ]}
|	                    |
           t          t          j        d|	d          S # t&          $ r?}t          t          j        t+          |          d
t          j                  cY d }~S d }~ww xY w)Nr   r   r   r   r   r  r   r  r  rI   r   z-https://finance.yahoo.com/markets/currencies/c                 :    g | ]}|                     d           S r  r  r  s     r5   r   z%getCurrencies.get.<locals>.<listcomp>y
  r  r<   c                 6    g | ]}t          j        |          S r;   r  r  s     r5   r   z%getCurrencies.get.<locals>.<listcomp>|
  r  r<   r"   r#   r  r  s               r5   rK   zgetCurrencies.getk
  s   	=,W55E}5;;==B3F3F 56stttj(;yQQQGi(G+++CCIIKKH Yv/J\s t t  }C  }X  Y  Y  Y  Y l+Z[[O  XWWWW #Z"YHX"Y"Y"Y$&!. 6 6%,,W5555 %1"+-    
  	= 	= 	=%D"%a&&  ;= = = = = = = = =	=r  NrS   r;   r<   r5   r  r  j
  r  r<   r  c                       e Zd Zd ZdS )saveStocksAndOthersc                 F   	 t          |          }||dk    s|                                dk    rt          j        d          t	          j        |t          j        dg          }|d         }t          j	        
                    |d                                          }|s(t          t          j        d	d
t          j                  S |j                            d          }|s(t          t          j        dd
t          j                  S |j                            d          }|s(t          t          j        dd
t          j                  S |j                            d          }|s(t          t          j        dd
t          j                  S t"          j	                            ||||           t          t          j        dd
          S # t(          $ r?}	t          t          j        t-          |	          d
t          j                  cY d }	~	S d }	~	ww xY w)Nr   r   r   r   r   r  r   r  r  rI   r   market_typezMarket type is requiredr  zSymbol is requiredrZ  zName is required)r  r  rZ  r   r"   )r   r  r   r	  r
  r  r   r  r   rM   rN   rO   r   r   r   r&   rK   SavedMarketsr   r+   r,   r.   r-   )
r/   r0   r  r  r  r   r  r  rZ  r4   s
             r5   r6   zsaveStocksAndOthers.post
  s   	=,W55E}5;;==B3F3F 56stttj(;yQQQGi(G+++CCIIKKH Yv/J\s t t  }C  }X  Y  Y  Y  Y!,**=99K [v/J\u v v  E  Z  [  [  [  [\%%h//F Vv/J\p q qy  zU  V  V  V  V<##F++D Tv/J\n o ow}  xS  T  T  T  T ''kUYai'jjj %1"+      	= 	= 	=%D"%a&&  ;= = = = = = = = =	=9   C	G AG AG AG >G 
H !4HH H Nr7   r;   r<   r5   r  r  
  #        = = = = =r<   r  c                       e Zd Zd ZdS )unsaveStocksAndOthersc                    	 t          |          }||dk    s|                                dk    rt          j        d          t	          j        |t          j        dg          }|d         }t          j	        
                    |d                                          }|s(t          t          j        d	d
t          j                  S |j                            d          }|s(t          t          j        dd
t          j                  S t"          j	        
                    ||                                          }|s(t          t          j        dd
t          j                  S |                                 t          t          j        dd
          S # t(          $ r?}t          t          j        t-          |          d
t          j                  cY d }~S d }~ww xY w)Nr   r   r   r   r   r  r   r  r  rI   r   stock_idzstock_id is requiredr[  No data foundr"   )r   r  r   r	  r
  r  r   r  r   rM   rN   rO   r   r   r   r&   rK   r  rp  r+   r,   r.   r-   )	r/   r0   r  r  r  r   r  	saved_objr4   s	            r5   rK   zunsaveStocksAndOthers.get
  s1   	=,W55E}5;;==B3F3F 56stttj(;yQQQGi(G+++CCIIKKH Yv/J\s t t  }C  }X  Y  Y  Y  Y|''
33H Xv/J\r s s  |B  |W  X  X  X  X%-44((4SSYY[[I Qv/J\k l ltz  uP  Q  Q  Q  Q%1"+      	= 	= 	=%D"%a&&  ;= = = = = = = = =	=s2   C	F AF AF -/F 
G&'4G!G&!G&NrS   r;   r<   r5   r  r  
  s#        = = = = =r<   r  c                       e Zd Zd ZdS )mySavedMarketDatac                    	 t          |          }||dk    s|                                dk    rt          j        d          t	          j        |t          j        dg          }|d         }t          j	        
                    |d                                          }|s(t          t          j        d	d
t          j                  S |j                            d          }|s(t          t          j        dd
t          j                  S t"          j	        
                    ||j                  }|s(t          t          j        dd
t          j                  S g }|D ]8}	|	j        |	j        |	j        |	j        |	j        d}
|                    |
           9t          t          j        d|d          S # t2          $ r?}t          t          j        t7          |          d
t          j                  cY d }~S d }~ww xY w)Nr   r   r   r   r   r  r   r  r  rI   r   r  zmarket_type is required)r  r   r  )rF   r  rZ  r  rV  r"   r#   )r   r  r   r	  r
  r  r   r  r   rM   rN   rO   r   r   r   rO  rK   r  rF   r  rZ  r  r!  r*   r+   r,   r.   r-   )r/   r0   r  r  r  r   r  saved_stockrb   rm  rR   r4   s               r5   rK   zmySavedMarketData.get
  sl   (	=,W55E}5;;==B3F3F 56stttj(;yQQQGi(G+++CCIIKKH Yv/J\s t t  }C  }X  Y  Y  Y  Y!+//-88K [v/J\u v v  E  Z  [  [  [  [ '.55KW_Wb5ddK Qv/J\k l ltz  uP  Q  Q  Q  QH$ * *"\ :"'"3!&!1  ))))%1"+      	= 	= 	=%D"%a&&  ;= = = = = = = = =	=s3   C	F: AF: AF:  AF: :
H4G>8H>HNrS   r;   r<   r5   r  r  
  s#        )= )= )= )= )=r<   r  c                       e Zd Zd ZdS )giveRatingAndFeedbackc                 F   	 t          |          }||dk    s|                                dk    rt          j        d          t	          j        |t          j        dg          }|d         }t          j	        
                    |d                                          }|s(t          t          j        d	d
t          j                  S |j                            d          }|s(t          t          j        dd
t          j                  S |j                            d          }|s(t          t          j        dd
t          j                  S |j                            d          }|s(t          t          j        dd
t          j                  S t"          j	                            ||||           t          t          j        dd
          S # t(          $ r?}	t          t          j        t-          |	          d
t          j                  cY d }	~	S d }	~	ww xY w)Nr   r   r   r   r   r  r   r  r  rI   r   ratingrating is requiredfeedbackfeedback is requiredsection_namesection_name is requiredratingsr&  r(  r   r"   )r   r  r   r	  r
  r  r   r  r   rM   rN   rO   r   r   r   r&   rK   RatingAndFeedbackr   r+   r,   r.   r-   )
r/   r0   r  r  r  r   r$  r&  r(  r4   s
             r5   r6   zgiveRatingAndFeedback.post  s    	=,W55E}5;;==B3F3F 56stttj(;yQQQGi(G+++CCIIKKH Yv/J\s t t  }C  }X  Y  Y  Y  Y\%%h//F Vv/J\p q qy  zU  V  V  V  V((44H Xv/J\r s s  |B  |W  X  X  X  X"<++N;;L \v/J\v w w  @F  @[  \  \  \  \%,,v^jpx,yyy%1"+    
  	= 	= 	=%D"%a&&  ;= = = = = = = = =	=r  Nr7   r;   r<   r5   r"  r"     r  r<   r"  c                       e Zd Zd ZdS )myRatingAndFeedbackc                 0   	 t          |          }||dk    s|                                dk    rt          j        d          t	          j        |t          j        dg          }|d         }t          j	        
                    |d                                          }|s(t          t          j        d	d
t          j                  S t          j	        
                    |j        d          }g }|D ]8}|j        |j        |j        |j        |j        d}	|                    |	           9t          t          j        d|d          S # t.          $ r?}
t          t          j        t3          |
          d
t          j                  cY d }
~
S d }
~
ww xY w)Nr   r   r   r   r   r  r   r  r  rI   r   Tr  rF   r+  r&  zsection_name rV  r"   r#   )r   r  r   r	  r
  r  r   r  r   rM   rN   rO   r   r   r   r,  rF   r+  r&  r(  r!  r*   r+   r,   r.   r-   )r/   r0   r  r  r  r   
rating_objrb   r$  rR   r4   s              r5   rK   zmyRatingAndFeedback.get'  s    	=,W55E}5;;==B3F3F 56stttj(;yQQQGi(G+++CCIIKKH Yv/J\s t t  }C  }X  Y  Y  Y  Y+3::(+_c:ddJH$ * * )%~ &%+%8"("3  ))))%1"+       	= 	= 	=%D"%a&&  ;= = = = = = = = =	=s%   C	E A?E 
F4F
FFNrS   r;   r<   r5   r.  r.  &  s#        != != != != !=r<   r.  c                       e Zd Zd ZdS )deleteRatingAndFeedbackc                 X   	 t          |          }||dk    s|                                dk    rt          j        d          t	          j        |t          j        dg          }|d         }t          j	        
                    |d                                          }|s(t          t          j        d	d
t          j                  S |j                            d          }|s(t          t          j        dd
t          j                  S t"          j	                            |          }|                                 t          t          j        dd
          S # t(          $ r?}t          t          j        t-          |          d
t          j                  cY d }~S d }~ww xY w)Nr   r   r   r   r   r  r   r  r  rI   r   	rating_idrating_id is requiredr   r"   )r   r  r   r	  r
  r  r   r  r   rM   rN   rO   r   r   r   r&   rK   r,  rp  r+   r,   r.   r-   )	r/   r0   r  r  r  r   r5  r1  r4   s	            r5   r6   zdeleteRatingAndFeedback.postL  s   	=,W55E}5;;==B3F3F 56stttj(;yQQQGi(G+++CCIIKKH Yv/J\s t t  }C  }X  Y  Y  Y  Y((55I Yv/J\s t t  }C  }X  Y  Y  Y  Y+377Y7HHJ%1"+    
  	= 	= 	=%D"%a&&  ;= = = = = = = = =	=r  Nr7   r;   r<   r5   r3  r3  K  s#        = = = = =r<   r3  c                       e Zd Zd Zd ZdS )editRatingAndFeedbackc                    	 t          |          }||dk    s|                                dk    rt          j        d          t	          j        |t          j        dg          }|d         }t          j	        
                    |d                                          }|s(t          t          j        d	d
t          j                  S |j                            d          }|s(t          t          j        dd
t          j                  S t"          j	                            |          }|s(t          t          j        dd
t          j                  S |j        |j        |j        |j        |j        d}t          t          j        d|d          S # t0          $ r?}	t          t          j        t5          |	          d
t          j                  cY d }	~	S d }	~	ww xY w)Nr   r   r   r   r   r  r   r  r  rI   r   r5  r6  r   r  r0  r"   r#   )r   r  r   r	  r
  r  r   r  r   rM   rN   rO   r   r   r   rO  rK   r,  rF   r+  r&  r(  r!  r+   r,   r.   r-   )
r/   r0   r  r  r  r   r5  r1  rR   r4   s
             r5   rK   zeditRatingAndFeedback.getk  s?   #	=,W55E}5;;==B3F3F 56stttj(;yQQQGi(G+++CCIIKKH Yv/J\s t t  }C  }X  Y  Y  Y  Y 55I Yv/J\s t t  }C  }X  Y  Y  Y  Y*266)6DDJ Qv/J\k l ltz  uP  Q  Q  Q  Q !m%-&/!+!8(3 H +1+=.7#+    
  	= 	= 	=%D"%a&&  ;= = = = = = = = =	=s2   C	F AF A	F =F 
G!"4GG!G!c                    	 t          |          }||dk    s|                                dk    rt          j        d          t	          j        |t          j        dg          }|d         }t          j	        
                    |d                                          }|s(t          t          j        d	d
t          j                  S |j                            d          }|s(t          t          j        dd
t          j                  S |j                            d          }|s(t          t          j        dd
t          j                  S |j                            d          }|s(t          t          j        dd
t          j                  S |j                            d          }	|	s(t          t          j        dd
t          j                  S t"          j	        
                    |                              |||	|           t          t          j        dd
          S # t(          $ r?}
t          t          j        t-          |
          d
t          j                  cY d }
~
S d }
~
ww xY w)Nr   r   r   r   r   r  r   r  r  rI   r   r5  r6  r$  r%  r&  r'  r(  r)  r   r*  r"   )r   r  r   r	  r
  r  r   r  r   rM   rN   rO   r   r   r   r&   rK   r,  r*  r+   r,   r.   r-   )r/   r0   r  r  r  r   r5  r$  r&  r(  r4   s              r5   r6   zeditRatingAndFeedback.post  s   &	=,W55E}5;;==B3F3F 56stttj(;yQQQGi(G+++CCIIKKH Yv/J\s t t  }C  }X  Y  Y  Y  Y((55I Yv/J\s t t  }C  }X  Y  Y  Y  Y \%%h//F Vv/J\p q qy  zU  V  V  V  V((44H Xv/J\r s s  |B  |W  X  X  X  X"<++N;;L \v/J\v w w  @F  @[  \  \  \  \%,,),<<CCf_g  vB  HPC  Q  Q  Q+1+=.7    
  	= 	= 	=%D"%a&&  ;= = = = = = = = =	=sA   C	H/ AH/ AH/ AH/ AH/ AH/ /
I894I3-I83I8Nr   r;   r<   r5   r8  r8  j  s3        $= $= $=N'= '= '= '= '=r<   r8  c                       e Zd Zd ZdS )stockScreenerc                    	 t          |          }||dk    s|                                dk    rt          j        d          t	          j        |t          j        dg          }|d         }t          j	        
                    |d                                          }|s(t          t          j        d	d
t          j                  S |j                            d          }|j                            d          }|j                            d          }|j                            d          }	|j                            d          }
|j                            d          }|j                            d          }|j                            d          }|j                            d          }|j                            d          }|j                            d          }|j                            d          }|j                            d          }|j                            d          }|j                            d          }|j                            d          }|j                            d          }i dt          j        d|d|d|d|	d|
d|d|d|d|d|d|d|d|d|d|d|d|i}t%          j        d|          }|j        d k    r(t          t          j        d!d
t          j                  S |                                }t          t          j        d"|d#          S # t,          $ r?}t          t          j        t1          |          d
t          j                  cY d }~S d }~ww xY w)$Nr   r   r   r   r   r  r   r  r  rI   r   marketCapMoreThanmarketCapLowerThanpriceMoreThanpriceLowerThanbetaMoreThanbetaLowerThanvolumeMoreThanvolumeLowerThandividendMoreThandividendLowerThanisEtfisActivelyTradingsectorindustryr  exchangelimitapikeyz7https://financialmodelingprep.com/api/v3/stock-screenerrw  ry  zFailed to fetch datar"   r#   )r   r  r   r	  r
  r  r   r  r   rM   rN   rO   r   r   r   rO  rK   FMP_KEYr{  r$   r|  r+   r,   r.   r-   )r/   r0   r  r  r  r   market_cap_more_thanmarket_cap_lower_thanprice_more_thanprice_lower_thanbeta_more_thanbeta_lower_thanvolume_more_thanvolume_lower_thandividend_more_thandividend_lower_thanis_etfis_actively_tradingrJ  rK  r  rL  rM  rx  r  result_stocksr4   s                              r5   rK   zstockScreener.get  s   I	=,W55E}5;;==B3F3F 56stttj(;yQQQGi(G+++CCIIKKH Yv/J\s t t  }C  }X  Y  Y  Y  Y $+;??3F#G#G $+KOO4H$I$I!%kooo>>O&{/?@@$[__^<<N%kooo>>O&{/?@@ '0A B B!(1C!D!D")+//2E"F"F[__W--F")+//2E"F"F[__X..F{z22Hkooi00G{z22HKOOG,,E(*#%9 %&;  	
 !"2    !"2 "#4 #$6 $%8  $%8 & H  7!" H#$ % F,  |$]flmmmH #s**v/J\r s s  |B  |W  X  X  X  X %MMOOM#)#5&/)      	= 	= 	=%D"%a&&  ;= = = = = = = = =	=s+   C	M IM 0M 
N4NNNNrS   r;   r<   r5   r<  r<    s(        J= J= J= J= J=r<   r<  c                       e Zd Zd ZdS )getQuizQuestionsc           	      8   	 t          |          }||dk    s|                                dk    rt          j        d          t	          j        |t          j        dg          }|d         }t          j	        
                    |d                                          }|s(t          t          j        d	d
t          j                  S g }t          j	                                        }|D ]D}|j        |j        |j        |j        |j        |j        |j        d}	|                    |	           Et          t          j        d|d          S # t4          $ r?}
t          t          j        t9          |
          d
t          j                  cY d }
~
S d }
~
ww xY w)Nr   r   r   r   r   r  r   r  r  rI   r   )rF   r  
option_one
option_twooption_threeoption_fouranswerr"   r#   )r   r  r   r	  r
  r  r   r  r   rM   rN   rO   r   r   r   	QuizModelallrF   r  op1op2op3op4ansr*   r+   r,   r.   r-   )r/   r0   r  r  r  r   rb   quiz_objquizrR   r4   s              r5   rK   zgetQuizQuestions.get  s   "	=,W55E}5;;==B3F3F 56stttj(;yQQQGi(G+++CCIIKKH Yv/J\s t t  }C  }X  Y  Y  Y  YH (,,..H  
* 
*#}!%!%#'8"&(!X  ))))#)#5&/$      	= 	= 	=%D"%a&&  ;= = = = = = = = =	=s%   C	E BE 
F4FFFNrS   r;   r<   r5   r^  r^  
  s#        #= #= #= #= #=r<   r^  c                       e Zd Zd ZdS )getInvestResearchListingc                    	 t          |          }||dk    s|                                dk    rt          j        d          t	          j        |t          j        dg          }|d         }t          j	        
                    |d                                          }|s(t          t          j        d	d
t          j                  S t          j	        
                    d          }g }|D ]2}|j        |j        |j        |j        d}	|                    |	           3t          t          j        d|d          S # t,          $ r?}
t          t          j        t1          |
          d
t          j                  cY d }
~
S d }
~
ww xY w)Nr   r   r   r   r   r  r   r  r  rI   r   Tr\   )rF   research_imagerG   rV  r"   r#   )r   r  r   r	  r
  r  r   r  r   rM   rN   rO   r   r   r   InvestmentResearchrF   rq  rG   r!  r*   r+   r,   r.   r-   )r/   r0   r  r  r  r   
invest_objrb   investrR   r4   s              r5   rK   zgetInvestResearchListing.get1  s   	=,W55E}5;;==B3F3F 56stttj(;yQQQGi(G+++CCIIKKH Yv/J\s t t  }C  }X  Y  Y  Y  Y-5<<PT<UUJH$ * *%+%:"L!'!2	  ))))#)#5&/$      	= 	= 	=%D"%a&&  ;= = = = = = = = =	=s%   C	E  A3E   
F	
4F>F	F	NrS   r;   r<   r5   ro  ro  0  s#        = = = = =r<   ro  c                       e Zd Zd ZdS )getInvestResearchDetailsc                 X   	 t          |          }||dk    s|                                dk    rt          j        d          t	          j        |t          j        dg          }|d         }t          j	        
                    |d                                          }|s(t          t          j        d	d
t          j                  S |j                            d          }|s(t          t          j        dd
t          j                  S |j        dk    r|j        dk    r(t          t          j        dd
t          j                  S t&          j	        
                    |d                                          }|j        |j        |j        |j        |j        |j        d}|xj        dz  c_        |                                 t          t          j        d|d          S t&          j	        
                    |d                                          }|j        |j        |j        |j        |j        |j        d}t          t          j        d|d          S # t8          $ r?}	t          t          j        t=          |	          d
t          j                  cY d }	~	S d }	~	ww xY w)Nr   r   r   r   r   r  r   r  r  rI   r   research_idresearch_id is requiredFr  z*Buy subscription plan to read more contentTrb  )rF   rq  rG   r  rV  rH   r"   r#   )r   r  r   r	  r
  r  r   r  r   rM   rN   rO   r   r   r   rO  rK   r   investment_research_countrr  rF   rq  rG   r  r!  rH   r   r+   r,   r.   r-   )
r/   r0   r  r  r  r   rx  rs  rR   r4   s
             r5   rK   zgetInvestResearchDetails.getT  s   4	=,W55E}5;;==B3F3F 56stttj(;yQQQGi(G+++CCIIKKH Yv/J\s t t  }C  }X  Y  Y  Y  Y!+//-88K [v/J\u v v  E  Z  [  [  [  [(E115<<#63N  aM  %N  %N  V\  Vq  r  r  r  r#5#=#D#D+jn#D#o#o#u#u#w#wJ'])3)B * 0 * 0%/%:","4   H 66!;66MMOOO#+1+=.7$,% %     29@@kfj@kkqqss
#%/%>&,&,!+!6(0   '-'9*3 (! !     	= 	= 	=%D"%a&&  ;= = = = = = = = =	=s9   C	I  AI  =I  BI  )A6I   
J)*4J$J)$J)NrS   r;   r<   r5   rv  rv  S  s#        5= 5= 5= 5= 5=r<   rv  c                       e Zd Zd ZdS )addResearchBookmarkc                    	 t          |          }||dk    s|                                dk    rt          j        d          t	          j        |t          j        dg          }|d         }t          j	        
                    |d                                          }|s(t          t          j        d	d
t          j                  S |j                            d          }|s(t          t          j        dd
t          j                  S t"          j	        
                    |d                                          }|s(t          t          j        dd
t          j                  S t$          j	                            ||d          \  }}	|	s0|                                 t          t          j        dd
          S |                                 t          t          j        dd
          S # t.          $ r?}
t          t          j        t3          |
          d
t          j                  cY d }
~
S d }
~
ww xY w)Nr   r   r   r   r   r  r   r  r  rI   r   rx  ry  Trb  zInvestment research not found)researchr   rk  rl  rm  )r   r  r   r	  r
  r  r   r  r   rM   rN   rO   r   r   r   rO  rK   rr  r  ro  rp  r+   r   r,   r.   r-   )r/   r0   r  r  r  r   rx  rs  rq  rr  r4   s              r5   r6   zaddResearchBookmark.post  s   	=,W55E}5;;==B3F3F 56stttj(;yQQQGi(G+++CCIIKKH Yv/J\s t t  }C  }X  Y  Y  Y  Y!+//-88K [v/J\u v v  E  Z  [  [  [  [-5<<+bf<ggmmooJ av/J\{ | |  EK  E`  a  a  a  a%@%H%V%V`jpx  HI%V  &J  &J"M7 o$$&&&v/ASo p pqqq""$$$v/ASl m mnnn 	= 	= 	=%D"%a&&  ;= = = = = = = = =	=s9   C	G4 AG4 AG4 -AG4 /G4 4
H=>4H82H=8H=Nr7   r;   r<   r5   r|  r|    r  r<   r|  c                       e Zd Zd ZdS )getHomePagec                 n   t          |          }||dk    s|                                dk    rt          j        d          t	          t
          j                   t          j        |t
          j        dg          }t	          |           |d         }t          j
                            |d                                          }|s(t          t          j        d	d
t          j                  S t!          j        d          }|d                             d          }|                    d          }t)          j        |          }	t!          j        d          }
|
d                             d          }|                    d          }t)          j        |          }t!          j        d          }|d                             d          }|                    d          }t)          j        |          }t,          j
                            d          }g }|D ]&}|j        |j        d}|                    |           '|j                            d          }|r=t8          j
                            d|                              d          d d         }n;t8          j
                            d                              d          d d         }g }|D ]C}|j        |j        |j        j         |j!        |j"        |j#        d}|                    |           Ddd l$}d}d}dd|d} |j        ||           }|j%        d!k    r+|                                } |                     d"g           }!nt	          d#|j&                   tN          j
                            d                              d          d d         }"g }#|"D ]D}$|$j        |$j(        |$j)        |$j*        |$j+        |$j,        |$j#        d$}%|#                    |%           Et          t          j-        d%|	|||||!|#d&	          S )'Nr   r   r   r   r   r  r   r  r  rI   r   r  r      r  r  r  r  Tr\   rQ  blog_category_id)r]   categrory_idr^   r   rS  rq  rr  rs  rt  ru  rw  ry  rz  zFailed to fetch top headlines:)rF   r9  r;  r>  r@  rB  rV  r"   )	r$   r%   active_stocksgainers_stocksloosers_stocksblog_categoryr|  	news_dataevents_data).r   r  r   r	  rP   r   r  r
  r  r   rM   rN   rO   r   r   r   r  r  headr  r|  r  rY  rF   rZ  r*   rO  rK   rX  r`   rG   r   rr   rU  rH   r!  r{  r$   r}  rE  r9  r;  r>  r@  rB  r+   )&r/   r0   r  r  r  r   active_stocks_listactive_stocks_dfactive_stocks_jsonactive_stocks_json_objectsgainer_stocks_listgainer_stocks_dfgainer_stocks_jsongainer_stocks_json_objectslooser_stocks_listlooser_stocks_dflooser_stocks_jsonlooser_stocks_json_objectsr  r"  r]  r^  r  r[  r{  r_  r|  r{  r~  r  rx  r  r&   rz  rF  rb   rW  rR   s&                                         r5   rK   zgetHomePage.get  sr   (11=EVOOu{{}}/B/B12oppph!"""*UH$7G9MMMg)$L''WQ'??EEGG 	U6+FXoppx~  yT  U  U  U  U\*abb-a055a88-55Y5GG%)Z0B%C%C"  \*]^^-a055a88-55Y5GG%)Z0B%C%C"  \*\]]-a055a88-55Y5GG%)Z0B%C%C" '.55t5LL  	+ 	+Cf!$ H   ****";??+=>> 	X,,dRb,ccllmrsstvuvtvwHH,,d,CCLLUSSTVUVTVWH	 		( 		(DW
"i0!_,!_ I Y'''' 	44 "
 
  8<F3333&&==??Dxx
B//HH 2HMBBB ^**D*AAJJ5QQRTSTRTU	 
	& 
	&Eh#/"-"- > >"- H OOH%%%%!-'788)"!#

 

 
 
 
	r<   NrS   r;   r<   r5   r  r    s(        l l l l lr<   r  )rest_framework.viewsr   rest_framework.responser   rest_frameworkr   panel_apis.modelsr   r   r	   r
   django.confr   passlib.hashr   r   r|  admin_panel.modelsrest_framework.authenticationr   r
  rest_framework_simplejwt.tokensr   !rest_framework_simplejwt.backendsr   django.core.mailr   r   django.shortcutsr   r   django.corer   django.template.loaderr   mathpytzr   django.contribr   admin_panel.functionsdjango.utils.timesincer   django.db.modelsr   r   astr  r  newsapir   r{  yfinancer  pandasr  bs4r   csvr   r   r   r>   rU   rZ   re   r   r   r   r   r   r   r  r  r  r'  r,  r3  r=  rJ  rb  re  ri  rv  r~  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r+  r0  r4  r7  rH  rS  rY  r]  r`  rd  rj  ro  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r"  r.  r3  r8  r<  r^  ro  rv  r|  r  r;   r<   r5   <module>r     s   ( ( ( ( ( ( , , , , , , ! ! ! ! ! !      , , , , , , , , , ,             8 8 8 8 8 8          B B B B B B 



 8 8 8 8 8 8 : : : : : : 3 3 3 3 3 3 % % % % % % - - - - - - - -       3 3 3 3 3 3 ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! # # # # # # # # # # , , , , , ,                   



   ! ! ! ! ! !                 



          V V V V V7 V V VX X X X Xw X X X*X X X X X X X X"X X X X X X X X(ZX ZX ZX ZX ZX7 ZX ZX ZX|\ \ \ \ \g \ \ \:\ \ \ \ \G \ \ \4AX AX AX AX AX AX AX AXHX X X X X X X X6"B "B "B "B "B "B "B "BHaX aX aX aX aX aX aX aXF X  X  X  X  X  X  X  XJX X X X X X X X(X X X X Xw X X X2q q q q q' q q q X X X X Xg X X X.X X X X X' X X X(X X X X X' X X X>IX IX IX IX IX' IX IX IXZX X X X X X X X0X X X X XW X X X>X X X X Xg X X X:X X X X X7 X X X>#V #V #V #V #V' #V #V #VLV V V V V' V V V>V V V V VW V V V:!_ !_ !_ !_ !_' !_ !_ !_J_ _ _ _ _7 _ _ _*_ _ _ _ _ _ _ _:0_ 0_ 0_ 0_ 0_G 0_ 0_ 0_d_ _ _ _ _g _ _ _0_ _ _ _ _G _ _ _>_ _ _ _ _w _ _ _8_ _ _ _ _w _ _ _8_ _ _ _ _7 _ _ _6_ _ _ _ _W _ _ _._ _ _ _ _G _ _ _@$_ $_ $_ $_ $_ $_ $_ $_N_ _ _ _ _' _ _ _@1_ 1_ 1_ 1_ 1_7 1_ 1_ 1_h_ _ _ _ _ _ _ _:=_ =_ =_ =_ =_ =_ =_ =_~;_ ;_ ;_ ;_ ;_g ;_ ;_ ;_|K_ K_ K_ K_ K_w K_ K_ K_\_ _ _ _ _G _ _ _D_ _ _ _ _7 _ _ _0+_ +_ +_ +_ +_w +_ +_ +_\V_ V_ V_ V_ V_ V_ V_ V_t_ _ _ _ _W _ _ _B_ _ _ _ _' _ _ _6_ _ _ _ _g _ _ _B"_ "_ "_ "_ "_w "_ "_ "_HX X X X X X X X:!X !X !X !X !X !X !X !XF X  X  X  X  X  X  X  XH%X %X %X %X %X %X %X %XTX X X X Xw X X X,X X X X X' X X X>X X X X XW X X X6X X X X X X X X@#X #X #X #X #XG #X #X #XP+= += += += +=w += += +=^#= #= #= #= #=g #= #= #=N#= #= #= #= #=g #= #= #=N#= #= #= #= #=7 #= #= #=J&= &= &= &= &= &= &= &=R"4 "4 "4 "4 "4g "4 "4 "4L"= "= "= "= "= "= "= "=L!= != != != !=w != != !=H2= 2= 2= 2= 2=w 2= 2= 2=l!= != != != != != != !=J!= != != != !=G != != !=L= = = = =' = = =D= = = = =G = = =@*= *= *= *= *= *= *= *=\"= "= "= "= "=G "= "= "=L"= "= "= "= "=' "= "= "=J= = = = =g = = =>O= O= O= O= O=G O= O= O=dK= K= K= K= K=G K= K= K=\$= $= $= $= $=w $= $= $=L =  =  =  =  =w  =  =  =F6= 6= 6= 6= 6=w 6= 6= 6=r= = = = =' = = =Dm m m m m' m m m m mr<   