o
    •ÎZg?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 „ ZNeNƒ ZOeMƒ ZPd!d"„ ZQd#d$„ ZRd%d&„ ZSd'd(„ ZTd)d*„ ZUd+d,„ ZVd-d.„ ZWd/d0„ ZXd1d2„ ZYe!d3d4gƒe"e+gƒd5d6„ ƒƒZZe!d3d4gƒe"e+gƒd7d8„ ƒƒZ[e!d3d4gƒe"e+gƒd9d:„ ƒƒZ\G d;d<„ d<e(ƒ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(ƒZde!d3d4gƒe"e+gƒdKdL„ ƒƒZee!d3d4gƒe"e+gƒdMdN„ ƒƒZfe!d3d4gƒe"e+gƒdOdP„ ƒƒZge!d3d4gƒe"e+gƒdQdR„ ƒƒZhG dSdT„ dTe(ƒ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(ƒZpe!d3d4gƒe"e+gƒdcdd„ ƒƒZqG dedf„ dfe(ƒZrG dgdh„ dhe(ƒZsG didj„ dje(ƒZte!d3d4gƒe"e+gƒdkdl„ ƒƒZuG dmdn„ dne(ƒZvG dodp„ dpe(ƒZwG dqdr„ dre(ƒZxG dsdt„ dte(ƒZye!d3d4gƒe"e+gƒdudv„ ƒƒZzG dwdx„ dxe(ƒZ{e!d3d4gƒe"e+gƒdydz„ ƒƒZ|G d{d|„ d|e(ƒZ}G d}d~„ d~e(ƒZ~e!d3d4gƒe"e+gƒdd€„ ƒƒZG dd‚„ d‚e(ƒZ€G dƒd„„ d„e(ƒZG d…d†„ d†e(ƒZ‚G d‡dˆ„ dˆe(ƒZƒG d‰dŠ„ dŠe(ƒZ„e!d3d4gƒe"e+gƒd‹dŒ„ ƒƒZ…G ddŽ„ dŽe(ƒZ†G dd„ de(ƒZ‡G d‘d’„ d’e(ƒZˆd d“l‰mŠZŠ G d”d•„ d•e(ƒZ‹e!d3d4gƒe"e+gƒd–d—„ ƒƒZŒe!d3d4gƒe"e+gƒd˜d™„ ƒƒZG dšd›„ d›e(ƒZŽG dœd„ de(ƒZG dždŸ„ dŸe(ƒZe!d3d4gƒe"e+gƒd d¡„ ƒƒZ‘G d¢d£„ d£e(ƒZ’G d¤d¥„ d¥e(ƒZ“e!d3d4gƒ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!d3d4gƒe"e+gƒd®d¯„ ƒƒZ˜G d°d±„ d±e(ƒZ™G d²d³„ d³e(ƒZšd d´l›mœZœ d dµlDmZ d d¶lžmŸZŸ G d·d¸„ d¸e(ƒZ G d¹dº„ dºe(ƒZ¡G d»d¼„ d¼e(ƒZ¢e!d3d4gƒ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 j  ¡  d¡} | S )Nz%H:%M:%S©ÚdatetimeÚnowÚstrftime)Úcurrent_time© r+   ú8/home/ubuntu/Idpwoa/Idpwoa_Backend/idpwoa_admin/views.pyÚget_current_time<   s   r-   c                   C   s   t j  ¡  d¡S )Nú%d-%m-%Yr&   r+   r+   r+   r,   Úget_current_date@   s   r/   c                 C   s
   t | dƒS )Nzlanding page/index.htmlr   )Úrequestr+   r+   r,   ÚlandingpageJ   s   
r1   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,   ÚcheckIdNoExistP   ó   €ýrB   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}r3   zIDPWOA/TVM/r   )r>   r8   Ú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    r4   r5   Ú	userIdTblr7   r>   ÚfirstÚformatÚintr8   rB   Ú	filter_byÚupdateÚcommitr'   r(   ÚcreateddateÚaddÚrefreshr=   )r>   r?   ÚidObjr=   ÚidNoÚuserIdÚsqlÚuserObjr+   r+   r,   ÚgenerateIdNo_   s  
ú



õ

ú



õ



ú



õ



ú



õ



ú



õ



ú



õ



ú



õ



ú



õ



ú



õ



ú



õ



ú



õ



ú



õ



ú



õ



ú



ãrd   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 r2   )r    r4   r5   ÚloginTblr7   Úemailr9   r:   r   r;   r<   )rf   r?   Úemail_lengthrA   r+   r+   r,   ÚcheckEmailExist  rC   rh   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
   rt   c                 C   s   t  d¡}|S )Né   )ÚsecretsÚ	token_hex)ÚnameÚ
random_keyr+   r+   r,   Úgenerate_key_from_name  s   
	rz   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_valrx   )rr   rx   zemail/email.txtzemail/email.htmlúWelcome to IDPWOAúidpwoakeralawebsite@gmail.comrf   ú	text/htmlTF)rT   r   r   r   Úattach_alternativeÚsendÚ	Exception©ÚparamsÚctxÚ	plaintextÚhtmlyÚsubjectÚ
from_emailÚtoÚtext_contentÚhtml_contentÚmsgrA   r+   r+   r,   ÚsendOTP+  s*   þ

€þrŽ   c           
      C   st   d| d i}t dƒ}t dƒ}dd| d }}}| |¡}| |¡}t||||gƒ}	|	 |d¡ |	 ¡  |	r8d	S d
