o
    yB‚gåd ã                   @   sÌ  d dl mZ d dlZd dlmZmZmZ d dl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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mZ d dlZd dl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mZ d d	l m!Z!m"Z"m#Z#m$Z$ d d
l%m&Z& d dl'm(Z( d dl)m*Z*m+Z+ d dl,m-Z-m.Z. d dl/m0Z0 d dl1m2Z2 d dl3m4Z4 d dl/m5Z5 d dl6m7Z7 d dl8m9Z9 d dlm:Z:m;Z; d dl<m=Z= d dl>m?Z? d dl@mAZA d dlBmCZC d dlDT d dlEmFZF d dlGmHZH e I¡ ZJejI K¡  dZLdd„ ZMdd „ ZNd!d"„ ZOeOƒ ZPeNƒ ZQd#d$„ ZRd%d&„ ZSd'd(„ ZTd)d*„ ZUd+d,„ ZVd-d.„ ZWd/d0„ ZXd1d2„ ZYd3d4„ ZZe!d5d6gƒe"e+gƒd7d8„ ƒƒZ[e!d5d6gƒe"e+gƒd9d:„ ƒƒZ\e!d5d6gƒe"e+gƒd;d<„ ƒƒZ]G d=d>„ d>e(ƒZ^G d?d@„ d@e(ƒZ_G dAdB„ dBe(ƒZ`G dCdD„ dDe(ƒZaG dEdF„ dFe(ƒZbG dGdH„ dHe(ƒZcG dIdJ„ dJe(ƒZdG dKdL„ dLe(ƒZee!d5d6gƒe"e+gƒdMdN„ ƒƒZfe!d5d6gƒe"e+gƒdOdP„ ƒƒZge!d5d6gƒe"e+gƒdQdR„ ƒƒZhe!d5d6gƒe"e+gƒdSdT„ ƒƒZiG dUdV„ dVe(ƒZjG dWdX„ dXe(ƒZkG dYdZ„ dZe(ƒZlG d[d\„ d\e(ƒZmG d]d^„ d^e(ƒZnG d_d`„ d`e(ƒZoG dadb„ dbe(ƒZpG dcdd„ dde(ƒZqe!d5d6gƒe"e+gƒdedf„ ƒƒZrG dgdh„ dhe(ƒZsG didj„ dje(ƒZtG dkdl„ dle(ƒZue!d5d6gƒe"e+gƒdmdn„ ƒƒZvG dodp„ dpe(ƒZwG dqdr„ dre(ƒZxG dsdt„ dte(ƒZyG dudv„ dve(ƒZze!d5d6gƒe"e+gƒdwdx„ ƒƒZ{G dydz„ dze(ƒZ|e!d5d6gƒe"e+gƒd{d|„ ƒƒZ}G d}d~„ d~e(ƒZ~G dd€„ d€e(ƒZe!d5d6gƒe"e+gƒdd‚„ ƒƒZ€G dƒd„„ d„e(ƒZG d…d†„ d†e(ƒZ‚G d‡dˆ„ dˆe(ƒZƒG d‰dŠ„ dŠe(ƒZ„G d‹dŒ„ dŒe(ƒZ…e!d5d6gƒe"e+gƒddŽ„ ƒƒZ†G dd„ de(ƒZ‡G d‘d’„ d’e(ƒZˆG d“d”„ d”e(ƒZ‰d d•lŠm‹Z‹ G d–d—„ d—e(ƒZŒe!d5d6gƒe"e+gƒd˜d™„ ƒƒZe!d5d6gƒe"e+gƒdšd›„ ƒƒZŽG dœd„ de(ƒZG dždŸ„ dŸe(ƒZG d d¡„ d¡e(ƒZ‘e!d5d6gƒe"e+gƒd¢d£„ ƒƒZ’G d¤d¥„ d¥e(ƒZ“G d¦d§„ d§e(ƒZ”e!d5d6gƒe"e+gƒd¨d©„ ƒƒZ•G dªd«„ d«e(ƒZ–G d¬d­„ d­e(ƒZ—G d®d¯„ d¯e(ƒZ˜e!d5d6gƒe"e+gƒd°d±„ ƒƒZ™G d²d³„ d³e(ƒZšG d´dµ„ dµe(ƒZ›d d¶lœmZ d d·lDmžZž d d¸lŸm Z  G d¹dº„ dºe(ƒZ¡G d»d¼„ d¼e(ƒZ¢G d½d¾„ d¾e(ƒZ£e!d5d6gƒe"e+gƒd¿dÀ„ ƒƒZ¤dS )Áé    ©ÚrenderN)Úcreate_engineÚinspectÚtext)Úmodels)ÚHttpResponse)ÚHttpResponseNotFound©Ústatus)Úsettings)Úapi_viewÚpermission_classesÚrenderer_classesÚauthentication_classes)ÚResponse)ÚAPIView)ÚIsAuthenticatedÚAllowAny)Úmake_passwordÚcheck_password)Ú	send_mail)ÚFileSystemStorage)Úget_template)ÚEmailMultiAlternatives)Úauthenticate)ÚSQLAlchemyError)ÚdateÚ	timedelta)Útimezone)Ú	dbsession)ÚJSONDateEncoder)ÚALLOWED_HOSTS)Ú*)ÚSQLAlchemyUserBackend)ÚTokenAuthenticationiˆ  c                 C   s   t | dddS )Nz404.htmli”  r
   r   )ÚrequestÚ	exception© r(   ú2/home/ubuntu/Idpwoa/Idpwoa_Backend/idpwoa/views.pyÚ
custom_4049   s   r*   c                  C   s   t j  ¡  d¡} | S )Nz%H:%M:%S©ÚdatetimeÚnowÚstrftime)Úcurrent_timer(   r(   r)   Úget_current_timeA   s   r0   c                   C   s   t j  ¡  d¡S )Nú%d-%m-%Yr+   r(   r(   r(   r)   Úget_current_dateE   s   r2   c                 C   s
   t | dƒS )Nzlanding page/index.htmlr   )r&   r(   r(   r)   ÚlandingpageO   s   
r3   c              
   C   sr   zt  ¡ }| t¡ tj| k¡ ¡ }t|ƒdkrW dS W dS  ty8 } z| 	¡  | 
¡  W Y d }~dS d }~ww ©Nr   é   F)r    ÚSessionÚqueryÚUserRegistrationTblÚfilterÚidnoÚallÚlenr   ÚrollbackÚclose)ÚidÚdistrictÚsessionÚ
uid_lengthÚer(   r(   r)   ÚcheckIdNoExistU   ó   €ýrD   c                 C   s&  t d|  ƒ t ¡ }| dkrŽ| t¡ tj| k¡ ¡ }|rPd t	|j
ƒd ¡}d| }t|| ƒ}|dkrN| t¡j| d d|i¡}| ¡  |dkrL|S dS d S d t	dƒd ¡}d| }t|| ƒ}|dkrŒtƒ }| |_||_
tj ¡ |_| |¡ | ¡  | |¡ |jdkrŠ|S dS d S | d	kr| t¡ tj| k¡ ¡ }|rÕd t	|j
ƒd ¡}d
| }t|| ƒ}|dkrÓ| t¡j| d d|i¡}| ¡  |dkrÑ|S dS d S d t	dƒd ¡}d
| }t|| ƒ}|dkrtƒ }| |_||_
tj ¡ |_| |¡ | ¡  | |¡ |jdkr|S dS d S | dkrŸ| t¡ tj| k¡ ¡ }|r_d t	|j
ƒd ¡}d| }t|| ƒ}|dkr]| t¡j| d d|i¡}| ¡  |dkr[|S dS d S d t	dƒd ¡}d| }t|| ƒ}|dkrtƒ }| |_||_
tj ¡ |_| |¡ | ¡  | |¡ |jdkr›|S dS d S | dkr)| t¡ tj| k¡ ¡ }|réd t	|j
ƒd ¡}d| }t|| ƒ}|dkrç| t¡j| d d|i¡}| ¡  |dkrå|S dS d S d t	dƒd ¡}d| }t|| ƒ}|dkr'tƒ }| |_||_
tj ¡ |_| |¡ | ¡  | |¡ |jdkr%|S dS d S | dkr³| t¡ tj| k¡ ¡ }|rsd t	|j
ƒd ¡}d| }t|| ƒ}|dkrq| t¡j| d d|i¡}| ¡  |dkro|S dS d S d t	dƒd ¡}d| }t|| ƒ}|dkr±tƒ }| |_||_
tj ¡ |_| |¡ | ¡  | |¡ |jdkr¯|S dS d S | dkr=| t¡ tj| k¡ ¡ }|rýd t	|j
ƒd ¡}d| }t|| ƒ}|dkrû| t¡j| d d|i¡}| ¡  |dkrù|S dS d S d t	dƒd ¡}d| }t|| ƒ}|dkr;tƒ }| |_||_
tj ¡ |_| |¡ | ¡  | |¡ |jdkr9|S dS d S | dkrÇ| t¡ tj| k¡ ¡ }|r‡d t	|j
ƒd ¡}d| }t|| ƒ}|dkr…| t¡j| d d|i¡}| ¡  |dkrƒ|S dS d S d t	dƒd ¡}d| }t|| ƒ}|dkrÅtƒ }| |_||_
tj ¡ |_| |¡ | ¡  | |¡ |jdkrÃ|S dS d S | dkrQ| t¡ tj| k¡ ¡ }|rd t	|j
ƒd ¡}d| }t|| ƒ}|dkr| t¡j| d d|i¡}| ¡  |dkr|S dS d S d t	dƒd ¡}d| }t|| ƒ}|dkrOtƒ }| |_||_
tj ¡ |_| |¡ | ¡  | |¡ |jdkrM|S dS d S | dkrÛ| t¡ tj| k¡ ¡ }|r›d t	|j
ƒd ¡}d| }t|| ƒ}|dkr™| t¡j| d d|i¡}| ¡  |dkr—|S dS d S d t	dƒd ¡}d| }t|| ƒ}|dkrÙtƒ }| |_||_
tj ¡ |_| |¡ | ¡  | |¡ |jdkr×|S dS d S | dkre| t¡ tj| k¡ ¡ }|r%d t	|j
ƒd ¡}d| }t|| ƒ}|dkr#| t¡j| d d|i¡}| ¡  |dkr!|S dS d S d t	dƒd ¡}d| }t|| ƒ}|dkrctƒ }| |_||_
tj ¡ |_| |¡ | ¡  | |¡ |jdkra|S dS d S | dkrót dƒ | t¡ tj| k¡ ¡ }|r³d t	|j
ƒd ¡}d| }t|| ƒ}|dkr±| t¡j| d d|i¡}| ¡  |dkr¯|S dS d S d t	dƒd ¡}d| }t|| ƒ}|dkrñtƒ }| |_||_
tj ¡ |_| |¡ | ¡  | |¡ |jdkrï|S dS d S | dkr}| t¡ tj| k¡ ¡ }|r=d t	|j
ƒd ¡}d| }t|| ƒ}|dkr;| t¡j| d d|i¡}| ¡  |dkr9|S dS d S d t	dƒd ¡}d| }t|| ƒ}|dkr{tƒ }| |_||_
tj ¡ |_| |¡ | ¡  | |¡ |jdkry|S dS d S | d kr| t¡ tj| k¡ ¡ }|rÇd t	|j
ƒd ¡}d!| }t|| ƒ}|dkrÅ| t¡j| d d|i¡}| ¡  |dkrÃ|S dS d S d t	dƒd ¡}d!| }t|| ƒ}|dkrtƒ }| |_||_
tj ¡ |_| |¡ | ¡  | |¡ |jdkr|S dS d S | d"kr| t¡ tj| k¡ ¡ }|rQd t	|j
ƒd ¡}d#| }t|| ƒ}|dkrO| t¡j| d d|i¡}| ¡  |dkrM|S dS d S d t	dƒd ¡}d#| }t|| ƒ}|dkr‘tƒ }| |_||_
tj ¡ |_| |¡ | ¡  | |¡ |jdkr|S dS d S d S )$NÚaaaÚ
Trivandrumz{:03d}r5   zIDPWOA/TVM/r   )r@   r:   ÚKollamzIDPWOA/KLM/ÚPathanamthittazIDPWOA/PTA/Ú	AlappuzhazIDPWOA/ALP/ÚKottayamzIDPWOA/KTM/ÚIdukkizIDPWOA/IDK/Ú	ErnakulamzIDPWOA/EKM/ÚThrissurzIDPWOA/TSR/ÚPalakkadzIDPWOA/PKD/Ú
MalappuramzIDPWOA/MLP/Ú	KozhikodeÚKKDzIDPWOA/KKD/ÚWayanadzIDPWOA/WYD/ÚKannurzIDPWOA/KNR/ÚKasargodzIDPWOA/KGD/)Úprintr    r6   r7   Ú	userIdTblr9   r@   ÚfirstÚformatÚintr:   rD   Ú	filter_byÚupdateÚcommitr,   r-   ÚcreateddateÚaddÚrefreshr?   )r@   rA   ÚidObjr?   ÚidNoÚuserIdÚsqlÚuserObjr(   r(   r)   ÚgenerateIdNod   s  
ú



õ

ú



õ



ú



õ



ú



õ



ú



õ



ú



õ



ú



õ



ú



õ



ú



õ



ú



õ



ú



õ



ú



õ



ú



õ



ú



ãrf   c              
   C   sr   zt  ¡ }| t¡ tj| k¡ ¡ }t|ƒdkrW dS W dS  ty8 } z| 	¡  | 
