a
     =­d°š ã                   @   s\  d dl mZ d dlmZ d dlT d dlmZmZmZ d dl	m
Z
mZ d dlmZ d dlmZ d dlmZ d d	lmZ d
dlmZ d dlZd
dlT d dlmZ d dlmZ d dlmZ d dlmZ d dlZd dlZd dlZd dl Z d dl!m"Z" d dl#m$Z$ d dl%T d dl&m&Z& d dl'm(Z( d dl)m*Z* d dl+T d dl,m-Z. d dl/T d dl)m0Z0 d dl)m1Z1 d dl2Z2d dl3m4Z4 d dlm5Z5 dd„ Z6dd„ Z7dd „ Z8d!d"„ Z9d#d$„ Z:d%d&„ Z;d'd(„ Z<d)d*„ Z=G d+d,„ d,eƒZ>G d-d.„ d.eƒZ?G d/d0„ d0eƒZ@G d1d2„ d2eƒZAG d3d4„ d4eƒZBG d5d6„ d6eƒZCG d7d8„ d8eƒZDG d9d:„ d:eƒZEG d;d<„ d<eƒZFG d=d>„ d>eƒZGG d?d@„ d@eƒZHG dAdB„ dBeƒZIG dCdD„ dDeƒZJG dEdF„ dFeƒZKG dGdH„ dHeƒZLG dIdJ„ dJeƒZMG dKdL„ dLeƒZNG dMdN„ dNeƒZOG dOdP„ dPeƒZPG dQdR„ dReƒZQG dSdT„ dTeƒZRG dUdV„ dVeƒZSG dWdX„ dXeƒZTG dYdZ„ dZeƒZUG d[d\„ d\eƒZVG d]d^„ d^eƒZWG d_d`„ d`eƒZXG dadb„ dbeƒZYG dcdd„ ddeƒZZG dedf„ dfeƒZ[G dgdh„ dheƒZ\G didj„ djeƒZ]G dkdl„ dleƒZ^G dmdn„ dneƒZ_G dodp„ dpeƒZ`G dqdr„ dreƒZaG dsdt„ dteƒZbG dudv„ dveƒZcG dwdx„ dxeƒZdG dydz„ dzeƒZeG d{d|„ d|eƒZfG d}d~„ d~eƒZgG dd€„ d€eƒZhG dd‚„ d‚eƒZiG dƒd„„ d„eƒZjG d…d†„ d†eƒZkG d‡dˆ„ dˆeƒZlG d‰dŠ„ dŠeƒZmG d‹dŒ„ dŒeƒZnG ddŽ„ dŽeƒZoG dd„ deƒZpG d‘d’„ d’eƒZqG d“d”„ d”eƒZrG d•d–„ d–eƒZsG d—d˜„ d˜eƒZtG d™dš„ dšeƒZuG d›dœ„ dœeƒZvG ddž„ džeƒZwG dŸd „ d eƒZxG d¡d¢„ d¢eƒZyG d£d¤„ d¤eƒZzG d¥d¦„ d¦eƒZ{G d§d¨„ d¨eƒZ|G d©dª„ dªeƒZ}G d«d¬„ d¬eƒZ~G d­d®„ d®eƒZG d¯d°„ 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„G d¹dº„ dºeƒZ…G d»d¼„ d¼eƒZ†G d½d¾„ d¾eƒZ‡dS )¿é    )Úrequest)ÚView)Ú*)ÚauthenticateÚloginÚlogout)ÚrenderÚredirect)ÚUser)Úget_user_model)ÚJsonResponse)ÚHttpResponseé   )ÚformsN)Úrender_to_string)Úmail)Úmessages)Úsettings)Úlogin_required)Úmethod_decorator)Údatetime)Ú	Paginator)ÚQ)Údjango_pbkdf2_sha256)ÚSum)ÚCount©Úwraps)ÚHttpResponseForbiddenc                    s   ‡ fdd„}|S )Nc                    s   t ˆ ƒ‡‡ fdd„ƒ}|S )Nc                    s(   | j  ˆ ¡stƒ S ˆ| g|¢R i |¤ŽS ©N)ÚuserÚhas_permr   )r   ÚargsÚkwargs)ÚpermÚ	view_func© ú,/var/www/html/Beni/beni/admin_panel/views.pyÚwrapper$   s    z7user_has_permission.<locals>.decorator.<locals>.wrapperr   )r%   r(   ©r$   )r%   r'   Ú	decorator#   s    z&user_has_permission.<locals>.decoratorr&   )r$   r*   r&   r)   r'   Úuser_has_permission"   s    r+   c                 C   sR   | j  dd¡}| j  d¡}tjj|d}| |¡dkrFd}t|ddS tdƒS d S )	NÚemailÚ Úpassword©r,   Fz!Please enter the correct password©ÚsafeÚtrue)ÚGETÚgetr
   ÚobjectsÚcheck_passwordr   r   )r   Útextr.   r    Úmessager&   r&   r'   ÚcheckLoginPassword.   s    r9   c                 C   s>   | j  d¡}tjj|d ¡ }|r*tdƒS d}t|ddS d S )Nr,   r/   r2   z)This email does not exist in our databaseFr0   )r3   r4   r
   r5   ÚfilterÚfirstr   r   ©r   r7   Úpostr8   r&   r&   r'   Ú
checkEmail8   s    r>   c                 C   sD   | j  d¡}tjj|dd ¡ }|dkr0tdƒS d}t|ddS d S )	Nr,   r   ©r,   Úis_superuserr   r2   ú(This email already exist in our databaseFr0   )r3   r4   r
   r5   r:   Úcountr   r   r<   r&   r&   r'   ÚcheckAddEmailA   s    rC   c                 C   sT   | j  d¡}| j  d¡}tjj|ddj|d ¡ }|rHd}t|ddS td	ƒS d S )
NÚuser_idr,   r   r?   ©ÚidrA   Fr0   r2   )	r3   r4   r
   r5   r:   Úexcluder;   r   r   )r   rD   r7   r=   r8   r&   r&   r'   ÚcheckEditEmailJ   s    rH   c                 C   sH   | j  d¡}tjj| jjd}| |¡dkr<d}t|ddS tdƒS d S )NÚold_passwordr/   Fz%Does not match with the old password.r0   r2   )	r3   r4   r
   r5   r    r,   r6   r   r   )r   rI   r    r8   r&   r&   r'   ÚadminCheckPasswordU   s    rJ   c                     sp   dd l ‰ dd l‰d ‡ ‡fdd„tdƒD ƒ¡} | d ‡ ‡fdd„tdƒD ƒ¡7 } t| ƒ}ˆ  |¡ d |¡}|S )Nr   r-   c                 3   s   | ]}ˆ   ˆj¡V  qd S r   )ÚchoiceÚascii_letters©Ú.0Úx©ÚrandomÚstringr&   r'   Ú	<genexpr>`   ó    z/randomStringFunctionForImage.<locals>.<genexpr>é   c                 3   s   | ]}ˆ   ˆj¡V  qd S r   )rK   ÚdigitsrM   rP   r&   r'   rS   a   rT   é   )rQ   rR   ÚjoinÚrangeÚlistÚshuffle)Zstr1Zsam_listZfinalStringr&   rP   r'   ÚrandomStringFunctionForImage^   s    "

r\   c                  C   s˜   dd l } dd l}d}g d¢}g d¢}|| }|  |¡}|  |¡}|| }t|d ƒD ](}	||  |¡ }| d|¡}
|  |
¡ qTd}|
D ]}	||	 }q†|S )Nr   éB   )
Ú0Ú1Ú2Ú3Ú4Ú5Ú6Ú7Ú8Ú9)ÚaÚbÚcÚdÚeÚfÚgÚhÚiÚjÚkÚmÚnÚoÚpÚqÚrÚsÚtÚuÚvÚwrO   ÚyÚzrW   r{   r-   )rQ   ÚarrayrK   rY   r[   )rQ   r€   ZMAX_LENÚDIGITSZLOCASE_CHARACTERSZCOMBINED_LISTZ
rand_digitZ
rand_lowerZ	temp_passrO   Ztemp_pass_listÚtokenr&   r&   r'   ÚgernateTokenh   s"    


rƒ   c                   @   s   e Zd Zdd„ Zdd„ ZdS )ÚadminSignInc                 C   s
   t |dƒS )Núadmin_login.html©r   ©Úselfr   r&   r&   r'   r4   }   s    zadminSignIn.getc                 C   s   t  |j¡}| ¡ r||j d¡}|j d¡}t||d}|rpt||ƒ |jj	dkrft
 |d¡ tdƒS tdƒS qŒt|dƒS nt|d	d
|iƒS d S )Nr,   r.   ©r,   r.   r   z#You account is temporarily disable.ú/admin-signinú/admin-dashboardr…   Zadmin_loginÚform)r   Zadmin_signinÚPOSTÚis_validÚcleaned_datar4   r   r   r    Ústatusr   Úerrorr	   r   )rˆ   r   rŒ   r,   r.   r    r&   r&   r'   r=      s    

zadminSignIn.postN©Ú__name__Ú
__module__Ú__qualname__r4   r=   r&   r&   r&   r'   r„   |   s   r„   c                   @   s   e Zd Zdd„ Zdd„ ZdS )ÚadminForgetPwc                 C   s
   t |dƒS )Núadmin_forget_pw.htmlr†   r‡   r&   r&   r'   r4   ”   s    zadminForgetPw.getc                 C   sð   t  |j¡}| ¡ rÜ|j d¡}tjj|d 	¡ }d 
dd„ tdƒD ƒ¡}dt|jƒ d | }ttjƒ| }||_| ¡  d	}td
d|iƒ}	|	}
tdtjƒ tj}|}tj||
||g|	d}td|ƒ t |d¡ tdƒS t|dd|iƒS d S )Nr,   r/   r-   c                 S   s   g | ]}t  tjtj ¡‘qS r&   )rQ   rK   rR   rL   rV   )rN   rt   r&   r&   r'   Ú
<listcomp>›   rT   z&adminForgetPw.post.<locals>.<listcomp>é   z/forgot-admin/ú/zForgot Passwordzforget_password_email.htmlÚlinkZseeeee©Úhtml_messagez+++++++++++++z/A link has been successfully sent to your mail.rŠ   r—   rŒ   )r   Zadminforgetpasswordr   rŽ   r   r4   r
   r5   r:   r;   rX   rY   Ústrr,   r   ÚBASE_URLÚforgot_password_linkÚsaver   ÚprintÚEMAIL_HOST_USERr   Ú	send_mailr   Úsuccessr	   r   )rˆ   r   rŒ   r,   Úuser_objZran_numZbaselinkZcompletelinkÚsubjectr   Úplain_messageÚ
from_emailÚtoZhellor&   r&   r'   r=   –   s(    
zadminForgetPw.postNr’   r&   r&   r&   r'   r–   “   s   r–   c                   @   s   e Zd Zdd„ Zdd„ ZdS )ÚforgetPasswordVerificationc                 C   sr   t | jjƒ}| d¡d }tjj|d ¡ }|jdkr@t	|dƒS tjj||d ¡ }|r^d}nd}t	|d	d
|iƒS )Nrš   éþÿÿÿr/   Ú
LinkExpiryzlink_expire.html)r,   r    TFúforget_admin.htmlÚvalid)
rž   r   ÚpathÚsplitr
   r5   r:   r;   r    r   )rˆ   r   r›   Ú
user_emailZlink_expiryr¦   r¯   r&   r&   r'   r4   ¯   s    

zforgetPasswordVerification.getc                 C   s²   t  |j¡}| ¡ rž|j d¡}|j d¡}t| jjƒ}| 	d¡d }t
jj|d ¡ }|rˆ| |¡ d|_| ¡  t |d¡ tdƒS t |d	¡ tdƒS nt|d
d|iƒS d S )NÚnew_passwordÚconfirm_new_passwordrš   éýÿÿÿr/   r­   zPassword changed successfullyrŠ   zSomething went wrongr®   rŒ   )r   Zforgetverificationr   rŽ   r   r4   rž   r   r°   r±   r
   r5   r:   r;   Úset_passwordr    r¡   r   r¥   r	   r‘   r   )rˆ   r   rŒ   r³   r´   r›   r²   r¦   r&   r&   r'   r=   ¼   s     

zforgetPasswordVerification.postNr’   r&   r&   r&   r'   r«   ®   s   r«   c                   @   s*   e Zd Zeeddƒdd„ ƒZdd„ ZdS )ÚadminProfilerŠ   ©Z	login_urlc                 C   s&   t jj|jjd ¡ }t|dd|iƒS )NrE   úadmin_profile.htmlr¦   )r
   r5   r:   r    rF   r;   r   )rˆ   r   r¦   r&   r&   r'   r4   Ò   s    zadminProfile.getc                 C   sÚ   t  |j¡}| ¡ rÆ|j d¡}|j d¡}|j d¡}|j d¡}tjj|j	j
dj||||d |j d¡r²t|j d¡ƒ}ttjƒd | }tjj|j	jd	d
jt|ƒd t |d¡ tdƒS t|dd|iƒS d S )NÚ	full_nameÚisd_codeÚphone_numberr,   rE   )rº   r»   r¼   r,   Úavatarrš   Tr?   ©r½   zProfile Updated successfullyz/admin-profiler¹   rŒ   )r   Zprofileformr   rŽ   r   r4   r
   r5   r:   r    rF   ÚupdateÚFILESÚuploadTheImagesrž   r   rŸ   r,   r   r¥   r	   r   )rˆ   r   rŒ   rº   r»   r¼   r,   ÚfileUrlr&   r&   r'   r=   ×   s      zadminProfile.postN©r“   r”   r•   r   r   r4   r=   r&   r&   r&   r'   r·   Ñ   s   
r·   c                   @   s"   e Zd Zeeddƒdd„ ƒZdS )ÚadminDashboardrŠ   r¸   c                 C   s&  t jjdddd ¡ }tjjdd ¡ }tjjddd ¡ }tjjdd}d}|D ]}|t|jƒ7 }qRddlm	} dd l
}	|	j
 ¡ j}
g d¢}g }g }g }|D ]j}t jjdddd	|d
 ¡ }| |¡ tjjdd|
|d ¡ }| |¡ tjjd|
|d ¡ }| |¡ qžt|d|||||||dœƒS )Nr   T)Úis_buyerÚend_date__isnullÚis_profile_completed©ÚisPaid©rÆ   rÇ   r   )Ú
TruncMonth)Ú01Ú02Ú03Z04Z05Z06Z07Ú08Ú09Ú10Z11Z12Z2023)rÅ   rÆ   rÇ   Ústart_date__yearÚstart_date__month)rÆ   rÇ   rÒ   rÓ   )rÉ   Zcreated_at__yearZcreated_at__monthzadmin_dashboard.html)Útotal_customerÚtotal_ordersÚtotal_storeÚtotal_earningsZ	customersÚstoresÚorders)r
   r5   r:   rB   Ú	orderPackÚStoresÚfloatÚtotalAmountÚdjango.db.models.functionsrË   r   ÚnowÚyearÚappendr   )rˆ   r   rÔ   rÕ   rÖ   r×   ÚtotalZearningrË   r   Úcurrent_yearZ
month_listZ
user_countZstore_countZ
order_dataZmnthZ	all_usersZ	all_storeZ
all_ordersr&   r&   r'   r4   ì   s,    

zadminDashboard.getN©r“   r”   r•   r   r   r4   r&   r&   r&   r'   rÄ   ë   s   rÄ   c                   @   s*   e Zd Zeeddƒdd„ ƒZdd„ ZdS )ÚadminResetPasswordrŠ   r¸   c                 C   s
   t |dƒS )Núadmin_reset_password.htmlr†   r‡   r&   r&   r'   r4     s    zadminResetPassword.getc                 C   st   t  |j¡}| ¡ r`|j d¡}tjj|jjd}| 	|¡ | 