S )Nrr   r|   zemail/forgotemail.txtzemail/forgotemail.htmlr}   r~   rf   r   TF)r   r   r   r€   r   )
r„   r…   r†   r‡   rˆ   r‰   rŠ   r‹   rŒ   r   r+   r+   r,   ÚforgotSendOTPC  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 )
Nrx   zemail/welcome.txtzemail/welcome.htmlr}   r~   rf   r   TF)r   r   r   r€   r   r‚   rƒ   r+   r+   r,   ÚwelcomeMailU  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>   rf   ÚfnameÚ Úlnamer   r3   ÚuseraddressÚshopaddressÚ	contactnoÚ
whatsappnoÚshoptypeÚ
bloodgroupÚgenderÚ	userimageÚ	undefinedÚ	shopimageÚconstituencyÚ
panchayathÚActiveÚOnlinerj   ÚorderidÚamountÚRecievedÚRegistrationÚ365ÚpasswordÚUserÚInactive©rf   rx   Ú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    r4   Údatarh   rT   rd   r6   r“   r•   r8   r–   r—   r˜   r™   rš   r›   rf   rœ   Úgetlistr   Úsaverx   ÚurlÚuserimageurlÚshopimageurlr>   r    r¡   r   ÚpaymenttypeÚ
receipturlr'   r(   r\   r]   r[   r=   Ú
PaymentDtlÚ	paymentidr¤   Ú	signatureÚ	packageidr¥   ÚuidÚ	profileidÚtyper/   ÚdateofpurchaseÚdurationr^   re   Úlogin_idÚuseridÚusernamer   r©   ÚpurchasedateÚaccountstatusr   r<   r   r   r;   )r0   r?   r>   rf   rx   Ú
emailExistr`   rc   ÚfÚfsÚfilenameÚuploaded_file_urlÚPackagesDtlÚloginObjÚParamsÚwelcomerA   r+   r+   r,   Úuser_registrationm  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 )*Nrj   r>   rf   r“   r”   r•   r   r3   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    r4   r¶   rh   rT   rd   r6   r“   r•   r8   r–   r—   r˜   r™   rš   r›   rf   rœ   r·   r   r¸   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^   re   rÇ   rÈ   rÉ   r   r©   r/   rÊ   rË   r   r<   r   r   r;   )r0   r?   r½   r>   rf   rx   rÌ   r`   rc   rÍ   rÎ   rÏ   rÐ   rÑ   rÒ   rÓ   rÔ   rA   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ª   r.   ém  Úhiiiié   ©Údays)Úuser_idÚexpiryÚ
SECRET_KEYÚlast_logineddate)rã   rj   Ú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    r4   r¶   r'   r(   ÚreplaceÚflushr   r=   r   rÄ   rÊ   rT   Ústrptimer)   râ   r!   rÈ   Údefaultr   Útodayr   ÚjwtÚencodeÚenvr5   re   r7   rZ   Ú	AuthTokenrY   ÚdeleteÚkeyÚcreatedrã   r]   r[   rÉ   rÇ   r<   r   r‚   r;   r   Ústr)r0   r?   rÉ   r©   Úcurrent_dateÚuserÚdate1Údate2Údays_differenceÚDateEncoderÚpayloadrç   Ú
auth_tokenÚadmin_detailsrA   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>N  ó    z%get_UserList.post.<locals>.<listcomp>r   r­   ©r°   Úuserlistr²   úNo data foundr¯   rñ   rò   ©r    r4   Úexecuter   Úfetchallr:   r<   r   r   rT   r;   rÿ   r‚   ©Úselfr0   r?   rb   rc   ÚuserObjsrA   r+   r+   r,   ÚpostI  ó8   
ó
õ 
€ú 
€ú
zget_UserList.postN©Ú__name__Ú
__module__Ú__qualname__r   r   r%   r   r  r+   r+   r+   r,   r  F  ó    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  n  r  z(getUserByStatus.post.<locals>.<listcomp>r   r­   r  r²   r  r¯   rñ   rò   ©r    r4   rT   r¶   r  r   r  r:   r<   r   r   r;   rÿ   r‚   )r  r0   r?   r   rb   rc   r  rA   r+   r+   r,   r  f  ó<   