¡  W Y d }~dS d }~ww r4   )r    r6   r7   ÚloginTblr9   Úemailr;   r<   r   r=   r>   )rh   rA   Úemail_lengthrC   r(   r(   r)   ÚcheckEmailExist  rE   rj   c                  C   s4   d} d}t dƒD ]}|| t t ¡ d ¡ 7 }q|S )NÚ
0123456789Ú é   é
   )ÚrangeÚmathÚfloorÚrandom)ÚdigitsÚOTPÚir(   r(   r)   ÚgenerateRandomOTP  s
   rv   c                 C   s   t  d¡}|S )Né   )ÚsecretsÚ	token_hex)ÚnameÚ
random_keyr(   r(   r)   Úgenerate_key_from_name$  s   
	r|   c              
   C   s¶   zCt dƒ | d | d dœ}tdƒ}tdƒ}dd| d	 }}}| |¡}| |¡}t||||gƒ}	|	 |d
¡ |	 ¡  |	rAW dS W dS  tyZ }
 zt |
ƒ W Y d }
~
dS d }
~
ww )NÚinsideÚotp_valrz   )rt   rz   zemail/email.txtzemail/email.htmlúWelcome to IDPWOAúidpwoakeralawebsite@gmail.comrh   ú	text/htmlTF)rV   r   r   r   Úattach_alternativeÚsendÚ	Exception©ÚparamsÚctxÚ	plaintextÚhtmlyÚsubjectÚ
from_emailÚtoÚtext_contentÚhtml_contentÚmsgrC   r(   r(   r)   ÚsendOTP0  s*   þ

€þr   c           
      C   st   d| d i}t dƒ}t dƒ}dd| d }}}| |¡}| |¡}t||||gƒ}	|	 |d¡ |	 ¡  |	r8d	S d
S )Nrt   r~   zemail/forgotemail.txtzemail/forgotemail.htmlr   r€   rh   r   TF)r   r   r   r‚   rƒ   )
r†   r‡   rˆ   r‰   rŠ   r‹   rŒ   r   rŽ   r   r(   r(   r)   ÚforgotSendOTPH  s   ÿ

r‘   c              
   C   s    z<d| d i}t dƒ}t dƒ}dd| d }}}| |¡}| |¡}t||||gƒ}	|	 |d¡ |	 ¡  |	r:W dS W d	S  tyO }
 zW Y d }
~
d	S d }
~
ww )
Nrz   zemail/welcome.txtzemail/welcome.htmlr   r€   rh   r   TF)r   r   r   r‚   rƒ   r„   r…   r(   r(   r)   ÚwelcomeMailZ  s$   ÿ

€ÿr’   ÚGETÚPOSTc              
   C   s²  t  ¡ }z­| jd }| jd }| jd d | jd  }t|ƒ}t|ƒ t|ƒ}t|ƒ |dkr§|dkr›tƒ }| jd |_| jd |_||_	| jd |_
| jd	 |_| jd
 |_| jd |_| jd |_| jd |_| jd |_| jd |_| j d¡dgkrœ| j d¡D ]}tƒ }	|	 |j|¡}
|	 |
¡}||_q‡| j d¡dgkrÀ| j d¡D ]}tƒ }	|	 |j|¡}
|	 |
¡}||_q«| jd |_| jd |_| jd |_d|_d|_d|_tj  ¡ |_!| "|¡ | #¡  |j$dkrut%ƒ }d|_&| jd |_'d|_(d|_)| jd |_*|j$|_+||_,d|_d|_-d|_t.ƒ |_/d|_0tj  ¡ |_!| "|¡ | #¡  | 1|¡ t2ƒ }||_3|j$|_4| jd |_5t6| jd ƒ|_7d|_-d|_| jd |_tj  ¡ |_!t.ƒ |_8d|_9d|_0| "|¡ | #¡  | 1|¡ |j$dkr“| jd |dœ}t:|ƒ}| ;¡  t<d d!d"œƒW S t<d#d$d"œƒW S | ;¡  t<d#d$d"œƒW S | ;¡  t<d#d%d"œƒW S  t=yØ } zt|ƒ | >¡  | ;¡  t<d#d&d"œƒW  Y d }~S d }~ww )'Nr@   rh   Úfnameú Úlnamer   r5   ÚuseraddressÚshopaddressÚ	contactnoÚ
whatsappnoÚshoptypeÚ
bloodgroupÚgenderÚ	userimageÚ	undefinedÚ	shopimageÚconstituencyÚ
panchayathÚActiveÚOnlinerl   ÚorderidÚamountÚRecievedÚRegistrationÚ365ÚpasswordÚUserÚInactive©rh   rz   ÚSuccessúAccount created successfully©ÚresponseÚmessageÚErrorú-Can't register now...! please try again laterú(An account with this email already existú/Something went wrong...! please try again later)?r    r6   Údatarj   rV   rf   r8   r•   r—   r:   r˜   r™   rš   r›   rœ   r   rh   rž   Úgetlistr   Úsaverz   ÚurlÚuserimageurlÚshopimageurlr@   r¢   r£   r   ÚpaymenttypeÚ
receipturlr,   r-   r^   r_   r]   r?   Ú
PaymentDtlÚ	paymentidr¦   Ú	signatureÚ	packageidr§   ÚuidÚ	profileidÚtyper2   ÚdateofpurchaseÚdurationr`   rg   Úlogin_idÚuseridÚusernamer   r«   ÚpurchasedateÚaccountstatusr’   r>   r   r   r=   )r&   rA   r@   rh   rz   Ú
emailExistrb   re   ÚfÚfsÚfilenameÚuploaded_file_urlÚPackagesDtlÚloginObjÚParamsÚwelcomerC   r(   r(   r)   Úuser_registrationr  sÀ   










þ€ür×   c              
   C   s  t  ¡ }zãd}| jd }| jd }| jd d | jd  }t|ƒ}t|ƒ t|ƒ}t|ƒ |dkrÝ|dkrÑtƒ }| jd |_| jd |_||_	| jd	 |_
| jd
 |_| jd |_| jd |_| jd |_| jd |_| jd |_| jd |_| j d¡dgkrž| j d¡D ]}	tƒ }
|
 |	j|	¡}|
 |¡}||_q‰| j d¡dgkrÂ| j d¡D ]}	tƒ }
|
 |	j|	¡}|
 |¡}||_q­| j d¡dgkrå| j d¡D ]}	tƒ }
|
 |	j|	¡}|
 |¡}|}qÑ||_| jd |_| jd |_| jd |_d|_d|_tj  ¡ |_!| "|¡ | #¡  |j$dkr«t%ƒ }d|_&| jd |_'d|_(d|_)| jd |_*|j$|_+||_,d|_d|_-d|_||_| jd |_.| jd |_/| jd |_0d|_1tj  ¡ |_!| "|¡ | #¡  | 2|¡ t3ƒ }||_4|j$|_5| jd |_6t7| jd ƒ|_8d |_-d!|_| jd |_tj  ¡ |_!t9ƒ |_:d|_;d|_1| "|¡ | #¡  | 2|¡ |j$dkrÉ| jd |d"œ}t<|ƒ}| =¡  t>d#d$d%œƒW S t>d&d'd%œƒW S | =¡  t>d&d'd%œƒW S | =¡  t>d&d(d%œƒW S  t?y } zt|ƒ | @¡  | =¡  t>d&d)d%œƒW  Y d }~S d }~ww )*Nrl   r@   rh   r•   r–   r—   r   r5   r˜   r™   rš   r›   rœ   r   rž   rŸ   r    r¡   Úreceiptimager¢   r£   r¤   ÚOffliner¦   r§   r¨   r©   Ú	receiptnoÚreceiptdaterª   r«   r¬   r­   r®   r¯   r°   r±   r´   rµ   r¶   r·   )Ar    r6   r¸   rj   rV   rf   r8   r•   r—   r:   r˜   r™   rš   r›   rœ   r   rh   rž   r¹   r   rº   rz   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Û   rÇ   rÈ   r`   rg   rÉ   rÊ   rË   r   r«   r2   rÌ   rÍ   r’   r>   r   r   r=   )r&   rA   r¿   r@   rh   rz   rÎ   rb   re   rÏ   rÐ   rÑ   rÒ   rÓ   rÔ   rÕ   rÖ   rC   r(   r(   r)   Úuser_OfflineRegistrationÝ  sÔ   











þ€ürÜ   c              
   C   s(  t  ¡ }z	z¥| jd }| jd }tj ¡ jdd}| ¡  t||d}|rž|jr|j	dkr¼|j
dkr¼|jröt|jƒ tj |jd¡}tj tj ¡  d¡d¡}|| j}t|ƒ |d	kr,td
ƒ z—tƒ }	|j|	 tj ¡ tjdd ¡dœ}
t |
tdƒ¡}| t¡ tj|jk¡ d|i¡ | t¡j|jd ¡  tƒ }||_ tj ¡ |_!|j|_"| #|¡ | $¡  i }d|d< |j%|d< |
d |d< |j&|d< |j
|d< |j	|d< d|d< tj ¡ tjdd |d< | '¡  t(d|ddœƒW W W | '¡  S  t)y+ } zt|ƒ | *¡  | '¡  t(dd d!œƒW  Y d }~W W | '¡  S d }~ww td"ƒ z™tƒ }	|j|	 tj ¡ tjdd ¡dœ}
t |
tdƒ¡}| t¡ tj|jk¡ d|i¡ | t¡j|jd ¡  tƒ }||_ tj ¡ |_!|j|_"| #|¡ | $¡  i }||d< |j%|d< |
d |d< |j&|d< |j
|d< |j	|d< |
d# |d< tj ¡ tjdd |d< | '¡  t(d|d$dœƒW W W | '¡  S  t)yõ } zt|ƒ | *¡  | '¡  t(dd d!œƒW  Y d }~W W | '¡  S d }~ww z™tƒ }	|j|	 tj ¡ tjdd ¡dœ}
t |
tdƒ¡}| t¡ tj|jk¡ d|i¡ | t¡j|jd ¡  tƒ }||_ tj ¡ |_!|j|_"| #|¡ | $¡  i }||d< |j%|d< |
d |d< |j&|d< |j
|d< |j	|d< |
d# |d< tj ¡ tjdd |d< | '¡  t(d|d$dœƒW W W | '¡  S  t)y» } zt|ƒ | *¡  | '¡  t(dd d!œƒW  Y d }~W W | '¡  S d }~ww |j	dkrŒ|j
d%krŒtd"ƒ z“tƒ }	|j|	 tj ¡ tjdd ¡dœ}
t |
tdƒ¡}| t¡ tj|jk¡ d|i¡ | t¡j|jd ¡  tƒ }||_ tj ¡ |_!|j|_"| #|¡ | $¡  i }||d< |j%|d< |
d |d< |j
|d< |j	|d< |
d# |d< tj ¡ tjdd |d< | '¡  t(d|d&œƒW W W | '¡  S  t)y‹ } zt|ƒ | *¡  | '¡  t(dd d!œƒW  Y d }~W W | '¡  S d }~ww | '¡  t(dd'd!œƒW W | '¡  S nt(dd(d)œƒW W | '¡  S W n[ t+yÚ } z!t|ƒ | *¡  | '¡  t(dd*t,|ƒd+œƒW  Y d }~W | '¡  S d }~w t)y } z!t|ƒ | *¡  | '¡  t(dd*t,|ƒd+œƒW  Y d }~W | '¡  S d }~ww W | '¡  d S | '¡  w ),NrË   r«   r   ©Úmicrosecond)Ú	user_namer«   r¤   r¬   r1   ém  Úhiiiié   ©Údays)Úuser_idÚexpiryÚ
SECRET_KEYÚlast_logineddate)rå   rl   Útokenrå   rÊ   rÉ   rÆ   r   Útoken_expiryiÀ¨  ©ÚminutesÚexpiry_timer¯   ÚTrue)r²   ÚlogindetailsÚExpiredr´   z*Cant login now. Please try again later...!r±   zinside activeræ   ÚFalseÚAdmin)r²   rï   z/User account is not active please contact adminzPlease check your credentails)r   r³   ú4Something went wrong please try again after sometime©r²   r³   r´   )-r    r6   r¸   r,   r-   ÚreplaceÚflushr   r?   r   rÆ   rÌ   rV   Ústrptimer.   rä   r!   rÊ   Údefaultr   Útodayr   ÚjwtÚencodeÚenvr7   rg   r9   r\   Ú	AuthTokenr[   ÚdeleteÚkeyÚcreatedrå   r_   r]   rË   rÉ   r>   r   r„   r=   r   Ústr)r&   rA   rË   r«   Úcurrent_dateÚuserÚdate1Údate2Údays_differenceÚDateEncoderÚpayloadré   Ú
auth_tokenÚadmin_detailsrC   r(   r(   r)   ÚadminAuthentication  s|  




þ"




 
 û 
€ ûþ"





\¥
W€¥þ"





:Ç
5€Çþ"




ë
€ë
 Ò "
 Ò # 
€ú 
€ú Ø .r  c                   @   ó    e Zd ZefZefZdd„ ZdS )Úget_UserListc              
   C   ó<  t  ¡ }z”z:d}| t|ƒ¡ ¡ }dd„ |D ƒ}t|ƒdkr/| ¡  td|dœƒW W | ¡  S | ¡  tddd	œƒW W | ¡  S  tyl } z!t	|ƒ | 