¡  t|ƒ t |d¡ tdƒS t|dd|iƒS d S )NZconfirmPasswordr/   z)You have successfully reset your passwordrŠ   ræ   rŒ   )r   Úchange_password_formr   rŽ   r4   r
   r5   r    r,   r¶   r¡   r   r   Úinfor	   r   )rˆ   r   rŒ   r.   r    r&   r&   r'   r=     s    
zadminResetPassword.postNrÃ   r&   r&   r&   r'   rå   
  s   
rå   c                   @   s"   e Zd Zeeddƒdd„ ƒZdS )ÚlogoutAdminrŠ   r¸   c                 C   s   t |ƒ t |d¡ tdƒS )NzLogout SuccesfullyrŠ   )r   r   r¥   r	   r‡   r&   r&   r'   r4     s    zlogoutAdmin.getNrä   r&   r&   r&   r'   ré     s   ré   c                   @   s*   e Zd Zeeddƒdd„ ƒZdd„ ZdS )ÚprivacyPolicyrŠ   r¸   c                 C   sœ   t jj|jjd ¡ }|jr&g d¢}ntjj|jd}|D ]L}|jjdkrPd}n|j	j}|dkr:t
jjdd ¡ }t|dd	|iƒ  S q:t |d
¡ tdƒS )NrE   ©r   é   é   rW   é   é   é   rU   é	   é
   é   ©Úroler   rW   ÚPrivacy_Policy©Ú	page_typeúprivacy_policy.htmlÚprivacy_objú You do not have access for this.r‹   ©r
   r5   r:   r    rF   r;   r@   ÚRolesPermissionrõ   Ú
permissionÚContentPagesr   r   r‘   r	   )rˆ   r   Úrole_user_idÚget_permissionrp   Úuser_varrú   r&   r&   r'   r4   %  s    
zprivacyPolicy.getc                 C   sÖ   t  |j¡}| ¡ rÂtjjdd ¡ }|rxtjj|jdj	|j
 d¡|j
 d¡|j
 d¡|j
 d¡dd t |d	¡ nBtjj|j
 d¡|j
 d¡|j
 d¡|j
 d¡dd t |d
¡ tdƒS t|dd|iƒS d S )Nrö   r÷   rE   Úenglish_page_titleÚenglish_contentÚarabic_page_titleÚarabic_content©r  r  r  r  rø   z#Privacy policy updated successfullyz#Privacy policy created successfullyz/privacy-policyrù   rŒ   ©r   Zcontentpages_formr   rŽ   rÿ   r5   r:   r;   rF   r¿   r   r4   r   r¥   Úcreater	   r   ©rˆ   r   rŒ   Údatar&   r&   r'   r=   9  s    @6zprivacyPolicy.postNrÃ   r&   r&   r&   r'   rê   $  s   
rê   c                   @   s*   e Zd Zeeddƒdd„ ƒZdd„ ZdS )ÚtermsConditionsrŠ   r¸   c                 C   sœ   t jj|jjd ¡ }|jr&g d¢}ntjj|jd}|D ]L}|jjdkrPd}n|j	j}|dkr:t
jjdd ¡ }t|dd	|iƒ  S q:t |d
¡ tdƒS )NrE   rë   rô   r   rW   ÚTerms_and_conditionsr÷   úterms_conditions.htmlÚ	terms_objrû   r‹   rü   )rˆ   r   r   r  rp   r  r  r&   r&   r'   r4   H  s    
ztermsConditions.getc                 C   sÖ   t  |j¡}| ¡ rÂtjjdd ¡ }|rxtjj|jdj	|j
 d¡|j
 d¡|j
 d¡|j
 d¡dd t |d	¡ nBtjj|j
 d¡|j
 d¡|j
 d¡|j
 d¡dd t |d
¡ tdƒS t|dd|iƒS d S )Nr  r÷   rE   r  r  r  r  r  z)Terms and Conditions updated successfullyz)Terms and Conditions created successfullyz/terms-and-conditionsr  rŒ   r  r
  r&   r&   r'   r=   [  s    @6ztermsConditions.postNrÃ   r&   r&   r&   r'   r  G  s   
r  c                   @   s*   e Zd Zeeddƒdd„ ƒZdd„ ZdS )ÚreturnPolicyrŠ   r¸   c                 C   sœ   t jj|jjd ¡ }|jr&g d¢}ntjj|jd}|D ]L}|jjdkrPd}n|j	j}|dkr:t
jjdd ¡ }t|dd	|iƒ  S q:t |d
¡ tdƒS )NrE   rë   rô   r   rW   ÚReturn_Policyr÷   úreturn_policy.htmlÚ
refund_objrû   r‹   rü   )rˆ   r   r   r  rp   r  r  r&   r&   r'   r4   j  s    
zreturnPolicy.getc                 C   sÖ   t  |j¡}| ¡ rÂtjjdd ¡ }|rxtjj|jdj	|j
 d¡|j
 d¡|j
 d¡|j
 d¡dd t |d	¡ nBtjj|j
 d¡|j
 d¡|j
 d¡|j
 d¡dd t |d
¡ tdƒS t|dd|iƒS d S )Nr  r÷   rE   r  r  r  r  r  z"Return policy updated successfullyz"Return policy created successfullyz/return-policyr  rŒ   r  r
  r&   r&   r'   r=   }  s    @6zreturnPolicy.postNrÃ   r&   r&   r&   r'   r  i  s   
r  c                   @   s"   e Zd Zeeddƒdd„ ƒZdS )ÚhelpSupportListrŠ   r¸   c              	   C   sì   t jj|jjd ¡ }|jr&g d¢}ntjj|jd}|D ]œ}|jjdkrPd}n|j	j}|dkr:t
j ¡  ¡ }t
jjdd ¡ }t
jjdd ¡ }t
j ¡ }	t|	d	ƒ}
|j d
¡}|
 |¡}t|d||||dœƒ  S q:t |d¡ tdƒS )NrE   rë   rô   r   rñ   T©r   FrU   Úpagezhelp_support_list.html)Úhelp_objrâ   ÚresolvedÚpendingrû   r‹   )r
   r5   r:   r    rF   r;   r@   rý   rõ   rþ   ÚHelpSupportÚallrB   r   r3   r4   Úget_pager   r   r‘   r	   )rˆ   r   r   r  rp   r  râ   r  r  r  Ú	paginatorÚpage_numberZ	rooms_objr&   r&   r'   r4     s&    



zhelpSupportList.getNrä   r&   r&   r&   r'   r  Ž  s   r  c                   @   s*   e Zd Zeeddƒdd„ ƒZdd„ ZdS )ÚsendSupportrŠ   r¸   c                 C   sœ   t jj|jjd ¡ }|jr&g d¢}ntjj|jd}|D ]L}|jjdkrPd}n|j	j}|dkr:t
jj|d ¡ }t|dd|iƒ  S q:t |d¡ td	ƒS )
NrE   rë   rô   r   rñ   úsend_support.htmlÚhelprû   r‹   ©r
   r5   r:   r    rF   r;   r@   rý   rõ   rþ   r  r   r   r‘   r	   )rˆ   r   rF   r   r  rp   r  r!  r&   r&   r'   r4   ª  s    