ó
õ 
€ú 
€ú
zgetUserByStatus.postNr   r+   r+   r+   r,   r%  c  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=   rj   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>r.   rÞ   r«   r¢   rÅ   Úpaymentdater¿   r¥   r   r­   )r°   r  râ   r   r²   r  r¯   rñ   rò   )r    r4   rT   r¶   r  r   r  r5   r¾   r7   rÂ   Úorder_byr\   ÚdescrV   rÅ   r/   r'   rõ   r(   r)   râ   r=   r¥   r:   r<   r   r   r;   rÿ   r‚   )r  r0   r?   r=   r  r   rb   rc   r  Ú
paymentObjrÅ   Úcurrentdater  r  r  rA   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È   r8   )r=   r8   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    r4   r¶   r5   r6   rY   Úoner“   r•   r–   r—   r˜   r™   rš   r›   rœ   r·   r   r¸   rx   r¹   rº   r»   r>   r    r¡   r   r'   r(   r\   r]   r[   r=   r<   r   r   rT   r;   rÿ   r‚   )r  r0   r?   r=   r8   rc   rÍ   rÎ   rÏ   rÐ   rA   r+   r+   r,   r  ¾  sp   






ó
õ 
€ú 
€ú
zeditUserProfile.postNr   r+   r+   r+   r,   r6  »  r$  r6  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  r0   r?   Údidrb   rc   r  rA   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­   r7  r¯   ÚWarningú!Cant update value try again laterr²   rñ   rò   )r    r4   r¶   r5   re   rY   rV   r   r[   r   r<   r   rT   r;   rÿ   r‚   )r  r0   r?   rÈ   r   r  rA   r+   r+   r,   r  8  ó8   


ô
õ 
€ú 
€ú
zapproveUser.postNr   r+   r+   r+   r,   r=  5  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­   r7  r¯   r²   rñ   rò   )r    r4   r¶   r5   re   r7   rÄ   rZ   r[   r   r<   r   rT   r;   rÿ   r‚   )r  r0   r?   r   rA   r+   r+   r,   r  T  s.   
 
õ 
€ú 
€ú
zactiveOrInactiveUsers.postNr   r+   r+   r+   r,   rC  Q  r$  rC  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 )Nrf   rx   Úphoner3   r²   r´   r¯   r   rÛ   é   ré   )r|   Úotp_created_timeÚotp_exp_time)r|   Úotp_cre_timeÚotp_expire_timerf   rx   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    r4   r¶   rh   r<   r   ÚsysÚgetrecursionlimitÚsetrecursionlimitÚ	new_limitrt   r'   r(   ró   r   rŽ   ÚOtpdtlrf   Úotpr   r÷   r\   r*   Úcreatedtimerz   rý   rÄ   rx   rD  r   r]   r[   r   rT   r;   rÿ   r‚   )r0   r?   rf   rx   rD  rÌ   Úcurrent_limitÚOtprH  rI  r„   Ú	otpParamsÚresultÚotpDtlr÷   rý   rA   r+   r+   r,   ÚsendUserOtpk  s„   



7Ì
û

ï
ò
ô 
€ù 
€ù
rW  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 )NrP  rý   rf   )rf   rý   rJ  é   ré   r²   zOTP expiredr¯   é  r
   ©rý   r   ÚVerifiedr­   zOTP VerifiedzIncorrect OTPr@  zAccount already verifiedrñ   rò   )r    r4   r¶   r5   rO  rY   r9  r   r   r   Ú