¡  | ¡  tdd
t|ƒdœƒW  Y d }~W | ¡  S d }~w ty˜ } z!t	|ƒ | 
¡  | ¡  tdd
t|ƒdœƒW  Y d }~W | ¡  S d }~ww | ¡  w )Nzíselect idpwoalogin.userid,idpwoalogin.status as loginstatus,idpwoauserregistartion.* from idpwoalogin inner join idpwoauserregistartion on idpwoauserregistartion.id = idpwoalogin.userid  where idpwoalogin.status="Active" order by id descc                 S   ó   g | ]}t |ƒ‘qS r(   ©Údict©Ú.0Úrowr(   r(   r)   Ú
<listcomp>S  ó    z%get_UserList.post.<locals>.<listcomp>r   r¯   ©r²   Úuserlistr´   úNo data foundr±   ró   rô   ©r    r6   Úexecuter   Úfetchallr<   r>   r   r   rV   r=   r  r„   ©Úselfr&   rA   rd   re   ÚuserObjsrC   r(   r(   r)   ÚpostN  ó8   
ó
õ 
€ú 
€ú
zget_UserList.postN©Ú__name__Ú
__module__Ú__qualname__r   r   r%   r   r   r(   r(   r(   r)   r  K  ó    r  c                   @   r  )ÚgetUserByStatusc              
   C   óV  t  ¡ }z¡zGtdƒ |jd }d| d }| t|ƒ¡ ¡ }dd„ |D ƒ}t|ƒdkr<| ¡  t	d|d	œƒW W | ¡  S | ¡  t	d
ddœƒW W | ¡  S  t
yy } z!t|ƒ | ¡  | ¡  t	d
dt|ƒdœƒW  Y d }~W | ¡  S d }~w ty¥ } z!t|ƒ | ¡  | ¡  t	d
dt|ƒdœƒW  Y d }~W | ¡  S d }~ww | ¡  w )Núinside loginr   zÕselect idpwoalogin.userid,idpwoalogin.status as loginstatus,idpwoauserregistartion.* from idpwoalogin inner join idpwoauserregistartion on idpwoauserregistartion.id = idpwoalogin.userid  where idpwoalogin.status="ú" order by id descc                 S   r  r(   r  r  r(   r(   r)   r  s  r  z(getUserByStatus.post.<locals>.<listcomp>r   r¯   r  r´   r  r±   ró   rô   ©r    r6   rV   r¸   r  r   r  r<   r>   r   r   r=   r  r„   )r  r&   rA   r   rd   re   r  rC   r(   r(   r)   r   k  ó<   

ó
õ 
€ú 
€ú
zgetUserByStatus.postNr"  r(   r(   r(   r)   r'  h  r&  r'  c                   @   r  )ÚgetUser_ByIDc              
   C   s*  t  ¡ }z
z¯tdƒ |jd }d}d}d| d }| t|ƒ¡ ¡ }dd„ |D ƒ}| t¡ 	tj
|k¡ tj ¡ ¡ ¡ }	|	rŒt|	jƒ |	j}
tƒ }tj |
d¡}tj tj ¡  d¡d¡}|| j}t|ƒ |d	krnd
}n|d	krtd}|D ]}|
|d< |	j|d< |	j|d< |	j|d< qvt|ƒdkr¥| ¡  td|||dœƒW W | ¡  S | ¡  tdddœƒW W | ¡  S  tyâ } z!t|ƒ | ¡  | ¡  tddt|ƒdœƒW  Y d }~W | ¡  S d }~w ty } z!t|ƒ | ¡  | ¡  tddt|ƒdœƒW  Y d }~W | ¡  S d }~ww | ¡  w )Nr)  r?   rl   z0select * from idpwoauserregistartion where id ="ú"c                 S   ó   g | ]}t |jƒ‘qS r(   ©r  Ú_mappingr  r(   r(   r)   r  ”  ó    z%getUser_ByID.post.<locals>.<listcomp>r1   rà   r­   r¤   rÇ   ÚpaymentdaterÁ   r§   r   r¯   )r²   r  rä   r   r´   r  r±   ró   rô   )r    r6   rV   r¸   r  r   r  r7   rÀ   r9   rÄ   Úorder_byr^   ÚdescrX   rÇ   r2   r,   r÷   r-   r.   rä   r?   r§   r<   r>   r   r   r=   r  r„   )r  r&   rA   r?   r  r   rd   re   r  Ú
paymentObjrÇ   Úcurrentdater  r  r  rC   r(   r(   r)   r   ‹  sd   
&




ó
õ 
€ú 
€ú
zgetUser_ByID.postNr"  r(   r(   r(   r)   r-  ˆ  r&  r-  c                   @   r  )ÚeditUserProfilec              
   C   sŒ  t  ¡ }z;zß|jd }|jd }| t¡j||d ¡ }|jd |_|jd |_|jd |_	|jd |_
|jd |_|jd	 |_|jd
 |_|jd |_|jd |_|j d¡dgkrw|j d¡D ]}tƒ }| |j|¡}| |¡}	|	|_qb|j d¡dgkr›|j d¡D ]}tƒ }| |j|¡}| |¡}	|	|_q†|jd |_|jd |_|jd |_d|_tj ¡ |_| |¡ | ¡  |j dkrÕ| !¡  t"dddœƒW W | !¡  S | !¡  t"dddœƒW W | !¡  S  t#y }
 z!t$|
ƒ | %¡  | !¡  t"ddt&|
ƒdœƒW  Y d }
~
W | !¡  S d }
~
w t'y@ }
 z!t$|
ƒ | %¡  | !¡  t"ddt&|
ƒdœƒW  Y d }
~
W | !¡  S d }
~
ww | !¡  w )NrÊ   r:   )r?   r:   r•   r—   r˜   r™   rš   r›   rœ   r   rž   rŸ   r    r¡   r@   r¢   r£   r¤   r   r¯   úUpdated successfullyr±   r´   úCan't update valueró   rô   )(r    r6   r¸   r7   r8   r[   Úoner•   r—   r˜   r™   rš   r›   rœ   r   rž   r¹   r   rº   rz   r»   r¼   r½   r@   r¢   r£   r   r,   r-   r^   r_   r]   r?   r>   r   r   rV   r=   r  r„   )r  r&   rA   r?   r:   re   rÏ   rÐ   rÑ   rÒ   rC   r(   r(   r)   r   Ã  sp   






ó
õ 
€ú 
€ú
zeditUserProfile.postNr"  r(   r(   r(   r)   r8  À  r&  r8  c                   @   r  )Úget_UserByDistrictc              
   C   r(  )Nr)  r@   zâselect idpwoalogin.userid,idpwoalogin.status as loginstatus,idpwoauserregistartion.* from idpwoalogin inner join idpwoauserregistartion on idpwoauserregistartion.id = idpwoalogin.userid  where idpwoauserregistartion.district="r*  c                 S   r  r(   r  r  r(   r(   r)   r    r  z+get_UserByDistrict.post.<locals>.<listcomp>r   r¯   r  r´   r  r±   ró   rô   r+  )r  r&   rA   Údidrd   re   r  rC   r(   r(   r)   r   ý  r,  zget_UserByDistrict.postNr"  r(   r(   r(   r)   r<  ú  r&  r<  c                   @   r  )ÚgetUser_Requestc              
   C   r  )Nzïselect idpwoalogin.userid,idpwoalogin.status as loginstatus,idpwoauserregistartion.* from idpwoalogin inner join idpwoauserregistartion on idpwoauserregistartion.id = idpwoalogin.userid  where idpwoalogin.status="Inactive" order by id descc                 S   r  r(   r  r  r(   r(   r)   r  %  r  z(getUser_Request.post.<locals>.<listcomp>r   r¯   r  r´   r  r±   ró   rô   r  r  r(   r(   r)   r      r!  zgetUser_Request.postNr"  r(   r(   r(   r)   r>    r&  r>  c                   @   r  )ÚapproveUserc              
   C   ó8  t  ¡ }z’z8|jd }|jd }| t¡j|d ¡ }|r1||_| ¡  t	dddœƒW W | 
¡  S t	dddœƒW W | 
¡  S  tyj } z!t|ƒ | ¡  | 
¡  t	d	d
t|ƒdœƒW  Y d }~W | 
¡  S d }~w ty– } z!t|ƒ | ¡  | 
¡  t	d	d
t|ƒdœƒW  Y d }~W | 
¡  S d }~ww | 
¡  w )NrÊ   r   ©rÊ   r¯   r9  r±   ÚWarningú!Cant update value try again laterr´   ró   rô   )r    r6   r¸   r7   rg   r[   rX   r   r]   r   r>   r   rV   r=   r  r„   )r  r&   rA   rÊ   r   r  rC   r(   r(   r)   r   =  ó8   


ô
õ 
€ú 
€ú
zapproveUser.postNr"  r(   r(   r(   r)   r?  :  r&  r?  c                   @   r  )ÚactiveOrInactiveUsersc              
   C   s  t  ¡ }z€z&|jd }| t¡ tjdk¡ d|i¡ | ¡  t	dddœƒW W | 
¡  S  tyX } z!t|ƒ | ¡  | 
¡  t	ddt|ƒdœƒW  Y d }~W | 
¡  S d }~w ty„ } z!t|ƒ | ¡  | 
¡  t	ddt|ƒdœƒW  Y d }~W | 
¡  S d }~ww | 
¡  w )	Nr   rò   r¯   r9  r±   r´   ró   rô   )r    r6   r¸   r7   rg   r9   rÆ   r\   r]   r   r>   r   rV   r=   r  r„   )r  r&   rA   r   rC   r(   r(   r)   r   Y  s.   
 
õ 
€ú 
€ú
zactiveOrInactiveUsers.postNr"  r(   r(   r(   r)   rE  V  r&  rE  c              
   C   sj  t  ¡ }z*zË| jd }| jd }| jd }t|ƒ}|dkr/| ¡  tdddœƒW W | ¡  S t ¡ }t t	¡ t
