
    &ie^              	       @   d dl mZmZmZmZmZmZmZ d dlm	Z	 d dl
mZmZ d dlmZ  ee      Zde_        dej$                  d<   dej$                  d	<    e	e      Z G d
 dej(                        Z G d dej(                        Z G d dej(                        Z G d dej(                        Z G d dej(                        Z G d dej(                        Z G d dej(                        Z G d dej(                        Z G d dej(                        Z G d dej(                        Z G d dej(                        Zd  Z ejC                  d!d"d#g$      e d%               Z"ejC                  d&d#g$      d'        Z#ejC                  d(d#g$      d)        Z$ejC                  d*d#g$      d+        Z%ejC                  d,d#g$      d-        Z&ejC                  d.d#g$      d/        Z'ejC                  d0d"d#g$      d1        Z(ejC                  d2      d3        Z)ejC                  d4d"d#g$      e d5               Z*ejC                  d6      e d7               Z+ejC                  d8d"d#g$      ejC                  d9d"d#g$      e dld;                     Z,ejC                  d<d#g$      e d=               Z-ejC                  d>d"d#g$      e d?               Z.ejC                  d@d#g$      e dA               Z/ejC                  dBd#g$      e dC               Z0ejC                  dDd"d#g$      e dE               Z1ejC                  dFd#g$      e dG               Z2ejC                  dH      e dI               Z3ejC                  dJd#g$      e dK               Z4ejC                  dLd#g$      e dM               Z5ejC                  dNd#g$      e dO               Z6ejC                  dPd#g$      e dQ               Z7ejC                  dRd#g$      e dS               Z8ejC                  dTd#g$      e dU               Z9ejC                  dVd#g$      e dW               Z:ejC                  dXd#g$      e dY               Z;ejC                  dZd#g$      e d[               Z<ejC                  d\d#g$      e d]               Z=ejC                  d^d#g$      e d_               Z>ej~                  d`        Z@ejC                  da      e db               ZAej                         5  ej                          ej                  j                         d k(  rId dcl
mZ ej                  j                   edd ede      f             ej                  j                          d:d:d:       edgk(  rej                  dhdidjk       y:y:# 1 sw Y   $xY w)m    )Flaskrender_templaterequestredirecturl_forsessionflash)
SQLAlchemy)generate_password_hashcheck_password_hashwrapssuper_secret_keyzsqlite:///portal.dbSQLALCHEMY_DATABASE_URIFSQLALCHEMY_TRACK_MODIFICATIONSc                       e Zd Zej	                  ej
                  d      Zej	                  ej                  d      dd      Zej	                  ej                  d      d      Z	y)	AdminTprimary_key2   Funiquenullable   r   N)
__name__
__module____qualname__dbColumnIntegeridStringusernamepassword_hash     !/var/www/html/admin_portal/app.pyr   r      sN    	2::4	0Byy2teyDHIIbiinuI=Mr'   r   c                       e Zd Zej	                  ej
                  d      Zej	                  ej                  d      dd      Zej                  ddd      Z
y	)
GroupTr   d   Fr   Employeegroup)backreflazyN)r   r   r   r   r    r!   r"   r#   namerelationship	employeesr&   r'   r(   r*   r*      sH    	2::4	0B99RYYs^D59AD
G$GIr'   r*   c                      e Zd Zej	                  ej
                  d      Zej	                  ej                  d      d      Zej	                  ej                  d            Z	ej	                  ej                  d            Z
ej	                  ej
                  ej                  d            Zej                  dd	dd
      Zej                  dd	dd
      Zy)r,   Tr      Fr   x   zgroup.idRustdeskAccountemployeeall, delete-orphanr.   r/   cascade
CredentialN)r   r   r   r   r    r!   r"   r#   	full_name
corp_email	edu_email
ForeignKeygroup_idr1   rustdesk_accountscredentialsr&   r'   r(   r,   r,      s    	2::4	0B		"))C.5	9I299S>*J		"))C.)IyyR]]:%>?H (9:TXbvw//,
Wk/lKr'   r,   c                   h   e Zd Zej	                  ej
                  d      Zej	                  ej
                  ej                  d      d      Zej	                  ej                  d      d      Z
ej	                  ej                  d      d      Zej	                  ej                  d            Zy)	r6   Tr   employee.idFr   r+   r   N)r   r   r   r   r    r!   r"   r?   employee_idr#   computer_namerustdesk_idpasswordr&   r'   r(   r6   r6   "   s    	2::4	0B))BJJm(Du)UKIIbiinuI=M))BIIbME):Kyy3(Hr'   r6   c                      e Zd Zej	                  ej
                  d      Zej	                  ej
                  ej                  d      d      Zej	                  ej                  d      d      Z
ej	                  ej                  d            Zej	                  ej                  d            Zej	                  ej                  d            Zej	                  ej                  d            Zy)	r;   Tr   rD   Fr   r+   r   N)r   r   r   r   r    r!   r"   r?   rE   r#   	site_nameurlloginrH   noter&   r'   r(   r;   r;   )   s    	2::4	0B))BJJm(Du)UK		"))C.5	9I
))BIIcN
#CIIbiin%Eyy3(H99RYYs^$Dr'   r;   c                   R   e Zd Zej	                  ej
                  d      Zej	                  ej                  d      d      Zej	                  ej                  d      d      Z	ej	                  ej                  d            Z