zsendSupport.getc                 C   s´   t  |j¡}| ¡ r |j d¡}|j d¡}|j d¡}td|||dœƒ}|}tj}	|}
t	j
|||	|
g|d tjj|dj|t ¡ dd	 t |d
¡ tdƒS t|dd|iƒS d S )Nr,   r§   Úreplyzsupport_email.html)Z
reply_textr,   r§   rœ   rE   T)r#  Ú
reply_dater   zsend successfullyz/help-support-listr   rŒ   )r   Zsendsupportformr   rŽ   r   r4   r   r   r£   r   r¤   r  r5   r:   r¿   r   rß   r   r¥   r	   r   )rˆ   r   rF   rŒ   r,   r§   r#  r   r¨   r©   rª   r&   r&   r'   r=   ½  s    zsendSupport.postNrÃ   r&   r&   r&   r'   r  ©  s   
r  c                   @   s"   e Zd Zeeddƒdd„ ƒZdS )ÚviewSupportrŠ   r¸   c                 C   sœ   t jj|jjd ¡ }|jr&g d¢}ntjj|jd}|D ]L}|jjdkrPd}n|j	j}|dkr:t
jj|d ¡ }t|dd|iƒ  S q:t |d¡ td	ƒS )
NrE   rë   rô   r   rñ   zview_support.htmlÚsup_objrû   r‹   r"  )rˆ   r   rF   r   r  rp   r  r&  r&   r&   r'   r4   Ð  s    
zviewSupport.getNrä   r&   r&   r&   r'   r%  Ï  s   r%  c                   @   s"   e Zd Zeeddƒdd„ ƒZdS )ÚuserListingrŠ   r¸   c              	   C   sV  t jj|jjd ¡ }|jr&g d¢}ntjj|jd}|D ]}|jjdkrRd}n|j	j}|dkr:t
jjdd d¡}|j d	¡}|j d
¡}t ¡  d¡}	|rÄt
jj||d |	 gddd d¡}|j d¡}
|
rt
jjt|
dt|
dB t|
dB dd d¡}t|dƒ}|j d¡}| |¡}t|d||||
dœƒ  S q:t |d¡ tdƒS )NrE   rë   rô   r   rî   T)Úuser__end_date__isnullú-idÚ
start_dateÚend_dateú%H:%M:%Sú r   )Zuser__start_date__rangeZuser__is_superuserr(  Úsearch)Zfirst_name__icontains)Zlast_name__icontains)Zuser__phone_number__icontainsrU   r  zuser_lisiting.html)Ú	buyer_objÚsearch_startÚ
search_endÚsearch_postrû   r‹   )r
   r5   r:   r    rF   r;   r@   rý   rõ   rþ   ÚBuyerÚorder_byr3   r4   r   rß   Ústrftimer   r   r  r   r   r‘   r	   )rˆ   r   r   r  rp   r  Úpage_objr0  r1  Útimer2  r  r  r/  r&   r&   r'   r4   ä  s0    

$0

zuserListing.getNrä   r&   r&   r&   r'   r'  ã  s   r'  c                   @   s"   e Zd Zeeddƒdd„ ƒZdS )Ú
userStatusrŠ   r¸   c                 C   sn   t jj|jd d}|jd |_| ¡  |jdkrNt |d¡ t|j	 d¡ƒS t 
|d¡ t|j	 d¡ƒS d S ©NÚmain_idrE   r   r_   zUser is activatedÚHTTP_REFERERzUser is deactivated©r
   r5   r4   r   r   r¡   r   r¥   r   ÚMETAr‘   ©rˆ   r   Úpubr&   r&   r'   r=     s    
zuserStatus.postN©r“   r”   r•   r   r   r=   r&   r&   r&   r'   r8    s   r8  c                   @   s"   e Zd Zeeddƒdd„ ƒZdS )Ú
deleteUserrŠ   r¸   c                 C   s¨   t jj|jjd ¡ }|jr&g d¢}ntjj|jd}|D ]X}|jjdkrPd}n|j	j}|dkr:t jj|dj
t ¡ d t |d¡ tdƒ  S q:t |d	¡ td
ƒS )NrE   rë   rô   r   rî   ©r+  úDeleted successfullyú/user-lisitingrû   r‹   )r
   r5   r:   r    rF   r;   r@   rý   rõ   rþ   r¿   r   rß   r   r¥   r	   r‘   ©rˆ   r   rF   r   r  rp   r  r&   r&   r'   r4     s    
zdeleteUser.getNrä   r&   r&   r&   r'   rA    s   rA  c                   @   s*   e Zd Zeeddƒdd„ ƒZdd„ ZdS )ÚaddUserrŠ   r¸   c                 C   s„   t jj|jjd ¡ }|jr&g d¢}ntjj|jd}|D ]4}|jjdkrPd}n|j	j}|dkr:t
|dƒ  S q:t |d¡ tdƒS )	NrE   rë   rô   r   rî   úadd_user.htmlrû   r‹   ©r
   r5   r:   r    rF   r;   r@   rý   rõ   rþ   r   r   r‘   r	   ©rˆ   r   r   r  rp   r  r&   r&   r'   r4   %  s    
zaddUser.getc                 C   sŒ  t  |j¡}| ¡ rxtjj|j d¡|j d¡ddd}|rRt	 
|d¡ tdƒS tjj|j d¡|j d¡|j d¡ddd}tƒ }| |¡ ttƒ ƒ}||_| ¡  tjj|j|j d	¡|j d
¡|j d¡d |j d¡rt|j d¡ƒ}ttjƒd | }t|ƒ|_| ¡  td|jd |j |dœƒ}|}	tj}
|j d¡}d}tj||	|
|g|d t	  |d¡ tdƒS t!|dd|iƒS d S )Nr»   r¼   T)r»   r¼   rÅ   rÇ   z/This phone number is alreay registered with us.z	/add-userr,   ©r»   r¼   r,   rÅ   rÇ   Ú
first_nameÚ	last_nameÚdob©rD   rK  rL  rM  r½   rš   znew_user.htmlú-)r¼   r.   zRegistered Successfullyrœ   zUser created successfullyrD  rG  rŒ   )"r   Úadduserformr   rŽ   r
   r5   r:   r   r4   r   Úwarningr	   r	  r\   r¶   rž   rƒ   r‚   r¡   r3  rF   rÀ   ÚuploadTheProfiler   rŸ   r½   r   r»   r¼   r£   r   r¤   r¥   r   )rˆ   r   rŒ   Zcheck_numberr¦   r.   ZtheTokenrÂ   r   r¨   r©   rª   r§   r&   r&   r'   r=   7  sJ    
$


û





ý
zaddUser.postNrÃ   r&   r&   r&   r'   rF  $  s   
rF  c                   @   s*   e Zd Zeeddƒdd„ ƒZdd„ ZdS )ÚeditUserrŠ   r¸   c           	      C   s²   t jj|jjd ¡ }|jr&g d¢}ntjj|jd}|D ]b}|jjdkrPd}n|j	j}|dkr:t jj|d ¡ }t
jj|jd ¡ }t|d||dœƒ  S q:t |d	¡ td
ƒS )NrE   rë   rô   r   rî   ©rD   úedit_user.html)r¦   r/  rû   r‹   )r
   r5   r:   r    rF   r;   r@   rý   rõ   rþ   r3  r   r   r‘   r	   )	rˆ   r   rF   r   r  rp   r  r¦   r/  r&   r&   r'   r4   b  s    
zeditUser.getc                 C   sî   t  |j¡}| ¡ rÚtjj|dj|j 	d¡|j 	d¡|j 	d¡ddd}t
jj|dj||j 	d¡|j 	d	¡|j 	d
¡d |j 	d¡rÆt|j 	d¡ƒ}ttjƒd | }tjj|djt|ƒd t |d¡ tdƒS t|dd|iƒS d S )NrE   r»   r¼   r,   TrJ  rT  rK  rL  rM  rN  r½   rš   r¾   zUser updated successfullyrD  rU  rŒ   )r   rP  r   rŽ   r
   r5   r:   r¿   r   r4   r3  rÀ   rR  rž   r   rŸ   r   r¥   r	   r   )rˆ   r   rF   rŒ   r¦   rÂ   r&   r&   r'   r=   v  s*    


û


ýzeditUser.postNrÃ   r&   r&   r&   r'   rS  a  s   
rS  c                   @   s"   e Zd Zeeddƒdd„ ƒZdS )Ú
faqlistingrŠ   r¸   c                 C   sÈ   t jj|jjd ¡ }|jr&g d¢}ntjj|jd}|D ]x}|jjdkrPd}n|j	j}|dkr:|j
 d¡}tj ¡  d¡}t|dƒ}|j
 d	¡}	| |	¡}
t|d
|
|dœƒ  S q:t |d¡ tdƒS )NrE   rë   rô   r   rò   r.  r)  rU   r  zfaq_listing.html)Úfaq_objÚdata_objrû   r‹   )r
   r5   r:   r    rF   r;   r@   rý   rõ   rþ   r3   r4   ÚFaqr  r4  r   r  r   r   r‘   r	   )rˆ   r   r   r  rp   r  r2  rX  r  r  rW  r&   r&   r'   r4   ‘  s"    


zfaqlisting.getNrä   r&   r&   r&   r'   rV    s   rV  c                   @   s*   e Zd Zeeddƒdd„ ƒZdd„ ZdS )ÚaddFaqrŠ   r¸   c                 C   s„   t jj|jjd ¡ }|jr&g d¢}ntjj|jd}|D ]4}|jjdkrPd}n|j	j}|dkr:t
|dƒ  S q:t |d¡ tdƒS )	NrE   rë   rô   r   rò   úadd_faq.htmlrû   r‹   rH  rI  r&   r&   r'   r4   ¬  s    
z
addFaq.getc                 C   s€   t  |j¡}| ¡ rl|j d¡}|j d¡}|j d¡}|j d¡}tjj||||d t	 
|d¡ tdƒS t|dd	|iƒS d S )
NÚenglish_titler  Úarabic_titler  ©r\  r  r]  r  zFAQ created successfullyú/faq-listingr[  rŒ   )r   Úfaqformr   rŽ   r   r4   rY  r5   r	  r   r¥   r	   r   )rˆ   r   rŒ   r\  r  r]  r  r&   r&   r'   r=   ½  s    zaddFaq.postNrÃ   r&   r&   r&   r'   rZ  «  s   
rZ  c                   @   s*   e Zd Zeeddƒdd„ ƒZdd„ ZdS )ÚeditFaqrŠ   r¸   c                 C   sœ   t jj|jjd ¡ }|jr&g d¢}ntjj|jd}|D ]L}|jjdkrPd}n|j	j}|dkr:t
jj|d ¡ }t|dd|iƒ  S q:t |d¡ td	ƒS )
NrE   rë   rô   r   rò   úedit_faq.htmlrW  rû   r‹   )r
   r5   r:   r    rF   r;   r@   rý   rõ   rþ   rY  r   r   r‘   r	   )rˆ   r   rF   r   r  rp   r  rW  r&   r&   r'   r4   Ì  s    
zeditFaq.getc                 C   sˆ   t  |j¡}| ¡ rt|j d¡}|j d¡}|j d¡}|j d¡}tjj|dj	||||d t
 |d¡ tdƒS t|d	d