ƒ }tj ¡ jdd	}|tjd
d }	t
ƒ }|||	dœ}
|||	| jd |dœ}|rÁt|ƒ}|dkr°tƒ }| jd |_||_t ¡ }tj ¡ |_t|_t|ƒ}||_d|_||_||_d|_| |¡ | ¡  | ¡  td|dœƒW W | ¡  S | ¡  tdddœƒW W | ¡  S | ¡  tdddœƒW W | ¡  S  t yþ } z!t!|ƒ | "¡  | ¡  tddt#|ƒdœƒW  Y d }~W | ¡  S d }~w t$y/ } z%t!dƒ t!|ƒ | "¡  | ¡  tddt#|ƒdœƒW  Y d }~W | ¡  S d }~ww | ¡  w )Nrh   rz   Úphoner5   r´   r¶   r±   r   rÝ   é   rë   )r~   Úotp_created_timeÚotp_exp_time)r~   Úotp_cre_timeÚotp_expire_timerh   rz   Tr©   ÚPendingr¯   )r²   rÿ   zDCant send otp to the email you provided...!please check you email idz+Cant send otp now..! please try again laterró   rô   z
inside try)%r    r6   r¸   rj   r>   r   ÚsysÚgetrecursionlimitÚsetrecursionlimitÚ	new_limitrv   r,   r-   rõ   r   r   ÚOtpdtlrh   Úotpr   rù   r^   r/   Úcreatedtimer|   rÿ   rÆ   rz   rF  r   r_   r]   r   rV   r=   r  r„   )r&   rA   rh   rz   rF  rÎ   Úcurrent_limitÚOtprJ  rK  r†   Ú	otpParamsÚresultÚotpDtlrù   rÿ   rC   r(   r(   r)   ÚsendUserOtpp  s„   



7Ì
û

ï
ò
ô 
€ù 
€ù
rY  c              
   C   sî  t  ¡ }zíz“| jd }| jd }| jd }| t¡j||d ¡ }|jdkrˆtj	dd}t 
|j¡}t ¡ }|| |krO| ¡  tdd	d
œddW W | ¡  S |j|krw| t¡j|d ddi¡}	| ¡  | ¡  tddd
œƒW W | ¡  S | ¡  tddd
œƒW W | ¡  S | ¡  tddd
œƒW W | ¡  S  tyÅ }
 z!t|
ƒ | ¡  | ¡  tddt|
ƒdœƒW  Y d }
~
W | ¡  S d }
~
w tyñ }
 z!t|
ƒ | ¡  | ¡  tddt|
ƒdœƒW  Y d }
~
W | ¡  S d }
~
ww | ¡  w )NrR  rÿ   rh   )rh   rÿ   rL  é   rë   r´   zOTP expiredr±   é  r
   ©rÿ   r   ÚVerifiedr¯   zOTP VerifiedzIncorrect OTPrB  zAccount already verifiedró   rô   )r    r6   r¸   r7   rQ  r[   r;  r   r   r   Ú
make_awarer^   r-   r>   r   rR  r\   r]   r   rV   r=   r  r„   )r&   rA   rR  rÿ   rh   ÚotpValÚexpiration_timeÚ
created_atr/   rd   rC   r(   r(   r)   ÚverifyUserOtp´  sT   





ê
ð
ó
õ 
€ú 
€ú
rb  c              
   C   sL  t  ¡ }zzÀ| jd }t|ƒ}|dkr!tdddœƒW W | ¡  S |dkrGtƒ }tj ¡ j	dd}|tj
dd	 }tƒ }|||| jd d
œ}ntdƒ |r¶t|ƒ}|dkr¥| t¡j|d ¡ }	|	j}
tƒ }| jd |_||_d|_d|_t ¡ }tj ¡ |_tƒ |_tdƒ}||_| |¡ | ¡  | ¡  td||
dœƒW W | ¡  S | ¡  tdddœƒW W | ¡  S | ¡  tdddœƒW W | ¡  S  t yó } z!t|ƒ | !¡  | ¡  tddt"|ƒdœƒW  Y d }~W | ¡  S d }~w t#y  } z!t|ƒ | !¡  | ¡  tddt"|ƒdœƒW  Y d }~W | ¡  S d }~ww | ¡  w )Nrh   r   r´   z!Account with this email not existr±   r5   rÝ   rG  rë   )r~   rJ  rK  rh   rl   T)rh   zForgot passwordrL  rz   r¯   )r²   rÿ   Úkeyidz!Cant Send OTP to your given emailró   rô   )$r    r6   r¸   rj   r   r>   rv   r,   r-   rõ   r   rV   r‘   r7   rg   r[   r;  rÉ   rQ  rh   rR  rÆ   r   r   rù   r^   r0   rS  r|   rÿ   r_   r]   r   r=   r  r„   )r&   rA   rh   rÎ   rU  rJ  rK  rV  rW  ÚloginDtlÚkeyIdrX  rù   rÿ   rC   r(   r(   r)   ÚfogetPasswordOtpä  sx   

2Ïü

ð
ó
õ 
€ú 
€ú
rf  c              
   C   sx  t  ¡ }z²zX| jd }| jd }| jd }| t¡j||d ¡ }t| jd ƒ|_| 	|¡ | 
¡  | |¡ |jdkrM| ¡  tdddœƒW W | ¡  S | ¡  td	d
dœƒW W | ¡  S  tyŠ } z!t|ƒ | ¡  | ¡  td	dt|ƒdœƒW  Y d }~W | ¡  S d }~w ty¶ } z!t|ƒ | ¡  | ¡  td	dt|ƒdœƒW  Y d }~W | ¡  S d }~ww | ¡  w )Nrh   r«   rc  )rh   rÉ   r   r¯   úPassword changed successfullyr±   r´   zCan't change passwordró   rô   )r    r6   r¸   r7   rg   r[   r;  r   r«   r_   r]   r`   r?   r>   r   r   rV   r=   r  r„   )r&   rA   rh   r«   re  rd  rC   r(   r(   r)   Úfoget_PasswordChange   sB   






ò
õ 
€ú 
€ú
rh  c                   @   r  )ÚchangePasswordc              
   C   sÖ  t  ¡ }záz‡|jd }|jd }|jd }|jd }| t¡ tj|k¡ ¡ }|r|| |¡rkt	|ƒ}| t¡j
||d d|i¡}	| ¡  |	dkrZ| ¡  tdd	d
œƒW W | ¡  S | ¡  tddd
œƒW W | ¡  S | ¡  tddd
œƒW W | ¡  S | ¡  tddd
œƒW W | ¡  S  ty¹ }
 z!t|
ƒ | ¡  | ¡  tddt|
ƒdœƒW  Y d }
~
W | ¡  S d }
~
w tyå }
 z!t|
ƒ | ¡  | ¡  tddt|
ƒdœƒW  Y d }
~
W | ¡  S d }
~
ww | ¡  w )NÚoldpasswordÚnewpasswordrÊ   r:   )rÊ   rÉ   r«   r   r¯   rg  r±   r´   zcan't change passwordzOld password is incorrectró   rô   )r    r6   r¸   r7   rg   r9   rÊ   r;  r   r   r[   r\   r]   r>   r   r   rV   r=   r  r„   )r  r&   rA   ÚoldPasswordÚnewPasswordrÊ   r:   r  r«   rd   rC   r(   r(   r)   r   F  sR   





ì
ï
ò
õ 
€ú 
€ú
zchangePassword.postNr"  r(   r(   r(   r)   ri  C  r&  ri  c                   @   r  )ÚaddUsefullLinksc           	   
   C   óª  t  ¡ }zËzqtƒ }|j d¡dgkr-|j d¡D ]}tƒ }| |j|¡}| |¡}||_	q|jd |_
|jd |_d|_tj ¡ |_| |¡ | ¡  | |¡ |jdkrf| ¡  tddd	œƒW W | ¡  S | ¡  td
dd	œƒW W | ¡  S  ty£ } z!t|ƒ | ¡  | ¡  td
dt|ƒdœƒW  Y d }~W | ¡  S d }~w tyÏ } z!t|ƒ | ¡  | ¡  td
dt|ƒdœƒW  Y d }~W | ¡  S d }~ww | ¡  w )NÚimager    ÚdescriptionÚlinkr¤   r   r¯   úAdded successfullyr±   r´   ú#Can't add now please tryagain laterró   rô   )r    r6   ÚusefullLinksTblr¸   r¹   r   rº   rz   r»   Úimageurlrq  rr  r   r,   r-   r^   r_   r]   r`   r?   r>   r   r   rV   r=   r  r„   )	r  r&   rA   ÚlinksObjrÏ   rÐ   rÑ   rÒ   rC   r(   r(   r)   r   u  sN   




ó
õ 
€ú 
€ú
zaddUsefullLinks.postNr"  r(   r(   r(   r)   rn  r  r&  rn  c                   @   r  )ÚgetuseFullLinksc              
   C   r  )Nz1select * from idpwoausefulllinks order by id descc                 S   r  r(   r  r  r(   r(   r)   r  ¢  r  z(getuseFullLinks.post.<locals>.<listcomp>r   r¯   ©r²   Úusefulllinklistr´   r  r±   ró   rô   r  r  r(   r(   r)   r     r!  zgetuseFullLinks.postNr"  r(   r(   r(   r)   rx  š  r&  rx  c                   @   r  )Úget_useFullLinksByIdc              
   C   sV  t  ¡ }z¡zGt  ¡ }|jd }d| d }| t|ƒ¡ ¡ }dd„ |D ƒ}t|ƒdkr<| ¡  td|dœƒW W | ¡  S | ¡  td	d
dœƒW W | ¡  S  t	yy } z!t
|ƒ | ¡  | ¡  td	dt|ƒdœƒW  Y d }~W | ¡  S d }~w ty¥ } z!t
|ƒ | ¡  | ¡  td	dt|ƒdœƒW  Y d }~W | ¡  S d }~ww | ¡  w )Nr?   z-select * from idpwoausefulllinks where id = "r.  c                 S   r  r(   r  r  r(   r(   r)   r  À  r  z-get_useFullLinksById.post.<locals>.<listcomp>r   r¯   ry  r´   r  r±   ró   rô   ©r    r6   r¸   r  r   r  r<   r>   r   r   rV   r=   r  r„   )r  r&   rA   r?   rd   re   r  rC   r(   r(   r)   r   ¹  s<   

ó
õ 
€ú 
€ú
zget_useFullLinksById.postNr"  r(   r(   r(   r)   r{  ¶  r&  r{  c                   @   r  )ÚeditUsefullLinksc           
   
   C   s¨  t  ¡ }zÊzp|jd }| t¡j|d ¡ }|j d¡dgkr:|j d¡D ]}tƒ }| 	|j
