
     h"                     >   d dl mZmZmZmZmZmZmZmZ d dl	m
Z
m	Z	mZ d dlmZ d dlmZ  ede      Zej%                  d      d        Zd Zej%                  d	d
dg      d        Zej%                  dd
dg      d        Zej%                  dd
g      d        Zy)    )	Blueprintrender_templaterequestflashredirecturl_forsessioncurrent_app)datedatetime	timedelta)get_db_connectiongenerate_password_hashadmin_bp/c                    
 t        j                  d      dk7  r t        dd       t        t	        d            S t
        j                  j                  dd      j                         } t
        j                  j                  dd	t        
      
d}
d	z
  |z  }t               }|j                         5 }| rV|j                  dd|  df       |j                         d   }d}|j                  |d|  d||f       |j                         }nJ|j                  d       |j                         d   }d}|j                  |||f       |j                         }d d d        |j                          |z  ||z  dk7  rd	ndz   
||
d	kD  
k  
d	z
  
d	z   d	f
fd	d	}t        j                          }	t#        d| ||	      S # 1 sw Y   nxY w)Nroleadmin   Доступ запрещёнdangermain_bp.indexsearch page   )type   z8SELECT COUNT(*) as cnt FROM users WHERE username LIKE %s%cntz
                SELECT * FROM users
                WHERE username LIKE %s
                ORDER BY created_at DESC
                LIMIT %s OFFSET %s
            z!SELECT COUNT(*) as cnt FROM usersz}
                SELECT * FROM users
                ORDER BY created_at DESC
                LIMIT %s OFFSET %s
            r   c                      t        | |      S )N)_iter_pages)leftrightr   pagess     ,/var/www/html/app/blueprints/admin/routes.py<lambda>zadmin_panel.<locals>.<lambda>=   s    +dD%QV2W     )	r   per_pagetotalr%   has_prevhas_nextprev_numnext_num
iter_pagesz
admin.html)usersr   
paginationtoday)r	   getr   r   r   r   argsstripintr   cursorexecutefetchonefetchallcloser   r2   r   )search_queryr)   offsetconncurr*   sql_data	all_usersr1   current_dater   r%   s             @@r&   admin_panelrC   	   s   {{6g%-x8011 <<##Hb1779L<<FAC0DHQh("FD	 '#KKRWXYeXffgUhTjkLLN5)EH KKQ|nA#6&"IJIKK;<LLN5)EH
 KK8V"45I3'4 	JJL h(8A(=11EEAXE\1H1H"#5W
J ::<L [' 's   3B#GGc              #      K   d}t        d|dz         D ]2  }||k  s|| dz
  kD  r|| dz   k  s	|||z
  kD  s!|dz   |k7  rd | |}4 yw)uK   Генератор номеров страниц для пагинации.r   r      N)range)current_pager#   r$   total_pageslastnums         r&   r"   r"   L   sm     DQa( $;3!11cL1<L6LQTWbejWjQjax3
IDs
   2A
A
z/create_userGETPOST)methodsc                  |   t        j                  d      dk7  r t        dd       t        t	        d            S t
        j                  dk(  rt
        j                  j                  d      } t
        j                  j                  d      }t
        j                  j                  dd	      }t
        j                  j                  d
d      }t
        j                  j                  dd      }t
        j                  j                  d      }dj                  |      }t               }|j                         5 }t        |      }	t        j                         }
t        j                         t        d      z   }ddlm} |j$                  d   j                  |      }|dn|}t        j                         t        d      z   }d}|j'                  || |	||||
||||f
       d d d        |j)                          |j+                          t        dd       t        t	        d            S t-        d      S # 1 sw Y   TxY w)Nr   r   r   r   r   rL   usernamepasswordclientsubscription_planstartplacer   available_banks,   )daysr   )r
   PLAN_LIMITSi?B a<  
                INSERT INTO users (
                    username, password_hash, role, place,
                    payment_date, created_at,
                    subscription_plan, parse_count, parse_reset_date,
                    available_banks
                ) VALUES (%s,%s,%s,%s,%s,%s,%s,%s,%s,%s)
            u%   Пользователь созданsuccessadmin_bp.admin_panelzcreate_user.html)r	   r3   r   r   r   r   methodformgetlistjoinr   r7   r   r   utcnowr   flaskr
   configr8   commitr;   r   )rO   rP   r   rR   rT   available_banks_listavailable_banks_strr>   r?   password_hash