ej	                  ej                  d      d	
      Zy)	QuickLinkTr   r+   Fr   r   
   r   z
is-primary)defaultN)r   r   r   r   r    r!   r"   r#   titlerK   emojicolor_classr&   r'   r(   rO   rO   2   s|    	2::4	0BIIbiinuI5E
))BIIcNU)
3CIIbiim$E))BIIbM<)@Kr'   rO   c                      e Zd Zej	                  ej
                  d      Zej	                  ej                  d            Zej	                  ej                  d      d      Z	ej	                  ej                  d            Z
ej                  dd	dd
      Zej                  dd	dd
      Zej                  dd	dd
      Zy)BuildingTr   r   r4   Fr   r   NetworkSettingbuildingr8   r9   WifiNetworkVideoSurveillanceN)r   r   r   r   r    r!   r"   r#   mesh_idr0   addressr1   networkswifisdvrsr&   r'   r(   rV   rV   :   s    	2::4	0Bii		"&G99RYYs^e94Dii		#'G /$XlmHOOM:DRfOgE??.
Wk?lDr'   rV   c                      e Zd Zej	                  ej
                  d      Zej	                  ej
                  ej                  d      d      Zej	                  ej                  d            Z
ej	                  ej
                        Zej	                  ej                  d            Zej	                  ej                  d            Zej	                  ej                  d            Zej	                  ej                  d            Zej	                  ej                  d            Zej	                  ej"                        Zej	                  ej                  d            Zy)	rW   Tr   building.idFr   r+   r   N)r   r   r   r   r    r!   r"   r?   building_idr#   	vlan_namevlan_numbernetworkmaskgatewaydns1dns2Textstatic_rangesip_countr&   r'   r(   rW   rW   E   s    	2::4	0B))BJJm(Du)UK		"))C.)I))BJJ'Kii		"&G99RYYr]#Dii		"&G99RYYr]#D99RYYr]#DIIbgg&Myy3(Hr'   rW   c                       e Zd Zej	                  ej
                  d      Zej	                  ej
                  ej                  d      d      Zej	                  ej                  d            Z
ej	                  ej                  d            Zy)rY   Tr   ra   Fr   r+   N)r   r   r   r   r    r!   r"   r?   rb   r#   ssidrH   r&   r'   r(   rY   rY   R   se    	2::4	0B))BJJm(Du)UK99RYYs^$Dyy3(Hr'   rY   c                      e Zd Zej	                  ej
                  d      Zej	                  ej
                  ej                  d      d      Zej	                  ej                  d            Z