|¡}| |¡}||_q%|jd |_|jd |_| ¡  | |¡ |jdkre| ¡  tdd	d
œƒW W | ¡  S | ¡  tddd
œƒW W | ¡  S  ty¢ }	 z!t|	ƒ | ¡  | ¡  tddt|	ƒdœƒW  Y d }	~	W | ¡  S d }	~	w tyÎ }	 z!t|	ƒ | ¡  | ¡  tddt|	ƒdœƒW  Y d }	~	W | ¡  S d }	~	ww | ¡  w )Nr?   ©r?   rp  r    rq  rr  r   r¯   r9  r±   r´   r:  ró   rô   )r    r6   r¸   r7   ru  r[   r;  r¹   r   rº   rz   r»   rv  rq  rr  r]   r`   r?   r>   r   r   rV   r=   r  r„   )
r  r&   rA   r?   rw  rÏ   rÐ   rÑ   rÒ   rC   r(   r(   r)   r   ×  sJ   




ï
õ 
€ú 
€ú
zeditUsefullLinks.postNr"  r(   r(   r(   r)   r}  Ô  r&  r}  c                   @   r  )ÚdeleteUsefullLinksc              
   C   ó<  t  ¡ }z”z:|jd }| t¡j|d ¡ }| ¡  |dkr/| ¡  t	dddœƒW W | ¡  S | ¡  t	dddœƒW W | ¡  S  t
yl } z!t|ƒ | ¡  | ¡  t	dd	t|ƒd
œƒW  Y d }~W | ¡  S d }~w ty˜ } z!t|ƒ | ¡  | ¡  t	dd	t|ƒd
œƒW  Y d }~W | ¡  S d }~ww | ¡  w ©Nr?   r~  r   r¯   zDeleted successfully r±   r´   zcan't delete nowró   rô   )r    r6   r¸   r7   ru  r[   rþ   r]   r>   r   r   rV   r=   r  r„   ©r  r&   rA   r?   rd   rC   r(   r(   r)   r     ó8   

ó
õ 
€ú 
€ú
zdeleteUsefullLinks.postNr"  r(   r(   r(   r)   r    r&  r  c                   @   r  )Ú	addbannerc           	   
   C   óž  t  ¡ }zÅzktƒ }|j d¡dgkr-|j d¡D ]}tƒ }| |j|¡}| |¡}||_	q|jd |_
d|_tj ¡ |_| |¡ | ¡  | |¡ |jdkr`| ¡  tdddœƒW W | ¡  S | ¡  td	d
dœƒW W | ¡  S  ty } z!t|ƒ | ¡  | ¡  td	dt|ƒdœƒW  Y d }~W | ¡  S d }~w tyÉ } z!t|ƒ | ¡  | ¡  td	dt|ƒdœƒW  Y d }~W | ¡  S d }~ww | ¡  w )Nrp  r    Úlinkurlr¤   r   r¯   rs  r±   r´   rt  ró   rô   )r    r6   Ú	bannerTblr¸   r¹   r   rº   rz   r»   rv  r†  r   r,   r-   r^   r_   r]   r`   r?   r>   r   r   rV   r=   r  r„   )	r  r&   rA   Ú	bannerObjrÏ   rÐ   rÑ   rÒ   rC   r(   r(   r)   r   "  óL   




ó
õ 
€ú 
€ú
zaddbanner.postNr"  r(   r(   r(   r)   r„    r&  r„  c                   @   r  )ÚgetBannerListc              
   C   r  )Nz+select * from idpwoabanner order by id descc                 S   r  r(   r  r  r(   r(   r)   r  M  r  z&getBannerList.post.<locals>.<listcomp>r   r¯   ©r²   Ú
bannerlistr´   r  r±   ró   rô   r  )r  r&   rA   rd   rˆ  Ú
bannerObjsrC   r(   r(   r)   r   H  r!  zgetBannerList.postNr"  r(   r(   r(   r)   rŠ  E  r&  rŠ  c              
   C   s"  zkt  ¡ }d}| t|ƒ¡ ¡ }dd„ |D ƒ}| t¡ ¡ }|r9td|j	 ƒ t
|j	ƒd |_	| |¡ | ¡  ntƒ }d|_	tj ¡ |_| |¡ | ¡  t|ƒdkr`| ¡  td|d	œƒW S | ¡  td
ddœƒW S  ty } zt|ƒ | ¡  | ¡  td
ddœƒW  Y d }~S d }~ww )NzBselect * from idpwoabanner where status ="Active" order by id descc                 S   r  r(   r  r  r(   r(   r)   r  h  r  z%getUserBannerList.<locals>.<listcomp>Údhadjr5   Ú1r   r¯   r‹  r´   r  r±   r·   )r    r6   r  r   r  r7   ÚVisitorsDtlrX   rV   ÚcountrZ   r_   r]   r,   r-   r^   r<   r>   r   r   r=   )r&   rA   rd   rˆ  r  ÚcountObjÚvistObjrC   r(   r(   r)   ÚgetUserBannerLista  s8   


€ür”  c                   @   r  )ÚdeleteBannerc              
   C   r€  r  )r    r6   r¸   r7   r‡  r[   rþ   r]   r>   r   r   rV   r=   r  r„   r‚  r(   r(   r)   r   †  rƒ  zdeleteBanner.postNr"  r(   r(   r(   r)   r•  ƒ  r&  r•  c                   @   r  )ÚupdateBannerStatusc              
   C   r@  )Nr?   r   r~  r¯   r9  r±   rB  rC  r´   ró   rô   )r    r6   r¸   r7   r‡  r[   rX   r   r]   r   r>   r   rV   r=   r  r„   )r  r&   rA   r?   r   ÚbannerrC   r(   r(   r)   r   ¢  rD  zupdateBannerStatus.postNr"  r(   r(   r(   r)   r–  Ÿ  r&  r–  c                   @   r  )Ú	addMarquec              
   C   sj  t  ¡ }z«zQt  ¡ }tƒ }|jd |_d|_|jd |_tj ¡ |_	| 
|¡ | ¡  | |¡ |jdkrF| ¡  tdddœƒW W | ¡  S | ¡  tdd	dœƒW W | ¡  S  tyƒ } z!t|ƒ | ¡  | ¡  tdd
t|ƒdœƒW  Y d }~W | ¡  S d }~w ty¯ } z!t|ƒ | ¡  | ¡  tdd
t|ƒdœƒW  Y d }~W | ¡  S d }~ww | ¡  w )NÚmarquer¤   rÆ   r   r¯   rs  r±   r´   rt  ró   rô   )r    r6   Ú	marqueTblr¸   r™  r   rÆ   r,   r-   r^   r_   r]   r`   r?   r>   r   r   rV   r=   r  r„   )r  r&   rA   Ú	marqueObjrC   r(   r(   r)   r   Á  sD   



ó
õ 
€ú 
€ú
zaddMarque.postNr"  r(   r(   r(   r)   r˜  ¾  r&  r˜  c              
   C   sô   zTt  ¡ }| jd }|dkr!d}| t|ƒ¡ ¡ }dd„ |D ƒ}nd| d }| t|ƒ¡ ¡ }dd„ |D ƒ}t|ƒd	krI| ¡  td
|dœƒW S | ¡  tdddœƒW S  t	yy } zt
|ƒ | ¡  | ¡  tdddœƒW  Y d }~S d }~ww )NrÆ   ÚAllz+select * from idpwoamarque order by id descc                 S   r  r(   r  r  r(   r(   r)   r  é  r  z!getMarqueList.<locals>.<listcomp>z'select * from idpwoamarque where type="r*  c                 S   r  r(   r  r  r(   r(   r)   r  í  r  r   r¯   )r²   Ú
marquelistr´   r  r±   r·   )r    r6   r¸   r  r   r  r<   r>   r   r   rV   r=   )r&   rA   rÆ   rd   r›  Ú
marqueObjsrC   r(   r(   r)   ÚgetMarqueListà  s,   
€ürŸ  c                   @   r  )Úget_MarqueByIdc              
   C   sN  t  ¡ }zzC|jd }d| d }| t|ƒ¡ ¡ }dd„ |D ƒ}t|ƒdkr8| ¡  td|dœƒW W | ¡  S | ¡  td	d
dœƒW W | ¡  S  t	yu } z!t
|ƒ | ¡  | ¡  td	dt|ƒdœƒW  Y d }~W | ¡  S d }~w ty¡ } z!t
|ƒ | ¡  | ¡  td	dt|ƒdœƒW  Y d }~W | ¡  S d }~ww | ¡  w )Nr?   z'select * from idpwoamarque where id = "r.  c                 S   r  r(   r  r  r(   r(   r)   r    r  z'get_MarqueById.post.<locals>.<listcomp>r   r¯   )r²   r™  r´   r  r±   ró   rô   r|  )r  r&   rA   r?   rd   r›  rž  rC   r(   r(   r)   r   ý  s:   

ó
õ 
€ú 
€ú
zget_MarqueById.postNr"  r(   r(   r(   r)   r   ú  r&  r   c                   @   r  )Ú
editMarquec              
   C   s`  t  ¡ }z¦zL|jd }| t¡j|d ¡ }|jd |_|jd |_| 	¡  | 
|¡ |jdkrA| ¡  tdddœƒW W | ¡  S | ¡  td	d
dœƒW W | ¡  S  ty~ } z!t|ƒ | ¡  | ¡  td	dt|ƒdœƒW  Y d }~W | ¡  S d }~w tyª } z!t|ƒ | ¡  | ¡  td	dt|ƒdœƒW  Y d }~W | ¡  S d }~ww | ¡  w )Nr?   r~  r™  rÆ   r   r¯   r9  r±   r´   r:  ró   rô   )r    r6   r¸   r7   rš  r[   r;  r™  rÆ   r]   r`   r?   r>   r   r   rV   r=   r  r„   )r  r&   rA   r?   r›  rC   r(   r(   r)   r     s>   



ó
õ 
€ú 
€ú
zeditMarque.postNr"  r(   r(   r(   r)   r¡    r&  r¡  c                   @   r  )ÚdeleteMarquec              
   C   r€  r  )r    r6   r¸   r7   rš  r[   rþ   r]   r>   r   r   rV   r=   r  r„   r‚  r(   r(   r)   r   9  s8   

ó
õ 
€ú 
€ú
zdeleteMarque.postNr"  r(   r(   r(   r)   r¢  6  r&  r¢  c                   @   r  )ÚaboutUsc              
   C   s  t  ¡ }zýz¢| t¡ ¡ }|ratdƒ t|d jƒ | t¡j|d jd ¡ }|j	d |_
d|_| ¡  | |¡ |jdkrP| ¡  tdddœƒW W | ¡  S | ¡  td	d
dœƒW W | ¡  S tƒ }|j	d |_
d|_tj ¡ |_| |¡ | ¡  | |¡ |jdkr—| ¡  tdddœƒW W | ¡  S | ¡  td	d
dœƒW W | ¡  S  tyÔ } z!t|ƒ | ¡  | ¡  td	dt|ƒdœƒW  Y d }~W | ¡  S d }~w ty } z!t|ƒ | ¡  | ¡  td	dt|ƒdœƒW  Y d }~W | ¡  S d }~ww | ¡  w )Nr}   r   r~  Úaboutr¤   r¯   r9  r±   r´   r:  ró   rô   )r    r6   r7   Ú
aboutUsTblr;   rV   r?   r[   r;  r¸   r¤  r   r]   r`   r>   r   r,   r-   r^   r_   r   r=   r  r„   )r  r&   rA   r¤  ÚaboutObjrC   r(   r(   r)   r   Y  s`   


å
è



ó
õ 
€ú 
€ú
zaboutUs.postNr"  r(   r(   r(   r)   r£  V  r&  r£  c              
   C   ó´   z4t  ¡ }d}| t|ƒ¡ ¡ }dd„ |D ƒ}t|ƒdkr)| ¡  td|dœƒW S | ¡  tddd	œƒW S  tyY } zt	|ƒ | 
¡  | ¡  tdd
d	œƒW  Y d }~S d }~ww )Nz,select * from idpwoaaboutus order by id descc                 S   r  r(   r  r  r(   r(   r)   r    r  zgetAboutUs.<locals>.<listcomp>r   r¯   )r²   Úaboutusr´   r  r±   r·   ©r    r6   r  r   r  r<   r>   r   r   rV   r=   )r&   rA   rd   r¦  Ú	aboutObjsrC   r(   r(   r)   Ú
getAboutUs†  ó"   €ür«  c                   @   r  )ÚdeleteAboutUsc              
   C   r€  r  )r    r6   r¸   r7   r¥  r[   rþ   r]   r>   r   r   rV   r=   r  r„   r‚  r(   r(   r)   r     rƒ  zdeleteAboutUs.postNr"  r(   r(   r(   r)   r­  š  r&  r­  c              
   C   sò   zSt  ¡ }tƒ }| jd |_| jd |_| jd |_| jd |_d|_t	j	 
¡ |_| |¡ | ¡  | |¡ |jdkrH| ¡  tddd	œƒW S | ¡  td
dd	œƒW S  tyx } zt|ƒ | ¡  | ¡  td
dd	œƒW  Y d }~S d }~ww )Nr•   r—   r@   rŠ   rL  r   r¯   rs  r±   r´   rt  r·   )r    r6   ÚcontactFormTblr¸   r•   r—   r@   rŠ   r   r,   r-   r^   r_   r]   r`   r?   r>   r   r   rV   r=   )r&   rA   Ú
contactObjrC   r(   r(   r)   ÚaddContactForm¸  s0   


€ür°  c                   @   r  )ÚgetContactFormc              
   C   r  )Nz0select * from idpwoacontactform order by id descc                 S   r  r(   r  r  r(   r(   r)   r  Ü  r  z'getContactForm.post.<locals>.<listcomp>r   r¯   )r²   Úformlistr´   r  r±   ró   rô   r  )r  r&   rA   rd   r¯  ÚcontactObjsrC   r(   r(   r)   r   Ö  s8   
ó
õ 
€ú 
€ú
zgetContactForm.postNr"  r(   r(   r(   r)   r±  Ó  r&  r±  c                   @   r  )Ú
addGalleryc           	   
   C   s’  t  ¡ }z¿zetƒ }|j d¡dgkr-|j d¡D ]}tƒ }| |j|¡}| |¡}||_	qd|_