|iƒS d S )Nr\  r  r]  r  rE   r^  zFAQ updated successfullyr_  rb  rŒ   )r   r`  r   rŽ   r   r4   rY  r5   r:   r¿   r   r¥   r	   r   )rˆ   r   rF   rŒ   r\  r  r]  r  r&   r&   r'   r=   ß  s    zeditFaq.postNrÃ   r&   r&   r&   r'   ra  Ë  s   
ra  c                   @   s"   e Zd Zeeddƒdd„ ƒZdS )Ú	deleteFaqrŠ   r¸   c                 C   s    t jj|jjd ¡ }|jr&g d¢}ntjj|jd}|D ]P}|jjdkrPd}n|j	j}|dkr:t
jj|d ¡  t |d¡ tdƒ  S q:t |d¡ td	ƒS )
NrE   rë   rô   r   rò   rC  r_  rû   r‹   )r
   r5   r:   r    rF   r;   r@   rý   rõ   rþ   rY  Údeleter   r¥   r	   r‘   rE  r&   r&   r'   r4   í  s    
zdeleteFaq.getNrä   r&   r&   r&   r'   rc  ì  s   rc  c                   @   s*   e Zd Zeeddƒdd„ ƒZdd„ ZdS )ÚcontactManagementrŠ   r¸   c                 C   s˜   t jj|jjd ¡ }|jr&g d¢}ntjj|jd}|D ]H}|jjdkrPd}n|j	j}|dkr:t
j ¡  ¡ }t|dd|iƒ  S q:t |d¡ td	ƒS )
NrE   rë   rô   r   rí   úcontact_manage.htmlr¦   rû   r‹   )r
   r5   r:   r    rF   r;   r@   rý   rõ   rþ   ÚContactmanager  r   r   r‘   r	   )rˆ   r   r   r  rp   r  r¦   r&   r&   r'   r4     s    
zcontactManagement.getc                 C   sR  t  |j¡}| ¡ r>tj ¡  ¡ }|r°tjj|j	dj
|j d¡|j d¡|j d¡|j d¡|j d¡|j d¡|j d¡|j d	¡|j d
¡|j d¡d
 t |d¡ n†tjj|j d¡|j d¡|j d¡|j d¡|j d¡|j d¡|j d¡|j d¡|j d	¡|j d
¡|j d¡d t |d¡ tdƒS t|dd|iƒS d S )NrE   r¼   Úwhatsapp_numberr,   Úinstagram_urlÚtwitter_urlÚyoutube_urlÚfacebook_urlÚcontact_descriptionÚcontact_description_arÚaddress)
r¼   rh  r,   ri  rj  rk  rl  rm  rn  ro  z$Contact details updated successfullyr»   )r»   r¼   rh  r,   ri  rj  rk  rl  rm  rn  ro  z$Contact details created successfullyz/contact-managementrf  rŒ   )r   Zcontactformr   rŽ   rg  r5   r  r;   r:   rF   r¿   r   r4   r   r¥   r	  r	   r   r
  r&   r&   r'   r=     sB    










ö










õzcontactManagement.postNrÃ   r&   r&   r&   r'   re    s   
re  c                   @   s"   e Zd Zeeddƒdd„ ƒZdS )ÚmainCategoriesListrŠ   r¸   c                 C   sæ   t jj|jjd ¡ }|jr&g d¢}ntjj|jd}|D ]–}|jjdkrPd}n|j	j}|dkr:t
jjdd}|j d¡}|ršt
j t|dt|d	B ¡}t|d
ƒ}|j d¡}	| |	¡}
t|d|
|dœƒ  S q:t |d¡ tdƒS )NrE   rë   rô   r   T©rÆ   r.  ©Z category_name_english__icontains©Zcategory_name_arabic__icontainsrU   r  zmain_categories_list.html©Úmain_objr2  rû   r‹   )r
   r5   r:   r    rF   r;   r@   rý   rõ   rþ   ÚMainCategoriesr3   r4   r   r   r  r   r   r‘   r	   ©rˆ   r   r   r  rp   r  rX  r2  r  r  ru  r&   r&   r'   r4   ;  s&    


zmainCategoriesList.getNrä   r&   r&   r&   r'   rp  :  s   rp  c                   @   s*   e Zd Zeeddƒdd„ ƒZdd„ ZdS )ÚaddMainCategoryrŠ   r¸   c                 C   s„   t jj|jjd ¡ }|jr&g d¢}ntjj|jd}|D ]4}|jjdkrPd}n|j	j}|dkr:t
|dƒ  S q:t |d¡ tdƒS )NrE   rë   rô   r   úadd_maincategory.htmlrû   r‹   rH  rI  r&   r&   r'   r4   W  s    
zaddMainCategory.getc                 C   s°   t  |j¡}| ¡ rœtjj|j d¡|j d¡|j d¡|j d¡d}|j	 d¡r€t
|j	 d¡ƒ}ttjƒd | }t|ƒ|_| ¡  t |d¡ td	ƒS t|d
d|iƒS d S )NÚcategory_name_englishÚcategory_content_englishÚcategory_name_arabicÚcategory_content_arabic©rz  r{  r|  r}  Úcategory_iconrš   z!Main category created succesfullyú/main-categories-listry  rŒ   )r   Úaddmaincategorformr   rŽ   rv  r5   r	  r   r4   rÀ   ÚuploadTheCategoryrž   r   rŸ   r  r¡   r   r¥   r	   r   ©rˆ   r   rŒ   ru  rÂ   r&   r&   r'   r=   i  s     



ü
zaddMainCategory.postNrÃ   r&   r&   r&   r'   rx  V  s   
rx  c                   @   s*   e Zd Zeeddƒdd„ ƒZdd„ ZdS )ÚeditMainCategoryrŠ   r¸   c                 C   sœ   t jj|jjd ¡ }|jr&g d¢}ntjj|jd}|D ]L}|jjdkrPd}n|j	j}|dkr:t
jj|d ¡ }t|dd|iƒ  S q:t |d¡ tdƒS )	NrE   rë   rô   r   úedit_maincategory.htmlru  rû   r‹   ©r
   r5   r:   r    rF   r;   r@   rý   rõ   rþ   rv  r   r   r‘   r	   ©rˆ   r   rF   r   r  rp   r  ru  r&   r&   r'   r4   }  s    
zeditMainCategory.getc                 C   sÀ   t  |j¡}| ¡ r¬tjj|dj|j 	d¡|j 	d¡|j 	d¡|j 	d¡d |j
 	d¡r˜t|j
 	d¡ƒ}ttjƒd | }tjj|djt|ƒd	 t |d
¡ tdƒS t|dd|iƒS d S )NrE   rz  r{  r|  r}  r~  r  rš   ©r  z"Main category updated successfullyr€  r…  rŒ   )r   r  r   rŽ   rv  r5   r:   r¿   r   r4   rÀ   r‚  rž   r   rŸ   r   r¥   r	   r   ©rˆ   r   rF   rŒ   rÂ   r&   r&   r'   r=   ‘  s    



üzeditMainCategory.postNrÃ   r&   r&   r&   r'   r„  |  s   
r„  c                   @   s"   e Zd Zeeddƒdd„ ƒZdS )ÚchangeMainStatusrŠ   r¸   c                 C   sn   t jj|jd d}|jd |_| ¡  |jdkrNt |d¡ t|j	 d¡ƒS t 
|d¡ t|j	 d¡ƒS d S )Nr:  rE   r   r_   zMain category is activatedr;  zMain category is deactivated)rv  r5   r4   r   r   r¡   r   r¥   r   r=  r‘   r>  r&   r&   r'   r=   ¦  s    
zchangeMainStatus.postNr@  r&   r&   r&   r'   rŠ  ¥  s   rŠ  c                   @   s"   e Zd Zeeddƒdd„ ƒZdS )ÚdeleteMaincategoryrŠ   r¸   c                 C   s¨   t jj|jjd ¡ }|jr&g d¢}ntjj|jd}|D ]X}|jjdkrPd}n|j	j}|dkr:t
jj|djt ¡ d t |d¡ tdƒ  S q:t |d¡ td	ƒS )
NrE   rë   rô   r   rB  rC  r€  rû   r‹   )r
   r5   r:   r    rF   r;   r@   rý   rõ   rþ   rv  r¿   r   rß   r   r¥   r	   r‘   rE  r&   r&   r'   r4   ³  s    
zdeleteMaincategory.getNrä   r&   r&   r&   r'   r‹  ²  s   r‹  c                   @   s"   e Zd Zeeddƒdd„ ƒZdS )ÚsubCategoriesListrŠ   r¸   c                 C   sò   t jj|jjd ¡ }|jr&g d¢}ntjj|jd}|D ]¢}|jjdkrPd}n|j	j}|dkr:t
jjdd d¡}|j d¡}|r¦t
j t|d	t|d
B ¡ d¡}t|dƒ}|j d¡}	| |	¡}
t|d|
|dœƒ  S q:t |d¡ tdƒS )NrE   rë   rô   r   Trq  r)  r.  rr  rs  rU   r  zsub_categories_list.htmlrt  rû   r‹   )r
   r5   r:   r    rF   r;   r@   rý   rõ   rþ   ÚSubcategoriesr4  r3   r4   r   r   r  r   r   r‘   r	   rw  r&   r&   r'   r4   Ë  s&    
"

zsubCategoriesList.getNrä   r&   r&   r&   r'   rŒ  Ê  s   rŒ  c                   @   s*   e Zd Zeeddƒdd„ ƒZdd„ ZdS )ÚaddSubCategoryrŠ   r¸   c                 C   s˜   t jj|jjd ¡ }|jr&g d¢}ntjj|jd}|D ]H}|jjdkrPd}n|j	j}|dkr:t
jjdd}t|dd|iƒ  S q:t |d	¡ td
ƒS )NrE   rë   rô   r   Trq  úadd_subcategory.htmlÚmainrû   r‹   r†  )rˆ   r   r   r  rp   r  r  r&   r&   r'   r4   å  s    
zaddSubCategory.getc                 C   sÜ   t jjdd}t |j¡}| ¡ rÆt jj|j d¡d 	¡ }t
jj||j d¡|j d¡|j d¡|j d¡d	}|j d
¡rªt|j d
¡ƒ}ttjƒd | }t|ƒ|_| ¡  t |d¡ tdƒS t|d||dœƒS d S )NTrq  Úmain_categoryrE   rz  r{  r|  r}  ©Úmaincategoryrz  r{  r|  r}  r  rš   zSub category added successfullyú/sub-categories-listr  )rŒ   r  )rv  r5   r:   r   Úaddsubcategorformr   rŽ   r   r4   r;   r  r	  rÀ   r‚  rž   r   rŸ   r  r¡   r   r¥   r	   r   )rˆ   r   r  rŒ   r:  ru  rÂ   r&   r&   r'   r=   ø  s&    



û
zaddSubCategory.postNrÃ   r&   r&   r&   r'   rŽ  ä  s   
rŽ  c                   @   s*   e Zd Zeeddƒdd„ ƒZdd„ ZdS )ÚeditSubCategoryrŠ   r¸   c           	      C   s¬   t jj|jjd ¡ }|jr&g d¢}ntjj|jd}|D ]\}|jjdkrPd}n|j	j}|dkr:t
jjdd}tjj|d ¡ }t|d||dœƒ  S q:t |d	¡ td
ƒS )NrE   rë   rô   r   Trq  úedit_subcategory.html)ru  r  rû   r‹   )r
   r5   r:   r    rF   r;   r@   rý   rõ   rþ   rv  r  r   r   r‘   r	   )	rˆ   r   rF   r   r  rp   r  r  ru  r&   r&   r'   r4     s    
zeditSubCategory.getc                 C   sÞ   t  |j¡}| ¡ rÊtjj|j d¡d 	¡ }t
jj|dj|j|j d¡|j d¡|j d¡|j d¡d |j d¡r¶t|j d¡ƒ}ttjƒd	 | }t
jj|djt|ƒd
 t |d¡ tdƒS t|dd|iƒS d S )Nr‘  rE   rz  r{  r|  r}  r’  r  rš   rˆ  z!Sub category updated successfullyr”  r—  rŒ   )r   r•  r   rŽ   rv  r5   r:   r   r4   r;   r  r¿   rF   rÀ   r‚  rž   r   rŸ   r   r¥   r	   r   )rˆ   r   rF   rŒ   r:  rÂ   r&   r&   r'   r=   %  s"    



ûzeditSubCategory.postNrÃ   r&   r&   r&   r'   r–    s   
r–  c                   @   s"   e Zd Zeeddƒdd„ ƒZdS )ÚchangeSubStatusrŠ   r¸   c                 C   sn   t jj|jd d}|jd |_| ¡  |jdkrNt |d¡ t|j	 d¡ƒS t 
|d¡ t|j	 d¡ƒS d S )Nr:  rE   r   r_   zSubcategory is activatedr;  zSubcategory is deactivated)r  r5   r4   r   r   r¡   r   r¥   r   r=  r‘   r>  r&   r&   r'   r=   =  s    
zchangeSubStatus.postNr@  r&   r&   r&   r'   r˜  <  s   r˜  c                   @   s"   e Zd Zeeddƒdd„ ƒZdS )ÚdeleteSubcategoryrŠ   r¸   c                 C   s¨   t jj|jjd ¡ }|jr&g d¢}ntjj|jd}|D ]X}|jjdkrPd}n|j	j}|dkr:t
jj|djt ¡ d t |d¡ tdƒ  S q:t |d¡ td	ƒS )
NrE   rë   rô   r   rB  rC  r”  rû   r‹   )r
   r5   r:   r    rF   r;   r@   rý   rõ   rþ   r  r¿   r   rß   r   r¥   r	   r‘   rE  r&   r&   r'   r4   J  s    
zdeleteSubcategory.getNrä   r&   r&   r&   r'   r™  I  s   r™  c                   @   s"   e Zd Zeeddƒdd„ ƒZdS )Ú
stonesListrŠ   r¸   c                 C   sæ   t jj|jjd ¡ }|jr&g d¢}ntjj|jd}|D ]–}|jjdkrPd}n|j	j}|dkr:t
jjdd}|j d¡}|ršt
j t|dt|d	B ¡}t|d
ƒ}|j d¡}	| |	¡}
t|d|
|dœƒ  S q:t |d¡ tdƒS )NrE   rë   rô   r   Trq  r.  )Zstone_name_english__icontains)Zstone_name_arabic__icontainsrU   r  zstone_listing.htmlrt  rû   r‹   )r
   r5   r:   r    rF   r;   r@   rý   rõ   rþ   ÚStonesr3   r4   r   r   r  r   r   r‘   r	   rw  r&   r&   r'   r4   _  s&    


zstonesList.getNrä   r&   r&   r&   r'   rš  ^  s   rš  c                   @   s*   e Zd Zeeddƒdd„ ƒZdd„ ZdS )Ú	addStonesrŠ   r¸   c                 C   s„   t jj|jjd ¡ }|jr&g d¢}ntjj|jd}|D ]4}|jjdkrPd}n|j	j}|dkr:t
|dƒ  S q:t |d¡ tdƒS )NrE   rë   rô   r   úadd_stone.htmlrû   r‹   rH  rI  r&   r&   r'   r4   y  s    
zaddStones.getc                 C   s°   t  |j¡}| ¡ rœtjj|j d¡|j d¡|j d¡|j d¡d}|j	 d¡r€t
|j	 d¡ƒ}ttjƒd | }t|ƒ|_| ¡  t |d¡ td	ƒS t|d
d|iƒS d S )NÚstone_name_englishÚstone_name_arabicÚstone_content_englishÚstone_content_arabic©rž  rŸ  r   r¡  Ú
stone_iconrš   zStone created succesfullyú/stones-listr  rŒ   )r   Ú
stonesformr   rŽ   r›  r5   r	  r   r4   rÀ   r‚  rž   r   rŸ   r£  r¡   r   r¥   r	   r   rƒ  r&   r&   r'   r=   ‹  s     



ü
zaddStones.postNrÃ   r&   r&   r&   r'   rœ  x  s   
rœ  c                   @   s*   e Zd Zeeddƒdd„ ƒZdd„ ZdS )Ú
editStonesrŠ   r¸   c                 C   sœ   t jj|jjd ¡ }|jr&g d¢}ntjj|jd}|D ]L}|jjdkrPd}n|j	j}|dkr:t
jj|d ¡ }t|dd|iƒ  S q:t |d¡ tdƒS )	NrE   rë   rô   r   úedit_stone.htmlru  rû   r‹   )r
   r5   r:   r    rF   r;   r@   rý   rõ   rþ   r›  r   r   r‘   r	   r‡  r&   r&   r'   r4   Ÿ  s    
zeditStones.getc                 C   sÀ   t  |j¡}| ¡ r¬tjj|dj|j 	d¡|j 	d¡|j 	d¡|j 	d¡d |j
 	d¡r˜t|j
 	d¡ƒ}ttjƒd | }tjj|djt|ƒd	 t |d
¡ tdƒS t|dd|iƒS d S )NrE   rž  rŸ  r   r¡  r¢  r£  rš   )r£  zStone updated successfullyr¤  r§  rŒ   )r   r¥  r   rŽ   r›  r5   r:   r¿   r   r4   rÀ   r‚  rž   r   rŸ   r   r¥   r	   r   r‰  r&   r&   r'   r=   ²  s    



üzeditStones.postNrÃ   r&   r&   r&   r'   r¦  ž  s   
r¦  c                   @   s"   e Zd Zeeddƒdd„ ƒZdS )ÚchangeStoneStatusrŠ   r¸   c                 C   sn   t jj|jd d}|jd |_| ¡  |jdkrNt |d¡ t|j	 d¡ƒS t 
|d¡ t|j	 d¡ƒS d S )Nr:  rE   r   r_   zStone status is activatedr;  zStone status is deactivated)r›  r5   r4   r   r   r¡   r   r¥   r   r=  r‘   r>  r&   r&   r'   r=   Ç  s    
zchangeStoneStatus.postNr@  r&   r&   r&   r'   r¨  Æ  s   r¨  c                   @   s"   e Zd Zeeddƒdd„ ƒZdS )ÚdeleteStonecategoryrŠ   r¸   c                 C   s¨   t jj|jjd ¡ }|jr&g d¢}ntjj|jd}|D ]X}|jjdkrPd}n|j	j}|dkr:t
jj|djt ¡ d t |d¡ tdƒ  S q:t |d¡ td	ƒS ©
NrE   rë   rô   r   rB  rC  r¤  rû   r‹   )r
   r5   r:   r    rF   r;   r@   rý   rõ   rþ   r›  r¿   r   rß   r   r¥   r	   r‘   rE  r&   r&   r'   r4   Ô  s    
zdeleteStonecategory.getNrä   r&   r&   r&   r'   r©  Ó  s   r©  c                   @   s"   e Zd Zeeddƒdd„ ƒZdS )Ú	brandListrŠ   r¸   c                 C   sæ   t jj|jjd ¡ }|jr&g d¢}ntjj|jd}|D ]–}|jjdkrPd}n|j	j}|dkr:t
jjdd}|j d¡}|ršt
j t|dt|d	B ¡}t|d
ƒ}|j d¡}	| |	¡}
t|d|
|dœƒ  S q:t |d¡ tdƒS )NrE   rë   rô   r   Trq  r.  )Zbrand_name_english__icontains)Zbrand_name_arabic__icontainsrU   r  zbrand_listing.htmlrt  rû   r‹   )r
   r5   r:   r    rF   r;   r@   rý   rõ   rþ   ÚBrandsr3   r4   r   r   r  r   r   r‘   r	   rw  r&   r&   r'   r4   ê  s&    


zbrandList.getNrä   r&   r&   r&   r'   r«  é  s   r«  c                   @   s*   e Zd Zeeddƒdd„ ƒZdd„ ZdS )ÚaddBrandrŠ   r¸   c                 C   s„   t jj|jjd ¡ }|jr&g d¢}ntjj|jd}|D ]4}|jjdkrPd}n|j	j}|dkr:t
|dƒ  S q:t |d¡ tdƒS )NrE   rë   rô   r   úadd_brand.htmlrû   r‹   rH  rI  r&   r&   r'   r4     s    
zaddBrand.getc                 C   s°   t  |j¡}| ¡ rœtjj|j d¡|j d¡|j d¡|j d¡d}|j	 d¡r€t
|j	 d¡ƒ}ttjƒd | }t|ƒ|_| ¡  t |d¡ td	ƒS t|d
d|iƒS d S )NÚbrand_name_englishÚbrand_name_arabicÚbrand_content_englishÚbrand_content_arabic©r¯  r°  r±  r²  Ú
brand_iconrš   zBrand created succesfullyú/brand-listr®  rŒ   )r   Ú	brandformr   rŽ   r¬  r5   r	  r   r4   rÀ   r‚  rž   r   rŸ   r´  r¡   r   r¥   r	   r   rƒ  r&   r&   r'   r=     s     



ü
zaddBrand.postNrÃ   r&   r&   r&   r'   r­    s   
r­  c                   @   s*   e Zd Zeeddƒdd„ ƒZdd„ ZdS )Ú	editBrandrŠ   r¸   c                 C   sœ   t jj|jjd ¡ }|jr&g d¢}ntjj|jd}|D ]L}|jjdkrPd}n|j	j}|dkr:t
jj|d ¡ }t|dd|iƒ  S q:t |d¡ tdƒS )	NrE   rë   rô   r   úedit_brand.htmlru  rû   r‹   )r
   r5   r:   r    rF   r;   r@   rý   rõ   rþ   r¬  r   r   r‘   r	   r‡  r&   r&   r'   r4   *  s    
zeditBrand.getc                 C   sÀ   t  |j¡}| ¡ r¬tjj|dj|j 	d¡|j 	d¡|j 	d¡|j 	d¡d |j
 	d¡r˜t|j
 	d¡ƒ}ttjƒd | }tjj|djt|ƒd	 t |d
¡ tdƒS t|dd|iƒS d S )NrE   r¯  r°  r±  r²  r³  r´  rš   )r´  zBrand updated successfullyrµ  r¸  rŒ   )r   r¶  r   rŽ   r¬  r5   r:   r¿   r   r4   rÀ   r‚  rž   r   rŸ   r   r¥   r	   r   r‰  r&   r&   r'   r=   =  s    



üzeditBrand.postNrÃ   r&   r&   r&   r'   r·  )  s   
r·  c                   @   s"   e Zd Zeeddƒdd„ ƒZdS )ÚchangeBrandStatusrŠ   r¸   c                 C   sn   t jj|jd d}|jd |_| ¡  |jdkrNt |d¡ t|j	 d¡ƒS t 
|d¡ t|j	 d¡ƒS d S )Nr:  rE   r   r_   zBrand status is activatedr;  zBrand status is deactivated)r¬  r5   r4   r   r   r¡   r   r¥   r   r=  r‘   r>  r&   r&   r'   r=   R  s    
zchangeBrandStatus.postNr@  r&   r&   r&   r'   r¹  Q  s   r¹  c                   @   s"   e Zd Zeeddƒdd„ ƒZdS )ÚdeleteBrandcategoryrŠ   r¸   c                 C   s¨   t jj|jjd ¡ }|jr&g d¢}ntjj|jd}|D ]X}|jjdkrPd}n|j	j}|dkr:t
jj|djt ¡ d t |d¡ tdƒ  S q:t |d¡ td	ƒS rª  )r
   r5   r:   r    rF   r;   r@   rý   rõ   rþ   r¬  r¿   r   rß   r   r¥   r	   r‘   rE  r&   r&   r'   r4   _  s    
zdeleteBrandcategory.getNrä   r&   r&   r&   r'   rº  ^  s   rº  c                   @   s"   e Zd Zeeddƒdd„ ƒZdS )ÚserviceListrŠ   r¸   c                 C   sæ   t jj|jjd ¡ }|jr&g d¢}ntjj|jd}|D ]–}|jjdkrPd}n|j	j}|dkr:t
jjdd}|j d¡}|ršt
j t|d	t|d
B ¡}t|dƒ}|j d¡}	| |	¡}
t|d|
|dœƒ  S q:t |d¡ tdƒS )NrE   rë   rô   r   rï   Trq  r.  )Zenglish_service_name__icontains)Zarabic_service_name__icontainsrU   r  zservice_listing.htmlrt  rû   r‹   )r
   r5   r:   r    rF   r;   r@   rý   rõ   rþ   ÚServicesr3   r4   r   r   r  r   r   r‘   r	   )rˆ   r   r   r  rp   r  rX  r2  r  r  Zservice_objr&   r&   r'   r4   t  s&    


zserviceList.getNrä   r&   r&   r&   r'   r»  s  s   r»  c                   @   s*   e Zd Zeeddƒdd„ ƒZdd„ ZdS )Ú
addServicerŠ   r¸   c                 C   s„   t jj|jjd ¡ }|jr&g d¢}ntjj|jd}|D ]4}|jjdkrPd}n|j	j}|dkr:t
|dƒ  S q:t |d¡ tdƒS )	NrE   rë   rô   r   rï   úadd_service.htmlrû   r‹   rH  rI  r&   r&   r'   r4   Ž  s    
zaddService.getc                 C   s°   t  |j¡}| ¡ rœtjj|j d¡|j d¡|j d¡|j d¡d}|j	 d¡r€t
|j	 d¡ƒ}ttjƒd | }t|ƒ|_| ¡  t |d¡ td	ƒS t|d
d|iƒS d S )NÚenglish_service_nameÚarabic_service_nameÚenglish_service_contentÚarabic_service_content©r¿  rÀ  rÁ  rÂ  Úservice_iconrš   zService created succesfullyú/service-listr¾  rŒ   )r   Úserviceformr   rŽ   r¼  r5   r	  r   r4   rÀ   r‚  rž   r   rŸ   rÄ  r¡   r   r¥   r	   r   rƒ  r&   r&   r'   r=      s     



ü
zaddService.postNrÃ   r&   r&   r&   r'   r½    s   
r½  c                   @   s*   e Zd Zeeddƒdd„ ƒZdd„ ZdS )ÚeditServicerŠ   r¸   c                 C   sœ   t jj|jjd ¡ }|jr&g d¢}ntjj|jd}|D ]L}|jjdkrPd}n|j	j}|dkr:t
jj|d ¡ }t|dd|iƒ  S q:t |d¡ td	ƒS )
NrE   rë   rô   r   rï   úedit_service.htmlru  rû   r‹   )r
   r5   r:   r    rF   r;   r@   rý   rõ   rþ   r¼  r   r   r‘   r	   r‡  r&   r&   r'   r4   ´  s    
zeditService.getc                 C   sÀ   t  |j¡}| ¡ r¬tjj|dj|j 	d¡|j 	d¡|j 	d¡|j 	d¡d |j
 	d¡r˜t|j
 	d¡ƒ}ttjƒd | }tjj|djt|ƒd	 t |d
¡ tdƒS t|dd|iƒS d S )NrE   r¿  rÀ  rÁ  rÂ  rÃ  rÄ  rš   )rÄ  zService updated successfullyrÅ  rÈ  rŒ   )r   rÆ  r   rŽ   r¼  r5   r:   r¿   r   r4   rÀ   r‚  rž   r   rŸ   r   r¥   r	   r   r‰  r&   r&   r'   r=   È  s    



üzeditService.postNrÃ   r&   r&   r&   r'   rÇ  ³  s   
rÇ  c                   @   s"   e Zd Zeeddƒdd„ ƒZdS )ÚchangeServiceStatusrŠ   r¸   c                 C   sn   t jj|jd d}|jd |_| ¡  |jdkrNt |d¡ t|j	 d¡ƒS t 
|d¡ t|j	 d¡ƒS d S )Nr:  rE   r   r_   zService status is activatedr;  zService status is deactivated)r¼  r5   r4   r   r   r¡   r   r¥   r   r=  r‘   r>  r&   r&   r'   r=   Ý  s    
zchangeServiceStatus.postNr@  r&   r&   r&   r'   rÉ  Ü  s   rÉ  c                   @   s"   e Zd Zeeddƒdd„ ƒZdS )ÚdeleteServicecategoryrŠ   r¸   c                 C   s¨   t jj|jjd ¡ }|jr&g d¢}ntjj|jd}|D ]X}|jjdkrPd}n|j	j}|dkr:t
jj|djt ¡ d t |d¡ tdƒ  S q:t |d	¡ td
ƒS )NrE   rë   rô   r   rï   rB  rC  rÅ  rû   r‹   )r
   r5   r:   r    rF   r;   r@   rý   rõ   rþ   r¼  r¿   r   rß   r   r¥   r	   r‘   rE  r&   r&   r'   r4   ê  s    
zdeleteServicecategory.getNrä   r&   r&   r&   r'   rÊ  é  s   rÊ  c                   @   s"   e Zd Zeeddƒdd„ ƒZdS )ÚstoreRequestListingrŠ   r¸   c                 C   sæ   t jj|jjd ¡ }|jr&g d¢}ntjj|jd}|D ]–}|jjdkrPd}n|j	j}|dkr:t
j ¡  d¡}|j d¡}|ršt
j t|d¡jdd	}t|d
ƒ}|j d¡}	| |	¡}
t|d|
|dœƒ  S q:t |d¡ tdƒS )NrE   rë   rô   r   rì   r)  r.  ©Zemail__icontainsr  rU   r  zstore_request_list.html)Ú	store_objr2  rû   r‹   )r
   r5   r:   r    rF   r;   r@   rý   rõ   rþ   ÚStoreRequestsr  r4  r3   r4   r   rG   r   r  r   r   r‘   r	   )rˆ   r   r   r  rp   r  Z
store_datar2  r  r  rÍ  r&   r&   r'   r4   ÿ  s&    


zstoreRequestListing.getNrä   r&   r&   r&   r'   rË  þ  s   rË  c                   @   s"   e Zd Zeeddƒdd„ ƒZdS )ÚviewStoreRequestrŠ   r¸   c                 C   sœ   t jj|jjd ¡ }|jr&g d¢}ntjj|jd}|D ]L}|jjdkrPd}n|j	j}|dkr:t
jj|d ¡ }t|dd|iƒ  S q:t |d¡ td	ƒS )
NrE   rë   rô   r   rì   zview_request_list.htmlrÍ  rû   r‹   ©r
   r5   r:   r    rF   r;   r@   rý   rõ   rþ   rÎ  r   r   r‘   r	   ©rˆ   r   rF   r   r  rp   r  rÍ  r&   r&   r'   r4     s    
zviewStoreRequest.getNrä   r&   r&   r&   r'   rÏ    s   rÏ  c                   @   s*   e Zd Zeeddƒdd„ ƒZdd„ ZdS )ÚdisapproveStoreRequestrŠ   r¸   c                 C   sœ   t jj|jjd ¡ }|jr&g d¢}ntjj|jd}|D ]L}|jjdkrPd}n|j	j}|dkr:t
jj|d ¡ }t|dd|iƒ  S q:t |d¡ td	ƒS )
NrE   rë   rô   r   rì   údisapprove_store_request.htmlrÍ  rû   r‹   rÐ  rÑ  r&   r&   r'   r4   -  s    
zdisapproveStoreRequest.getc                 C   sª   t  |j¡}| ¡ r–tjj|d ¡ }|j 	d¡}tjj|dj
d|d tdd|iƒ}|}tj}|j}	d}
tj|
|||	g|d t |d¡ td	ƒS t|d
d|iƒS d S )NrE   r8   rì   )r   r8   zstore_disapproved_mail.htmlzStore Request Disapprovedrœ   zDisapproved Successfullyú/store-request-listingrÓ  rŒ   )r   Zdisapprovestoreformr   rŽ   rÎ  r5   r:   r;   r   r4   r¿   r   r   r£   r,   r   r¤   r   r¥   r	   r   )rˆ   r   rF   rŒ   rÍ  r8   r   r¨   r©   rª   r§   r&   r&   r'   r=   @  s    zdisapproveStoreRequest.postNrÃ   r&   r&   r&   r'   rÒ  ,  s   
rÒ  c                   @   s"   e Zd Zeeddƒdd„ ƒZdS )ÚapproveStoreRequestrŠ   r¸   c                 C   s2  t jj|jjd ¡ }|jr&g d¢}ntjj|jd}|D ]â}|jjdkrPd}n|j	j}|dkr:t
jj|d ¡ }tƒ }t |¡}	t jj|j|j|j|	dd}
tjj|
jd td||j|jd	œƒ}|}tj}|j}d
}tj||||g|d t
jj|djdd t |d¡ tdƒ  S q:t |d¡ tdƒS )NrE   rë   rô   r   rì   )r»   r¼   r,   r.   Ú	is_sellerrT  zstore_approved.html)r.   r»   r¼   z#Store Request Approved Successfullyrœ   r  zStored Approved SuccessfullyrÔ  rû   r‹   )r
   r5   r:   r    rF   r;   r@   rý   rõ   rþ   rÎ  ZrandomStringFunctionForPwÚhandlerÚhashr	  r»   Úmobile_numberr,   rÛ   r   r   r£   r   r¤   r¿   r   r¥   r	   r‘   )rˆ   r   rF   r   r  rp   r  Z	store_reqZstring_passwordr.   r¦   r   r¨   r©   rª   r§   r&   r&   r'   r4   R  s2    

zapproveStoreRequest.getNrä   r&   r&   r&   r'   rÕ  Q  s   rÕ  c                   @   s"   e Zd Zeeddƒdd„ ƒZdS )ÚstoreListingrŠ   r¸   c              	   C   s`  t jj|jjd ¡ }|jr&g d¢}ntjj|jd}|D ]}|jjdkrRd}n|j	j}|dkr:t
jjddd d¡}|j d	¡}|j d
¡}t ¡  d¡}	|rÄt
jj||d |	 gdd d¡}|j d¡}
|
rt
jjt|
dt|
dB t|
dB t|
dB dd d¡}t|dƒ}|j d¡}| |¡}t|d||||
dœƒ  S q:t |d¡ tdƒS )NrE   rë   rô   r   rì   TrÊ   r)  r*  r+  r,  r-  ©Ústart_date__rangerÆ   r.  )Zstore_name_english__icontains)Zstore_name_arabic__icontains)Zstore_email__icontains)Zstore_number__icontainsrq  rU   r  zstore_listing.html)rÍ  r0  r1  r2  rû   r‹   )r
   r5   r:   r    rF   r;   r@   rý   rõ   rþ   rÛ   r4  r3   r4   r   rß   r5  r   r   r  r   r   r‘   r	   )rˆ   r   r   r  rp   r  rX  r0  r1  r7  r2  r  r  rÍ  r&   r&   r'   r4   r  s0    