make_awarer\   r(   r<   r   rP  rZ   r[   r   rT   r;   rÿ   r‚   )r0   r?   rP  rý   rf   ÚotpValÚexpiration_timeÚ
created_atr*   rb   rA   r+   r+   r,   ÚverifyUserOtp¯  sT   





ê
ð
ó
õ 
€ú 
€ú
r`  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 )Nrf   r   r²   z!Account with this email not existr¯   r3   rÛ   rE  ré   )r|   rH  rI  rf   rj   T)rf   zForgot passwordrJ  rx   r­   )r°   rý   Úkeyidz!Cant Send OTP to your given emailrñ   rò   )$r    r4   r¶   rh   r   r<   rt   r'   r(   ró   r   rT   r   r5   re   rY   r9  rÇ   rO  rf   rP  rÄ   r   r   r÷   r\   r-   rQ  rz   rý   r]   r[   r   r;   rÿ   r‚   )r0   r?   rf   rÌ   rS  rH  rI  rT  rU  ÚloginDtlÚkeyIdrV  r÷   rý   rA   r+   r+   r,   ÚfogetPasswordOtpß  sx   

2Ïü

ð
ó
õ 
€ú 
€ú
rd  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 )Nrf   r©   ra  )rf   rÇ   r   r­   úPassword changed successfullyr¯   r²   zCan't change passwordrñ   rò   )r    r4   r¶   r5   re   rY   r9  r   r©   r]   r[   r^   r=   r<   r   r   rT   r;   rÿ   r‚   )r0   r?   rf   r©   rc  rb  rA   r+   r+   r,   Úfoget_PasswordChange  sB   






ò
õ 
€ú 
€ú
rf  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È   r8   )rÈ   rÇ   r©   r   r­   re  r¯   r²   zcan't change passwordzOld password is incorrectrñ   rò   )r    r4   r¶   r5   re   r7   rÈ   r9  r   r   rY   rZ   r[   r<   r   r   rT   r;   rÿ   r‚   )r  r0   r?   ÚoldPasswordÚnewPasswordrÈ   r8   r  r©   rb   rA   r+   r+   r,   r  A  sR   





ì
ï
ò
õ 
€ú 
€ú
zchangePassword.postNr   r+   r+   r+   r,   rg  >  r$  rg  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    r4   ÚusefullLinksTblr¶   r·   r   r¸   rx   r¹   Úimageurlro  rp  r   r'   r(   r\   r]   r[   r^   r=   r<   r   r   rT   r;   rÿ   r‚   )	r  r0   r?   ÚlinksObjrÍ   rÎ   rÏ   rÐ   rA   r+   r+   r,   r  p  sN   




ó
õ 
€ú 
€ú
zaddUsefullLinks.postNr   r+   r+   r+   r,   rl  m  r$  rl  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,   rv  •  r$  rv  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­   rw  r²   r  r¯   rñ   rò   ©r    r4   r¶   r  r   r  r:   r<   r   r   rT   r;   rÿ   r‚   )r  r0   r?   r=   rb   rc   r  rA   r+   r+   r,   r  ´  s<   

ó
õ 
€ú 
€ú
zget_useFullLinksById.postNr   r+   r+   r+   r,   ry  ±  r$  ry  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=   rn  rž   ro  rp  r   r­   r7  r¯   r²   r8  rñ   rò   )r    r4   r¶   r5   rs  rY   r9  r·   r   r¸   rx   r¹   rt  ro  rp  r[   r^   r=   r<   r   r   rT   r;   rÿ   r‚   )
r  r0   r?   r=   ru  rÍ   rÎ   rÏ   rÐ   rA   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    r4   r¶   r5   rs  rY   rü   r[   r<   r   r   rT   r;   rÿ   r‚   ©r  r0   r?   r=   rb   rA   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 )Nrn  rž   Úlinkurlr¢   r   r­   rq  r¯   r²   rr  rñ   rò   )r    r4   Ú	bannerTblr¶   r·   r   r¸   rx   r¹   rt  r„  r   r'   r(   r\   r]   r[   r^   r=   r<   r   r   rT   r;   rÿ   r‚   )	r  r0   r?   Ú	bannerObjrÍ   rÎ   rÏ   rÐ   rA   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  H  r  z&getBannerList.post.<locals>.<listcomp>r   r­   ©r°   Ú
bannerlistr²   r  r¯   rñ   rò   r  )r  r0   r?   rb   r†  Ú
bannerObjsrA   r+   r+   r,   r  C  r  zgetBannerList.postNr   r+   r+   r+   r,   rˆ  @  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  c  r  z%getUserBannerList.<locals>.<listcomp>Údhadjr3   Ú1r   r­   r‰  r²   r  r¯   rµ   )r    r4   r  r   r  r5   ÚVisitorsDtlrV   rT   ÚcountrX   r]   r[   r'   r(   r\   r:   r<   r   r   r;   )r0   r?   rb   r†  r‹  ÚcountObjÚvistObjrA   r+   r+   r,   ÚgetUserBannerList\  s8   


€ür’  c                   @   r
  )ÚdeleteBannerc              
   C   r~  r  )r    r4   r¶   r5   r…  rY   rü   r[   r<   r   r   rT   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­   r7  r¯   r@  rA  r²   rñ   rò   )r    r4   r¶   r5   r…  rY   rV   r   r[   r   r<   r   rT   r;   rÿ   r‚   )r  r0   r?   r=   r   ÚbannerrA   r+   r+   r,   r    rB  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­   rq  r¯   r²   rr  rñ   rò   )r    r4   Ú	marqueTblr¶   r—  r   rÄ   r'   r(   r\   r]   r[   r^   r=   r<   r   r   rT   r;   rÿ   r‚   )r  r0   r?   Ú	marqueObjrA   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    r4   r¶   r  r   r  r:   r<   r   r   rT   r;   )r0   r?   rÄ   rb   r™  Ú
marqueObjsrA   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ò   rz  )r  r0   r?   r=   rb   r™  rœ  rA   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­   r7  r¯   r²   r8  rñ   rò   )r    r4   r¶   r5   r˜  rY   r9  r—  rÄ   r[   r^   r=   r<   r   r   rT   r;   rÿ   r‚   )r  r0   r?   r=   r™  rA   r+   r+   r,   r    s>   



ó
õ 
€ú 
€ú
zeditMarque.postNr   r+   r+   r+   r,   rŸ    r$  rŸ  c                   @   r
  )ÚdeleteMarquec              
   C   r~  r  )r    r4   r¶   r5   r˜  rY   rü   r[   r<   r   r   rT   r;   rÿ   r‚   r€  r+   r+   r,   r  4  s8   

ó
õ 
€ú 
€ú
zdeleteMarque.postNr   r+   r+   r+   r,   r   1  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­   r7  r¯   r²   r8  rñ   rò   )r    r4   r5   Ú
aboutUsTblr9   rT   r=   rY   r9  r¶   r¢  r   r[   r^   r<   r   r'   r(   r\   r]   r   r;   rÿ   r‚   )r  r0   r?   r¢  ÚaboutObjrA   r+   r+   r,   r  T  s`   


å
è



ó
õ 
€ú 
€ú
zaboutUs.postNr   r+   r+   r+   r,   r¡  Q  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    r4   r  r   r  r:   r<   r   r   rT   r;   )r0   r?   rb   r¤  Ú	aboutObjsrA   r+   r+   r,   Ú
getAboutUs  ó"   €ür©  c                   @   r
  )ÚdeleteAboutUsc              
   C   r~  r  )r    r4   r¶   r5   r£  rY   rü   r[   r<   r   r   rT   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ˆ   rJ  r   r­   rq  r¯   r²   rr  rµ   )r    r4   ÚcontactFormTblr¶   r“   r•   r>   rˆ   r   r'   r(   r\   r]   r[   r^   r=   r<   r   r   rT   r;   )r0   r?   Ú