ej	                  ej                  d            Zej	                  ej                  d            Zej                  dd	dd
      Zy)rZ   Tr   ra   Fr   r+   r4   
DvrAccountdvrr8   r9   N)r   r   r   r   r    r!   r"   r?   rb   r#   dvr_namelocationserial_numberr1   accountsr&   r'   r(   rZ   rZ   X   s    	2::4	0B))BJJm(Du)UKyy3(Hyy3(HIIbiin-M|UOcdHr'   rZ   c                       e Zd Zej	                  ej
                  d      Zej	                  ej
                  ej                  d      d      Zej	                  ej                  d            Z
ej	                  ej                  d            Zy)	rp   Tr   zvideo_surveillance.idFr   r+   r   N)r   r   r   r   r    r!   r"   r?   dvr_idr#   rL   rH   r&   r'   r(   rp   rp   `   sg    	2::4	0BYYrzz2==1H#ITYYZFIIbiin%Eyy3(Hr'   rp   c                 .     t                fd       }|S )Nc                  L    dt         vrt        t        d            S  | i |S )Nadmin_idrL   )r   r   r   )argskwargsfs     r(   decorated_functionz*login_required.<locals>.decorated_functionh   s+    W$GG,--$!&!!r'   r   )r}   r~   s   ` r(   login_requiredr   g   s!    
1X" " r'   z/settings/group/<int:id>/editGETPOST)methodsc                 ,   t         j                  j                  |       }t        j                  dk(  rVt        j
                  d   |_        t        j                  j                          t        dd       t        t        d            S t        d|      S )Nr   r0   u7   Группа успешно переименована.successsettingszedit_group.html)r-   )r*   query
get_or_404r   methodformr0   r   r   commitr	   r   r   r   )r"   r-   s     r(   
group_editr   p   sm     KK""2&E~~\\&)



GS
+,,,E::r'   z#/settings/admin/<int:admin_id>/editc                 p   dt         vrt        d      S t        j                  j	                  |       }t
        j                  j                  d      }t
        j                  j                  d      }|r||_        |rddl	m
}  ||      |_        t        j                   j                          t        d      S )Nrz   /loginadmin_usernameadmin_passwordr   r   	/settings)r   r   r   r   r   r   r   getr$   werkzeug.securityr   r%   r   r   )rz   adminnew_usernamenew_passwordr   s        r(   
edit_adminr   {   s     !!KK""8,E<<##$45L<<##$45L%<4\BJJK  r'   z%/settings/admin/<int:admin_id>/deletec                    dt         vrt        d      S | t        j                  d      k(  ryt        j                  j                  |       }t        j                   j                  |       t        j                   j                          y)Nrz   r   )u1   Нельзя удалить самого себяi  )    )	r   r   r   r   r   r   r   deleter   )rz   r   s     r(   delete_adminr      sd     !! 7;;z**GKK""8,EJJeJJr'   z/settings/admin/addc                     dt         vrt        d      S t        j                  j	                  d      } t        j                  j	                  d      }| r|rt
        j                  j                  |       j                         }|sVddl	m
} t        |  ||            }t        j                   j                  |       t        j                   j                          t        d	      S )
Nrz   r   r   r   r$   r   r   r$   r%   r   )r   r   r   r   r   r   r   	filter_byfirstr   r   r   addr   )r$   rH   existing_adminr   	new_admins        r(   	add_adminr      s     !!|| 01H|| 01HH...AGGI@!4X>I JJNN9%JJK  r'   z/settings/link/addc                  V   dt         vrt        t        d            S t        j                  j                  d      } t        j                  j                  d      }t        j                  j                  d      }|r|j                         dk(  rd}t        j                  j                  d      }|r|j                         dk(  rd	}| rN|rLt        | |||
      }t        j                   j                  |       t        j                   j                          t        t        d            S )Nrz   rL   
link_titlelink_url
link_colorr   z#3498db
link_emojiu   🔗)rR   rK   rT   rS   r   )r   r   r   r   r   r   striprO   r   r   r   )rR   rK   colorrS   new_links        r(   add_linkr      s     ())LL\*E
,,