tj ¡ |_| |¡ | ¡  | |¡ |jdkrZ| ¡  tdddœƒW W | ¡  S | ¡  tdd	dœƒW W | ¡  S  ty— } z!t|ƒ | ¡  | ¡  tdd
t|ƒdœƒW  Y d }~W | ¡  S d }~w tyÃ } z!t|ƒ | ¡  | ¡  tdd
t|ƒdœƒW  Y d }~W | ¡  S d }~ww | ¡  w )Nrp  r    r¤   r   r¯   rs  r±   r´   rt  ró   rô   )r    r6   Ú
galleryTblr¸   r¹   r   rº   rz   r»   rv  r   r,   r-   r^   r_   r]   r`   r?   r>   r   r   rV   r=   r  r„   )	r  r&   rA   Ú
galleryObjrÏ   rÐ   rÑ   rÒ   rC   r(   r(   r)   r   õ  sJ   




ó
õ 
€ú 
€ú
zaddGallery.postNr"  r(   r(   r(   r)   r´  ò  r&  r´  c              
   C   r§  )Nz,select * from idpwoagallery order by id descc                 S   r  r(   r  r  r(   r(   r)   r  	  r  zgetgallery.<locals>.<listcomp>r   r¯   )r²   Úgallerylistr´   r  r±   r·   r©  )r&   rA   rd   r¶  ÚgalleryObjsrC   r(   r(   r)   Ú
getgallery	  r¬  r¹  c                   @   r  )ÚdeleteGalleryc              
   C   óD  t  ¡ }z˜z>t  ¡ }|jd }| t¡j|d ¡ }| ¡  |dkr3| ¡  t	dddœƒW W | ¡  S | ¡  t	dddœƒW W | ¡  S  t
yp } z!t|ƒ | ¡  | ¡  t	dd	t|ƒd
œƒW  Y d }~W | ¡  S d }~w tyœ } z!t|ƒ | ¡  | ¡  t	dd	t|ƒd
œƒW  Y d }~W | ¡  S d }~ww | ¡  w r  )r    r6   r¸   r7   rµ  r[   rþ   r]   r>   r   r   rV   r=   r  r„   r‚  r(   r(   r)   r   /	  ó:   

ó
õ 
€ú 
€ú
zdeleteGallery.postNr"  r(   r(   r(   r)   rº  ,	  r&  rº  c                   @   r  )ÚaddRateChartc           	   
   C   ro  )NÚfiler    r@   rq  r¤   r   r¯   rs  r±   r´   rt  ró   rô   )r    r6   ÚrateChartTblr¸   r¹   r   rº   rz   r»   r¾  r@   rq  r   r,   r-   r^   r_   r]   r`   r?   r>   r   r   rV   r=   r  r„   )	r  r&   rA   ÚchartObjrÏ   rÐ   rÑ   rÒ   rC   r(   r(   r)   r   O	  sN   




ó
õ 
€ú 
€ú
zaddRateChart.postNr"  r(   r(   r(   r)   r½  L	  r&  r½  c                   @   r  )ÚgetRateChartc              
   C   sD  t  ¡ }z˜z>t  ¡ }d}| t|ƒ¡ ¡ }dd„ |D ƒ}t|ƒdkr3| ¡  td|dœƒW W | ¡  S | ¡  tddd	œƒW W | ¡  S  typ } z!t	|ƒ | 