contactObjrA   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  r0   r?   rb   r­  ÚcontactObjsrA   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 )Nrn  rž   r¢   r   r­   rq  r¯   r²   rr  rñ   rò   )r    r4   Ú
galleryTblr¶   r·   r   r¸   rx   r¹   rt  r   r'   r(   r\   r]   r[   r^   r=   r<   r   r   rT   r;   rÿ   r‚   )	r  r0   r?   Ú
galleryObjrÍ   rÎ   rÏ   rÐ   rA   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§  )r0   r?   rb   r´  ÚgalleryObjsrA   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    r4   r¶   r5   r³  rY   rü   r[   r<   r   r   rT   r;   rÿ   r‚   r€  r+   r+   r,   r  *	  ó:   

ó
õ 
€ú 
€ú
zdeleteGallery.postNr   r+   r+   r+   r,   r¸  '	  r$  r¸  c                   @   r
  )ÚaddRateChartc           	   
   C   rm  )NÚfilerž   r>   ro  r¢   r   r­   rq  r¯   r²   rr  rñ   rò   )r    r4   ÚrateChartTblr¶   r·   r   r¸   rx   r¹   r¼  r>   ro  r   r'   r(   r\   r]   r[   r^   r=   r<   r   r   rT   r;   rÿ   r‚   )	r  r0   r?   ÚchartObjrÍ   rÎ   rÏ   rÐ   rA   r+   r+   r,   r  J	  sN   




