
    f                       d dl mZ d dlmZ d dlmZ d dl 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 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( 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      Zy)    )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y)UploadImagesc                 :   	 |j                   }|j                  d      }g }|D ]  }t        |      }|j                  |         t	        t
        j                  d|d      S # t        $ r0}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!  &"4"4iWab
cc	 V
Is1v&v/T/T
UUVs   AA! !	B*%BBBN__name__
__module____qualname__r6        r5   r   r   .   s    
Vr<   r   c                       e Zd Zd Zy)getPrivacyPolicyc                 J   	 | j                   j                  j                  d      }|dk(  r/t        j                  j                  d      j                         }n.t        j                  j                  d      j                         }|si }n$|j                  |j                  |j                  d}t        t        j                  d|d      S # t        $ rJ}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<   s    	X#||88<<=NOO)+'//666KQQS'//666IOOQ "$NN&..
 6+=+=y`hijj 	X!H6+P+Pbefgbhiqw  rW  rW  X  X	Xs   CC 	D"?DD"D"Nr8   r9   r:   rK   r;   r<   r5   r>   r>   ;   s    Xr<   r>   c                       e Zd Zd Zy)getTermsConditionsc                    	 t         j                  j                  d      j                         }|si }n$|j                  |j
                  |j                  d}t        t        j                  d|d      S # t        $ rJ}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LLNI #%OO'//
 6+=+=y`hijj 	X!H6+P+Pbefgbhiqw  rW  rW  X  X	Xs   A3A6 6	C	??C>C	C	NrS   r;   r<   r5   rU   rU   P       Xr<   rU   c                       e Zd Zd Zy)
faqListingc                    	 t         j                  j                  d      j                  d      }g }|D ]7  }|j                  |j
                  |j                  d}|j                  |       9 t        t        j                  d|d      S # t        $ rJ}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kk((4(@II%PGHII!kk
 )  6+=+=y`hijj 	X!H6+P+Pbefgbhiqw  rW  rW  X  X	Xs   B	B 	C?CCCNrS   r;   r<   r5   rZ   rZ   a   rX   r<   rZ   c                       e Zd Zd Zd Zy)userRegisterc                    t         j                  j                  d      }g }|D ],  }|j                  |j                  d}|j                  |       . t        j                  j                  d      }g }|D ],  }|j                  |j                  d}|j                  |       . 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 DWW

H OOH% ! $$++t+D		EXXI Y'  v'9'99dl  zC  D  E  	Er<   c                 f
   	 |j                   j                  d      }|s,t        t        j                  ddt        j                        S |j                   j                  d      }|s,t        t        j                  ddt        j                        S |j                   j                  d      }|s,t        t        j                  ddt        j                        S |j                   j                  d	      j                         }|s,t        t        j                  d
dt        j                        S t        j                  j                  |      j                         }|r,t        t        j                  ddt        j                        S |j                   j                  d      }|s,t        t        j                  ddt        j                        S |j                   j                  d      }|s,t        t        j                  ddt        j                        S ||k7  r,t        t        j                  ddt        j                        S |j                   j                  d      }	|	s,t        t        j                  ddt        j                        S |j                   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                  j                  |      }t        j                  j                  |      }|}t        j                  |      }t        j                  ddd      }t        j                  j                  |      j                         }|r1||_        t#        j$                         |_        |j)                          nXt        j                  j+                  |||||d|
||		      }||_        t#        j$                         |_        |j)                          |j,                  }d}t/        dd |i      }|}d!}|}t1        j2                  ||||g|"       t4        j                  j+                  |j6                  d#z   d$%       t        t        j8                  d&|d'      S # t:        $ rJ}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   s1   C	X||''
3Hv/J/J\r s  |B  |W  |W  X  X((5Iv/J/J\s t  }C  }X  }X  Y  Y"<<++N;Lv/J/J\v w  @F  @[  @[  \  \LL$$W-335Ev/J/J\o px~  yT  yT  U  U,,--E-:@@BKv/J/J  ]H  !I  QW  Ql  Ql  m  m||''
3Hv/J/J\r s  |B  |W  |W  X  X&||//0BC#v/J/J\z {  DJ  D_  D_  `  `++v/J/J  ]J  !K  SY  Sn  Sn  o  o||''
3Hv/J/J\s t  }C  }X  }X  Y  Y!,,**=9Kv/J/J\v w  @F  @[  @[  \  \ )),7Jv/J/J\u v  E  Z  Z  [  [(0044,4GL!))--9-=I/O$\\/:N##D$2F,,--e-<BBDK)/(-5\\^*  " LL//>PU_gr{  JV  ae  u@  OY  fn/  p)/(-5\\^*  "#))I&G+,DufoVL(M0JBNN7M:tR^_&&--k6J6JLx6x  I-  J6+=+=  PY  `f  g  h  h 	X!H6+P+Pbefgbhiqw  rW  rW  X  X	Xsj   AS AS AS AS 4AS AS AS "0S AS AS %AS .F.S 	T0&?T+%T0+T0Nr8   r9   r:   rK   r6   r;   r<   r5   re   re   u   s    E*DXr<   re   c                       e Zd Zd Zy)otpVerificationc                    	 |j                   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                  j                  |      j                         }|s,t        t        j                  ddt        j                        S t
        j                  j                  ||	      j                         }|rBd
|_	        t               |_        |j                          t        t        j                  dd      S t        t        j                  dd      S # t        $ rJ}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#63N3N`s$t  }C  }X  }X  Y  Yll&&u-#63N3N`q$r  {A  {V  {V  W  W"ll111>DDF"#63N3N`q$r  {A  {V  {V  W  W<<..U#.NTTV/0H,.?.AH+MMO#63E3EWn$opp#63N3N`m$noo \av/T/Tfijkfl mu{  v[  v[  \  \\s9   AE? AE? AE? 0A2E? #E? ?	G?GGGNr7   r;   r<   r5   r   r      s    \r<   r   c                       e Zd Zd Zy)userResendOtpc                    	 |j                   j                  d      }|s,t        t        j                  ddt        j                        S t
        j                  j                  |      j                         }|st        t        j                  dd      S t        j                  ddd	      }||_        |j                          d
}t        dd|i      }|}d}|}	t        j                  ||||	g|       t        t        j                   d|d      S # t"        $ rJ}
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   sP   	\\\%%g.Ev/J/J\o px~  yT  yT  U  U||**%*8==?Hv/J/J\t uvv''dA6&,%*/0H5RX/Z ,4
wzB4Vbcv/A/ASjqw xyy 	\av/T/Tfijkfl mu{  v[  v[  \  \	\s,   AD AD A;D 	E&?E!E&!E&Nr7   r;   r<   r5   r   r      s    \r<   r   c                       e Zd Zd Zy)	userLoginc           	      4	   	 |j                   j                  d      j                         }|s,t        t        j
                  ddt        j
                        S |j                   j                  d      }|s,t        t        j
                  ddt        j
                        S t        j                  j                  |      j                         }|dk(  r,t        t        j
                  d	dt        j
                        S t        j                  j                  |      j                         }|s,t        t        j
                  d
dt        j
                        S t        j                  j                  |d      j                         }|rt        j                  ddd      }||_        |j                          d}t        dd|i      }	|	}
d}|}t!        j"                  ||
||g|	       t        t        j
                  ddt        j
                        S |j                   j                  d      }|s,t        t        j
                  ddt        j
                        S |j                   j                  d      }|s,t        t        j
                  ddt        j
                        S |j                   j                  d      }|s,t        t        j
                  ddt        j
                        S |j$                  ,t        t        j
                  ddt        j
                        S ||_        ||_        ||_        |j                          |j,                  }t/        j0                  |j                   j                  d      |      }|rt3        j4                  |      }|j6                  |j8                  |j:                  |j&                  |j<                  t?        |      t?        |j@                        d}t        t        jB                  d|d      S t        t        j
                  d dt        j
                        S # tD        $ rJ}tG        |       t        t        jH                  t?        |      dt        jH                        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LL$$W-335Ev/J/J\o px~  yT  yT  U  U||''
3Hv/J/J\r s  |B  |W  |W  X  XLL''e'4::<Dqyv/J/J  ]Y  !Z  bh  b}  b}  ~  ~||***7==?Gv/J/J\n ow}  xS  xS  T  T!%!4!45QV!4!W!]!]!_!''dA6%+$*/0H5RX/Z ,4
wzB4Vbcv/J/J\w x  AG  A\  A\  ]  ]||''
3Hv/J/J\s t  }C  }X  }X  Y  Y!,,**=9Kv/J/J\v w  @F  @[  @[  \  \ )),7Jv/J/J\u v  E  Z  Z  [  [+v/J/J\w x  AG  A\  A\  ]  ]#.G ",G (GLLN''HNN7<<#3#3J#?IE , 5 5g >%jj#MM&//#*#7#7'.'?'?"=1=--.  v/A/ASgov wxxv/J/J\n ow}  xS  xS  T  T 	X!H6+P+Pbefgbhiqw  rW  rW  X  X	Xsb   AQ AQ "AQ AQ B;Q AQ "AQ +AQ 47Q ,C+Q +Q 	R?RRRNr7   r;   r<   r5   r   r   
  s	    @Xr<   r   c                       e Zd Zd Zy)userForgetPasswordc           	          |j                   j                  d      j                         }|s,t        t        j
                  ddt        j
                        S t        j                  j                  |      j                         }|dk(  r,t        t        j
                  ddt        j
                        S t        j                  j                  |      j                         }|rdj                  t        d	      D cg c]6  }t        j                  t        j                   t        j"                  z         8 c}      }d
t%        |j&                        z   dz   |z   }t%        t(        j*                        |z   }||_        |j/                          d}	t1        dd|i      }
|
}d}|}t3        j4                  |	|||g|
       t        t        j6                  dd      S t        t        j
                  ddt        j
                        S c c}w )Nru   rv   rI   r   rw   r   zPThis email does not exist in our database, please enter the valid email address.    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   choicestringascii_lettersdigitsr-   ru   r   BASE_URLforgot_password_linkr   r   r   r   r+   )r/   r0   ru   r   r   nran_numbaselinkcompletelinkr   r   r   r   r   s                 r5   r6   zuserForgetPassword.postO  s   ((1779#63N3N`s$t  }C  }X  }X  Y  Y++%+8>>@19#63N3N  as  %t  |B  |W  |W  X  X<<..U.;AAC ggdijldm&ndm_`v}}V5I5IFMM5Y'Zdm&noG 6W]]9K Kc QT[ [H#&x'8'8#9H#DL3;G0LLN/G#34UX^`lWm#nL$0M!9JBNN7M:tZfg#63E3E  XR  %S  T  T#63N3N`r$s  |B  |W  |W  X  X 'os   ?;HNr7   r;   r<   r5   r   r   N      Xr<   r   c                       e Zd Zd Zd Zy)forgetPasswordVerificationc                    t        | j                  j                        }t        |       |j	                  d      d   }t
        j                  j                  |      j                         }|j                  dk(  rt        |d      S t
        j                  j                  ||      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(
ll))*)=CCE++|;'"455<<&&zRV&W]]_&ME'NEgmWUO<<r<   c                 \   t        j                  |j                        }|j                         r|j                  j                  d      }|j                  j                  d      }t        | j                  j                        }|j                  d      d   }t        |       t        j                  j                  |      j                         }|rJ|j                  |       d|_        |j#                          t%        j&                  |d       t)        |d      S y 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==?,,00@L#'#4#4#8#89O#P t||(()DC,J*||**:*>DDFH%%l30<-  *@Ag&=>>  '=64.AAr<   Nr   r;   r<   r5   r   r   i  s    ="Br<   r   c                       e Zd Zd Zd Zy)userUpdateProfilec                    	 t        |      }||dk(  s|j                         dk(  rt        j                  d      t	        j
                  |t        j                  dg      }|d   }t        j                  j                  |d      j                         }|s,t        t        j                  d	d