":

zstoreListing.getNrä   r&   r&   r&   r'   rÚ  q  s   rÚ  c                   @   s"   e Zd Zeeddƒdd„ ƒZdS )ÚgetStoreDetailsrŠ   r¸   c                 C   s$   t jj|dd ¡ }t|dd|iƒS )NT©rF   rÆ   zstore_details.htmlrÍ  )rÛ   r5   r:   r;   r   )rˆ   r   rF   rÍ  r&   r&   r'   r4   ‘  s    zgetStoreDetails.getNrä   r&   r&   r&   r'   rÝ    s   rÝ  c                   @   s"   e Zd Zeeddƒdd„ ƒZdS )ÚchangeStoreStatusrŠ   r¸   c                 C   s®   t jj|jd d}|jd |_| ¡  t jj|jd d ¡ }tjj|j	d ¡ }|jd |_| ¡  |jdkrŽt
 |d¡ t|j d¡ƒS t
 |d¡ t|j d¡ƒS d S )Nr:  rE   r   r_   zStore status is activatedr;  zStore status is deactivated)rÛ   r5   r4   r   r   r¡   r:   r;   r
   rD   r   r¥   r   r=  r‘   )rˆ   r   r?  rÍ  Z
store_userr&   r&   r'   r=   š  s    
zchangeStoreStatus.postNr@  r&   r&   r&   r'   rß  ™  s   rß  c                   @   s"   e Zd Zeeddƒdd„ ƒZdS )ÚgetAdminNotificationsrŠ   r¸   c                 C   s  t jj|jjd ¡ }|jr&g d¢}ntjj|jd}|D ]´}|jjdkrPd}n|j	j}|dkr:t
jjdd d¡}|j d	¡}d
}|j d¡}	|r¶t
jj||	d | gdd d¡}t|dƒ}
|j d¡}|
 |¡}t|d|||	dœƒ  S q:t |d¡ tdƒS )NrE   rë   rô   r   rí   Trq  r)  r*  z22:44:46.873182+00r+  r-  rÛ  rò   r  zget_admin_notifications.html)Ú