ó
õ 
€ú 
€ú
zaddRateChart.postNr   r+   r+   r+   r,   r»  G	  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  w	  r  z%getRateChart.post.<locals>.<listcomp>r   r­   ©r°   Úratechartlistr²   r  r¯   rñ   rò   r  )r  r0   r?   rb   r¾  Ú	chartObjsrA   r+   r+   r,   r  q	  s:   
ó
õ 
€ú 
€ú
zgetRateChart.postNr   r+   r+   r+   r,   r¿  n	  r$  r¿  c                   @   r
  )ÚdeleteRateChartc              
   C   r¹  r  )r    r4   r¶   r5   r½  rY   rü   r[   r<   r   r   rT   r;   rÿ   r‚   r€  r+   r+   r,   r  Ž	  rº  zdeleteRateChart.postNr   r+   r+   r+   r,   rÃ  ‹	  r$  rÃ  c                   @   r
  )Ú	addEventsc           	   
   C   rƒ  )Nrn  rž   Ú	eventnamer¢   r   r­   rq  r¯   r²   rr  rñ   rò   )r    r4   ÚupcommingEventsr¶   r·   r   r¸   rx   r¹   rt  rÅ  r   r'   r(   r\   r]   r[   r^   r=   r<   r   r   rT   r;   rÿ   r‚   )	r  r0   r?   ÚeventObjrÍ   rÎ   rÏ   rÐ   rA   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§  )r0   r?   rb   r¾  rÂ  rA   r+   r+   r,   Ú	getEventsÒ	  rª  rÈ  c                   @   r
  )ÚdeleteEventsc              
   C   r¹  r  )r    r4   r¶   r5   rÆ  rY   rü   r[   r<   r   r   rT   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  r0   r?   rb   Ú
membersObjÚmembersObjsÚsql1Ú
requestObjÚrequestObjsÚ	eventsObjÚ
eventsObjsrA   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Úcollecteddater.   ÚamountrecievedÚpaidbyro  r¼   Ú-ÚcollectedbyÚpositionrn  rž   rÄ   r¢   r   r­   zAdded successfully..!r¯   r²   z%can't add value now.! try again laterrñ   rò   )$r    r4   r¶   r'   rõ   ÚaccountsTblrÚ  rÛ  ro  r¼   rÙ  rÿ   ÚmonthÚyearrÝ  rÞ  r·   r   r¸   rx   r¹   ÚfileurlrÄ   r   r(   r\   r]   r[   r^   r=   r<   r   r   rT   r;   r‚   )r  r0   r?   r   Údate_objectÚ
accountObjrÍ   rÎ   rÏ   rÐ   rA   r+   r+   r,   r  3
  s`   





ó
õ 
€ú 
€ú
zaddAccounts.postN)	r!  r"  r#  r   r   r%   r   r'   r  r+   r+   r+   r,   rØ  /
  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    r4   r  r   Úfetchoner   r<   r   rT   r;   rÿ   r‚   )r  r0   r?   Úvisitors_sqlÚvisitors_resultrç  Ú	users_sqlÚusers_resultrè  Ú
events_sqlÚevents_resultré  rA   r+   r+   r,   r  z
  s\   üù
 éýú
€ôýú
	€ô
zGetWebsiteCounts.postN)r!  r"  r#  r   r   r  r+   r+   r+   r,   ræ  v
  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±   Úordersra  r²   z)Failed to create order..! Try again laterr¯   ÚRenewelrñ   rò   )r    r4   r¶   r5   ÚRegistrationDtlrY   rV   rú   rX   ÚfeeÚrequestsr  rT   r  Ústatus_coder<   r   r   r;   rÿ   r‚   )r0   r?   rÄ   ÚfeeObjÚkey_idÚ
key_secretr¹   r  r¥   r  r°   rA   r+   r+   r,   ÚcreateOrder¬
  sŒ   
ÿü	

>Æ
9Ê
5Ìÿü	

ó
€õ 
€ú 
€ú€r  c           
   
   C   sˆ  t  ¡ }zºz`| jd }| jd }| t¡j||d ¡ }|d urY|j}t|t	j