t        j                        S t        j                  j                  d      }g }|D ],  }|j                   |j"                  d}	|j%                  |	       . t&        j                  j                  d      }
g }|
D ],  }|j                   |j"                  d}
|j%                  |
       . |j                   |j(                  |j*                  |j,                  |j.                  |j0                  j                   |j0                  j"                  |j2                  j                   |j2                  j"                  |j4                  d
}t        t        j6                  d|||d      S # t8        $ rJ}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  sE   (	X,W5E}5;;=B3F 556sttjj(;(;yQGi(G+++CIIKHv/J/J\s t  }C  }X  }X  Y  Y'//666MLH$ JJ ) % !((//4/HII"!KK	   + # #++! '44#,,'1144$..44"*"7"7":":'44::#+#<#<H 6+=+=y`h  yA  NW  X  Y  Y 	X!H6+P+Pbefgbhiqw  rW  rW  X  X	Xs%   CH# EH# #	I6,?I1+I61I6c           
      `   	 t        |      }||dk(  s|j                         dk(  rt        j                  d      t	        j
                  |t        j                  dg      }|d   }t        j                  j                  |d      j                         }|s,t        t        j                  d	d
t        j                        S |j                  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                  j                  |      j#                  |j$                        }|r,t        t        j                  dd
t        j                        S |j                  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                  j!                  |
      }|j                  j!                  d      }|s,t        t        j                  dd
t        j                        S t(        j                  j!                  |      }|j                  j!                  d      }||_        ||_        ||_        |	|_        ||_        ||_        |j7                          |j$                  |j.                  |j,                  |j*                  |j4                  j$                  |j4                  j8                  |j2                  j$                  |j2                  j8                  |j0                  d	}t        t        j:                  d|d      S # t<        $ rJ}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5E}5;;=B3F 556sttjj(;(;yQGi(G+++CIIKHv/J/J\s t  }C  }X  }X  Y  Y||''
3Hv/J/J\r s  |B  |W  |W  X  XLL$$W-Ev/J/J\o px~  yT  yT  U  U,,--e-<DDDTKv/J/J  ]R  !S  [a  [v  [v  w  w"<<++N;Lv/J/J\v w  @F  @[  @[  \  \#LL,,^<Lv/J/J\v w  @F  @[  @[  \  \(0044,4GL ))+6Iv/J/J\s t  }C  }X  }X  Y  Y!))--9-=I\\%%h/F (H"HN$HO$0H!$0H!!*HMMO"++! #,,'1144$..44"*"7"7":":'44::'44H 6+=+=Omu}~ 	X!H6+P+Pbefgbhiqw  rW  rW  X  X	XsO   CO AO AO A'O ?AO AO A(O :DO 	P-#?P("P-(P-Nr   r;   r<   r5   r   r     s    )XV5Xr<   r   c                       e Zd Zd Zy)userChangePasswordc                 j   	 t        |      }||dk(  s|j                         dk(  rt        j                  d      t	        j
                  |t        j                  dg      }|d   }t        j                  j                  |d      j                         }|s,t        t        j                  d	d
t        j                        S |j                  j!                  d      }|s,t        t        j                  dd
t        j                        S |j                  j!                  d      }|s,t        t        j                  dd
t        j                        S |j                  j!                  d      }|s,t        t        j                  dd
t        j                        S |j#                  |      dk(  r,t        t        j                  dd
t        j                        S |j#                  |      |k(  r,t        t        j                  dd
t        j                        S |}	|j%                  |	       |j'                          t        t        j(                  dd
      S # t*        $ rJ}
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  s   	X,W5E}5;;=B3F 556sttjj(;(;yQGi(G+++CIIKHv/J/J\s t  }C  }X  }X  Y  Y"<<++N;Lv/J/J\v w  @F  @[  @[  \  \"<<++N;Lv/J/J\v w  @F  @[  @[  \  \#*<<#3#34J#K 'v/J/J\~   HN  Hc  Hc  d  d&&|4=v/J/J  ]C  !D  LR  Lg  Lg  h  h&&|48LLv/J/J  ]O  !P  X^  Xs  Xs  t  t+H!!(+MMO6+=+=Onopp 	X!H6+P+Pbefgbhiqw  rW  rW  X  X	XsE   CI AI AI AI  ?I  ?I  >I 	J2(?J-'J2-J2Nr7   r;   r<   r5   r  r        Xr<   r  c                       e Zd Zd Zy)userDeleteAccountc                    	 t        |      }||dk(  s|j                         dk(  rt        j                  d      t	        j
                  |t        j                  dg      }|d   }t        j                  j                  |d      j                         }|s,t        t        j                  d	d
t        j                        S t        j                          |_        |j%                          t        t        j&                  dd
      S # t(        $ rJ}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  s2   	X,W5E}5;;=B3F 556sttjj(;(;yQGi(G+++CIIKHv/J/J\s t  }C  }X  }X  Y  Y (HMMO6+=+=Omnoo 	X!H6+P+Pbefgbhiqw  rW  rW  X  X	Xs%   CD
 AD
 
	E?EEENr7   r;   r<   r5   r  r    s    Xr<   r  c                       e Zd Zd Zy)getCustomerNotificationsc                 x   	 t        |      }||dk(  s|j                         dk(  rt        j                  d      t	        j
                  |t        j                  dg      }|d   }t        j                  j                  |d      j                         }|s,t        t        j                  d	d
t        j                        S t        j                  j                  |j                   d      j#                  d      }g }|D ]N  }|j                   |j$                  |j&                  t)        |j*                        dz   d}	|j-                  |	       P t        t        j.                  d|d      S # t0        $ r?}
t        t        j2                  t5        |
      d
t        j2                        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5E}5;;=B3F 556sttjj(;(;yQGi(G+++CIIKHv/J/J\s t  }C  }X  }X  Y  Y.66==8;;bf=gppqvwJG$%~~*0*B*B!*6+<+<!=f!D	 w' % F,>,>PYahijj 	X6+P+Pbefgbhiqw  rW  rW  X  X	Xs%   CE1 B+E1 1	F9:4F4.F94F9NrS   r;   r<   r5   r  r  )  s    Xr<   r  c                       e Zd Zd Zy)deleteCustomerNotificationsc                    t        |      }||dk(  s|j                         dk(  rt        j                  d      t	        j
                  |t        j                  dg      }|d   }t        j                  j                  |d      j                         }|s,t        t        j                  d	d
t        j                        S |j                  j!                  d      }|s,t        t        j                  dd
t        j                        S t"        j                  j                  |      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  s=   (1=EVOu{{}/B112opp**UH$7$7G9M)$LL''WQ'?EEG6+F+FXopx~  yT  yT  U  U"<<++,=>6+F+FXuv  E  Z  Z  [  [%%,,,@GGQYQ]Q]Q_G`v'9'9Knoppr<   Nr7   r;   r<   r5   r$  r$  B  s    qr<   r$  c                       e Zd Zd Zy)HelpSupportUserc                    	 t        |      }||dk(  s|j                         dk(  rt        j                  d      t	        j
                  |t        j                  dg      }|d   }t        j                  j                  |d      j                         }|s,t        t        j                  d	d
t        j                        S |j                  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                  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  s   	X,W5E}5;;=B3F 556sttjj(;(;yQGi(G+++CIIKHv/J/J\s t  }C  }X  }X  Y  YLL$$W-Ev/J/J\o px~  yT  yT  U  U!,,**=9Kv/J/J\u v  E  Z  Z  [  [&&U{S[S^S^&_6+=+=Oqrss 	X6+P+Pbefgbhiqw  rW  rW  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r<   r)  c                       e Zd Zd Zy)SendServiceFeedbackc                 `   	 |j                   j                  d      }|s,t        t        j                  ddt        j                        S |j                   j                  d      }|s,t        t        j                  ddt        j                        S |j                   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                  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)r2  r3  r4  r5  z"Service Feedback Send Successfully)r&   rK   r   r   r   ServiceFeedbackrM   r   r+   r,   r.   r-   )r/   r0   r2  r3  r4  r5  r4   s          r5   r6   zSendServiceFeedback.postj  s   	X!,,**<8J#63N3N`x$y  BH  B]  B]  ^  ^((5I#63N3N`w$x  AG  A\  A\  ]  ]||''	2G#63N3N`u$v  E  Z  Z  [  [ll&&y1G#63N3N`u$v  E  Z  Z  [  [##**j9]dmt*u6+=+=Ostuu 	X6+P+Pbefgbhiqw  rW  rW  X  X	Xs9   AE% AE% AE% AE% &>E% %	F-.4F("F-(F-Nr7   r;   r<   r5   r0  r0  i      Xr<   r0  c                       e Zd Zd Zy)GetSubscriptionListc           
         	 t        |      }||dk(  s|j                         dk(  rt        j                  d      t	        j
                  |t        j                  dg      }|d   }t        j                  j                  |d      j                         }|s,t        t        j                  d	d
t        j                        S t        j                  j                  d      }g }|D ]n  }|j                   |j"                  |j$                  |j&                  |j(                  |j*                  |j,                  |j                  d}	|j/                  |	       p t        t        j0                  d|d      S # t2        $ r?}
t        t        j4                  t7        |
      d
t        j4                        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=  r>  r?  r@  rA  r*   r+   r,   r.   r-   )r/   r0   r
  r  r   r   sub_objrb   subrR   r4   s              r5   rK   zGetSubscriptionList.get~  s   	X,W5E}5;;=B3F 556sttjj(;(;yQGi(G+++CIIKHv/J/J\s t  }C  }X  }X  Y  Y(00777NGH(+(=(=/2/K/K"||II"%//&)&9&9 ZZ	 )  6+=+=y`hijj 	X6+P+Pbefgbhiqw  rW  rW  X  X	Xs%   CE7 B1E7 7	F? 4F:4F?:F?NrS   r;   r<   r5   r:  r:  }      Xr<   r:  c                       e Zd Zd Zd Zy)getAllBlogsc                    	 t        |      }||dk(  s|j                         dk(  rt        j                  d      t	        j
                  |t        j                  dg      }|d   }t        j                  j                  |d      j                         }|s,t        t        j                  d	d
t        j                        S |j                  j!                  d      }|r#t"        j                  j                  |dd      }n!t"        j                  j                  dd      }|s,t        t        j                  dd
t        j                        S t$        j                  j                  d      }g }	|D ],  }
|
j&                  |
j(                  d}|	j+                  |       . g }|D ]b  }|j&                  |j,                  |j.                  j0                  |j2                  |j4                  |j6                  d}|j+                  |       d t        t        j8                  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   rR  rH   r  r+   r,   r.   r-   )r/   r0   r
  r  r   r   rI  blog_objcat_objrT  catcat_datarb   blogrR   r4   s                   r5   rK   zgetAllBlogs.get  s;   &	X,W5E}5;;=B3F 556sttjj(;(;yQGi(G+++CIIKHv/J/J\s t  }C  }X  }X  Y  Y!,,**=9K ==//+Z^hi/j!MM00DRS0Tv/J/J\k ltz  uP  uP  Q  Q$,,33T3JGH&&%(XX )  H  JJ"&))"4"4!%"ll!% ) ! 6+=+=y`ht|}~~ 	X6+P+Pbefgbhiqw  rW  rW  X  X	Xs,   CH. BH. CH. .	I674I1+I61I6c                 ^   	 t        |      }||dk(  s|j                         dk(  rt        j                  d      t	        j
                  |t        j                  dg      }|d   }t        j                  j                  |d      j                         }|s,t        t        j                  d	d
t        j                        S |j                  j!                  d      }|s,t        t        j                  dd
t        j                        S t"        j                  j                  |dd      }|s,t        t        j                  dd
t        j                        S g }|D ]b  }	|	j$                  |	j&                  |	j(                  |	j*                  |	j,                  |	j.                  j0                  d}
|j3                  |
       d t        t        j4                  d|d      S # t6        $ r?}t        t        j8                  t;        |      d
t        j8                        cY d }~S d }~ww xY w)Nr   r   r   r   r   r   r   r   r   rI   r   rI  zcategory id is requiredTrJ  rM  )rF   rG   rR  rH   rS  rQ  r"   r#   )r   r  r   r  r  r  r   r	  r   rM   rN   rO   r   r   r   r&   rK   rU  rF   rG   rR  rH   r  r   rr   r*   r+   r,   r.   r-   )r/   r0   r
  r  r   r   rI  rX  rb   r\  rR   r4   s               r5   r6   zgetAllBlogs.post  s   	X,W5E}5;;=B3F 556sttjj(;(;yQGi(G+++CIIKHv/J/J\s t  }C  }X  }X  Y  Y!,,**=9Kv/J/J\u v  E  Z  Z  [  [}}++kVZde+fHv/J/J\k ltz  uP  uP  Q  QH  JJ!%"ll!%"&))"4"4 ) ! 6+=+=y`hijj 	X6+P+Pbefgbhiqw  rW  rW  X  X	Xs3   CG$ AG$ AG$ BG$ $	H,-4H'!H,'H,Nr   r;   r<   r5   rG  rG    s    'XRXr<   rG  c                       e Zd Zd Zy)getBlogCategoriesc                     	 t        |      }||dk(  s|j                         dk(  rt        j                  d      t	        j
                  |t        j                  dg      }|d   }t        j                  j                  |d      j                         }|s,t        t        j                  d	d
t        j                        S t        j                  j                  d      }g }|D ],  }|j                   |j"                  d}	|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   Tr\   rN  r"   r#   )r   r  r   r  r  r  r   r	  r   rM   rN   rO   r   r   r   rV  rF   rW  r*   r+   r,   r.   r-   )r/   r0   r
  r  r   r   rY  rb   rZ  rR   r4   s              r5   rK   zgetBlogCategories.get  sc   	X,W5E}5;;=B3F 556sttjj(;(;yQGi(G+++CIIKHv/J/J\s t  }C  }X  }X  Y  Y$,,33T3JGH&&%(XX )  6+=+=y`hijj 	X6+P+Pbefgbhiqw  rW  rW  X  X	Xs%   CD5 A/D5 5	E=>4E82E=8E=NrS   r;   r<   r5   r_  r_    s    Xr<   r_  c                       e Zd Zd Zy)getBlogDetailsc                    	 t        |      }||dk(  s|j                         dk(  rt        j                  d      t	        j
                  |t        j                  dg      }|d   }t        j                  j                  |d      j                         }|s,t        t        j                  d	d
t        j                        S |j                  j!                  d      }|s,t        t        j                  dd
t        j                        S t"        j                  j                  |      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        j0                  t3        |	      d
t        j0                        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   rM  )rF   rG   rR  rH   r"   r#   )r   r  r   r  r  r  r   r	  r   rM   rN   rO   r   r   r   rJ   rK   rU  rF   rG   rR  rH   r+   r,   r.   r-   )
r/   r0   r
  r  r   r   rd  rX  rR   r4   s
             r5   rK   zgetBlogDetails.get  s   	X,W5E}5;;=B3F 556sttjj(;(;yQGi(G+++CIIKHv/J/J\s t  }C  }X  }X  Y  Y**..y9Gv/J/J\q r  {A  {V  {V  W  W}}+++9??AHv/J/J\k ltz  uP  uP  Q  Q [[ %00"**	H 6+=+=y`hijj 	X6+P+Pbefgbhiqw  rW  rW  X  X	Xs3   CF6 AF6 AF6 *AF6 6	G>?4G93G>9G>NrS   r;   r<   r5   rb  rb    rE  r<   rb  c                       e Zd Zd Zy)addBlogBookmarkc                 h   	 t        |      }||dk(  s|j                         dk(  rt        j                  d      t	        j
                  |t        j                  dg      }|d   }t        j                  j                  |d      j                         }|s,t        t        j                  d	d
t        j                        S |j                  j!                  d      }|s,t        t        j                  dd
t        j                        S t"        j                  j                  |      j                         }|s,t        t        j                  dd
t        j                        S t$        j                  j'                  ||d      \  }}	|	s,|j)                          t        t        j*                  dd
      S |j-                          t        t        j*                  dd
      S # t.        $ r?}
t        t        j0                  t3        |
      d
t        j0                        cY d }
~
S d }
~
ww xY w)Nr   r   r   r   r   r   r   r   r   rI   r   rd  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   rU  BlogsBookmarksget_or_createdeleter+   r   r,   r.   r-   )r/   r0   r
  r  r   r   rd  rX  bookmark_postcreatedr4   s              r5   r6   zaddBlogBookmark.post!  s   	X,W5E}5;;=B3F 556sttjj(;(;yQGi(G+++CIIKHv/J/J\s t  }C  }X  }X  Y  Yll&&y1Gv/J/J\q r  {A  {V  {V  W  W}}+++9??AHv/J/J\l mu{  vQ  vQ  R  R%3%;%;%I%Ix]etu%I%v"M7$$&v/A/ASo pqq""$v/A/ASl mnn 	X6+P+Pbefgbhiqw  rW  rW  X  X	X9   CG) AG) AG) *AG) =+G) )	H124H,&H1,H1Nr7   r;   r<   r5   rf  rf         Xr<   rf  c                       e Zd Zd Zy)bookmarkListc                    	 t        |      }||dk(  s|j                         dk(  rt        j                  d      t	        j
                  |t        j                  dg      }|d   }t        j                  j                  |d      j                         }|s,t        t        j                  d	d