notify_objr0  r1  rû   r‹   )r
   r5   r:   r    rF   r;   r@   rý   rõ   rþ   ÚAdminNotificationsr4  r3   r4   r   r  r   r   r‘   r	   )rˆ   r   r   r  rp   r  Únot_objr0  r7  r1  r  r  rá  r&   r&   r'   r4   ®  s*    
"

zgetAdminNotifications.getNrä   r&   r&   r&   r'   rà  ­  s   rà  c                   @   s"   e Zd Zeeddƒdd„ ƒZdS )ÚdeleteAdminNotificationsrŠ   r¸   c                 C   sÒ   t jj|jjd ¡ }|jr&g d¢}ntjj|jd}|D ]‚}|jjdkrPd}n|j	j}|dkr:|j
 d¡}|r¤dd„ | d	¡D ƒ}tjj|d
 ¡  t |d¡ nt |d¡ tdƒ  S q:t |d¡ tdƒS )NrE   rë   rô   r   rí   Z	delete_idc                 S   s   g | ]}t |ƒ‘qS r&   )Úint)rN   rF   r&   r&   r'   r˜   Ü  rT   z0deleteAdminNotifications.get.<locals>.<listcomp>ú,)Úpk__inzDeleted Sucessfullyz*At least One notification must be selectedú/get-admin-notificationsrû   r‹   )r
   r5   r:   r    rF   r;   r@   rý   rõ   rþ   r3   r4   r±   râ  rd  r   r¥   r‘   r	   )rˆ   r   r   r  rp   r  ÚidsZint_id_listr&   r&   r'   r4   Ì  s$    