created_atpayment_dater
   
plan_limitparse_countparse_reset_datesqls                    r&   create_userrm   X   s   {{6g%-x8011~~<<##J/<<##J/||1#LL,,-@'J  "-&||334EF!hh';< "[[] 	c28<M!*J#??,yb/AAL)$++M:>>?PQJ$.$6&JK'09"3EEC KK-uj!;0@#	 %	0 	

5yA 6788-..=	 	s   5B*H22H;z/edit_user/<int:user_id>c                 
   t        j                  d      dk7  r t        dd       t        t	        d            S t               }|j                         5 }|j                  d| f       |j                         }d d d        |j                          s t        dd       t        t	        d	            S t        j                  d
k(  rt        j                  j                  d|d         }t        j                  j                  d      }t        j                  j                  d|d         }t        j                  j                  d|d         }t        j                  j                  d|d         }t        j                  j                  dt        |d               }	t        j                  j                  dd      }
t        j                  j                  d      }dj                  |      }	 t!        |	      }ddlm} |d   }|
r	  |j&                  |
d      }t               }|j                         5 }d}|j                  ||||||||| f       |r"ddlm}  ||      }|j                  d|| f       d d d        |j-                          |j                          t        dd       t        t	        d	            S t/        d|      S # 1 sw Y   TxY w# t"        $ r |d   }Y w xY w# t"        $ r Y w xY w# 1 sw Y   xY w)Nr   r   r   r   r   zSELECT * FROM users WHERE id=%su*   Пользователь не найденwarningr[   rL   rO   new_passwordrT   rR   rj   rh   r   rU   rV   r   )r   z%Y-%m-%dT%H:%Ma.  
            UPDATE users
               SET username=%s,
                   role=%s,
                   place=%s,
                   subscription_plan=%s,
                   payment_date=%s,
                   parse_count=%s,
                   available_banks=%s
             WHERE id=%s
            r   z-UPDATE users SET password_hash=%s WHERE id=%su%   Изменения сохраненыrZ   zedit_user.html)user)r	   r3   r   r   r   r   r7   r8   r9   r;   r   r\   r]   strr^   r_   r6   
ValueErrorr   strptimewerkzeug.securityr   rc   r   )user_idr>   r?   rq   rO   rp   r   rT   rR   parse_count_strpayment_date_strrd   re   rj   r   pay_daterl   r   pw_hashs                      r&   	edit_userr{      s   {{6g%-x8011D	 #5zB||~ 	JJL:IF 6788~~<<##JZ0@A||''7||V5  $w-8#LL,,-@$GZB[\!,,**=#d=>Q:RS"<<++NB?&||334EF!hh';<	.o.K 	&',8,,-=?OP !"[[] 	ac
C KK$'8+': 
 D0>KgW^M_`)	a* 	

5yA 6788/d;;} .  	.}-K	.  	a 	as=   $K	-K K* 3AK9	KK'&K'*	K65K69Lz/delete_user/<int:user_id>c                 v   t        j                  d      dk7  r t        dd       t        t	        d            S t               }|j                         5 }|j                  d| f       d d d        |j                          |j                          t        dd       t        t	        d	            S # 1 sw Y   IxY w)
Nr   r   r   r   r   zDELETE FROM users WHERE id=%su%   Пользователь удалёнinfor[   )
r	   r3   r   r   r   r   r7   r8   rc   r;   )rv   r>   r?   s      r&   delete_userr~      s    {{6g%-x8011D	 A#3gZ@AKKMJJL	
16:G2344A As   B//B8N)ra   r   r   r   r   r   r   r	   r
   r   r   r   app.databaser   ru   r   __name__r   routerC   r"   rm   r{   r~    r(   r&   <module>r      s    e e e . . * 4Z* 
? ?D	 
8-/ 9-/^ 
*UFODD< ED<L 
,ug>5 ?5r(   