t        j                        S t        j                  j                  |j                         }g }|D ]v  }|j"                  |j$                  j&                  |j$                  j(                  |j$                  j*                  |j$                  j,                  dd}	|j/                  |	       x t        t        j0                  d|d      S # t2        $ r?}
t        t        j4                  t7        |
      d
t        j4                        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_titlerR  rH   r  r   r"   r#   )r   r  r   r  r  r  r   r	  r   rM   rN   rO   r   r   r   rk  rF   rd  r\  rG   rR  rH   r  r*   r+   r,   r.   r-   r/   r0   r
  r  r   r   rX  	blog_Datar\  	blog_datar4   s              r5   rK   zbookmarkList.get>  s   	X,W5E}5;;=B3F 556sttjj(;(;yQGi(G+++CIIKHv/J/J\s t  }C  }X  }X  Y  Y%--44HKK4HHI !%!%!5!5"ii//!%!5!5!	   + ! 6+=+=y`ijkk 	X6+P+Pbefgbhiqw  rW  rW  X  X	Xs%   CF	 CF	 		G4GGGNrS   r;   r<   r5   rs  rs  =  rE  r<   rs  c                       e Zd Zd Zy)addUserCardc           	         	 t        |      }||dk(  s|j                         dk(  rt        j                  d      t	        j
                  |t        j                  dg      }|d   }t        j                  j                  |d      j                         }|s,t        t        j                  d	d
t        j                        S |j                  j!                  d      }|st        ddit        j                        S |j"                  st%               |_        |j'                          |j"                  r|j"                  }t        j(                  t*        _        t*        j.                  j1                  ||      }|rt2        j                  j5                  ||d   |d   |d   |d   |d         }|j6                  |j8                  |j:                  |j<                  |j>                  |j@                  |jB                  |jD                  d}	t        t        jF                  d	d      S # tH        $ r0}
t        dtK        |
      it        jL                        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ZZx22wiH7Y7||""":@@B8
6#>#>Pghpv  qL  qL  M  M\\i(7
Y 56v?Z?Z[[

!
!/1HMMO%%G//FN..wg.FJ  ''Xj>NYcdoYp  {E  FP  {Q  bl  mw  bx  EO  PW  EX'  YW::##!!//''%%	W 6#5#5yX_`
aa	 V
Is1v&v/T/T
UUVs+   CH* 9H* ?D*H* *	I#3%II#I#Nr7   r;   r<   r5   r{  r{  \  s    "Vr<   r{  c                       e Zd Zd Zy)getUserCardc           
      f   	 t        |      }||dk(  s|j                         dk(  rt        j                  d      t	        j
                  |t        j                  dg      }|d   }t        j                  j                  |d      j                         }|s,t        t        j                  d	d
t        j                        S t        j                  j                  |      }g }|D ]n  }|j                   |j"                  |j$                  |j&                  |j(                  |j*                  |j,                  |j.                  d}	|j1                  |	       p t        t        j2                  d|d      S # t4        $ r0}
t        dt7        |
      it        j8                        cY d }
~
S d }
~
ww xY w)Nr   r   r   r   r   r   r   r   r   rI   r   ru  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  su   V#G,5mu%++-2*=

)
)*g
hhZZx22wiH7Y7||""":@@B8
6#>#>Pghpv  qL  qL  M  M&&h&788t
''||||++##//	H OOH  6#5#5yX`a
bb	 V
Is1v&v/T/T
UUV%   CE7 B1E7 7	F0 %F+%F0+F0NrS   r;   r<   r5   r  r    s    Vr<   r  c                       e Zd Zd Zy)deleteUserCardc                    	 t        |      }||dk(  s|j                         dk(  rt        j                  d      t	        j
                  |t        j                  dg      }|d   }t        j                  j                  |d      j                         }|s,t        t        j                  d	d