zdeleteAdminNotifications.getNrä   r&   r&   r&   r'   rä  Ë  s   rä  c                   @   s"   e Zd Zeeddƒdd„ ƒZdS )ÚreadNotificationrŠ   r¸   c                 C   sž   t jj|jjd ¡ }|jr&g d¢}ntjj|jd}|D ]N}|jjdkrPd}n|j	j}|dkr:t
j ¡  ¡ }d|_| ¡  tdƒ  S q:t |d¡ td	ƒS )
NrE   rë   rô   r   rí   Frè  rû   r‹   )r
   r5   r:   r    rF   r;   r@   rý   rõ   rþ   râ  r  ÚlastÚis_readr¡   r	   r   r‘   )rˆ   r   r   r  rp   r  rã  r&   r&   r'   r4   è  s    
zreadNotification.getNrä   r&   r&   r&   r'   rê  ç  s   rê  c                   @   s"   e Zd Zeeddƒdd„ ƒZdS )ÚmarketingRequestListrŠ   r¸   c                 C   sò   t jj|jjd ¡ }|jr&g d¢}ntjj|jd}|D ]¢}|jjdkrPd}n|j	j}|dkr:t
j ¡  d¡}|j d¡}|r¦t
jjt|dt|d	B d
d d¡}t|dƒ}|j d¡}	| |	¡}
t|d|
|dœƒ  S q:t |d¡ tdƒS )NrE   rë   rô   r   rU   r)  r.  )Úproduct_name)Ú
owner_nameTrq  r  zmarketing_request_list.html)Úreq_objr2  rû   r‹   )r
   r5   r:   r    rF   r;   r@   rý   rõ   rþ   ÚMarketingRequestr  r4  r3   r4   r   r   r  r   r   r‘   r	   )rˆ   r   r   r  rp   r  rX  r2  r  r  rð  r&   r&   r'   r4   ÿ  s&    
&

zmarketingRequestList.getNrä   r&   r&   r&   r'   rí  þ  s   rí  c                   @   s"   e Zd Zeeddƒdd„ ƒZdS )ÚmarketingRequestDetailrŠ   r¸   c                 C   sœ   t jj|jjd ¡ }|jr&g d¢}ntjj|jd}|D ]L}|jjdkrPd}n|j	j}|dkr:t
jj|d ¡ }t|dd|iƒ  S q:t |d¡ td	ƒS )
NrE   rë   rô   r   rU   zmarketing_details.htmlrð  rû   r‹   )r
   r5   r:   r    rF   r;   r@   rý   rõ   rþ   rñ  r   r   r‘   r	   )rˆ   r   rF   r   r  rp   r  rð  r&   r&   r'   r4     s    
zmarketingRequestDetail.getNrä   r&   r&   r&   r'   rò    s   rò  c                   @   s"   e Zd Zeeddƒdd„ ƒZdS )ÚcustomerReportSectionsrŠ   r¸   c                 C   s„   t jj|jjd ¡ }|jr&g d¢}ntjj|jd}|D ]4}|jjdkrPd}n|j	j}|dkr:t
|dƒ  S q:t |d¡ tdƒS )	NrE   rë   rô   r   rð   zcustomer_report.htmlrû   r‹   rH  rI  r&   r&   r'   r4   .  s    
zcustomerReportSections.getNrä   r&   r&   r&   r'   ró  -  s   ró  c                   @   s"   e Zd Zeeddƒdd„ ƒZdS )ÚStoresReportSectionsrŠ   r¸   c                 C   s¸  t jj|jjd ¡ }|jr&g d¢}ntjj|jd}|D ]f}|jjdkrRd}n|j	j}|dkr:g }t
jjddd}tj ¡ }|j d¡}	|j d	¡}
|j d
¡}|j d¡}|j d¡}d}tƒ }|	rî|
rî| t|	|
d | gdtj¡ |r| t|dtj¡ |r&| tt|ƒdtj¡ |rD| tt|ƒdtj¡ tj |¡ d¡}|j d¡}|r€tj t|d¡ d¡}|D ]}| |¡ q„t|dƒ}|j d¡}| |¡}|j d¡}|rntdd}d|d< t |¡}| g d¢¡ |D ]n}|jdkrd}n|jdkrd }nd!}|jdkr4d"}nd#}| |j|jj|j |j!|||j"j#j$jg¡ qö|  S t%j ¡  ¡ }t&|d$|	|
|||||||j'd%œ	ƒ  S q:t( )|d&¡ t*d'ƒS )(NrE   rë   rô   r   rð   TrÊ   r*  r+  Ústore_idÚdelivery_statusÚpayment_statusú11:59:59r-  )Zcreated_at__range)ZproductDetail__product__store)rö  rÈ   r)  r.  ©ZorderId__icontainsrò   r  Ú
csv_exportútext/csv©Úcontent_typeú!attachment; filename="mydata.csv"úContent-Disposition)ZOrderIDÚCustomerú
Order DateúTotal AmountzDelivery StatusúPayment StatusúStore IDr   ZPendingz
On the wayZ	DeliveredÚPaidÚUnpaidzstore_report.html)	r0  r1  Ú	all_orderr2  Ú
stores_objÚstore_id_sendÚdelivery_status_sendÚpayment_status_sendÚ	vat_valuerû   r‹   )+r
   r5   r:   r    rF   r;   r@   rý   rõ   rþ   rÛ   rÚ   r  r3   r4   r   ÚaddÚANDrå  r4  rá   r   r  r   ÚcsvÚwriterÚwriterowrö  rÉ   ÚorderIdÚcustomerr,   Ú
created_atrÝ   ÚproductDetailÚproductÚstoreÚCommissionSectionr   Úvat_percentager   r‘   r	   )rˆ   r   r   r  rp   r  ÚallDatar  Z	order_objr0  r1  rõ  rö  r÷  r7  Úlookupsr2  Úorderr  r  rú  Úresponser  Úrowr  r&   r&   r'   r4   A  sr    


 



.(zStoresReportSections.getNrä   r&   r&   r&   r'   rô  @  s   rô  c                   @   s*   e Zd Zeeddƒdd„ ƒZdd„ ZdS )ÚaddRoleAdminrŠ   r¸   c                 C   s   t j ¡ }t|dd|iƒS )Núadd_role.htmlÚpermission_obj)ÚPermissionsr5   r  r   )rˆ   r   r!  r&   r&   r'   r4     s    
zaddRoleAdmin.getc                 C   sŽ   t  |j¡}| ¡ rz|j d¡}tjj|d}|j 	d¡}|D ]&}t
jj|d ¡ }tjj||d q>t |d¡ tdƒS t|dd	|iƒS d S )
NÚ	role_name©r#  Úpermission_datarE   ©rõ   rþ   zRole created successfullyú/role-listing-adminr   rŒ   )r   Úaddroleformr   rŽ   r   r4   ÚRolesr5   r	  Úgetlistr"  r:   r;   rý   r   r¥   r	   r   )rˆ   r   rŒ   r#  Úrole_idÚ	list_droprp   r!  r&   r&   r'   r=   ’  s    zaddRoleAdmin.postNrÃ   r&   r&   r&   r'   r  Œ  s   
r  c                   @   s"   e Zd Zeeddƒdd„ ƒZdS )ÚroleListingAdminrŠ   r¸   c                 C   sf   t jjdd}|j d¡}|r4t jjt|ddd}t|dƒ}|j d¡}| |¡}t|d||dœƒS )	NTrq  r.  )Zrole_name__icontainsrU   r  zrole_listing.html)Ú	roles_objr2  )	r)  r5   r:   r3   r4   r   r   r  r   )rˆ   r   Zroles_obj_datar2  r  r  r.  r&   r&   r'   r4   ¡  s    