ƒr:t|t	j	ƒs:t	j	 |t	j	j ¡ ¡}|tdd }t	j	 ¡ }|| j}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°   Úday_differencer²   z;No purchase details found for the given UID and Payment ID.r¯   rñ   rò   )r    r4   r¶   r5   r¾   rY   Úone_or_noner\   Ú
isinstancer'   r   ÚcombineÚminÚtimer   r(   râ   r   r<   r   rT   r;   rÿ   r‚   )
r0   r?   rÂ   r¿   Úpurchaser\   Úfuture_dater5  r  rA   r+   r+   r,   Úrenewaldays  sL   



þÿ
ïÿ
ô 
€ú 
€ú
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    r4   r  r   r  r  ÚgetÚappendr:   r<   r   r   rT   r;   rÿ   r‚   )	r  r0   r?   rb   r4  ÚpaymentObjsr  Úpayment_dictrA   r+   r+   r,   r  O  sF   

ó
õ 
€ú 
€ú
zpaymentHistory.postNr   r+   r+   r+   r,   r  L  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ò   rz  )r  r0   r?   r   rb   r4  r#  rA   r+   r+   r,   r  |  s<   

ó
õ 
€ú 
€ú
zgetPaymentHistoryByStatus.postNr   r+   r+   r+   r,   r%  y  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+   r.  r  r+   r+   r,   r  Ì  r0  z1get_paymentHistoryFilter.post.<locals>.<listcomp>r­   r  r²   r  r¯   rñ   rò   )r    r4   r¶   r!  r"  Újoinr  r   r  r   r<   r   rT   r;   rÿ   r‚   )r  r0   r?   r>   r(  Ú
conditionsr„   Úquery_conditionsrb   r4  r#  rA   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=   r8   rj   r¤   r¥   r¦   r  r¼   r¨   r¢   )rÊ   rË   rÆ   r   r­   r®   r¯   r²   r³   rµ   )#r    r4   r¶   r¾   r¿   r¤   rÀ   rÁ   r¥   rÂ   rÃ   r   rÄ   r¼   r/   rÅ   rÆ   r'   r(   r\   r]   r[   r5   re   r7   rÈ   rZ   r=   r<   r   r   rT   Ú	tracebackÚ	print_excr;   )r0   r?   r=   r8   rÑ   rA   r+   r+   r,   ÚrenewAccountõ  sD   


&
€ûr.  c                   @   r
  )ÚaddFormsandCircularsc           	   
   C   rƒ  )Nrn  rž   Úcircularnamer¢   r   r­   rq  r¯   r²   rr  rñ   rò   )r    r4   ÚformsandcircularsTblr¶   r·   r   r¸   rx   r¹   rt  r0  r   r'   r(   r\   r]   r[   r^   r=   r<   r   r   rT   r;   rÿ   r‚   )	r  r0   r?   ÚformsObjrÍ   rÎ   rÏ   rÐ   rA   r+   r+   r,   r  $  r‡  zaddFormsandCirculars.postNr   r+   r+   r+   r,   r/  !  r$  r/  c                   @   r
  )ÚgetFormsCircularsc              
   C   r  )Nz3select * from formsandcircularstbl order by id descc                 S   r  r+   r  r  r+   r+   r,   r  O  r  z*getFormsCirculars.post.<locals>.<listcomp>r   r­   ©r°   Ú	formslistr²   r  r¯   rñ   rò   r  )r  r0   r?   rb   r2  Ú	formsObjsrA   r+   r+   r,   r  J  r  zgetFormsCirculars.postNr   r+   r+   r+   r,   r3  G  r$  r3  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  j  r  z*get_userFormsCirculars.<locals>.<listcomp>r   r­   r4  r²   r  r¯   rµ   r§  )r0   r?   rb   r2  r6  rA   r+   r+   r,   Úget_userFormsCircularsc  rª  r8  c                   @   r
  )ÚdeleteFormsCircularsc              
   C   r~  r  )r    r4   r¶   r5   r1  rY   rü   r[   r<   r   r   rT   r;   rÿ   r‚   r€  r+   r+   r,   r  z  r  zdeleteFormsCirculars.postNr   r+   r+   r+   r,   r9  w  r$  r9  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 )Nrn  rž   r„  ÚheadingÚcontentr¢   r   r­   rq  r¯   r²   rr  rñ   rò   )r    r4   ÚlatestupdatesTblr¶   r·   r   r¸   rx   r¹   rt  r„  r;  r<  r   r'   r(   r\   r]   r[   r^   r=   r<   r   r   rT   r;   rÿ   r‚   )	r  r0   r?   Ú	latestObjrÍ   rÎ   rÏ   rÐ   rA   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  r0   r?   rb   r>  Ú