t        j                        S |j                  j!                  d      }|st        ddit        j                        S t"        j                  j                  |      j                         }|st        ddit        j                        S t        j$                  t&        _        t&        j*                  j-                  |j.                  |j0                         |j3                          t        ddi      S # t4        $ r0}t        dt7        |      it        j8                        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}  rm  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ZZx22wiH7Y7||""":@@B8
6#>#>Pghpv  qL  qL  M  M\\i(7
Y 56v?Z?Z[[&&'&288:8
Y09T9TUU..6>	??   ??
Iy)
**	 V
Is1v&v/T/T
UUVs2   CF6 9F6 ?AF6 A)F6 6	G/?%G*$G/*G/Nr7   r;   r<   r5   r  r    s    Vr<   r  c                       e Zd Zd Zy)getCommunityListingc                    	 t        |      }||dk(  s|j                         dk(  rt        j                  d      t	        j
                  |t        j                  dg      }|d   }t        j                  j                  |d      j                         }|s,t        t        j                  d	d
t        j                        S t        j                  j                  d      }g }|D ]"  }t         j                  j                  |j"                        j%                         }	t&        j                  j                  |j"                        j%                         }
t(        j                  j                  |j"                        j%                         }|j"                  |j*                  j"                  |j*                  j,                  |j*                  j.                  |j0                  |j2                  |	|
|d	}|j5                  |       % t        t        j6                  d|d      S # t8        $ r0}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   rS  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  s   	_,W5E}5;;=B3F 556sttjj(;(;yQGi(G+++CIIKHv/J/J\s t  }C  }X  }X  Y  Y%--44d4KMH*	"*"2"2"9"9ill"9"S"Y"Y"[$}}33	3MSSU"*"2"2"9"9ill"9"S"Y"Y"[ $,,(~~00!*!8!8#,>>#8#8(00"+"6"6&4#.&4 )# +$ F,>,>PYaijkk 	_YA/8]8]^^	_s%   CH, E&H, ,	I%5%I I% I%NrS   r;   r<   r5   r  r    s     _r<   r  c                       e Zd Zd Zy)addCommunityc                    	 t        |      }||dk(  s|j                         dk(  rt        j                  d      t	        j
                  |t        j                  dg      }|d   }t        j                  j                  |d      j                         }|s,t        t        j                  d	d
t        j                        S |j                  j!                  d      }|s,t        t        j                  dd
t        j                        S t"        j                  j%                  ||       t        t        j&                  dd
      S # t(        $ r0}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  sa   	_,W5E}5;;=B3F 556sttjj(;(;yQGi(G+++CIIKHv/J/J\s t  }C  }X  }X  Y  Y ' 0 01D E$v/J/J\{ |  EK  E`  E`  a  a$$H=N$OF,>,>PYZ[[ 	_YA/8]8]^^	_s+   CE AE <E 	F%E?9F?FNr7   r;   r<   r5   r  r    s    _r<   r  c                       e Zd Zd Zy)myCommunityListingc                 x   	 t        |      }||dk(  s|j                         dk(  rt        j                  d      t	        j
                  |t        j                  dg      }|d   }t        j                  j                  |d      j                         }|s,t        t        j                  d	d
t        j                        S t        j                  j                  |d      }g }|D ]v  }|j                   |j"                  j                   |j"                  j$                  |j"                  j&                  |j(                  |j*                  d}	|j-                  |	       x t        t        j.                  d|d      S # t0        $ r0}
t        dt3        |
      it        j4                        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   rS  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5E}5;;=B3F 556sttjj(;(;yQGi(G+++CIIKHv/J/J\s t  }C  }X  }X  Y  Y%--448UY4ZMH*	#,,(~~00!*!8!8#,>>#8#8(00"+"6"6 ) + F,>,>PYaijkk 	_YA/8]8]^^	_%   CF  B:F   	F9	%F4.F94F9NrS   r;   r<   r5   r  r    s    _r<   r  c                       e Zd Zd Zd Zy)editCommunityc                    	 t        |      }||dk(  s|j                         dk(  rt        j                  d      t	        j
                  |t        j                  dg      }|d   }t        j                  j                  |d      j                         }|s,t        t        j                  d	d
t        j                        S | j                  j                   j#                  d      }|s,t        t        j                  dd
t        j                        S t$        j                  j                  |      j                         }|s,t        t        j                  dd
t        j                        S |j&                  |j(                  d}t        t        j*                  d|d      S # t,        $ r0}	t        dt/        |	      it        j0                        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5E}5;;=B3F 556sttjj(;(;yQGi(G+++CIIKHv/J/J\s t  }C  }X  }X  Y  Y<<4488HLv/J/J\v w  @F  @[  @[  \  \%--44,4GMMOM v/J/J\u v  E  Z  Z  [  [ $&&(00H F,>,>PYaijkk 	_YA/8]8]^^	_s2   CF* AF* AF* 45F* *	G#3%GG#G#c                    	 t        |      }||dk(  s|j                         dk(  rt        j                  d      t	        j
                  |t        j                  dg      }|d   }t        j                  j                  |d      j                         }|s,t        t        j                  d	d
t        j                        S |j                  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                  j                  |      j%                  ||       t        t        j&                  dd
      S # t(        $ r0}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5E}5;;=B3F 556sttjj(;(;yQGi(G+++CIIKHv/J/J\s t  }C  }X  }X  Y  Y"<<++N;Lv/J/J\v w  @F  @[  @[  \  \ ' 0 01D E$v/J/J\{ |  EK  E`  E`  a  a$$$5<<HUf<gF,>,>PYZ[[ 	_YA/8]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y)deleteCommunityc                    	 t        |      }||dk(  s|j                         dk(  rt        j                  d      t	        j
                  |t        j                  dg      }|d   }t        j                  j                  |d      j                         }|s,t        t        j                  d	d
t        j                        S |j                  j!                  d      }|s,t        t        j                  dd
t        j                        S t"        j                  j                  |      j                         }|s,t        t        j                  dd
t        j                        S |j%                          t        t        j&                  dd
      S # t(        $ r0}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  rm  r+   r,   r-   r.   )	r/   r0   r
  r  r   r   r  r  r4   s	            r5   r6   zdeleteCommunity.postH  s   	_,W5E}5;;=B3F 556sttjj(;(;yQGi(G+++CIIKHv/J/J\s t  }C  }X  }X  Y  Y"<<++N;Lv/J/J\v w  @F  @[  @[  \  \%--44,4GMMOM v/J/J\u v  E  Z  Z  [  [  "F,>,>PYZ[[ 	_YA/8]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y)likeCommunityc                 *   	 t        |      }||dk(  s|j                         dk(  rt        j                  d      t	        j
                  |t        j                  dg      }|d   }t        j                  j                  |d      j                         }|s,t        t        j                  d	d
t        j                        S |j                  j!                  d      }|s,t        t        j                  dd
t        j                        S t"        j                  j                  |      j                         }|st        t        j                  dd
      S t$        j                  j'                  ||d      \  }}	|	s,|j)                          t        t        j*                  dd
      S |j-                          t        t        j*                  dd
      S # t.        $ r0}
t        dt1        |
      it        j2                        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  rl  rm  r+   r   r,   r-   r.   )r/   r0   r
  r  r   r   r  comm_obj
liked_postro  r4   s              r5   r6   zlikeCommunity.post`  s   	_,W5E}5;;=B3F 556sttjj(;(;yQGi(G+++CIIKHv/J/J\s t  }C  }X  }X  Y  Y"<<++N;Lv/J/J\v w  @F  @[  @[  \  \ ((//</@FFHHv/J/J\p qrr"'--"="=V^hi"="jJ!!#v/A/ASm noo!v/A/ASl mnn 	_YA/8]8]^^	_9   CG AG AG AG -+G 	H"%HHHNr7   r;   r<   r5   r  r  _  s    _r<   r  c                       e Zd Zd Zy)dislikeCommunityc                 *   	 t        |      }||dk(  s|j                         dk(  rt        j                  d      t	        j
                  |t        j                  dg      }|d   }t        j                  j                  |d      j                         }|s,t        t        j                  d	d
t        j                        S |j                  j!                  d      }|s,t        t        j                  dd
t        j                        S t"        j                  j                  |      j                         }|st        t        j                  dd
      S t$        j                  j'                  ||d      \  }}	|	s,|j)                          t        t        j*                  dd
      S |j-                          t        t        j*                  dd
      S # t.        $ r0}
t        dt1        |
      it        j2                        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  rl  rm  r+   r   r,   r-   r.   )r/   r0   r
  r  r   r   r  r  disliked_postro  r4   s              r5   r6   zdislikeCommunity.post  s   	_,W5E}5;;=B3F 556sttjj(;(;yQGi(G+++CIIKHv/J/J\s t  }C  }X  }X  Y  Y"<<++N;Lv/J/J\v w  @F  @[  @[  \  \ ((//</@FFHHv/J/J\p qrr%-%5%5%C%Ch\dqr%C%s"M7$$&v/A/ASh ijj""$v/A/ASo pqq 	_YA/8]8]^^	_r  Nr7   r;   r<   r5   r  r  ~      _r<   r  c                       e Zd Zd Zy)commentCommunityc                    	 t        |      }||dk(  s|j                         dk(  rt        j                  d      t	        j
                  |t        j                  dg      }|d   }t        j                  j                  |d      j                         }|s,t        t        j                  d	d
t        j                        S |j                  j!                  d      }|s,t        t        j                  dd
t        j                        S t"        j                  j                  |      j                         }|st        t        j                  dd
      S |j                  j!                  d      }|st        t        j                  dd
      S t$        j                  j'                  |||       t        t        j(                  dd
      S # t*        $ r0}	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  r5  r6  )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  r5  r4   s
             r5   r6   zcommentCommunity.post  s   	_,W5E}5;;=B3F 556sttjj(;(;yQGi(G+++CIIKHv/J/J\s t  }C  }X  }X  Y  Y"<<++N;Lv/J/J\v w  @F  @[  @[  \  \%--444EKKMM v/J/J\p qrrll&&y1Gv/J/J\q rss##GmQY#Z6+=+=Oklmm 	_YA/8]8]^^	_s8   CG AG AG 8G =G 	H
%H?H
H
Nr7   r;   r<   r5   r  r    r  r<   r  c                       e Zd Zd Zy)editCommentCommunityc                 h   	 t        |      }||dk(  s|j                         dk(  rt        j                  d      t	        j
                  |t        j                  dg      }|d   }t        j                  j                  |d      j                         }|s,t        t        j                  d	d
t        j                        S |j                  j!                  d      }|s,t        t        j                  dd
t        j                        S |j                  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                  j                  |||j$                        j'                  |       t        t        j(                  dd
      S # t*        $ r0}	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  s   	_,W5E}5;;=B3F 556sttjj(;(;yQGi(G+++CIIKHv/J/J\s t  }C  }X  }X  Y  Y )),7Jv/J/J\t u  ~D  ~Y  ~Y  Z  Z"<<++N;Lv/J/J\v w  @F  @[  @[  \  \ll&&y1Gv/J/J\q r  {A  {V  {V  W  W##
U]U`U`#ahhqxhy6+=+=Ojkll 	_YA/8]8]^^	_s:   CG8 AG8 AG8 AG8  AG8 8	H1%H,&H1,H1Nr7   r;   r<   r5   r  r    s    _r<   r  c                       e Zd Zd Zy)deleteCommentCommunityc                    	 t        |      }||dk(  s|j                         dk(  rt        j                  d      t	        j
                  |t        j                  dg      }|d   }t        j                  j                  |d      j                         }|s,t        t        j                  d	d
t        j                        S |j                  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                  j                  |||j$                        j'                          t        t        j(                  dd
      S # t*        $ r0}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   rm  r+   r,   r-   r.   )	r/   r0   r
  r  r   r   r  r  r4   s	            r5   r6   zdeleteCommentCommunity.post  s   	_,W5E}5;;=B3F 556sttjj(;(;yQGi(G+++CIIKHv/J/J\s t  }C  }X  }X  Y  Y )),7Jv/J/J\t u  ~D  ~Y  ~Y  Z  Zll&&y1Gv/J/J\q r  {A  {V  {V  W  W##z'(++#V]]_6+=+=Omnoo 	_YA/8]8]^^	_s3   CF- AF- AF- AF- -	G&6%G!G&!G&Nr7   r;   r<   r5   r  r    s    _r<   r  c                       e Zd Zd Zy)viewCommunityCommentsc                    	 t        |      }||dk(  s|j                         dk(  rt        j                  d      t	        j
                  |t        j                  dg      }|d   }t        j                  j                  |d      j                         }|s,t        t        j                  d	d
t        j                        S | j                  j                   j#                  d      }|s,t        t        j                  dd
t        j                        S t$        j                  j                  |d      }g }|D ]a  }	|	j&                  |	j(                  |	j*                  j,                  |	j*                  j.                  |	j0                  d}
|j3                  |
       c t        t        j4                  d|d      S # t6        $ r0}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   r5  r  r  rS  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   r5  rR   r4   s               r5   rK   zviewCommunityComments.get  s   	_,W5E}5;;=B3F 556sttjj(;(;yQGi(G+++CIIKHv/J/J\s t  }C  }X  }X  Y  Y<<4488HLv/J/J\v w  @F  @[  @[  \  \"**11ae1fKH& %oo ' 5 5"),,"5"5!(!3!3 ) ' F,>,>PYaijkk 	_YA/8]8]^^	_s,   CF> AF> B%F> >	G7%G2,G72G7NrS   r;   r<   r5   r  r        _r<   r  c                       e Zd Zd Zy)addBillingDetailsc           
         	 t        |      }||dk(  s|j                         dk(  rt        j                  d      t	        j
                  |t        j                  dg      }|d   }t        j                  j                  |d      j                         }|s,t        t        j                  d	d
t        j                        S |j                  j!                  d      }|s,t        t        j                  dd
t        j                        S |j                  j!                  d      }|s,t        t        j                  dd
t        j                        S |j                  j!                  d      }|s,t        t        j                  dd
t        j                        S |j                  j!                  d      }	|	s,t        t        j                  dd
t        j                        S |j                  j!                  d      }
|
s,t        t        j                  dd
t        j                        S |j                  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                  j%                  |||||	|
||       t        t        j&                  dd
      S # t(        $ r0}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5E}5;;=B3F 556sttjj(;(;yQGi(G+++CIIKHv/J/J\s t  }C  }X  }X  Y  Y((5Iv/J/J\s t  }C  }X  }X  Y  YLL$$W-Ev/J/J\o px~  yT  yT  U  U!,,**=9Kv/J/J\u v  E  Z  Z  [  [!,,**=9Kv/J/J\u v  E  Z  Z  [  [||''
3Hv/J/J\r s  |B  |W  |W  X  XLL$$W-Ev/J/J\o px~  yT  yT  U  Ull&&y1Gv/J/J\q r  {A  {V  {V  W  W##**(YUZgr  @K  U]05g + HF,>,>PYZ[[ 	_YA/8]8]^^	_V   CL AL AL AL  AL )AL 2AL ;AL AL 	M %L;5M ;M Nr7   r;   r<   r5   r  r    s    #_r<   r  c                       e Zd Zd Zy)getMyBillingDetailsc           
      f   	 t        |      }||dk(  s|j                         dk(  rt        j                  d      t	        j
                  |t        j                  dg      }|d   }t        j                  j                  |d      j                         }|s,t        t        j                  d	d
t        j                        S t        j                  j                  |      }g }|D ]n  }|j                   |j"                  |j$                  |j&                  |j(                  |j*                  |j,                  |j.                  d}	|j1                  |	       p t        t        j2                  d|d      S # t4        $ r0}
t        dt7        |
      it        j8                        cY d }
~
S d }
~
ww xY w)Nr   r   r   r   r   r   r   r   r   rI   r   ru  )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  sz   	_,W5E}5;;=B3F 556sttjj(;(;yQGi(G+++CIIKHv/J/J\s t  }C  }X  }X  Y  Y)11888IKH#'' $!ZZ"&"2"2"&"2"2#}} JJ"ll	 ) $ F,>,>PYemnoo 	_YA/8]8]^^	_r  NrS   r;   r<   r5   r  r  /  r  r<   r  c                       e Zd Zd Zy)purchaseSubscriptionc                    	 t        |      }||dk(  s|j                         dk(  rt        j                  d      t	        j
                  |t        j                  dg      }|d   }t        j                  j                  |d      j                         }|s,t        t        j                  d	d
t        j                        S |j                  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                  j!                  |      }|s,t        t        j                  dd
t        j                        S |j$                  dk(  r3t'        j(                         t+        d      z   }	|j,                  }
|
dz  }n2t'        j(                         t+        d      z   }	|j,                  }
|
dz  }t        j.                  t0        _        t0        j4                  j7                  |d|d      }|rt8        j                  j                  |d      j                         }|rd|_        |j=                          t>        j                  j7                  ||t@        j@                  jC                         |	d       d|_"        |j=                          y t        t        j                  dd
t        j                        S # tF        $ r0}t        dtI        |      it        jJ                        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   rB  r>  r
   todayr	   r?  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5E}5;;=B3F 556sttjj(;(;yQGi(G+++CIIKHv/J/J\s t  }C  }X  }X  Y  Y#LL,,_=M v/J/J\w x  AG  A\  A\  ]  ]%ll../@AO"v/J/J\y z  CI  C^  C^  _  _088<</<S#v/J/J\x y  BH  B]  B]  ^  ^((I5"jjlYB-??-33
#c)"jjlYC-@@-33
#c)$66FN]]))'	 * F 199@@xZ^@_eeg).H&MMO$,,33CSZbmum~m~  nC  nC  nE  T_  jn3  o,0)v/J/J\l mu{  vQ  vQ  R  R 	_YA/8]8]^^	_s@   CL# AL# AL# AL# %EL# 7+L# #	M,%MMMNr7   r;   r<   r5   r  r  O  s    0_r<   r  c                       e Zd Zd Zy)mySubscriptionPlanc           	         	 t        |      }||dk(  s|j                         dk(  rt        j                  d      t	        j
                  |t        j                  dg      }|d   }t        j                  j                  |d      j                         }|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"                  j,                  |j"                  j.                  d}t        t        j0                  d|d      S # t2        $ r0}t        dt5        |      it        j6                        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_descriptionr>  r?  r@  rA  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@  rA  r+   r,   r-   r.   )	r/   r0   r
  r  r   r   r  rR   r4   s	            r5   rK   zmySubscriptionPlan.get  s   	_,W5E}5;;=B3F 556sttjj(;(;yQGi(G+++CIIKHv/J/J\s t  }C  }X  }X  Y  Y 4 < < C C8`d C e k k m&))+88;;-::LL#3#@#@#Y#Y+88AA(55;;.;;GG"2"?"?"O"O
H F,>,>PYaijkk 	_YA/8]8]^^	_s%   CF2 C,F2 2	G+;%G& G+&G+NrS   r;   r<   r5   r	  r	    r  r<   r	  c                       e Zd Zd Zy)	eduAiChatc                 z   	 t        |      }||dk(  s|j                         dk(  rt        j                  d      t	        j
                  |t        j                  dg      }|d   }t        j                  j                  |d      j                         }|s,t        t        j                  d	d
t        j                        S |j                  j!                  d      }|s,t        t        j                  dd
t        j                        S dt"        _        |}d}| }d|dg}	t"        j&                  j)                  ||	d      }
|
j*                  d   j,                  d   }t        t        j.                  d|d      S # t0        $ r0}t        dt3        |      it        j4                        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5E}5;;=B3F 556sttjj(;(;yQGi(G+++CIIKHv/J/J\s t  }C  }X  }X  Y  Y||''
3Hv/J/J\r s  |B  |W  |W  X  XRFNF*LF!'F;<H,,33 4 H &&q)11)<G6 F,>,>R[elmnn
  	_YA/8]8]^^	_s,   CF AF A2F 	F:
%F5/F:5F:Nr7   r;   r<   r5   r  r    s    <_r<   r  c                       e Zd Zd Zd Zy)addBlogc                    	 t        |      }||dk(  s|j                         dk(  rt        j                  d      t	        j
                  |t        j                  dg      }|d   }t        j                  j                  |d      j                         }|s,t        t        j                  d	d
t        j                        S t        j                  j                  d      }g }|D ],  }|j                   |j"                  d}	|j%                  |	       . t        t        j&                  d|d      S # t(        $ r0}
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   rW  r"   )r$   r%   category_Datar'   )r   r  r   r  r  r  r   r	  r   rM   rN   rO   r   r   r   rV  rF   rW  r*   r+   r,   r-   r.   )r/   r0   r
  r  r   r   blog_catr  rZ  r[  r4   s              r5   rK   zaddBlog.get  sN   	_,W5E}5;;=B3F 556sttjj(;(;yQGi(G+++CIIKHv/J/J\s t  }C  }X  }X  Y  Y%--444MHM88 $$X.   F,>,>PYjwxyy 	_YA/8]8]^^	_s%   CD5 A/D5 5	E.>%E)#E.)E.c                 f   	 t        |      }||dk(  s|j                         dk(  rt        j                  d      t	        j
                  |t        j                  dg      }|d   }t        j                  j                  |d      j                         }|s,t        t        j                  d	d
t        j                        S |j                  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                  j!                  |      }|s,t        t        j                  dd
t        j                        S |j                  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                  j'                  |||	|
|       t        t        j(                  dd
      S # t*        $ r0}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   rR  Blog image is requiredrK  category is requiredr   category not foundrG   r+  rH   r  rR  rK  rG   rH   r   r"   r'   )r   r  r   r  r  r  r   r	  r   rM   rN   rO   r   r   r   r&   rK   rV  rU  r   r+   r,   r-   r.   )r/   r0   r
  r  r   r   rR  rK  catgeory_objrG   rH   r4   s               r5   r6   zaddBlog.post  s   !	_,W5E}5;;=B3F 556sttjj(;(;yQGi(G+++CIIKHv/J/J\s t  }C  }X  }X  Y  Y )),7Jv/J/J\t u  ~D  ~Y  ~Y  Z  Z||''
3Hv/J/J\r s  |B  |W  |W  X  X(00444ALv/J/J\p qy  zU  zU  V  VLL$$W-Ev/J/J\o px~  yT  yT  U  Ull&&y1Gv/J/J\q r  {A  {V  {V  W  WMM  Z<V[dkqy zF,>,>PYZ[[  	_YA/8]8]^^	_sG   CI7 AI7 AI7 AI7 %AI7 .AI7 7?I7 7	J0 %J+%J0+J0Nr   r;   r<   r5   r  r    s    _0"_r<   r  c                       e Zd Zd Zd Zy)editBlogc                    	 t        |      }||dk(  s|j                         dk(  rt        j                  d      t	        j
                  |t        j                  dg      }|d   }t        j                  j                  |d      j                         }|s,t        t        j                  d	d
t        j                        S t        j                  j                  d      }g }|D ],  }|j                   |j"                  d}	|j%                  |	       . |j&                  j)                  d      }
|
s,t        t        j                  dd
t        j                        S t*        j                  j)                  |
      }|j                   |j,                  |j.                  |j0                  d}t        t        j2                  d||d      S # t4        $ r0}t        dt7        |      it        j8                        cY d }~S d }~ww xY w)Nr   r   r   r   r   r   r   r   r   rI   r   Tr\   r  rd  Blog Id is requiredr   )rd  rG   rR  rH   r"   )r$   r%   r&   r  r'   )r   r  r   r  r  r  r   r	  r   rM   rN   rO   r   r   r   rV  rF   rW  r*   rJ   rK   rU  rG   rR  rH   r+   r,   r-   r.   )r/   r0   r
  r  r   r   r   r  rZ  r[  rd  rX  rR   r4   s                 r5   rK   zeditBlog.get  s   !	_,W5E}5;;=B3F 556sttjj(;(;yQGi(G+++CIIKHv/J/J\s t  }C  }X  }X  Y  Y%--444MHM88 $$X.   **..y9Gv/J/J\q r  {A  {V  {V  W  W ))w)7H"++ %00"**	H F,>,>PYai  {H  I  J  J 	_YA/8]8]^^	_s,   CG BG !A,G 	H%H<HHc                    	 t        |      }||dk(  s|j                         dk(  rt        j                  d      t	        j
                  |t        j                  dg      }|d   }t        j                  j                  |d      j                         }|s,t        t        j                  d	d
t        j                        S |j                  j!                  d      }|s,t        t        j                  dd
t        j                        S |j                  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                  j!                  |      }	|	s,t        t        j                  dd
t        j                        S |j                  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                  j                  |      j'                  ||	|
||       t        t        j(                  dd
      S # t*        $ r0}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   rd  r*  rR  r"  rK  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   rV  rU  r'  r+   r,   r-   r.   )r/   r0   r
  r  r   r   rd  rR  rK  r&  rG   rH   r4   s                r5   r6   zeditBlog.postB  s   %	_,W5E}5;;=B3F 556sttjj(;(;yQGi(G+++CIIKHv/J/J\s t  }C  }X  }X  Y  Yll&&y1Gv/J/J\q r  {A  {V  {V  W  W )),7Jv/J/J\t u  ~D  ~Y  ~Y  Z  Z||''
3Hv/J/J\r s  |B  |W  |W  X  X(00444ALv/J/J\p qy  zU  zU  V  VLL$$W-Ev/J/J\o px~  yT  yT  U  Ull&&y1Gv/J/J\q r  {A  {V  {V  W  WMM  g .55*Xdkp  zA  GO5  PF,>,>PYZ[[ 	_YA/8]8]^^	_sO   CK AK AK AK  AK .AK 7AK  AK 	L	%L>L	L	Nr   r;   r<   r5   r(  r(    s    "_H&_r<   r(  c                       e Zd Zd Zy)myBlogListingc           	      x   	 t        |      }||dk(  s|j                         dk(  rt        j                  d      t	        j
                  |t        j                  dg      }|d   }t        j                  j                  |d      j                         }|s,t        t        j                  d	d
t        j                        S t        j                  j                  |      }g }|D ]w  }|j                   |j"                  |j$                  |j&                  j                   |j&                  j(                  |j*                  |j,                  d}	|j/                  |	       y t        t        j0                  d|d      S # t2        $ r0}
t        dt5        |
      it        j6                        cY d }
~
S d }
~
ww xY w)Nr   r   r   r   r   r   r   r   r   rI   r   ru  )rF   rR  rv  rI  rK  rH   r  r"   r#   r'   )r   r  r   r  r  r  r   r	  r   rM   rN   rO   r   r   r   rU  rF   rR  rG   rK  rW  rH   r  r*   r+   r,   r-   r.   rw  s              r5   rK   zmyBlogListing.getl  s{   	_,W5E}5;;=B3F 556sttjj(;(;yQGi(G+++CIIKHv/J/J\s t  }C  }X  }X  Y  Y--X->HI ''"&//"&**#'==#3#3 $ 2 2#||"&//	   + ! F,>,>PYajkll 	_YA/8]8]^^	_r  NrS   r;   r<   r5   r-  r-  k      _r<   r-  c                       e Zd Zd Zy)deleteMyBlogc                 ,   	 t        |      }||dk(  s|j                         dk(  rt        j                  d      t	        j
                  |t        j                  dg      }|d   }t        j                  j                  |d      j                         }|s,t        t        j                  d	d
t        j                        S |j                  j!                  d      }|s,t        t        j                  dd
t        j                        S t"        j                  j!                  |      }|j%                          t        t        j&                  dd
      S # t(        $ r0}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   rd  zblog_id is requiredr   r"   r'   )r   r  r   r  r  r  r   r	  r   rM   rN   rO   r   r   r   r&   rK   rU  rm  r+   r,   r-   r.   )	r/   r0   r
  r  r   r   rd  rX  r4   s	            r5   r6   zdeleteMyBlog.post  sf   	_,W5E}5;;=B3F 556sttjj(;(;yQGi(G+++CIIKHv/J/J\s t  }C  }X  }X  Y  Yll&&y1Gv/J/J\q r  {A  {V  {V  W  W***8HOOF,>,>PYZ[[ 	_YA/8]8]^^	_s,   CE AE AE 	F#%FFFNr7   r;   r<   r5   r1  r1    r  r<   r1  c                       e Zd Zd Zy)addEventc           
         	 t        |      }||dk(  s|j                         dk(  rt        j                  d      t	        j
                  |t        j                  dg      }|d   }t        j                  j                  |d      j                         }|s,t        t        j                  d	d
t        j                        S |j                  j!                  d      }|s,t        t        j                  dd
t        j                        S |j                  j!                  d      }|s,t        t        j                  dd
t        j                        S |j                  j!                  d      }|s,t        t        j                  dd
t        j                        S |j                  j!                  d      }	|	s,t        t        j                  dd
t        j                        S |j                  j!                  d      }
|
s,t        t        j                  dd
t        j                        S |j                  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                  j%                  |||	|
||||      }t        t        j&                  dd
      S # t(        $ r0}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,  r-  r
   date is required
start_timestart time is requiredend_timeend time is requiredlocationlocation is requiredr8  r,  r
   r;  r=  r?  r   r6  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   r6  r8  r,  r
   r;  r=  r?  	event_objr4   s                  r5   r6   zaddEvent.post  s:   )	_,W5E}5;;=B3F 556sttjj(;(;yQGi(G+++CIIKHv/J/J\s t  }C  }X  }X  Y  Y!,,**=9Kv/J/J\u v  E  Z  Z  [  [ )),7Jv/J/J\t u  ~D  ~Y  ~Y  Z  Z!,,**=9Kv/J/J\u v  E  Z  Z  [  [<<##F+Dv/J/J\n ow}  xS  xS  T  T )),7Jv/J/J\t u  ~D  ~Y  ~Y  Z  Z||''
3Hv/J/J\r s  |B  |W  |W  X  X||''
3Hv/J/J\r s  |B  |W  |W  X  X--:T_fj  wA  KS  ]e  ks  @K-  LIF,>,>PYZ[[ 	_YA/8]8]^^	_r  Nr7   r;   r<   r5   r4  r4    s    *_r<   r4  c                       e Zd Zd Zd Zy)	editEventc                 ~   	 t        |      }||dk(  s|j                         dk(  rt        j                  d      t	        j
                  |t        j                  dg      }|d   }t        j                  j                  |d      j                         }|s,t        t        j                  d	d
t        j                        S |j                  j!                  d      }|s,t        t        j                  dd
t        j                        S t"        j                  j                  ||      j                         }|s,t        t        j                  dd
t        j                        S |j$                  |j&                  |j(                  |j*                  j$                  |j,                  |j.                  |j0                  |j2                  |j4                  |j6                  d
}t        t        j8                  d|d      S # t:        $ r0}	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   r6  r8  r   r,  r
   r;  r=  r?  rS  r"   r#   r'    r   r  r   r  r  r  r   r	  r   rM   rN   rO   r   r   r   GETrK   rB  rF   r6  r8  r   r,  r
   r;  r=  r?  r  r+   r,   r-   r.   
r/   r0   r
  r  r   r   rG  rC  rR   r4   s
             r5   rK   zeditEvent.get  s   "	_,W5E}5;;=B3F 556sttjj(;(;yQGi(G+++CIIKHv/J/J\s t  }C  }X  }X  Y  Y{{z2Hv/J/J\r s  |B  |W  |W  X  X..H.QWWYIv/J/J\l mu{  vQ  vQ  R  R  ll'33&11 ~~(('33 ~~&11$--$--&11H F,>,>PYaijkk 	_YA/8]8]^^	_s3   CH AH AH +BH 	H<%H71H<7H<c           
      8   	 t        |      }||dk(  s|j                         dk(  rt        j                  d      t	        j
                  |t        j                  dg      }|d   }t        j                  j                  |d      j                         }|s,t        t        j                  d	d
t        j                        S |j                  j!                  d      }|s,t        t        j                  dd
t        j                        S |j                  j!                  d      }|s,t        t        j                  dd
t        j                        S |j                  j!                  d      }|s,t        t        j                  dd
t        j                        S |j                  j!                  d      }	|	s,t        t        j                  dd
t        j                        S |j                  j!                  d      }
|
s,t        t        j                  dd
t        j                        S |j                  j!                  d      }|s,t        t        j                  dd
t        j                        S |j                  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                  j                  |      j%                  ||	|
|||||      }t        t        j&                  dd
      S # t(        $ r0}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  rH  r6  r7  r8  r9  r,  r-  r
   r:  r;  r<  r=  r>  r?  r@  r   rA  r"   r'   )r   r  r   r  r  r  r   r	  r   rM   rN   rO   r   r   r   r&   rK   rB  r'  r+   r,   r-   r.   )r/   r0   r
  r  r   r   rG  r6  r8  r,  r
   r;  r=  r?  rC  r4   s                   r5   r6   zeditEvent.post  s   -	_,W5E}5;;=B3F 556sttjj(;(;yQGi(G+++CIIKHv/J/J\s t  }C  }X  }X  Y  Y||''
3Hv/J/J\r s  |B  |W  |W  X  X!,,**=9Kv/J/J\u v  E  Z  Z  [  [ )),7Jv/J/J\t u  ~D  ~Y  ~Y  Z  Z!,,**=9Kv/J/J\u v  E  Z  Z  [  [<<##F+Dv/J/J\n ow}  xS  xS  T  T )),7Jv/J/J\t u  ~D  ~Y  ~Y  Z  Z||''
3Hv/J/J\r s  |B  |W  |W  X  X||''
3Hv/J/J\r s  |B  |W  |W  X  X--8-<CCQ[ju  }A  MW  ai  s{  AI  VaC  bIF,>,>PYZ[[ 	_YA/8]8]^^	_s]   CM  AM  AM  AM   AM  )AM  2AM  ;AM  AM  AM   	N)%NNNNr   r;   r<   r5   rE  rE    s    #_N._r<   rE  c                       e Zd Zd Zy)myEventListingc                    	 t        |      }||dk(  s|j                         dk(  rt        j                  d      t	        j
                  |t        j                  dg      }|d   }t        j                  j                  |d      j                         }|s,t        t        j                  d	d
t        j                        S t        j                  j                  |d      }g }|D ]  }|j                   |j"                  |j$                  |j&                  j                   |j(                  |j*                  |j,                  |j.                  |j0                  |j2                  d
}	|j5                  |	        t        t        j6                  d|d      S # t8        $ r0}
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]   rJ  r"   r#   r'   r   r  r   r  r  r  r   r	  r   rM   rN   rO   r   r   r   rB  rF   r6  r8  r   r,  r
   r;  r=  r?  r  r*   r+   r,   r-   r.   r/   r0   r
  r  r   r   rC  rb   eventrR   r4   s              r5   rK   zmyEventListing.get.  s   	_,W5E}5;;=B3F 556sttjj(;(;yQGi(G+++CIIKHv/J/J\s t  }C  }X  }X  Y  Y..(VZ.[IH"(("'"3"3!&!1!1 ::=="'"3"3 ::!&!1!1$~~$~~!&!1!1 ) # F,>,>PYaijkk 	_YA/8]8]^^	_s%   CF CF 	G!%GGGNrS   r;   r<   r5   rP  rP  -  r/  r<   rP  c                       e Zd Zd Zy)deleteEventc                    	 t        |      }||dk(  s|j                         dk(  rt        j                  d      t	        j
                  |t        j                  dg      }|d   }t        j                  j                  |d      j                         }|s,t        t        j                  d	d
t        j                        S |j                  j!                  d      }|s,t        t        j                  dd
t        j                        S t"        j                  j!                  ||      }|s,t        t        j                  dd
t        j                        S t%        j&                         |_        |j+                          t        t        j,                  dd
      S # t.        $ r0}t        dt1        |      it        j2                        cY d }~S d }~ww xY w)Nr   r   r   r   r   r   r   r   r   rI   r   rG  zevent_id is requiredrF   r   rI  r"   r'   )r   r  r   r  r  r  r   r	  r   rM   rN   rO   r   r   r   r&   rK   rB  r   r   r   r   r+   r,   r-   r.   )	r/   r0   r
  r  r   r   rG  rC  r4   s	            r5   r6   zdeleteEvent.postO  s   	_,W5E}5;;=B3F 556sttjj(;(;yQGi(G+++CIIKHv/J/J\s t  }C  }X  }X  Y  Y||''
3Hv/J/J\r s  |B  |W  |W  X  X ..,,((,KIv/J/J\l mu{  vQ  vQ  R  R!)INNF,>,>PYZ[[ 	_YA/8]8]^^	_s3   CF" AF" AF" AF" "	G+%GGGNr7   r;   r<   r5   rV  rV  N  s    _r<   rV  c                       e Zd Zd Zy)allEventListingc                    	 t        |      }||dk(  s|j                         dk(  rt        j                  d      t	        j
                  |t        j                  dg      }|d   }t        j                  j                  |d      j                         }|s,t        t        j                  d	d
t        j                        S t        j                  j                  d      }g }|D ]  }|j                   |j"                  |j$                  |j&                  j                   |j(                  |j*                  |j,                  |j.                  |j0                  |j2                  d
}	|j5                  |	        t        t        j6                  d|d      S # t8        $ r0}
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\   rJ  r"   r#   r'   rR  rS  s              r5   rK   zallEventListing.getj  s   	_,W5E}5;;=B3F 556sttjj(;(;yQGi(G+++CIIKHv/J/J\s t  }C  }X  }X  Y  Y...EIH"(("'"3"3!&!1!1 ::=="'"3"3 ::!&!1!1$~~$~~!&!1!1 ) # F,>,>PYaijkk 	_YA/8]8]^^	_s%   CF CF 	G %GGGNrS   r;   r<   r5   rZ  rZ  i  r/  r<   rZ  c                       e Zd Zd Zy)viewEventDetailsc                 "   	 t        |      }||dk(  s|j                         dk(  rt        j                  d      t	        j
                  |t        j                  dg      }|d   }t        j                  j                  |d      j                         }|s,t        t        j                  d	d
t        j                        S |j                  j!                  d      }|s,t        t        j                  dd
t        j                        S t"        j                  j                  |d      j                         }|j$                  |j&                  |j(                  |j*                  j$                  |j,                  |j.                  |j0                  |j2                  |j4                  |j6                  d
}t        t        j8                  d|d      S # t:        $ r0}	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  rH  TrF   r]   rJ  r"   r#   r'   rK  rM  s
             r5   rK   zviewEventDetails.get  s    	_,W5E}5;;=B3F 556sttjj(;(;yQGi(G+++CIIKHv/J/J\s t  }C  }X  }X  Y  Y{{z2Hv/J/J\r s  |B  |W  |W  X  X..8T.RXXZI  ll'33&11 ~~(('33 ~~&11$--$--&11H F,>,>PYaijkk 	_YA/8]8]^^	_s,   CG AG CG 	H%H	H	HNrS   r;   r<   r5   r]  r]    s    !_r<   r]  c                       e Zd Zd Zy)	saveEventc                 h   	 t        |      }||dk(  s|j                         dk(  rt        j                  d      t	        j
                  |t        j                  dg      }|d   }t        j                  j                  |d      j                         }|s,t        t        j                  d	d
t        j                        S |j                  j!                  d      }|s,t        t        j                  dd
t        j                        S t"        j                  j                  |      j                         }|s,t        t        j                  dd
t        j                        S t$        j                  j'                  ||d      \  }}	|	s,|j)                          t        t        j*                  dd
      S |j-                          t        t        j*                  dd
      S # t.        $ r?}
t        t        j0                  t3        |
      d
t        j0                        cY d }
~
S d }
~
ww xY w)Nr   r   r   r   r   r   r   r   r   rI   r   rG  rH  r   zEvent not found)rT  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   rB  SavedEventsrl  rm  r+   r   r,   r.   r-   )r/   r0   r
  r  r   r   rG  rC  saved_eventro  r4   s              r5   r6   zsaveEvent.post  s   	X,W5E}5;;=B3F 556sttjj(;(;yQGi(G+++CIIKHv/J/J\s t  }C  }X  }X  Y  Y||''
3Hv/J/J\r s  |B  |W  |W  X  X--8-<BBDIv/J/J\m nv|  wR  wR  S  S#.#6#6#D#D9Zblm#D#n K""$v/A/ASl mnn  "v/A/ASi jkk 	X6+P+Pbefgbhiqw  rW  rW  X  X	Xrp  Nr7   r;   r<   r5   ra  ra    rq  r<   ra  c                       e Zd Zd Zy)savedEventListingc                    	 t        |      }||dk(  s|j                         dk(  rt        j                  d      t	        j
                  |t        j                  dg      }|d   }t        j                  j                  |d      j                         }|s,t        t        j                  d	d
t        j                        S t        j                  j                  |      }g }|D ]  }|j                   |j"                  j                   |j"                  j$                  |j"                  j&                  |j"                  j(                  j                   |j"                  j*                  |j"                  j,                  |j"                  j.                  |j"                  j0                  |j"                  j2                  |j"                  j4                  d}	|j7                  |	        t        t        j8                  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   rG  r6  r8  r   r,  r
   r;  r=  r?  rS  r"   r#   ) r   r  r   r  r  r  r   r	  r   rM   rN   rO   r   r   r   rd  rF   rT  r6  r8  r   r,  r
   r;  r=  r?  r  r*   r+   r,   r.   r-   )r/   r0   r
  r  r   r   re  rb   savedrR   r4   s              r5   rK   zsavedEventListing.get  s   	X,W5E}5;;=B3F 556sttjj(;(;yQGi(G+++CIIKHv/J/J\s t  }C  }X  }X  Y  Y&..555IKH$(( %"'++"9"9!&!7!7 ;;++.."'++"9"9 ;;++!&!7!7${{33${{33!&!7!7 ) %  F,>,>PYaijkk 	X6+P+Pbefgbhiqw  rW  rW  X  X	Xs%   CH E H 	I4I	I	INrS   r;   r<   r5   rg  rg    s     Xr<   rg  c                       e Zd Zd Zy)getInvestmentNewsc                    	 t        |      }||dk(  s|j                         dk(  rt        j                  d      t	        j
                  |t        j                  dg      }|d   }t        j                  j                  |d      j                         }|s,t        t        j                  d	d
t        j                        S dd l}d}d}dd|d}	 |j                   ||	      }
|
j"                  dk(  r?|
j%                         }|j!                  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  rK  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   rx  urlr  ru  r  r&   rw  r4   s                 r5   rK   zgetInvestmentNews.get  s   	X,W5E}5;;=B3F 556sttjj(;(;yQGi(G+++CIIKHv/J/J\s t  }C  }X  }X  Y  Y8C8G  &!F $x||C7H##s*}}88J30B0BT]em!noov/J/J^efnfzfze{{~  @H  @M  @M  N  ]O  !P  X^  Xs  Xs  t  t 	X6+P+Pbefgbhiqw  rW  rW  X  X	Xs,   CE; A/E; 5AE; ;	G4F>8G>GNrS   r;   r<   r5   rl  rl    r  r<   rl  c                       e Zd Zd Zy)saveInvestmentNewsc                 |   	 t        |      }||dk(  s|j                         dk(  rt        j                  d      t	        j
                  |t        j                  dg      }|d   }t        j                  j                  |d      j                         }|s,t        t        j                  d	d
t        j                        S |j                  j!                  d      }|s,t        t        j                  dd
t        j                        S |j                  j!                  d      }|s,t        t        j                  dd
t        j                        S |j                  j!                  d      }|s,t        t        j                  dd
t        j                        S |j                  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                  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,  r-  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  s   #	X,W5E}5;;=B3F 556sttjj(;(;yQGi(G+++CIIKHv/J/J\s t  }C  }X  }X  Y  Y\\%%g.Ev/J/J\o px~  yT  yT  U  U!,,**=9Kv/J/J\u v  E  Z  Z  [  [,,""5)Cv/J/J\m nv|  wR  wR  S  S )),7Jv/J/J\t u  ~D  ~Y  ~Y  Z  Z"<<++N;Lv/J/J\v w  @F  @[  @[  \  \$$5[S\f  uA  GO$  PF,>,>PYZ[[ 	X6+P+Pbefgbhiqw  rW  rW  X  X	XsH   CI3 AI3 AI3 AI3  AI3 )AI3 2A I3 3	J;<4J60J;6J;Nr7   r;   r<   r5   r}  r}    s    $Xr<   r}  c                       e Zd Zd Zy)removedSavedNewsc                 J   	 t        |      }||dk(  s|j                         dk(  rt        j                  d      t	        j
                  |t        j                  dg      }|d   }t        j                  j                  |d      j                         }|s,t        t        j                  d	d
t        j                        S |j                  j!                  d      }|s,t        t        j                  dd
t        j                        S t"        j                  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   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  rm  r+   r,   r.   r-   )	r/   r0   r
  r  r   r   r  news_objr4   s	            r5   r6   zremovedSavedNews.post=  s   	X,W5E}5;;=B3F 556sttjj(;(;yQGi(G+++CIIKHv/J/J\s t  }C  }X  }X  Y  Y||''
3Hv/J/J\r s  |B  |W  |W  X  X ((,,(,;HOOF,>,>PYZ[[ 	X6+P+Pbefgbhiqw  rW  rW  X  X	X,   CE AE AE 	F"#4FF"F"Nr7   r;   r<   r5   r  r  <  r8  r<   r  c                       e Zd Zd Zy)mySavedNewsc           	         	 t        |      }||dk(  s|j                         dk(  rt        j                  d      t	        j
                  |t        j                  dg      }|d   }t        j                  j                  |d      j                         }|s,t        t        j                  d	d
t        j                        S t        j                  j                  |j                         }g }|D ]c  }|j                   |j"                  |j$                  |j&                  |j(                  |j*                  |j,                  d}	|j/                  |	       e t        t        j0                  d|d      S # t2        $ r?}
t        t        j4                  t7        |
      d
t        j4                        cY d }
~
S d }
~
ww xY w)Nr   r   r   r   r   r   r   r   r   rI   r   ri  )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5E}5;;=B3F 556sttjj(;(;yQGi(G+++CIIKHv/J/J\s t  }C  }X  }X  Y  Y ((//(++/FHH  JJ"&"2"2((!%$($5$5"&//	 ) ! F,>,>PYaijkk 	X6+P+Pbefgbhiqw  rW  rW  X  X	Xs%   CE6 B0E6 6	F>?4F93F>9F>NrS   r;   r<   r5   r  r  R  rE  r<   r  c                       e Zd Zd Zy)getInvestmentEducationCategoryc                    	 t        |      }||dk(  s|j                         dk(  rt        j                  d      t	        j
                  |t        j                  dg      }|d   }t        j                  j                  |d      j                         }|s,t        t        j                  d	d
t        j                        S t        j                  j                  dd      }g }|D ]7  }|j                   |j"                  |j$                  d}	|j'                  |	       9 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   TrL  )rF   rW  
is_premiumr"   r#   )r   r  r   r  r  r  r   r	  r   rM   rN   rO   r   r   r   InvestmentEducationCategoryrF   rW  is_subscriptionr*   r+   r,   r.   r-   )r/   r0   r
  r  r   r   rK  rb   rZ  rR   r4   s              r5   rK   z"getInvestmentEducationCategory.getr  sq   	X,W5E}5;;=B3F 556sttjj(;(;yQGi(G+++CIIKHv/J/J\s t  }C  }X  }X  Y  Y2::AAUYabAcHH88!$!4!4
 )   F,>,>PYaijkk 	X6+P+Pbefgbhiqw  rW  rW  X  X	Xs%   CE A;E 	F	
4F>F	F	NrS   r;   r<   r5   r  r  q  r   r<   r  c                       e Zd Zd Zy)!getInvestmentEducationSubcategoryc                    	 t        |      }||dk(  s|j                         dk(  rt        j                  d      t	        j
                  |t        j                  dg      }|d   }t        j                  j                  |d      j                         }|s,t        t        j                  d	d
t        j                        S |j                  j!                  d      }|s,t        t        j                  dd
t        j                        S t"        j                  j                  |dd      }g }|D ]V  }	|	j$                  |	j&                  |	j(                  j$                  |	j(                  j&                  d}
|j+                  |
       X t        t        j,                  d|d      S # t.        $ r?}t        t        j0                  t3        |      d
t        j0                        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 requiredTrJ  )rF   rW  rI  rO  r"   r#   )r   r  r   r  r  r  r   r	  r   rM   rN   rO   r   r   r   rL  rK   InvestmentEducationSubCategoryrF   rW  rK  r*   r+   r,   r.   r-   )r/   r0   r
  r  r   r   r  rC  rb   rD  rR   r4   s               r5   rK   z%getInvestmentEducationSubcategory.get  s   	X,W5E}5;;=B3F 556sttjj(;(;yQGi(G+++CIIKHv/J/J\s t  }C  }X  }X  Y  Ykkooi0Gv/J/J\q r  {A  {V  {V  W  W4<<CCwjnvwCyGH88"%,,//$'LL$5$5	 )   F,>,>PYaijkk 	X6+P+Pbefgbhiqw  rW  rW  X  X	Xs,   CF* AF* BF* *	G234G-'G2-G2NrS   r;   r<   r5   r  r    s    Xr<   r  c                       e Zd Zd Zy)getInvestmentEducationDetailsc           
         	 t        |      }||dk(  s|j                         dk(  rt        j                  d      t	        j
                  |t        j                  dg      }|d   }t        j                  j                  |d      j                         }|s,t        t        j                  d	d
t        j                        S |j                  j!                  d      }|s,t        t        j                  dd
t        j                        S t"        j                  j                  |      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.                  |j0                  |j2                  d	}t        t        j4                  d|d      S # t6        $ r?}	t        t        j8                  t;        |	      d
t        j8                        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   videorS  r"   r#   )r   r  r   r  r  r  r   r	  r   rM   rN   rO   r   r   r   rL  rK   InvestmentEducationContentrF   r  rK  rW  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5E}5;;=B3F 556sttjj(;(;yQGi(G+++CIIKHv/J/J\s t  }C  }X  }X  Y  Y%kkoo.?@O"v/J/J\y z  CI  C^  C^  _  _4<<CCSbCciikKv/J/J\n ow}  xS  xS  T  T !^^#.#;#;#D#D#G#G%0%=%=%F%F%K%K"-":":"C"C"F"F$/$<$<$E$E$J$J#))%--#))(33
H F,>,>PYaijkk 	X6+P+Pbefgbhiqw  rW  rW  X  X	Xs3   CH= AH= AH= *CH= =	J4J :J JNrS   r;   r<   r5   r  r    s    "Xr<   r  c                       e Zd Zd Zy)topGainersStocksc                 N   	 t        |      }||dk(  s|j                         dk(  rt        j                  d      t	        j
                  |t        j                  dg      }|d   }t        j                  j                  |d      j                         }|s,t        t        j                  d	d
t        j                        S t        j                   d      }|D cg c]  }|j#                  d       }}|D 	cg c]  }	t%        j&                  |	       }
}	g }|
D ]  }|j)                  |        t        t        j*                  d|d      S c c}w c c}	w # 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   1https://finance.yahoo.com/markets/stocks/gainers/recordsorientr"   r#   r   r  r   r  r  r  r   r	  r   rM   rN   rO   r   r   r   pd	read_htmlto_jsonry  loadsextendr+   r,   r.   r-   r/   r0   r
  r  r   r   all_stocks_listdfstocks_json_listjson_strstocks_json_objectsflattened_stocks_listsublistr4   s                 r5   rK   ztopGainersStocks.get  s   )	=,W5E}5;;=B3F 556sttjj(;(;yQGi(G+++CIIKHv/J/J\s t  }C  }X  }X  Y  Y !ll+^_O HWW

)
 <W IY"YHXH4::h#7HX"Y %'!.%,,W5 / %11"+-  #  X #Z   	=%DD"%a& ;;= =	=B   CE E E7E =E8E 
E 	F$%4FF$F$NrS   r;   r<   r5   r  r    s    *=r<   r  c                       e Zd Zd Zy)topLooserStocksc                 N   	 t        |      }||dk(  s|j                         dk(  rt        j                  d      t	        j
                  |t        j                  dg      }|d   }t        j                  j                  |d      j                         }|s,t        t        j                  d	d
t        j                        S t        j                   d      }|D cg c]  }|j#                  d       }}|D 	cg c]  }	t%        j&                  |	       }
}	g }|
D ]  }|j)                  |        t        t        j*                  d|d      S c c}w c c}	w # 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   0https://finance.yahoo.com/markets/stocks/losers/r  r  r"   r#   r  r  s                 r5   rK   ztopLooserStocks.get	  s   !	=,W5E}5;;=B3F 556sttjj(;(;yQGi(G+++CIIKHv/J/J\s t  }C  }X  }X  Y  Y !ll+]^O HWW

)
 <W IY"YHXH4::h#7HX"Y %'!.%,,W5 /%11"+-    X #Z  	=%DD"%a& ;;= =	=r  NrS   r;   r<   r5   r  r  	      "=r<   r  c                       e Zd Zd Zy)topActiveStocksc                 N   	 t        |      }||dk(  s|j                         dk(  rt        j                  d      t	        j
                  |t        j                  dg      }|d   }t        j                  j                  |d      j                         }|s,t        t        j                  d	d
t        j                        S t        j                   d      }|D cg c]  }|j#                  d       }}|D 	cg c]  }	t%        j&                  |	       }
}	g }|
D ]  }|j)                  |        t        t        j*                  d|d      S c c}w c c}	w # 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   5https://finance.yahoo.com/markets/stocks/most-active/r  r  r"   r#   r  r  s                 r5   rK   ztopActiveStocks.get+	  s   !	=,W5E}5;;=B3F 556sttjj(;(;yQGi(G+++CIIKHv/J/J\s t  }C  }X  }X  Y  Y !ll+bcO HWW

)
 <W IY"YHXH4::h#7HX"Y %'!.%,,W5 / %11"+-    X #Z  	=%DD"%a& ;;= =	=r  NrS   r;   r<   r5   r  r  *	  r  r<   r  c                       e Zd Zd Zy)getAllStocksc                 N   	 t        |      }||dk(  s|j                         dk(  rt        j                  d      t	        j
                  |t        j                  dg      }|d   }t        j                  j                  |d      j                         }|s,t        t        j                  d	d
t        j                        S t        j                   d      }|D cg c]  }|j#                  d       }}|D 	cg c]  }	t%        j&                  |	       }
}	g }|
D ]  }|j)                  |        t        t        j*                  d|d      S c c}w c c}	w # 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   zRhttps://in.tradingview.com/markets/stocks-united-kingdom/market-movers-all-stocks/r  r  r"   r#   r  r  s                 r5   rK   zgetAllStocks.getR	  s   !	=,W5E}5;;=B3F 556sttjj(;(;yQGi(G+++CIIKHv/J/J\s t  }C  }X  }X  Y  Y !ll+  AO HWW

)
 <W IY"YHXH4::h#7HX"Y %'!.%,,W5 / %11"+-    X #Z  	=%DD"%a& ;;= =	=r  NrS   r;   r<   r5   r  r  Q	  r  r<   r  c                       e Zd Zd Zy)getAllCommoditiesc                 N   	 t        |      }||dk(  s|j                         dk(  rt        j                  d      t	        j
                  |t        j                  dg      }|d   }t        j                  j                  |d      j                         }|s,t        t        j                  d	d
t        j                        S t        j                   d      }|D cg c]  }|j#                  d       }}|D 	cg c]  }	t%        j&                  |	       }
}	g }|
D ]  }|j)                  |        t        t        j*                  d|d      S c c}w c c}	w # 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   z.https://finance.yahoo.com/markets/commodities/r  r  r"   r#   r  r  s                 r5   rK   zgetAllCommodities.getw	  s   $	=,W5E}5;;=B3F 556sttjj(;(;yQGi(G+++CIIKHv/J/J\s t  }C  }X  }X  Y  Y !ll+[\O HWW

)
 <W IY"YHXH4::h#7HX"Y %'!.%,,W5 / %11"+-    X #Z  	=%DD"%a& ;;= =	=r  NrS   r;   r<   r5   r  r  v	  s    %=r<   r  c                       e Zd Zd Zy)getWorldIndicesc                 N   	 t        |      }||dk(  s|j                         dk(  rt        j                  d      t	        j
                  |t        j                  dg      }|d   }t        j                  j                  |d      j                         }|s,t        t        j                  d	d
t        j                        S t        j                   d      }|D cg c]  }|j#                  d       }}|D 	cg c]  }	t%        j&                  |	       }
}	g }|
D ]  }|j)                  |        t        t        j*                  d|d      S c c}w c c}	w # 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   z0https://finance.yahoo.com/markets/world-indices/r  r  r"   r#   r  r  s                 r5   rK   zgetWorldIndices.get	  s    4#G,5mu%++-2*=

)
)*g
hhZZx22wiH7Y7||""":@@B8
6#>#>Pghpv  qL  qL  M  M\\"TU? ?NNorzzz3oN @PP?O8$**X.?OP%w  ) & %%!   O Q 
 4
88!f 224 44r  NrS   r;   r<   r5   r  r  	  s    !4r<   r  c                       e Zd Zd Zy)getTrendingTickersc                 N   	 t        |      }||dk(  s|j                         dk(  rt        j                  d      t	        j
                  |t        j                  dg      }|d   }t        j                  j                  |d      j                         }|s,t        t        j                  d	d
t        j                        S t        j                   d      }|D cg c]  }|j#                  d       }}|D 	cg c]  }	t%        j&                  |	       }
}	g }|
D ]  }|j)                  |        t        t        j*                  d|d      S c c}w c c}	w # 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   z2https://finance.yahoo.com/markets/stocks/trending/r  r  r"   r#   r  r  s                 r5   rK   zgetTrendingTickers.get	  s    	=,W5E}5;;=B3F 556sttjj(;(;yQGi(G+++CIIKHv/J/J\s t  }C  }X  }X  Y  Y ll+_`O HWW

)
 <W IY"YHXH4::h#7HX"Y$&!.%,,W5 /
 %11"+-    X #Z  	=%DD"%a& ;;= =	=r  NrS   r;   r<   r5   r  r  	      !=r<   r  c                       e Zd Zd Zy)getTopMutalFundsc                 N   	 t        |      }||dk(  s|j                         dk(  rt        j                  d      t	        j
                  |t        j                  dg      }|d   }t        j                  j                  |d      j                         }|s,t        t        j                  d	d
t        j                        S t        j                   d      }|D cg c]  }|j#                  d       }}|D 	cg c]  }	t%        j&                  |	       }
}	g }|
D ]  }|j)                  |        t        t        j*                  d|d      S c c}w c c}	w # 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   z6https://finance.yahoo.com/markets/mutualfunds/gainers/r  r  r"   r#   r  r  s                 r5   rK   zgetTopMutalFunds.get	  s   	=,W5E}5;;=B3F 556sttjj(;(;yQGi(G+++CIIKHv/J/J\s t  }C  }X  }X  Y  Y !ll+cdO HWW

)
 <W IY"YHXH4::h#7HX"Y$&!.%,,W5 / %11"+-    X #Z  	=%DD"%a& ;;= =	=r  NrS   r;   r<   r5   r  r  	       =r<   r  c                       e Zd Zd Zy)getStocksDetailsc           
      b   	 t        |      }||dk(  s|j                         dk(  rt        j                  d      t	        j
                  |t        j                  dg      }|d   }t        j                  j                  |d      j                         }|s,t        t        j                  d	d
t        j                        S |j                  j!                  d      }|s,t        t        j                  dd
t        j                        S t#        j$                  |      }|j&                  }|j)                  d      }	|	j*                  j-                  d      |	d<   |j.                  }
t#        j0                  |dd      }|j*                  j-                  d      |d<   |j3                  d      }t        t        j4                  d||	|
t7        j8                  |      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   rL  rK   yfTickerinfohistoryindexstrftimer  downloadr  r+   ry  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
  s   0	=,W5E}5;;=B3F 556sttjj(;(;yQGi(G+++CIIKHv/J/J\s t  }C  }X  }X  Y  Y[[__X.Fv/J/J\p qy  zU  zU  V  V))F+J "H %%U%3D JJ//0CDDM ??DVD4HB  XX../BCBzN $&::Y:#? %11"+& $#'::.B#C    	=%DD"%a& ;;= =	=s,   CG& AG& CG& &	H./4H)#H.)H.NrS   r;   r<   r5   r  r  
  s    1=r<   r  c                       e Zd Zd Zy)
getTopEtfsc                 N   	 t        |      }||dk(  s|j                         dk(  rt        j                  d      t	        j
                  |t        j                  dg      }|d   }t        j                  j                  |d      j                         }|s,t        t        j                  d	d
t        j                        S t        j                   d      }|D cg c]  }|j#                  d       }}|D 	cg c]  }	t%        j&                  |	       }
}	g }|
D ]  }|j)                  |        t        t        j*                  d|d      S c c}w c c}	w # 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   z3https://finance.yahoo.com/markets/etfs/most-active/r  r  r"   r#   r  r  s                 r5   rK   zgetTopEtfs.getF
  s   	=,W5E}5;;=B3F 556sttjj(;(;yQGi(G+++CIIKHv/J/J\s t  }C  }X  }X  Y  Y !ll+`aO HWW

)
 <W IY"YHXH4::h#7HX"Y$&!.%,,W5 /%11"+-    X #Z  	=%DD"%a& ;;= =	=r  NrS   r;   r<   r5   r  r  E
  r  r<   r  c                       e Zd Zd Zy)getCurrenciesc                 N   	 t        |      }||dk(  s|j                         dk(  rt        j                  d      t	        j
                  |t        j                  dg      }|d   }t        j                  j                  |d      j                         }|s,t        t        j                  d	d
t        j                        S t        j                   d      }|D cg c]  }|j#                  d       }}|D 	cg c]  }	t%        j&                  |	       }
}	g }|
D ]  }|j)                  |        t        t        j*                  d|d      S c c}w c c}	w # 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   z-https://finance.yahoo.com/markets/currencies/r  r  r"   r#   r  r  s                 r5   rK   zgetCurrencies.getk
  s   	=,W5E}5;;=B3F 556sttjj(;(;yQGi(G+++CIIKHv/J/J\s t  }C  }X  }X  Y  Y ll+Z[O HWW

)
 <W IY"YHXH4::h#7HX"Y$&!.%,,W5 / %11"+-    X #Z  	=%DD"%a& ;;= =	=r  NrS   r;   r<   r5   r  r  j
  r  r<   r  c                       e Zd Zd Zy)saveStocksAndOthersc                 T   	 t        |      }||dk(  s|j                         dk(  rt        j                  d      t	        j
                  |t        j                  dg      }|d   }t        j                  j                  |d      j                         }|s,t        t        j                  d	d
t        j                        S |j                  j!                  d      }|s,t        t        j                  dd
t        j                        S |j                  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                  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 requiredrW  zName is required)r  r  rW  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  rW  r4   s
             r5   r6   zsaveStocksAndOthers.post
  s   	=,W5E}5;;=B3F 556sttjj(;(;yQGi(G+++CIIKHv/J/J\s t  }C  }X  }X  Y  Y!,,**=9Kv/J/J\u v  E  Z  Z  [  [\\%%h/Fv/J/J\p qy  zU  zU  V  V<<##F+Dv/J/J\n ow}  xS  xS  T  T  ''kUYai'j %11"+    	=%D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y)unsaveStocksAndOthersc                    	 t        |      }||dk(  s|j                         dk(  rt        j                  d      t	        j
                  |t        j                  dg      }|d   }t        j                  j                  |d      j                         }|s,t        t        j                  d	d
t        j                        S |j                  j!                  d      }|s,t        t        j                  dd
t        j                        S t"        j                  j                  ||      j                         }|s,t        t        j                  dd
t        j                        S |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   stock_idzstock_id is requiredrX  No data foundr"   )r   r  r   r  r  r  r   r	  r   rM   rN   rO   r   r   r   r&   rK   r  rm  r+   r,   r.   r-   )	r/   r0   r
  r  r   r   r  	saved_objr4   s	            r5   rK   zunsaveStocksAndOthers.get
  s   	=,W5E}5;;=B3F 556sttjj(;(;yQGi(G+++CIIKHv/J/J\s t  }C  }X  }X  Y  Y||''
3Hv/J/J\r s  |B  |W  |W  X  X%--44((4SYY[Iv/J/J\k ltz  uP  uP  Q  Q%11"+    	=%D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y)mySavedMarketDatac                 F   	 t        |      }||dk(  s|j                         dk(  rt        j                  d      t	        j
                  |t        j                  dg      }|d   }t        j                  j                  |d      j                         }|s,t        t        j                  d	d
t        j                        S |j                  j!                  d      }|s,t        t        j                  dd
t        j                        S t"        j                  j                  ||j$                        }|s,t        t        j                  dd
t        j                        S g }|D ]M  }	|	j$                  |	j&                  |	j(                  |	j*                  |	j,                  d}
|j/                  |
       O t        t        j0                  d|d      S # t2        $ r?}t        t        j4                  t7        |      d
t        j4                        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  rW  r  rS  r"   r#   )r   r  r   r  r  r  r   r	  r   rM   rN   rO   r   r   r   rL  rK   r  rF   r  rW  r  r  r*   r+   r,   r.   r-   )r/   r0   r
  r  r   r   r  saved_stockrb   rj  rR   r4   s               r5   rK   zmySavedMarketData.get
  s   (	=,W5E}5;;=B3F 556sttjj(;(;yQGi(G+++CIIKHv/J/J\s t  }C  }X  }X  Y  Y!++//-8Kv/J/J\u v  E  Z  Z  [  [ '..55KW_WbWb5dKv/J/J\k ltz  uP  uP  Q  QH$"\\ ::"'"3"3!&!1!1 ) % %11"+    	=%DD"%a& ;;= =	=s3   CG AG AG 'A0G 	H !4HH H NrS   r;   r<   r5   r   r   
  s    )=r<   r   c                       e Zd Zd Zy)giveRatingAndFeedbackc                 T   	 t        |      }||dk(  s|j                         dk(  rt        j                  d      t	        j
                  |t        j                  dg      }|d   }t        j                  j                  |d      j                         }|s,t        t        j                  d	d
t        j                        S |j                  j!                  d      }|s,t        t        j                  dd
t        j                        S |j                  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                  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5E}5;;=B3F 556sttjj(;(;yQGi(G+++CIIKHv/J/J\s t  }C  }X  }X  Y  Y\\%%h/Fv/J/J\p qy  zU  zU  V  V((4Hv/J/J\r s  |B  |W  |W  X  X"<<++N;Lv/J/J\v w  @F  @[  @[  \  \%%,,v^jpx,y%11"+  
  	=%DD"%a& ;;= =	=r  Nr7   r;   r<   r5   r  r     r  r<   r  c                       e Zd Zd Zy)myRatingAndFeedbackc                 X   	 t        |      }||dk(  s|j                         dk(  rt        j                  d      t	        j
                  |t        j                  dg      }|d   }t        j                  j                  |d      j                         }|s,t        t        j                  d	d
t        j                        S t        j                  j                  |j                   d      }g }|D ]M  }|j                   |j"                  |j$                  |j&                  |j(                  d}	|j+                  |	       O t        t        j,                  d|d      S # t.        $ r?}
t        t        j0                  t3        |
      d
t        j0                        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 rS  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5E}5;;=B3F 556sttjj(;(;yQGi(G+++CIIKHv/J/J\s t  }C  }X  }X  Y  Y+33::(++_c:dJH$ ))%~~ &%+%8%8"("3"3 ) % %11"+     	=%D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y)deleteRatingAndFeedbackc                 J   	 t        |      }||dk(  s|j                         dk(  rt        j                  d      t	        j
                  |t        j                  dg      }|d   }t        j                  j                  |d      j                         }|s,t        t        j                  d	d
t        j                        S |j                  j!                  d      }|s,t        t        j                  dd
t        j                        S t"        j                  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   	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  rm  r+   r,   r.   r-   )	r/   r0   r
  r  r   r   r  r  r4   s	            r5   r6   zdeleteRatingAndFeedback.postL  s   	=,W5E}5;;=B3F 556sttjj(;(;yQGi(G+++CIIKHv/J/J\s t  }C  }X  }X  Y  Y((5Iv/J/J\s t  }C  }X  }X  Y  Y+3377Y7HJ%11"+  
  	=%DD"%a& ;;= =	=r  Nr7   r;   r<   r5   r  r  K  s    =r<   r  c                       e Zd Zd Zd Zy)editRatingAndFeedbackc                    	 t        |      }||dk(  s|j                         dk(  rt        j                  d      t	        j
                  |t        j                  dg      }|d   }t        j                  j                  |d      j                         }|s,t        t        j                  d	d
t        j                        S |j                  j!                  d      }|s,t        t        j                  dd
t        j                        S t"        j                  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        j2                  t5        |	      d
t        j2                        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   rM   rN   rO   r   r   r   rL  rK   r  rF   r  r  r
  r  r+   r,   r.   r-   )
r/   r0   r
  r  r   r   r  r  rR   r4   s
             r5   rK   zeditRatingAndFeedback.getk  s   #	=,W5E}5;;=B3F 556sttjj(;(;yQGi(G+++CIIKHv/J/J\s t  }C  }X  }X  Y  Y 5Iv/J/J\s t  }C  }X  }X  Y  Y*2266)6DJv/J/J\k ltz  uP  uP  Q  Q !mm%--&//!+!8!8(33H +1+=+=.7#+  
  	=%DD"%a& ;;= =	=s3   CF3 AF3 AF3 AF3 3	G;<4G60G;6G;c                    	 t        |      }||dk(  s|j                         dk(  rt        j                  d      t	        j
                  |t        j                  dg      }|d   }t        j                  j                  |d      j                         }|s,t        t        j                  d	d
t        j                        S |j                  j!                  d      }|s,t        t        j                  dd
t        j                        S |j                  j!                  d      }|s,t        t        j                  dd
t        j                        S |j                  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                  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   r  r  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  r  r
  r4   s              r5   r6   zeditRatingAndFeedback.post  sn   &	=,W5E}5;;=B3F 556sttjj(;(;yQGi(G+++CIIKHv/J/J\s t  }C  }X  }X  Y  Y((5Iv/J/J\s t  }C  }X  }X  Y  Y \\%%h/Fv/J/J\p qy  zU  zU  V  V((4Hv/J/J\r s  |B  |W  |W  X  X"<<++N;Lv/J/J\v w  @F  @[  @[  \  \%%,,),<CCf_g  vB  HPC  Q+1+=+=.7  
  	=%DD"%a& ;;= =	=sA   CH8 AH8 AH8 AH8  AH8 )AH8 8	J 4I;5J ;J Nr   r;   r<   r5   r  r  j  s    $=N'=r<   r  c                       e Zd Zd Zy)stockScreenerc                 B   	 t        |      }||dk(  s|j                         dk(  rt        j                  d      t	        j
                  |t        j                  dg      }|d   }t        j                  j                  |d      j                         }|s,t        t        j                  d	d
t        j                        S |j                  j!                  d      }|j                  j!                  d      }|j                  j!                  d      }|j                  j!                  d      }	|j                  j!                  d      }
|j                  j!                  d      }|j                  j!                  d      }|j                  j!                  d      }|j                  j!                  d      }|j                  j!                  d      }|j                  j!                  d      }|j                  j!                  d      }|j                  j!                  d      }|j                  j!                  d      }|j                  j!                  d      }|j                  j!                  d      }|j                  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 k7  r,t        t        j                  d!d
t        j                        S |j)                         }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-screenerrt  rv  zFailed to fetch datar"   r#   )r   r  r   r  r  r  r   r	  r   rM   rN   rO   r   r   r   rL  rK   FMP_KEYrx  r$   ry  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_tradingr,  r-  r  r.  r/  ru  r  result_stocksr4   s                              r5   rK   zstockScreener.get  s   I	=,W5E}5;;=B3F 556sttjj(;(;yQGi(G+++CIIKHv/J/J\s t  }C  }X  }X  Y  Y $+;;??3F#G $+KKOO4H$I!%kkooo>O&{{/?@$[[__^<N%kkooo>O&{{/?@ '0A B!(1C!D")++//2E"F[[__W-F")++//2E"F[[__X.F{{z2Hkkooi0G{{z2HKKOOG,E(**#%9 %&;  	
 !"2    !"2 "#4 #$6 $%8  $%8 & H  7!" H#$ %F,  ||$]flmH ##s*v/J/J\r s  |B  |W  |W  X  X %MMOM#)#5#5&/)    	=%DD"%a& ;;= =	=s+   CM I#M ),M 	N4NNNNrS   r;   r<   r5   r  r    s    J=r<   r  c                       e Zd Zd Zy)getQuizQuestionsc           	      j   	 t        |      }||dk(  s|j                         dk(  rt        j                  d      t	        j
                  |t        j                  dg      }|d   }t        j                  j                  |d      j                         }|s,t        t        j                  d	d
t        j                        S g }t        j                  j!                         }|D ]c  }|j"                  |j$                  |j&                  |j(                  |j*                  |j,                  |j.                  d}	|j1                  |	       e t        t        j2                  d|d      S # t4        $ r?}
t        t        j6                  t9        |
      d
t        j6                        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5E}5;;=B3F 556sttjj(;(;yQGi(G+++CIIKHv/J/J\s t  }C  }X  }X  Y  YH ((,,.H #}}!%!%#'88"&((!XX ) ! #)#5#5&/$    	=%DD"%a& ;;= =	=s%   CE* B$E* *	F234F-'F2-F2NrS   r;   r<   r5   r@  r@  
  s    #=r<   r@  c                       e Zd Zd Zy)getInvestResearchListingc                 ,   	 t        |      }||dk(  s|j                         dk(  rt        j                  d      t	        j
                  |t        j                  dg      }|d   }t        j                  j                  |d      j                         }|s,t        t        j                  d	d
t        j                        S t        j                  j                  d      }g }|D ]B  }|j                   |j"                  |j$                  |j&                  d}	|j)                  |	       D 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   Tr\   )rF   research_imagerG   rS  r"   r#   )r   r  r   r  r  r  r   r	  r   rM   rN   rO   r   r   r   InvestmentResearchrF   rS  rG   r  r*   r+   r,   r.   r-   )r/   r0   r
  r  r   r   
invest_objrb   investrR   r4   s              r5   rK   zgetInvestResearchListing.get1  sv   	=,W5E}5;;=B3F 556sttjj(;(;yQGi(G+++CIIKHv/J/J\s t  }C  }X  }X  Y  Y-55<<PT<UJH$%+%:%:"LL!'!2!2	 ) % #)#5#5&/$    	=%DD"%a& ;;= =	=s%   CE BE 	F4FFFNrS   r;   r<   r5   rQ  rQ  0  s    =r<   rQ  c                       e Zd Zd Zy)getInvestResearchDetailsc                    	 t        |      }||dk(  s|j                         dk(  rt        j                  d      t	        j
                  |t        j                  dg      }|d   }t        j                  j                  |d      j                         }|s,t        t        j                  d	d
t        j                        S |j                  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                  j                  |d      j                         }|j(                  |j*                  |j,                  |j.                  |j0                  |j2                  d}|xj$                  dz  c_        |j5                          t        t        j6                  d|d      S t&        j                  j                  |d      j                         }|j(                  |j*                  |j,                  |j.                  |j0                  |j2                  d}t        t        j6                  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 contentTr_  )rF   rS  rG   r  rS  rH   r"   r#   )r   r  r   r  r  r  r   r	  r   rM   rN   rO   r   r   r   rL  rK   r   investment_research_countrT  rF   rS  rG   r  r  rH   r   r+   r,   r.   r-   )
r/   r0   r
  r  r   r   rZ  rU  rR   r4   s
             r5   rK   zgetInvestResearchDetails.getT  s   4	=,W5E}5;;=B3F 556sttjj(;(;yQGi(G+++CIIKHv/J/J\s t  }C  }X  }X  Y  Y!++//-8Kv/J/J\u v  E  Z  Z  [  [((E155<#63N3N  aM  %N  V\  Vq  Vq  r  r#5#=#=#D#D+jn#D#o#u#u#wJ']])3)B)B * 0 0 * 0 0%/%:%:","4"4 H 66!;6MMO#+1+=+=.7$,%    299@@kfj@kqqs
#%/%>%>&,,&,,!+!6!6(00  '-'9'9*3 (!    	=%DD"%a& ;;= =	=s:   CJ AJ A	J B5J BJ 	K'(4K"K'"K'NrS   r;   r<   r5   rX  rX  S  s    5=r<   rX  c                       e Zd Zd Zy)addResearchBookmarkc                 j   	 t        |      }||dk(  s|j                         dk(  rt        j                  d      t	        j
                  |t        j                  dg      }|d   }t        j                  j                  |d      j                         }|s,t        t        j                  d	d
t        j                        S |j                  j!                  d      }|s,t        t        j                  dd
t        j                        S t"        j                  j                  |d      j                         }|s,t        t        j                  dd
t        j                        S t$        j                  j'                  ||d      \  }}	|	s,|j)                          t        t        j*                  dd
      S |j-                          t        t        j*                  dd
      S # t.        $ r?}
t        t        j0                  t3        |
      d
t        j0                        cY d }
~
S d }
~
ww xY w)Nr   r   r   r   r   r   r   r   r   rI   r   rZ  r[  Tr_  zInvestment research not found)researchr   rh  ri  rj  )r   r  r   r  r  r  r   r	  r   rM   rN   rO   r   r   r   rL  rK   rT  r  rl  rm  r+   r   r,   r.   r-   )r/   r0   r
  r  r   r   rZ  rU  rn  ro  r4   s              r5   r6   zaddResearchBookmark.post  s	   	=,W5E}5;;=B3F 556sttjj(;(;yQGi(G+++CIIKHv/J/J\s t  }C  }X  }X  Y  Y!++//-8Kv/J/J\u v  E  Z  Z  [  [-55<<+bf<gmmoJv/J/J\{ |  EK  E`  E`  a  a%@%H%H%V%V`jpx  HI%V  &J"M7$$&v/A/ASo pqq""$v/A/ASl mnn 	=%DD"%a& ;;= =	=s9   CG* AG* AG* +AG* >+G* *	H234H-'H2-H2Nr7   r;   r<   r5   r^  r^    r  r<   r^  c                       e Zd Zd Zy)getHomePagec                    t        |      }||dk(  s|j                         dk(  rt        j                  d      t	        t
        j                         t        j                  |t
        j                  dg      }t	        |       |d   }t        j                  j                  |d      j                         }|s,t        t        j                  d	d
t        j                        S t!        j"                  d      }|d   j%                  d      }|j'                  d      }t)        j*                  |      }	t!        j"                  d      }
|
d   j%                  d      }|j'                  d      }t)        j*                  |      }t!        j"                  d      }|d   j%                  d      }|j'                  d      }t)        j*                  |      }t,        j                  j                  d      }g }|D ],  }|j.                  |j0                  d}|j3                  |       . |j4                  j7                  d      }|r4t8        j                  j                  d|      j;                  d      d d }n2t8        j                  j                  d      j;                  d      d d }g }|D ]b  }|j.                  |j<                  |j>                  j@                  |jB                  |jD                  |jF                  d}|j3                  |       d dd l$}d}d}dd|d} |j6                  ||       }|jJ                  d!k(  r#|j)                         } | j7                  d"g       }!nt	        d#|jL                         tN        j                  j                  d      j;                  d      d d }"g }#|"D ]c  }$|$j.                  |$jP                  |$jR                  |$jT                  |$jV                  |$jX                  |$jF                  d$}%|#j3                  |%       e t        t        jZ                  d%|	||||!|#d&	      S )'Nr   r   r   r   r   r   r   r   r   rI   r   r  r      r  r  r  r  Tr\   rN  blog_category_id)r]   categrory_idr^   r   rP  rn  ro  rp  rq  rr  rt  rv  rw  zFailed to fetch top headlines:)rF   r6  r8  r;  r=  r?  rS  r"   )	r$   r%   active_stocksgainers_stocksloosers_stocksblog_categoryry  	news_dataevents_data).r   r  r   r  rP   r   r	  r  r  r   rM   rN   rO   r   r   r   r  r  headr  ry  r  rV  rF   rW  r*   rL  rK   rU  r`   rG   r   rr   rR  rH   r  rx  r$   rz  rB  r6  r8  r;  r=  r?  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_objectsrj  r  rZ  r[  re  rX  rx  r\  ry  rx  r{  r  ru  r  r&   rw  rC  rb   rT  rR   s&                                         r5   rK   zgetHomePage.get  s   (1=EVOu{{}/B112opph!!"**UH$7$7G9Mg)$LL''WQ'?EEG6+F+FXopx~  yT  yT  U  U\\*ab-a055a8-55Y5G%)ZZ0B%C"  \\*]^-a055a8-55Y5G%)ZZ0B%C"  \\*\]-a055a8-55Y5G%)ZZ0B%C" '..55t5L Cff!$H   * ! #;;??+=>,,dRb,cllmrstvuvwH,,d,CLLUSTVUVWH	DWW

"ii00!__,,!__I Y'  	44 "
  8<<F33&==?Dxx
B/H 2HMMB ^^**D*AJJ5QRTSTU	Ehh#//"--"-- >> >>"--H OOH%  !--'788)"!#

 
 
	r<   NrS   r;   r<   r5   rb  rb    s    lr<   rb  )rest_framework.viewsr   rest_framework.responser   rest_frameworkr   panel_apis.modelsr   r   r	   r
   django.confr   passlib.hashr   r   ry  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   rx  yfinancer  pandasr  bs4r   csvr   r   r   r>   rU   rZ   re   r   r   r   r   r   r   r  r  r  r$  r)  r0  r:  rG  r_  rb  rf  rs  r{  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r	  r  r  r(  r-  r1  r4  rE  rP  rV  rZ  r]  ra  rg  rl  r}  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r  r  r  r  r  r@  rQ  rX  r^  rb  r;   r<   r5   <module>r     s3   ( , !   , ,   8    B 
 8 : 3 % -  3 ! ! # # ,    
   !      
  V7 VXw X*X X"X X(ZX7 ZX|\g \:\G \4AX AXHX X6"B "BHaX aXF X  XJX X(Xw X2q' q Xg X.X' X(X' X>IX' IXZX X0XW X>Xg X:X7 X>#V' #VLV' V>VW V:!_' !_J_7 _*_ _:0_G 0_d_g _0_G _>_w _8_w _8_7 _6_W _._G _@$_ $_N_' _@1_7 1_h_ _:=_ =_~;_g ;_|K_w K_\_G _D_7 _0+_w +_\V_ V_t_W _B_' _6_g _B"_w "_HX X:!X !XF X  XH%X %XTXw X,X' X>XW X6X X@#XG #XP+=w +=^#=g #=N#=g #=N#=7 #=J&= &=R"4g "4L"= "=L!=w !=H2=w 2=l!= !=J!=G !=L=' =D=G =@*= *=\"=G "=L"=' "=J=g =>O=G O=dK=G K=\$=w $=L =w  =F6=w 6=r=' =Dm' mr<   