¡  | ¡  tdd
t|ƒdœƒW  Y d }~W | ¡  S d }~w tyœ } z!t	|ƒ | 
¡  | ¡  tdd
t|ƒdœƒW  Y d }~W | ¡  S d }~ww | ¡  w )Nz.select * from idpwoaratechart order by id descc                 S   r  r(   r  r  r(   r(   r)   r  |	  r  z%getRateChart.post.<locals>.<listcomp>r   r¯   ©r²   Úratechartlistr´   r  r±   ró   rô   r  )r  r&   rA   rd   rÀ  Ú	chartObjsrC   r(   r(   r)   r   v	  s:   
ó
õ 
€ú 
€ú
zgetRateChart.postNr"  r(   r(   r(   r)   rÁ  s	  r&  rÁ  c                   @   r  )ÚdeleteRateChartc              
   C   r»  r  )r    r6   r¸   r7   r¿  r[   rþ   r]   r>   r   r   rV   r=   r  r„   r‚  r(   r(   r)   r   “	  r¼  zdeleteRateChart.postNr"  r(   r(   r(   r)   rÅ  	  r&  rÅ  c                   @   r  )Ú	addEventsc           	   
   C   r…  )Nrp  r    Ú	eventnamer¤   r   r¯   rs  r±   r´   rt  ró   rô   )r    r6   ÚupcommingEventsr¸   r¹   r   rº   rz   r»   rv  rÇ  r   r,   r-   r^   r_   r]   r`   r?   r>   r   r   rV   r=   r  r„   )	r  r&   rA   ÚeventObjrÏ   rÐ   rÑ   rÒ   rC   r(   r(   r)   r   ²	  sL   




ó
õ 
€ú 
€ú
zaddEvents.postNr"  r(   r(   r(   r)   rÆ  ¯	  r&  rÆ  c              
   C   r§  )Nz4select * from idpwoaupcommingevents order by id descc                 S   r  r(   r  r  r(   r(   r)   r  Þ	  r  zgetEvents.<locals>.<listcomp>r   r¯   rÂ  r´   r  r±   r·   r©  )r&   rA   rd   rÀ  rÄ  rC   r(   r(   r)   Ú	getEvents×	  r¬  rÊ  c                   @   r  )ÚdeleteEventsc              
   C   r»  r  )r    r6   r¸   r7   rÈ  r[   rþ   r]   r>   r   r   rV   r=   r  r„   r‚  r(   r(   r)   r   î	  r¼  zdeleteEvents.postNr"  r(   r(   r(   r)   rË  ë	  r&  rË  c                   @   r  )ÚgetDashboardCountsc              
   C   sŒ  t  ¡ }z¼zbd}| t|ƒ¡ ¡ }|d d }d}| t|ƒ¡ ¡ }dd„ |D ƒ}d}| t|ƒ¡ ¡ }	dd„ |	D ƒ}
t|ƒdkrW| ¡  td|ddd||
d	œƒW W | ¡  S | ¡  td
ddœƒW W | ¡  S  ty” } z!t	|ƒ | 
¡  | ¡  td
dt|ƒdœƒW  Y d }~W | ¡  S d }~w tyÀ } z!t	|ƒ | 
¡  | ¡  td
dt|ƒdœƒW  Y d }~W | ¡  S d }~ww | ¡  w )NzCselect count(id) from idpwoauserregistartion where status ="Active"r   a2  select idpwoalogin.userid,idpwoalogin.status as loginstatus,idpwoauserregistartion.id,idpwoauserregistartion.fname,idpwoauserregistartion.lname from idpwoalogin inner join idpwoauserregistartion on idpwoauserregistartion.id = idpwoalogin.userid  where idpwoalogin.status="Inactive" order by id desc limit 5c                 S   r  r(   r  r  r(   r(   r)   r  
  r  z+getDashboardCounts.post.<locals>.<listcomp>z<select * from idpwoaupcommingevents order by id desc limit 5c                 S   r  r(   r  r  r(   r(   r)   r  
  r  r¯   )r²   ÚmembesrscountÚopeningbalanceÚincomeÚexpenseÚuserrequestsÚeventsr´   r  r±   ró   rô   r  )r  r&   rA   rd   Ú
membersObjÚmembersObjsÚsql1Ú
requestObjÚrequestObjsÚ	eventsObjÚ
eventsObjsrC   r(   r(   r)   r   
  sD   
ó
õ 
€ú 
€ú
zgetDashboardCounts.postNr"  r(   r(   r(   r)   rÌ  
  r&  rÌ  c                   @   s,   e Zd ZefZefZddlmZ dd„ ZdS )ÚaddAccountsr   )r,   c              
   C   s(  t  ¡ }z	z®|jd }tj |d¡}tƒ }|jd |_|jd |_|jd |_|jd |_	|jd |_
t|jƒd t|jƒ |_|jd |_|jd	 |_|j d
¡dgkrq|j d
¡D ]}tƒ }| |j|¡}| |¡}	|	|_q\|jd |_d|_tj ¡ |_| |¡ | ¡  | |¡ |jdkr¤| ¡  tdddœƒW W | ¡  S | ¡  tdddœƒW W | ¡  S  t yá }
 z!t!|
ƒ | "¡  | ¡  tddt|
ƒdœƒW  Y d }
~
W | ¡  S d }
~
w t#y }
 z!t!|
ƒ | "¡  | ¡  tddt|
ƒdœƒW  Y d }
~
W | ¡  S d }
~
ww | ¡  w )NÚcollecteddater1   ÚamountrecievedÚpaidbyrq  r¾   ú-ÚcollectedbyÚpositionrp  r    rÆ   r¤   r   r¯   zAdded successfully..!r±   r´   z%can't add value now.! try again laterró   rô   )$r    r6   r¸   r,   r÷   ÚaccountsTblrÜ  rÝ  rq  r¾   rÛ  r  ÚmonthÚyearrß  rà  r¹   r   rº   rz   r»   ÚfileurlrÆ   r   r-   r^   r_   r]   r`   r?   r>   r   r   rV   r=   r„   )r  r&   rA   r   Údate_objectÚ
accountObjrÏ   rÐ   rÑ   rÒ   rC   r(   r(   r)   r   8
  s`   





ó
õ 
€ú 
€ú
zaddAccounts.postN)	r#  r$  r%  r   r   r%   r   r,   r   r(   r(   r(   r)   rÚ  4
  s
    rÚ  )ÚSumc                   @   s   e Zd ZefZdd„ ZdS )ÚGetWebsiteCountsc              
   C   sl  t  ¡ }z¬zPd}| t|ƒ¡ ¡ }|d r|d nd}d}| t|ƒ¡ ¡ }|d r.|d nd}d}	| t|	ƒ¡ ¡ }
|
d rC|
d nd}td|||d	œd
dW W | ¡  S  tyƒ } z"td|› ƒ | 	¡  tddt
|ƒdœddW  Y d }~W | ¡  S d }~w ty° } z"td|› ƒ | 	¡  tddt
|ƒdœddW  Y d }~W | ¡  S d }~ww | ¡  w )Nz8SELECT SUM(count) AS vistorsCount FROM idpwoavisitorstblÚvistorsCountr   z9SELECT COUNT(*) AS usersCount FROM idpwoauserregistartionÚ
usersCountz9SELECT COUNT(*) AS eventsCount FROM idpwoaupcommingeventsÚeventsCountr¯   )r²   Ú
userscountÚvistorscountÚeventscountéÈ   r
   úSQLAlchemyError: r´   ú-Something went wrong. Please try again later.©r²   r³   Úerroréô  úException: )r    r6   r  r   Úfetchoner   r>   r   rV   r=   r  r„   )r  r&   rA   Úvisitors_sqlÚvisitors_resultré  Ú	users_sqlÚusers_resultrê  Ú
events_sqlÚevents_resultrë  rC   r(   r(   r)   r   
  s\   üù
 éýú
€ôýú
	€ô
zGetWebsiteCounts.postN)r#  r$  r%  r   r   r   r(   r(   r(   r)   rè  {
  s    rè  c              
   C   s¼  t  ¡ }zSzð| jd }|dkr‰| t¡jddd ¡ }|rxtdƒ}tdƒ}d}dd	i}t|j	ƒd
 }|ddddœ}	t
j|||	||fd}
t|
 ¡ ƒ |
jdkrg| ¡  tdd|
 ¡ tdƒdœƒW W | ¡  S | ¡  tdddœƒW W | ¡  S | ¡  tdddœƒW W | ¡  S |dkrõ| t¡jddd ¡ }|rõtdƒ}tdƒ}d}dd	i}t|j	ƒd
 }|ddddœ}	t
j|||	||fd}
t|
 ¡ ƒ |
jdkrä| ¡  tdd|
 ¡ tdƒdœƒW W | ¡  S | ¡  tdddœƒW W | ¡  S W n[ ty$ } z!t|ƒ | ¡  | ¡  tddt|ƒdœƒW  Y d }~W | ¡  S d }~w tyQ } z!t|ƒ | ¡  | ¡  tddt|ƒdœƒW  Y d }~W | ¡  S d }~ww W | ¡  d S | ¡  w )NrÆ   ÚRegisterr¤   )r   rÆ   ÚTest_Key_IDÚTest_Key_Secretz"https://api.razorpay.com/v1/orderszcontent-typezapplication/jsonéd   ÚINRÚqwsaq1F)r§   ÚcurrencyÚreceiptÚpartial_payment)ÚheadersÚjsonÚauthrï  r¯   zOrder created successfully)r²   r³   Úordersrc  r´   z)Failed to create order..! Try again laterr±   ÚRenewelró   rô   )r    r6   r¸   r7   ÚRegistrationDtlr[   rX   rü   rZ   ÚfeeÚrequestsr   rV   r  Ústatus_coder>   r   r   r=   r  r„   )r&   rA   rÆ   ÚfeeObjÚkey_idÚ
key_secretr»   r  r§   r  r²   rC   r(   r(   r)   ÚcreateOrder±
  sŒ   
ÿü	

>Æ
9Ê
5Ìÿü	

ó
€õ 
€ú 
€ú€r  c           
   
   C   s˜  t  ¡ }zÂzh| jd }| jd }| t¡j||d ¡ }|d ura|j}t|t	j
ƒr:t|t	j	ƒs:t	j	 |t	j	j ¡ ¡}|tdd }t	j	 ¡ }|| j}t|ƒdk rSd}td|gdœƒW W | ¡  S td	d
dœƒW W | ¡  S  tyš }	 z!t|	ƒ | ¡  | ¡  td	dt|	ƒdœƒW  Y d }	~	W | ¡  S d }	~	w tyÆ }	 z!t|	ƒ | ¡  | ¡  td	dt|	ƒdœƒW  Y d }	~	W | ¡  S d }	~	ww | ¡  w )NrÄ   rÁ   )rÄ   r?   rà   rã   r   r¯   )r²   Úday_differencer´   z;No purchase details found for the given UID and Payment ID.r±   ró   rô   )r    r6   r¸   r7   rÀ   r[   Úone_or_noner^   Ú
isinstancer,   r   ÚcombineÚminÚtimer   r-   rä   rZ   r   r>   r   rV   r=   r  r„   )
r&   rA   rÄ   rÁ   Úpurchaser^   Úfuture_dater7  r  rC   r(   r(   r)   Úrenewaldays  sP   



þÿ
ïÿ
ô 
€ú 
€ú
r  c                   @   r  )ÚpaymentHistoryc           	   
   C   sv  t  ¡ }z±zWt  ¡ }d}| t|ƒ¡ ¡ }g }|D ]}t|ƒ}| d¡dkr+d|d< nd|d< | |¡ qt|ƒdkrL| 	¡  t
d|d	œƒW W | 	¡  S | 	¡  t
d
ddœƒW W | 	¡  S  ty‰ } z!t|ƒ | ¡  | 	¡  t
d
dt|ƒdœƒW  Y d }~W | 	¡  S d }~w tyµ } z!t|ƒ | ¡  | 	¡  t
d
dt|ƒdœƒW  Y d }~W | 	¡  S d }~ww | 	¡  w )Na+  select payamenttbl.*,idpwoauserregistartion.fname,idpwoauserregistartion.lname,idpwoauserregistartion.district,
            idpwoauserregistartion.constituency,idpwoauserregistartion.panchayath,idpwoauserregistartion.userimageurl,
            idpwoauserregistartion.gender,idpwoauserregistartion.shoptype,idpwoauserregistartion.contactno,idpwoauserregistartion.bloodgroup,idpwoauserregistartion.status as userstatus
            from payamenttbl inner join 
            idpwoauserregistartion on idpwoauserregistartion.id = payamenttbl.uid order by id descrÆ   ÚRenewalÚYesÚ	isrenewalÚNor   r¯   ©r²   Úpaymentlistr´   r  r±   ró   rô   )r    r6   r  r   r  r  ÚgetÚappendr<   r>   r   r   rV   r=   r  r„   )	r  r&   rA   rd   r6  ÚpaymentObjsr  Úpayment_dictrC   r(   r(   r)   r   V  sF   

ó
õ 
€ú 
€ú
zpaymentHistory.postNr"  r(   r(   r(   r)   r  S  r&  r  c                   @   r  )ÚgetPaymentHistoryByStatusc              
   C   sN  t  ¡ }zzCt  ¡ }|jd }d}| t|ƒ¡ ¡ }dd„ |D ƒ}t|ƒdkr8| ¡  td|dœƒW W | ¡  S | ¡  tdd	d
œƒW W | ¡  S  t	yu } z!t
|ƒ | ¡  | ¡  tddt|ƒdœƒW  Y d }~W | ¡  S d }~w ty¡ } z!t
|ƒ | ¡  | ¡  tddt|ƒdœƒW  Y d }~W | ¡  S d }~ww | ¡  w )NÚstatusxaª  select payamenttbl.*,idpwoauserregistartion.fname,idpwoauserregistartion.lname,idpwoauserregistartion.district,idpwoauserregistartion.constituency,idpwoauserregistartion.panchayath,idpwoauserregistartion.userimageurl,idpwoauserregistartion.gender,idpwoauserregistartion.shoptype,idpwoauserregistartion.contactno from payamenttbl inner join idpwoauserregistartion on idpwoauserregistartion.id = payamenttbl.uid order by id descc                 S   r  r(   r  r  r(   r(   r)   r  Š  r  z2getPaymentHistoryByStatus.post.<locals>.<listcomp>r   r¯   r!  r´   r  r±   ró   rô   r|  )r  r&   rA   r   rd   r6  r%  rC   r(   r(   r)   r   ƒ  s<   

ó
õ 
€ú 
€ú
zgetPaymentHistoryByStatus.postNr"  r(   r(   r(   r)   r'  €  r&  r'  c                   @   r  )Úget_paymentHistoryFilterc              
   C   s¬  t  ¡ }zÌzrt  ¡ }|j d¡}|j d¡}g }i }|r%| d¡ ||d< |dkr3| d¡ d|d< n|dkr@| d¡ d|d< d	 |¡}d
|› d}| t|ƒ|¡ ¡ }	dd„ |	D ƒ}
|
rkt	d|
dœƒW W | 
¡  S t	dddœƒW W | 
¡  S  ty¤ } z!t|ƒ | ¡  | 
¡  t	ddt|ƒdœƒW  Y d }~W | 
¡  S d }~w tyÐ } z!t|ƒ | ¡  | 
¡  t	ddt|ƒdœƒW  Y d }~W | 
¡  S d }~ww | 
¡  w )Nr@   Úrenewalz+idpwoauserregistartion.district = :districtr  zpayamenttbl.type = :renewalr  r   zpayamenttbl.type != :renewalz AND a$  
                SELECT 
                    payamenttbl.*, 
                    idpwoauserregistartion.fname, 
                    idpwoauserregistartion.lname, 
                    idpwoauserregistartion.district, 
                    idpwoauserregistartion.constituency, 
                    idpwoauserregistartion.panchayath, 
                    idpwoauserregistartion.userimageurl, 
                    idpwoauserregistartion.gender, 
                    idpwoauserregistartion.shoptype, 
                    idpwoauserregistartion.contactno 
                FROM 
                    payamenttbl 
                INNER JOIN 
                    idpwoauserregistartion 
                ON 
                    idpwoauserregistartion.id = payamenttbl.uid 
                WHERE 
                    zD 
                ORDER BY 
                    id DESC
            c                 S   r/  r(   r0  r  r(   r(   r)   r  Ó  r2  z1get_paymentHistoryFilter.post.<locals>.<listcomp>r¯   r!  r´   r  r±   ró   rô   )r    r6   r¸   r#  r$  Újoinr  r   r  r   r>   r   rV   r=   r  r„   )r  r&   rA   r@   r*  Ú
conditionsr†   Úquery_conditionsrd   r6  r%  rC   r(   r(   r)   r   ¡  sV   




í
 â
õ 
€ú 
€ú
zget_paymentHistoryFilter.postNr"  r(   r(   r(   r)   r)  ž  r&  r)  c              
   C   sP  t  ¡ }zz| jd }| jd }tƒ }d|_| jd |_d|_d|_| jd |_||_	||_
d|_d|_| jd |_tƒ |_d	|_tj ¡ |_| |¡ | ¡  | t¡ tj|k¡ tƒ d
d	dœ¡ | ¡  |jdkrw| ¡  tdddœƒW S tdddœƒW S  ty§ } zt|ƒ t  !¡  | "¡  | ¡  tdddœƒW  Y d }~S d }~ww )Nr?   r:   rl   r¦   r§   r¨   r  r¾   rª   r¤   )rÌ   rÍ   rÈ   r   r¯   r°   r±   r´   rµ   r·   )#r    r6   r¸   rÀ   rÁ   r¦   rÂ   rÃ   r§   rÄ   rÅ   r   rÆ   r¾   r2   rÇ   rÈ   r,   r-   r^   r_   r]   r7   rg   r9   rÊ   r\   r?   r>   r   r   rV   Ú	tracebackÚ	print_excr=   )r&   rA   r?   r:   rÓ   rC   r(   r(   r)   ÚrenewAccountü  sD   


&
€ûr0  c                   @   r  )ÚaddFormsandCircularsc           	   
   C   r…  )Nrp  r    Úcircularnamer¤   r   r¯   rs  r±   r´   rt  ró   rô   )r    r6   ÚformsandcircularsTblr¸   r¹   r   rº   rz   r»   rv  r2  r   r,   r-   r^   r_   r]   r`   r?   r>   r   r   rV   r=   r  r„   )	r  r&   rA   ÚformsObjrÏ   rÐ   rÑ   rÒ   rC   r(   r(   r)   r   +  r‰  zaddFormsandCirculars.postNr"  r(   r(   r(   r)   r1  (  r&  r1  c                   @   r  )ÚgetFormsCircularsc              
   C   r  )Nz3select * from formsandcircularstbl order by id descc                 S   r  r(   r  r  r(   r(   r)   r  V  r  z*getFormsCirculars.post.<locals>.<listcomp>r   r¯   ©r²   Ú	formslistr´   r  r±   ró   rô   r  )r  r&   rA   rd   r4  Ú	formsObjsrC   r(   r(   r)   r   Q  r!  zgetFormsCirculars.postNr"  r(   r(   r(   r)   r5  N  r&  r5  c              
   C   ó´   z4t  ¡ }d}| t|ƒ¡ ¡ }dd„ |D ƒ}t|ƒdkr)| ¡  td|dœƒW S | ¡  tddd	œƒW S  tyY } zt	|ƒ | 
¡  | ¡  tdd
d	œƒW  Y d }~S d }~ww )NzJselect * from formsandcircularstbl where status ="Active" order by id descc                 S   r  r(   r  r  r(   r(   r)   r  q  r  z*get_userFormsCirculars.<locals>.<listcomp>r   r¯   r6  r´   r  r±   r·   r©  )r&   rA   rd   r4  r8  rC   r(   r(   r)   Úget_userFormsCircularsj  r¬  r:  c                   @   r  )ÚdeleteFormsCircularsc              
   C   r€  r  )r    r6   r¸   r7   r3  r[   rþ   r]   r>   r   r   rV   r=   r  r„   r‚  r(   r(   r)   r     rƒ  zdeleteFormsCirculars.postNr"  r(   r(   r(   r)   r;  ~  r&  r;  c                   @   r  )ÚaddLatestUpdatesc           	   
   C   s¶  t  ¡ }zÑzwtƒ }|j d¡dgkr-|j d¡D ]}tƒ }| |j|¡}| |¡}||_	q|jd |_