latestObjsrA   r+   r+   r,   r  Á  r  zgetLatestUpdates.postNr   r+   r+   r+   r,   r?  ¾  r$  r?  c              
   C   r7  )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­   r@  r²   r  r¯   rµ   r§  )r0   r?   rb   r>  rB  rA   r+   r+   r,   Úget_UserLatestUpdatesÚ  rª  rC  c                   @   r
  )ÚdeleteLatestUpdatesc              
   C   r~  r  )r    r4   r¶   r5   r=  rY   rü   r[   r<   r   r   rT   r;   rÿ   r‚   r€  r+   r+   r,   r  ñ  r  zdeleteLatestUpdates.postNr   r+   r+   r+   r,   rD  î  r$  rD  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|  r?  r­   zUpdated Successfullyr¯   rí  r
   r²   z#User not found, can't update statusrY  rî  rï  rð  rò  ró  )r    r4   r¶   r5   r6   rY   r  r   r[   r^   re   r=   r<   r   r   rT   r;   rÿ   r‚   )r  r0   r?   rã   Ú
new_statusrc   rÒ   rA   r+   r+   r,   r    sp   



þý
çþý
íýü
€öýü
€ö

zUpdateUserStatus.postNr   r+   r+   r+   r,   rE    ó    rE  )Ú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 r3   z-- Schema for table Ú
z;

z-- Data for table zSELECT * FROM c                 S   s   g | ]}|d  ‘qS )rx   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   ÚreadrI  rK  rJ  r]   r[   r‚   r,  r-  r   rÿ   r   ÚHTTP_500_INTERNAL_SERVER_ERROR)r  r0   Úbackup_folderÚ	timestampÚbackup_fileÚbackup_file_pathÚ	db_engineÚ	inspectorÚ
table_nameÚcreate_table_queryÚrowsÚcolumnsr  Úvaluesr¼  r°   r?   Úbackup_filenameÚ
new_backuprA   r+   r+   r,   r  ‚  sj   
"ÿÿÿÿ&òÿþý
ÿ€þzBackupDatabaseView.postNr   r+   r+   r+   r,   rL  ~  rH  rL  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    r4   r  r   r  r   r<   r   rT   r;   rÿ   r‚   ©r  r0   r?   Ú
backup_sqlÚbackup_resultrƒ  Úresponse_datarA   r+   r+   r,   r  À  ó8   þ
ô
õ 
€ú 
€ú
zget_Backup.postNr   r+   r+   r+   r,   r  ¼  rH  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Š  Þ  rH  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 )NrM  Úautomatic_backupsc                 S   s   g | ]	}|  d ¡r|‘qS )rP  )Úendswith)r  rÍ   r+   r+   r,   r    s    z$automatic_Backup.<locals>.<listcomp>c                    s   t j t j ˆ | ¡¡S )N)rh  ri  Úgetmtimer)  )rÍ   ©rt  r+   r,   Ú<lambda>
  r0  z"automatic_Backup.<locals>.<lambda>rZ  ra  rb  rc  re  r,  rf  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    r4   rh  ri  r)  r   rj  ÚlistdirÚmaxrn  r   rr  rT   Ú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‚   )r0   r?   ÚfilesÚ	sql_filesÚlatest_filerw  r¼  r°   Ú	backupObjÚformatted_datetimerA   r+   rŽ  r,   Úautomatic_Backup   sf   


ÿò
â
ò
â 
€û 
€ûçr  )¤Údjango.shortcutsr   Ú
subprocessÚ
sqlalchemyr   r   r   ÚioÚ	django.dbr   Úcalendarr'   Úrerh  rn   rp   r  rø   rK  Údjango.httpr   r	   ÚhashlibÚstringrv   Ú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_envrN  r-   r/   r   r*   r1   rB   rd   rh   rt   rz   rŽ   r   r   rÕ   rÚ   r	  r  r%  r+  r6  r:  r<  r=  rC  rW  r`  rd  rf  rg  rl  rv  ry  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'  r.  r/  r3  r8  r9  r:  r?  rC  rD  rE  Úsqlalchemy.ormrI  rJ  Úos.pathrK  rL  r  rŠ  r  r+   r+   r+   r,   Ú<module>   sV   
   ,

i 
1 ; 8:#

B
.
:!/(-&
 
" 
0

& '
(!(3
6
g5-
^*&
(
 m>"
"