zroleListingAdmin.getNrä   r&   r&   r&   r'   r-     s   r-  c                   @   s*   e Zd Zeeddƒdd„ ƒZdd„ ZdS )ÚeditRoleAdminrŠ   r¸   c                 C   s@   t j ¡ }tjj|dd ¡ }tjj|d}t|d|||dœƒS )NTrÞ  rô   úedit_role.html)Úrole_objrõ   r!  )r"  r5   r  r)  r:   r;   rý   r   )rˆ   r   rF   r!  rõ   r1  r&   r&   r'   r4   ®  s    
zeditRoleAdmin.getc                 C   sÊ   t  |j¡}| ¡ r¶|j d¡}tjj|ddj	|d}|j 
d¡}tjj|d}|D ]}| ¡  qV|D ]8}	tjj|	d ¡ }
tjj|d ¡ }tjj||
d qht |d	¡ td
ƒS t|dd|iƒS d S )Nr#  TrÞ  r$  r%  rô   rE   r&  zRole updated successfullyr'  r0  rŒ   )r   r(  r   rŽ   r   r4   r)  r5   r:   r¿   r*  rý   rd  r"  r;   r	  r   r¥   r	   r   )rˆ   r   rF   rŒ   r#  r+  r,  Zrole_deleterõ   rp   r!  r1  r&   r&   r'   r=   µ  s    
zeditRoleAdmin.postNrÃ   r&   r&   r&   r'   r/  ­  s   
r/  c                   @   s"   e Zd Zeeddƒdd„ ƒZdS )Ú
deleteRolerŠ   r¸   c                 C   s.   t jj|djt ¡ d t |d¡ tdƒS )NrE   rB  rC  r'  )	r)  r5   r:   r¿   r   rß   r   r¥   r	   )rˆ   r   rF   r&   r&   r'   r4   È  s    zdeleteRole.getNrä   r&   r&   r&   r'   r2  Ç  s   r2  c                   @   s"   e Zd Zeeddƒdd„ ƒZdS )ÚsubAdminManagementrŠ   r¸   c                 C   sr   t jjdd d¡}|j d¡}|r@t j t|dt|dB ¡}t|dƒ}|j d¡}| |¡}t	|d	||d
œƒS )NF)Úrole__isnullr)  r.  )Zfull_name__icontainsrÌ  rU   r  zsub_admin_management.html)r¦   r2  )
r
   r5   r:   r4  r3   r4   r   r   r  r   )rˆ   r   Zuser_obj_datar2  r  r  r¦   r&   r&   r'   r4   Ñ  s    

zsubAdminManagement.getNrä   r&   r&   r&   r'   r3  Ð  s   r3  c                   @   s*   e Zd Zeeddƒdd„ ƒZdd„ ZdS )ÚaddSubAdminrŠ   r¸   c                 C   s   t jjdd}t|dd|iƒS )NTrq  úadd_sub_admin.htmlr.  )r)  r5   r:   r   )rˆ   r   Ú
roles_datar&   r&   r'   r4   Þ  s    zaddSubAdmin.getc                 C   sJ  t  |j¡}| ¡ r6|j d¡}|j d¡}|j d¡}|j d¡}|j d¡}|j d¡}|j d¡}	tjj|	dd	 	¡ }
t
jj|||||	|
jd
}| |¡ | ¡  |j d¡rêt|j d¡ƒ}ttjƒd | }t|ƒ|_| ¡  d}td||dœƒ}|}tj}|}tj||||g|d t |d¡ tdƒS t|dd|iƒS d S )Nrº   r»   r¼   r,   r.   Úconfirm_passwordr+  TrÞ  ©rº   r»   r¼   r,   rõ   r#  r½   rš   zSub Admin Detailszsub_admin_mail.htmlr‰   rœ   úAdded successfullyú/sub-admin-managementr6  rŒ   )r   Zaddsubadminformr   rŽ   r   r4   r)  r5   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.   r8  r+  r#  Ú	user_datarÂ   r§   r   r¨   r©   rª   r&   r&   r'   r=   ä  s6    


zaddSubAdmin.postNrÃ   r&   r&   r&   r'   r5  Ý  s   
r5  c                   @   s*   e Zd Zeeddƒdd„ ƒZdd„ ZdS )ÚeditSubAdminrŠ   r¸   c                 C   s4   t jjdd}tjjd|d ¡ }t|d||dœƒS )NTrq  F)r4  rF   úedit_sub_admin.html)r¦   r.  )r)  r5   r:   r
   r;   r   )rˆ   r   rF   r7  r¦   r&   r&   r'   r4     s    zeditSubAdmin.getc                 C   s®   t  |j¡}| ¡ rš|j d¡}|j d¡}|j d¡}|j d¡}|j d¡}tjj|dd 	¡ }	t
jj|dj||||||	jd	}
t |d
¡ tdƒS t|dd|iƒS d S )Nrº   r»   r¼   r,   r+  TrÞ  rE   r9  zUpdated successfullyr;  r>  rŒ   )r   Zeditsubadminformr   rŽ   r   r4   r)  r5   r:   r;   r
   r¿   r#  r   r¥   r	   r   )rˆ   r   rF   rŒ   rº   r»   r¼   r,   r+  r#  r<  r&   r&   r'   r=     s    "zeditSubAdmin.postNrÃ   r&   r&   r&   r'   r=    s   
r=  c                   @   s"   e Zd Zeeddƒdd„ ƒZdS )ÚchangeSubAdminStatusrŠ   r¸   c                 C   sn   t jj|jd d}|jd |_| ¡  |jdkrNt |d¡ t|j	 d¡ƒS t 
|d¡ t|j	 d¡ƒS d S r9  r<  r>  r&   r&   r'   r=     s    
zchangeSubAdminStatus.postNr@  r&   r&   r&   r'   r?    s   r?  c                   @   s*   e Zd Zeeddƒdd„ ƒZdd„ ZdS )ÚaddTranscationWalletrŠ   r¸   c                 C   s   t j ¡ }t|dd|iƒS )Núadd_transcation_wallet.htmlr/  )r3  r5   r  r   )rˆ   r   r/  r&   r&   r'   r4   ,  s    
zaddTranscationWallet.getc                 C   s  t  |j¡}| ¡ r|j d¡}|j d¡}tjj|d 	¡ }|j d¡}|j d¡}d}|dkr tjj|d 	¡ }	t
|	jƒt
|ƒ }
tjj|dj|
d n:tjj|d 	¡ }	t
|	jƒt
|ƒ }
tjj|dj|
d tjj||||||
d	 t |d
¡ tdƒS t|dd|iƒS d S )NÚtypeÚbuyerrE   ÚamountÚreasonZManualÚAddition)Úwallet_amount)rB  rC  rD  rE  Útranscation_typeÚbalancer:  z/transcation-wallet-listrA  rŒ   )r   Zaddtranscationwalletformr   rŽ   r   r4   r3  r5   r:   r;   rå  rG  r¿   ÚWalletr	  r   r¥   r	   r   )rˆ   r   rŒ   rB  rC  r/  rD  rE  rH  Z
amount_objZ
new_amountr&   r&   r'   r=   0  s&    
zaddTranscationWallet.postNrÃ   r&   r&   r&   r'   r@  +  s   
r@  c                   @   s"   e Zd Zeeddƒdd„ ƒZdS )ÚtranscationWalletListrŠ   r¸   c           
      C   sÜ   t j ¡  d¡}|j d¡}|rZt j t|dt|dB t|dB t|dB t|dB ¡}|j d¡}t 	¡  
d	¡}|j d
¡}|r¦t jj||d | gdd d¡}t|dƒ}|j d¡}| |¡}	t|d|	|||dœƒS )Nr)  r.  )Zamount__icontains)Ztype__icontains)Ztranscation_type__icontains)Zorder_id__icontains)Zbuyer__user__id__icontainsr*  r,  r+  r-  TrÛ  rU   r  ztranscation_wallet_list.html)Ú
wallet_objr2  r0  r1  )rJ  r5   r  r4  r3   r4   r:   r   r   rß   r5  r   r  r   )
rˆ   r   rL  r2  r0  r7  r1  r  r  Úwalletr&   r&   r'   r4   L  s    :"

ztranscationWalletList.getNrä   r&   r&   r&   r'   rK  K  s   rK  c                   @   s   e Zd Zdd„ Zdd„ ZdS )ÚgeneralSettingAdminc                 C   s   t j ¡  ¡ }t|dd|iƒS )Núgeneral_settings.htmlZ
commission)r  r5   r  r;   r   )rˆ   r   ZcommissionObjr&   r&   r'   r4   _  s    zgeneralSettingAdmin.getc                 C   sŒ   t  |j¡}| ¡ rx|j d¡}|j d¡}tj ¡  	¡ }|rT||_
||_| ¡  ntjj||d}t |d¡ tdƒS t|dd|iƒS d S )NÚ
vat_numberr  )rP  r  zSaved successfullyz/general-setting-adminrO  rŒ   )r   Zcommissionsectionformr   rŽ   r   r4   r  r5   r  r;   rP  r  r¡   r	  r   r¥   r	   r   )rˆ   r   rŒ   rP  r  Zcommissin_objr&   r&   r'   r=   c  s    
zgeneralSettingAdmin.postNr’   r&   r&   r&   r'   rN  ^  s   rN  c                   @   s"   e Zd Zeeddƒdd„ ƒZdS )ÚStoresInvoiceReportSectionsrŠ   r¸   c                 C   sX  t jj|jjd ¡ }|jr&g d¢}ntjj|jd}|D ]}|jjdkrRd}n|j	j}|dkr:g }t
jjddd}tj ¡ }|j d¡}	|j d	¡}
|j d
¡}|j d¡}|j d¡}d}tƒ }|	rî|
rî| t|	|
d | gdtj¡ |r| t|dtj¡ |r&| tt|ƒdtj¡ tj |¡ d¡}|j d¡}|rbtj t|d¡ d¡}|D ]}| |¡ qft|dƒ}|j d¡}| |¡}|j d¡}|r tdd}d|d< t |¡}| g d¢¡ |D ]>}|jdkrîd}nd}| |j|j|j|j||j jg¡ qØ|  S t!|d|	|
||||||d œƒ  S q:t" #|d!¡ t$d"ƒS )#NrE   rë   rô   r   rð   TrÊ   r*  r+  rõ  rö  r÷  rø  r-  )rÜ  )r  )Úis_paidr)  r.  rù  rò   r  rú  rû  rü  rþ  rÿ  )z
InvoiceNo.r   r  r  r  r  r  r  zstore_service_report.html)r0  r1  r  r2  r  r	  r
  r  rû   r‹   )%r
   r5   r:   r    rF   r;   r@   rý   rõ   rþ   rÛ   ÚServiceInvoicer  r3   r4   r   r  r  rå  r4  rá   r   r  r   r  r  r  rR  Úinvoice_numberÚcustomer_namer*  Útotal_amountr  r   r   r‘   r	   )rˆ   r   r   r  rp   r  r  r  ZserviceInvoice_objr0  r1  rõ  rö  r÷  r7  r  r2  r  r  r  rú  r  r  r  r&   r&   r'   r4   u  sb    


 



&$zStoresInvoiceReportSections.getNrä   r&   r&   r&   r'   rQ  t  s   rQ  )ˆÚurllibr   Údjango.views.generic.baser   Zauth_apis.modelsÚdjango.contrib.authr   r   r   Zdjango.shortcutsr   r	   r
   r   Údjango.httpr   Údjango.http.responser   r-   r   rQ   Ú	functionsÚdjango.template.loaderr   Údjango.corer   Údjango.contribr   Údjango.confr   ÚmathÚpytzrR   Zdjango.contrib.auth.decoratorsr   Údjango.utils.decoratorsr   Zadmin_panel.modelsr   Údjango.core.paginatorr   Údjango.db.modelsr   Ústore_apis.modelsZpasslib.hashr   r×  Zpanel_apis.modelsr   r   r  Ú	functoolsr   r   r+   r9   r>   rC   rH   rJ   r\   rƒ   r„   r–   r«   r·   rÄ   rå   ré   rê   r  r  r  r  r%  r'  r8  rA  rF  rS  rV  rZ  ra  rc  re  rp  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Ý  rß  rà  rä  rê  rí  rò  ró  rô  r  r-  r/  r2  r3  r5  r=  r?  r@  rK  rN  rQ  r&   r&   r&   r'   Ú<module>   sà    
			
##"%&=/ !9&)+-&(&(&)% 	L	' 