|jd |_|jd |_d|_tj ¡ |_| |¡ | ¡  | |¡ |jdkrl| ¡  tdd	d
œƒW W | ¡  S | ¡  tddd
œƒW W | ¡  S  ty© } z!t|ƒ | ¡  | ¡  tddt|ƒdœƒW  Y d }~W | ¡  S d }~w tyÕ } z!t|ƒ | ¡  | ¡  tddt|ƒdœƒW  Y d }~W | ¡  S d }~ww | ¡  w )Nrp  r    r†  ÚheadingÚcontentr¤   r   r¯   rs  r±   r´   rt  ró   rô   )r    r6   ÚlatestupdatesTblr¸   r¹   r   rº   rz   r»   rv  r†  r=  r>  r   r,   r-   r^   r_   r]   r`   r?   r>   r   r   rV   r=   r  r„   )	r  r&   rA   Ú	latestObjrÏ   rÐ   rÑ   rÒ   rC   r(   r(   r)   r      sP   




ó
õ 
€ú 
€ú
zaddLatestUpdates.postNr"  r(   r(   r(   r)   r<    r&  r<  c                   @   r  )ÚgetLatestUpdatesc              
   C   r  )Nz/select * from latestupdatestbl order by id descc                 S   r  r(   r  r  r(   r(   r)   r  Í  r  z)getLatestUpdates.post.<locals>.<listcomp>r   r¯   ©r²   Ú
latestlistr´   r  r±   ró   rô   r  )r  r&   rA   rd   r@  Ú
latestObjsrC   r(   r(   r)   r   È  r!  zgetLatestUpdates.postNr"  r(   r(   r(   r)   rA  Å  r&  rA  c              
   C   r9  )NzFselect * from latestupdatestbl where status ="Active" order by id descc                 S   r  r(   r  r  r(   r(   r)   r  è  r  z)get_UserLatestUpdates.<locals>.<listcomp>r   r¯   rB  r´   r  r±   r·   r©  )r&   rA   rd   r@  rD  rC   r(   r(   r)   Úget_UserLatestUpdatesá  r¬  rE  c                   @   r  )ÚdeleteLatestUpdatesc              
   C   r€  r  )r    r6   r¸   r7   r?  r[   rþ   r]   r>   r   r   rV   r=   r  r„   r‚  r(   r(   r)   r   ø  rƒ  zdeleteLatestUpdates.postNr"  r(   r(   r(   r)   rF  õ  r&  rF  c                   @   r  )ÚUpdateUserStatusc              
   C   s’  t  ¡ }z¿zc|jd }|jd }| t¡j|d ¡ }|rV||_| ¡  | 	|¡ | t
¡j|jd ¡ }|rC||_| ¡  | 	|¡ | ¡  tdddœdd	W W | ¡  S | ¡  td
ddœdd	W W | ¡  S  ty– } z"td|› ƒ | ¡  td
dt|ƒdœdd	W  Y d }~W | ¡  S d }~w tyÃ } z"td|› ƒ | ¡  td
dt|ƒdœdd	W  Y d }~W | ¡  S d }~ww | ¡  w )Nr?   Ú
userstatusr~  rA  r¯   zUpdated Successfullyr±   rï  r
   r´   z#User not found, can't update statusr[  rð  rñ  rò  rô  rõ  )r    r6   r¸   r7   r8   r[   r  r   r]   r`   rg   r?   r>   r   r   rV   r=   r  r„   )r  r&   rA   rå   Ú
new_statusre   rÔ   rC   r(   r(   r)   r     sp   



þý
çþý
íýü
€öýü
€ö

zUpdateUserStatus.postNr"  r(   r(   r(   r)   rG    ó    rG  )Úsessionmaker)ÚdbbackupDtl)Úbasenamec                   @   r  )ÚBackupDatabaseViewc                 C   s  z!t j tjdd¡}t j |¡st  |¡ tj ¡  	d¡}d|› d}t j ||¡}t
dtjd d › d	tjd d
 › dtjd d › d	tjd d › dtjd d › 
ƒ}t|ƒ}t|dddt}| ¡ D ]g}| td|› ƒ¡ ¡ d }	| d|› d¡ | |	d ¡ | d|› d¡ | td|› ƒ¡ ¡ }
|
rÉdd„ | |¡D ƒ}|
D ]}d dd„ |D ƒ¡}| d|› d d |¡› d!|› d"¡ qª| d¡ qgW d   ƒ n1 sÙw   Y  t|d#ƒ}t| ¡ d$d%}d&|› d'|d(< W d   ƒ n1 sþw   Y  t|d)ƒ }t|ƒ}t|tj ¡ d*d+}| |¡ | ¡  |W S  tyG } zt ¡  td,d-t |ƒ› it!j"d.W  Y d }~S d }~ww )/NÚidpwoaÚbackupsz%Y-%m-%d_%H-%M-%SÚu972251825_idpwoadb_ú_backup.sqlzmysql+pymysql://rø   ÚUSERú:ÚPASSWORDú@ÚHOSTÚPORTú/ÚNAMEÚwzutf-8)ÚencodingzSHOW CREATE TABLE r5   z-- Schema for table Ú
z;

z-- Data for table zSELECT * FROM c                 S   s   g | ]}|d  ‘qS )rz   r(   )r  Úcolr(   r(   r)   r  §  r  z+BackupDatabaseView.post.<locals>.<listcomp>z, c                 s   s4    | ]}|d urdt |ƒ dd¡ d ndV  qd S )Nú'z''ÚNULL)r  rõ   )r  Úvaluer(   r(   r)   Ú	<genexpr>©  s   €2 z*BackupDatabaseView.post.<locals>.<genexpr>zINSERT INTO z (z
) VALUES (z);
Úrbúapplication/octet-stream©Úcontent_typeúattachment; filename="r.  úContent-Disposition)Úbindr¤   )rÑ   r   r   r³   z Error creating database backup: r
   )#ÚosÚpathr+  r   ÚBASE_DIRÚexistsÚmakedirsr,   r-   r.   r   Ú	DATABASESr   ÚopenÚget_table_namesr  r   rö  Úwriter  Úget_columnsr   ÚreadrK  rM  rL  r_   r]   r„   r.  r/  r   r  r   ÚHTTP_500_INTERNAL_SERVER_ERROR)r  r&   Úbackup_folderÚ	timestampÚbackup_fileÚbackup_file_pathÚ	db_engineÚ	inspectorÚ
table_nameÚcreate_table_queryÚrowsÚcolumnsr  Úvaluesr¾  r²   rA   Úbackup_filenameÚ
new_backuprC   r(   r(   r)   r   ‰  sj   
"ÿÿÿÿ&òÿþý
ÿ€þzBackupDatabaseView.postNr"  r(   r(   r(   r)   rN  …  rJ  rN  c                   @   r  )Ú
get_Backupc              
   C   ó.  t  ¡ }zz3d}| t|ƒ¡ ¡ }dd„ |D ƒ}d|i}|s-tdddœdd	W W | ¡  S t|dd	W W | ¡  S  tye } z!t|ƒ | 	¡  | ¡  tdd
t
|ƒdœƒW  Y d }~W | ¡  S d }~w ty‘ } z!t|ƒ | 	¡  | ¡  tdd
t
|ƒdœƒW  Y d }~W | ¡  S d }~ww | ¡  w )Nz“ select databasebackup_tbl.id,databasebackup_tbl.filename,databasebackup_tbl.date from databasebackup_tbl where databasebackup_tbl.status="Active" c                 S   r  r(   r  r  r(   r(   r)   r  Í  r  z#get_Backup.post.<locals>.<listcomp>Úbackup_listr´   r  r±   rï  r
   ró   rô   ©r    r6   r  r   r  r   r>   r   rV   r=   r  r„   ©r  r&   rA   Ú
backup_sqlÚbackup_resultr…  Úresponse_datarC   r(   r(   r)   r   Ç  ó8   þ
ô
õ 
€ú 
€ú
zget_Backup.postNr"  r(   r(   r(   r)   rƒ  Ã  rJ  rƒ  c                   @   r  )Úget_automatic_Backupc              
   C   r„  )Nz¢ select automaticdbbackup_tbl.id,automaticdbbackup_tbl.filename,automaticdbbackup_tbl.date from automaticdbbackup_tbl where automaticdbbackup_tbl.status="Active" c                 S   r  r(   r  r  r(   r(   r)   r  ï  r  z-get_automatic_Backup.post.<locals>.<listcomp>r…  r´   r  r±   rï  r
   ró   rô   r†  r‡  r(   r(   r)   r   é  r‹  zget_automatic_Backup.postNr"  r(   r(   r(   r)   rŒ  å  rJ  rŒ  c              
      sD  t  ¡ }zz½tj tjdd¡‰ t ˆ ¡}dd„ |D ƒ}|r³t|‡ fdd„d}tj ˆ |¡}zmt	|dƒ^}t
| ¡ d	d
}d|› d|d< td| ƒ tƒ }||_tj ¡  d¡}	|	|_| jd |_d|_tj ¡ |_| |¡ | ¡  | |¡ tdd|dœtjdW  d   ƒ W W W | ¡  S 1 s–w   Y  W n% ty²   td|› ƒ Y W W | ¡  S w tdditjdW W | ¡  S W nR t yì }
 zt! "¡  | #¡  tddt$|
ƒdœƒW  Y d }
~
W | ¡  S d }
~
w t%y }
 zt! "¡  | #¡  tddt$|
ƒdœƒW  Y d }
~
W | ¡  S d }
~
ww W | ¡  d S | ¡  w )NrO  Úautomatic_backupsc                 S   s   g | ]	}|  d ¡r|‘qS )rR  )Úendswith)r  rÏ   r(   r(   r)   r    s    z$automatic_Backup.<locals>.<listcomp>c                    s   t j t j ˆ | ¡¡S )N)rj  rk  Úgetmtimer+  )rÏ   ©rv  r(   r)   Ú<lambda>  r2  z"automatic_Backup.<locals>.<lambda>r\  rc  rd  re  rg  r.  rh  zFile downloaded successfully: z%Y-%m-%d %H:%Mr?   r¤   r¯   zFile downloaded successfully)r²   r³   Ú	file_namer
   zFile not found: r³   zNo backup files foundr´   ró   rô   )&r    r6   rj  rk  r+  r   rl  ÚlistdirÚmaxrp  r   rt  rV   ÚautomaticbackupDtlrÑ   r,   r-   r.   r   r¸   Ú
backupedidr   r^   r_   r]   r`   r   ÚHTTP_200_OKr>   ÚFileNotFoundErrorr	   ÚHTTP_404_NOT_FOUNDr   r.  r/  r=   r  r„   )r&   rA   ÚfilesÚ	sql_filesÚlatest_filery  r¾  r²   Ú	backupObjÚformatted_datetimerC   r(   r  r)   Úautomatic_Backup  sf   


ÿò
â
ò
â 
€û 
€ûçrŸ  )¥Údjango.shortcutsr   Ú
subprocessÚ
sqlalchemyr   r   r   ÚioÚ	django.dbr   Úcalendarr,   Úrerj  rp   rr   r  rú   rM  Údjango.httpr   r	   ÚhashlibÚstringrx   Úenvironr  r.  Úrest_frameworkr   Údjango.confr   Úrest_framework.decoratorsr   r   r   r   Úrest_framework.responser   Úrest_framework.viewsr   Úrest_framework.permissionsr   r   Údjango.contrib.auth.hashersr   r   Údjango.core.mailr   Údjango.core.files.storager   Údjango.template.loaderr   r   Údjango.contrib.authr   Úsqlalchemy.excr   r   r   Údjango.utilsr   ÚIdpwoa_Backendr    Ú!Idpwoa_Backend.JSONDateSerializerr!   ÚIdpwoa_Backend.settingsr"   Úidpwoa.modelsÚ.Idpwoa_Backend.SQLAlchemyAuthenticationBackendr$   Ú2Idpwoa_Backend.userrestframeworkTokenAuthenticaionr%   ÚEnvrü   Úread_envrP  r*   r0   r2   r  r/   r3   rD   rf   rj   rv   r|   r   r‘   r’   r×   rÜ   r  r  r'  r-  r8  r<  r>  r?  rE  rY  rb  rf  rh  ri  rn  rx  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Ê  rË  rÌ  rÚ  Údjango.db.modelsrç  rè  r  r  r  r'  r)  r0  r1  r5  r:  r;  r<  rA  rE  rF  rG  Úsqlalchemy.ormrK  rL  Úos.pathrM  rN  rƒ  rŒ  rŸ  r(   r(   r(   r)   Ú<module>   sX   
   ,

i 
1 ; 8:#

B
.
:!/(-&
 
" 
0

& '
(!(3
6
g7-
^*&
(
 m>"
"