:
&C LL\*EEKKMR'LL\*EEKKMR'	
 	

x 


GJ'((r'   z!/settings/link/<int:link_id>/editc                    dt         vrt        t        d            S t        j                  j                  |       }t        j                  j                  d      |_	        t        j                  j                  d      |_
        t        j                  j                  d      |_        t        j                  j                  d      |_        t        j                   j                          t        t        d            S )Nrz   rL   r   r   r   r   r   )r   r   r   rO   r   r   r   r   r   rR   rK   rT   rS   r   r   )link_idlinks     r(   	edit_linkr      s     ()) ??%%g.D!!,/DJ||
+DH||''5D!!,/DJJJGJ'((r'   r   c                     t         j                  dk(  rt        j                  j	                  t         j
                  d         j                         } | rZt        | j                  t         j
                  d         r3| j                  t        d<   t        dd       t        t        d            S t        d	d
       t        d      S )Nr   r$   r   rH   rz   u+   Успешный вход в системуr   r2   uS   Ошибка авторизации. Проверьте логин и пароль.dangerz
login.html)r   r   r   r   r   r   r   r   r%   r"   r   r	   r   r   r   )users    r(   rL   rL      s    ~~{{$$gll:.F$GMMO'(:(:GLL<TU"&''GJ?KGK011cemn<((r'   z/logoutc                  j    t        j                          t        dd       t        t	        d            S )Nu$   Вы вышли из системы.inforL   )r   clearr	   r   r   r&   r'   r(   logoutr      s&    MMO	
0&9GG$%%r'   z
/employeesc                     t         j                  dk(  rdt         j                  v rt         j                  j                  d      } | rt        j
                  j                  |       j                         }|sVt	        |       }t        j                  j                  |       t        j                  j                          t        dd       nt        dd       t        t        d	            S t        j
                  j                         }t         j
                  j                  d 
      j                         }t#        d||      S )Nr   	add_group
group_namer0   u/   Группа успешно добавлена!r   uJ   Группа с таким названием уже существует.r   r2   )r@   zemployees.html)groupsno_group)r   r   r   r   r*   r   r   r   r   r   r   r   r	   r   r   allr,   r   )r   existing_group	new_groupr   r   s        r(   r2   r2      s     ~~',,& )),7J!&!6!6J!6!G!M!M!O% %: 6IJJNN9-JJ%%'KYWfhpqGK011 [[__F~~'''6::<H+FXNNr'   z/employee/<int:id>c                     t         j                  j                  |       }t        j                  j	                         }t        d||      S )Nzemployee_detail.htmlempr   )r,   r   r   r*   r   r   )r"   r   r   s      r(   employee_detailr     s8     ..
#
#B
'C[[__F1s6JJr'   z/employee/addz/employee/<int:id>/editNc           	         | rt         j                  j                  |       nd }t        j                  j	                         }t
        j                  dk(  rt
        j                  j                  dd      }t
        j                  j                  dd      }t
        j                  j                  dd      }t
        j                  j                  d      }|s)t               }t        j                  j                  |       ||_        ||_        ||_        |rt        |      nd |_        t        j                  j!                          t
        j                  j                  d      }|r|j#                  dd      }|j%                         rut'        |j(                  d	|t
        j                  j                  d
d            }	t        j                  j                  |	       t        j                  j!                          nt+        dd       t+        dd       t-        t/        d|j(                              S t1        d||      S )Nr   r<   r   r=   r>   r@   rG    u   Основной ПКrustdesk_passwordrE   rF   rG   rH   u}   Профиль сохранен, но RustDesk ID пропущен (должен содержать только цифры).warningu5   Данные сотрудника сохранены.r   r   r"   zemployee_form.htmlr   )r,   r   r   r*   r   r   r   r   r   r   r   r<   r=   r>   intr@   r   replaceisdigitr6   r"   r	   r   r   r   )
r"   r   r   r<   r=   r>   gid	raw_rd_idrd_idrds
             r(   employee_formr     s    %'(..

R
 DC[[__F~~LL$$["5	\\%%lB7
LL$$["5	llz**CJJNN3!#!#&s3xD


 LL$$]3	%%c2.E}}$ #"9 %$\\--.A2F	 

r"

!!#  V  Xa  bEyQ 1cff=>>/SHHr'   z/employee/<int:id>/deletec                     t         j                  j                  t        j                  j                  |              t         j                  j                          t        dd       t        t        d            S )Nu    Сотрудник удален.r   r2   )
r   r   r   r,   r   r   r   r	   r   r   r   s    r(   employee_deleter   ?  sP     JJhnn//34JJ	
,i8GK())r'   r   c                     t         j                  dk(  rdt         j                  v rHt        j                  j                  t        t         j                  d                t        dd       ndt         j                  v rdt        t         j                  d         } t        j                  j                  t        t         j                  d	   | 
             t        dd       ndt         j                  v r~t        t         j                  d   t         j                  d   t         j                  d   t         j                  d         }t        j                  j                  |       t        dd       t        j                  j                          t        t        d            S t        dt        j                  j!                         t        j                  j!                         t        j                  j!                               S )Nr   r   r   r   u    Группа добавлена.r   r   r   r   r   u,   Администратор добавлен.r   r   r   r   r   )rR   rK   rS   rT   u/   Быстрая ссылка добавлена.r   zsettings.html)r   adminslinks)r   r   r   r   r   r   r*   r	   r   r   rO   r   r   r   r   r   r   )pwr   s     r(   r   r   H  sP    ~~',,&JJNN5gll<&@AB4i@GLL('5E(FGBJJNN5',,7G*HXZ[\@)L7<<' ll<0LL,ll<0#LL6	H JJNN8$CYO



+,,?"'++//"3"'++//"3!*!4!4!68 8r'   z/settings/link/<int:id>/deletec                     t         j                  j                  t        j                  j                  |              t         j                  j                          t        t        d            S Nr   )	r   r   r   rO   r   r   r   r   r   r   s    r(   link_deleter   d  sE     JJioo0045JJGJ'((r'   z/settings/group/<int:id>/deletec                     t         j                  j                  t        j                  j                  |              t         j                  j                          t        t        d            S r   )	r   r   r   r*   r   r   r   r   r   r   s    r(   group_deleter   k  sE     JJekk,,R01JJGJ'((r'   z
/buildingsc                     t         j                  dk(  rt        t         j                  j	                  d      t         j                  d   t         j                  j	                  d            } t
        j                  j                  |        t
        j                  j                          t        dd       t        t        d            S t        j                  j                         }t        d	|
      S )Nr   r[   r0   r\   )r[   r0   r\   u/   Здание успешно добавлено.r   	buildingszbuildings.html)r   )r   r   rV   r   r   r   r   r   r   r	   r   r   r   r   r   )new_buildingall_buildingss     r(   r   r   s  s     ~~LL$$Y/f%LL$$Y/

 	

|$


?K,--NN&&(M+}EEr'   z/building/<int:id>/deletec                     t         j                  j                  |       }t        j                  j                  |       t        j                  j                          t        dd       t        t        d            S )NuJ   Здание и вся его инфраструктура удалены.r   r   )
rV   r   r   r   r   r   r   r	   r   r   r"   rX   s     r(   delete_buildingr     sV     ~~((,HJJhJJ	
VXabGK())r'   z/building/<int:id>c                 Z    t         j                  j                  |       }t        d|      S )Nzbuilding_detail.html)b)rV   r   r   r   r   s     r(   building_detailr     s&     ~~((,H1X>>r'   z/building/<int:id>/network/addc                    t         j                  j                  |        t        | t        j
                  j                  d      t        j
                  j                  d      t        j
                  j                  d      t        j
                  j                  d      t        j
                  j                  d      t        j
                  j                  d      t        j
                  j                  d      t        j
                  j                  d      t        j
                  j                  d	      

      }t        j                  j                  |       t        j                  j                          t        t        d|             S )Nrc   rd   re   rf   rg   rh   ri   rk   rl   )
rb   rc   rd   re   rf   rg   rh   ri   rk   rl   r   r   )rV   r   r   rW   r   r   r   r   r   r   r   r   r   )r"   nets     r(   add_networkr     s     NNb!
,,"";/LL$$]3  +\\f%  +\\f%\\f%ll&&7!!*-C JJNN3JJG-"566r'   z/building/<int:id>/wifi/addc                 8   t        | t        j                  j                  d      t        j                  j                  d            }t        j
                  j                  |       t        j
                  j                          t        t        d|             S )Nrn   rH   )rb   rn   rH   r   r   )
rY   r   r   r   r   r   r   r   r   r   )r"   wifis     r(   add_wifir     sd     2GLL,<,<V,Dw||O_O_`jOklDJJNN4JJG-"566r'   z/building/<int:id>/dvr/addc                 t   t        | t        j                  j                  d      t        j                  j                  d      t        j                  j                  d            }t        j
                  j                  |       t        j
                  j                          t        t        d|             S )Nrr   rs   rt   )rb   rr   rs   rt   r   r   )
rZ   r   r   r   r   r   r   r   r   r   )r"   rq   s     r(   add_dvrr     s|     !!*-!!*-ll&&7	C JJNN3JJG-"566r'   z/dvr/<int:dvr_id>/account/addc                    t         j                  j                  |       }t        | t        j
                  j                  d      t        j
                  j                  d            }t        j                  j                  |       t        j                  j                          t        t        d|j                              S )NrL   rH   )rw   rL   rH   r   r   )rZ   r   r   rp   r   r   r   r   r   r   r   r   r   rb   )rw   rq   accs      r(   add_dvr_accountr     s~     
!
!
,
,V
4C
F',,*:*:7*CgllN^N^_iNj
kCJJNN3JJG-#//BCCr'   z!/delete_item/<item_type>/<int:id>c                 N   d }d }| dk(  r,t         j                  j                  |      }|j                  }n| dk(  r,t        j                  j                  |      }|j                  }nk| dk(  r,t
        j                  j                  |      }|j                  }n:| dk(  r5t        j                  j                  |      }|j                  j                  }|r=t        j                  j                  |       t        j                  j                          t        t        d|            S )Nre   r   rq   dvr_accountr   r   )rW   r   r   rb   rY   rZ   rp   rq   r   r   r   r   r   r   )	item_typer"   itemb_ids       r(   delete_itemr     s     DDI##..r2	f	  ++B/	e	 &&11"5	m	#**2.xx##


$


G-$788r'   z/employee/<int:id>/rustdesk/addc                 "   t         j                  j                  |        t        j                  j                  dd      }dj                  t        t        j                  |            }t        | t        j                  j                  d      |t        j                  j                  d            }t        j                  j                  |       t        j                  j                          t        dd       t!        t#        d| 	            S )
NrG   r   rF   rH   r   u8   Учетная запись RustDesk добавлена!r   r   r   )r,   r   r   r   r   r   joinfilterstrr   r6   r   r   r   r   r	   r   r   )r"   raw_idclean_idr   s       r(   add_rustdeskr    s     NNb! \\mR0Fwwvckk623H	ll&&7!!*-	
B JJNN2JJ	
DiPG-"566r'   z/rustdesk/<int:id>/deletec                     t         j                  j                  |       }|j                  }t        j
                  j                  |       t        j
                  j                          t        t        d|            S Nr   r   )
r6   r   r   rE   r   r   r   r   r   r   )r"   r   emp_ids      r(   delete_rustdeskr    sX     
			)	)"	-B^^FJJbJJG-&9::r'   z/rustdesk/<int:id>/editc                    t         j                  j                  |       }t        j                  j                  dd      }dj                  t        t        j                  |            }t        j                  j                  d      |_
        ||_        t        j                  j                  d      |_        t        j                  j                          t!        dd       t#        t%        d|j&                              S )	NrG   r   rF   rH   uG   Учетная запись RustDesk успешно обновлена!r   r   r   )r6   r   r   r   r   r   r   r   r   r   rF   rG   rH   r   r   r   r	   r   r   rE   )r"   r   r   r   s       r(   edit_rustdeskr    s     
			)	)"	-B \\mR0Fwwvckk623H ||''8BBN,,"":.BK JJ	
SU^_ G-"..ABBr'   z/credential/<int:id>/editc                 <   t         j                  j                  |       }t        j                  j                  d      |_        t        j                  j                  d      |_        t        j                  j                  d      |_        t        j                  j                  d      |_	        t        j                  j                  d      |_
        t        j                  j                          t        dd       t        t!        d|j"                  	            S )
NrJ   rK   rL   rH   rM   u;   Доступ к сайту успешно обновлен!r   r   r   )r;   r   r   r   r   r   rJ   rK   rL   rH   rM   r   r   r   r	   r   r   rE   r"   creds     r(   edit_credentialr    s     &&r*D \\%%k2DN||&DH!!'*DJLL$$Z0DM  (DI JJ	
GS G-$2B2BCDDr'   z!/employee/<int:id>/credential/addc           
      B   t         j                  j                  |        t        | t        j
                  j                  d      t        j
                  j                  d      t        j
                  j                  d      t        j
                  j                  d      t        j
                  j                  d            }t        j                  j                  |       t        j                  j                          t        dd       t        t        d	| 
            S )NrJ   rK   rL   rH   rM   )rE   rJ   rK   rL   rH   rM   u/   Данные сервиса добавлены!r   r   r   )r,   r   r   r;   r   r   r   r   r   r   r   r	   r   r   r	  s     r(   add_credentialr  &  s     NNb!,,"";/LLU#llw'!!*-\\f%D JJNN4JJ	
;YGG-"566r'   z/credential/<int:id>/deletec                     t         j                  j                  |       }|j                  }t        j
                  j                  |       t        j
                  j                          t        t        d|            S r  )
r;   r   r   rE   r   r   r   r   r   r   )r"   r
  r  s      r(   delete_credentialr  7  sZ     &&r*DFJJdJJG-&9::r'   c                  f    dt         v r(dt        j                  j                  t         d         iS i S )Nrz   current_admin)r   r   r   r   r&   r'   r(   inject_adminr  A  s,    W1D!EFFIr'   /c                  X    t         j                  j                         } t        d|       S )Nz
index.htmlr   )rO   r   r   r   r  s    r(   indexr  G  s#     OO!E<u55r'   r   r   admin123r   __main__z0.0.0.0i  T)hostportdebug)N)Iflaskr   r   r   r   r   r   r	   flask_sqlalchemyr
   r   r   r   	functoolsr   r   app
secret_keyconfigr   Modelr   r*   r,   r6   r;   rO   rV   rW   rY   rZ   rp   r   router   r   r   r   r   r   rL   r   r2   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r  context_processorr  r  app_context
create_allr   countr   r   runr&   r'   r(   <module>r)     s   T T T ' I Ho#(=

$ %/4

+ ,_>BHH >
HBHH H
	mrxx 	m)bhh )% %A A	mrxx 	m)RXX ))"(( )e e) ) *UFOD;  E; 06(C! D!$ 2VHE F  6(3! 4!, &2) 3): .A) B) 8eV_-) .) 9& & <%1O  2O,  K  !K
 ?UFO4$ufo>(I  ? 5(IT &9*  :* ;08  184 +fX>)  ?)
 ,vh?)  @) <%1F  2F &9*  :*  ?  !? +fX>7  ?7$ (6(;7  <7 '&:	7  ;	7 *VH=D  >D .A9  B9, ,vh?7  @7$ &9;  :; $vh7C  8C* &9E  :E& .A7  B7 (6(;;  <;  
 36  6 	__ MMO {{a<


ug=ST^=_`a


 zGGTG2  s   :A7VV