o u£�d¹Qã@süddlZddlmZmZmZmZmZmZddlZddl Z ddl m Z ddl m Z ddl mZm Z mZmZddlmZddl mZddlZddlmZdd lmZmZmZdd lmZmZdd lmZdd lmZdd l m Z ddl m!Z!ddl"m#Z#ddlm$Z%ddl&m'Z'ddl(Z(ddl)Z)ddlm$Z$ddl*Z*e' +¡�×e e'ƒZ e!e'ƒZ,de,_-dd„Z.Gdd„deƒZ/Gdd„deej0ƒZ1Gdd„dej0ƒZ2Gdd„dej0ƒZ3ede4dd�Z5e!e%ƒZ,e,j6d d!„ƒZ7e5j8d"d#d$gd%�d&d'„ƒZ9e5j8d(d#d$gd%�d)d„ƒZ:e5 8d*¡ed+d,„ƒƒZ;e5 8d-¡d.d/„ƒZe5 8d6¡ed7d8„ƒƒZ?e5j8d9d#gd%�ed:d;„ƒƒZ@e5j8d„ƒƒZAe5j8d?d#gd%�ed@dA„ƒƒZBe5 8dB¡edCdD„ƒƒZCe' De5¡WdƒdS1�swwYdS)EéN)ÚFlaskÚ BlueprintÚjsonifyÚrender_templateÚredirectÚurl_for)Ú current_user)Úbcrypt)Ú login_userrÚ logout_userÚlogin_required)Údatetime)Ú UserMixin)Ú FlaskForm)Ú StringFieldÚ PasswordFieldÚ SubmitField)Ú DataRequiredÚLength)Úrequest)Údb)ÚBcrypt)Ú LoginManager)ÚMigrate)Ú current_app)ÚappÚlogincs6t ¡jdd…‰d ‡fdd„tdtˆƒdƒDƒ¡S)Né Úcsg|] }ˆ||d…‘qS)é©)Ú.0Úi©Z generated_idr ú9C:\Users\sv-work\PycharmProjects\k2root\k2root\k2\root.pyÚ #szgenerate_id..rr)ÚuuidÚuuid4ÚhexÚjoinÚrangeÚlenr r r#r$Ú generate_id!s$r,c@s>eZdZedeƒeddd�gd�Zedeƒgd�Ze dƒZ dS) Ú LoginFormZUsernameéé)ÚminÚmax)Ú validatorsZPasswordZLoginN) Ú__name__Ú __module__Ú __qualname__rrrÚusernamerÚpasswordrÚsubmitr r r r$r-%s r-c@s eZdZdZdZddiZeje d¡de d�Z e e d¡¡Z e ej ¡Z e e d¡¡Ze e d¡¡Ze e d¡¡Ze e d¡¡Ze e d ¡¡Ze e d¡¡Ze e d¡¡Ze ej¡Ze ej¡Ze e d¡¡Ze ej¡Ze e d¡¡Zd d „Zd S) ÚUserÚdb2ÚuserÚextend_existingTé$©Ú primary_keyÚdefaulté2édr/cCód|j›d�S©Nz©r6©Úselfr r r$Ú__repr__?óz User.__repr__N)r3r4r5Ú __bind_key__Ú __tablename__Ú__table_args__rÚColumnÚStringr,Úidr6ÚBooleanZactiveÚ last_nameZ first_nameZ middle_nameÚemailZphoneZrightsZ manufacturerÚIntegerZmanufacturer_idÚDateTimeZ created_dateZ created_byZ oblast_idr7rIr r r r$r9*s(     r9c@s¢eZdZdZdZddiZeje d¡de d�Z e e d¡¡Z e ej ¡Z e e d¡¡Ze ej¡Ze ej¡Ze ej¡Ze e d¡¡Zd d „Zd d „Zd S) ÚRoler:Úroler<Tr=r>rArBcCrC)NzrBF)ÚnullableéÈr/)r@cCs(||_||_||_||_||_||_dS©N©rYÚ descriptionÚversionÚgit_linkÚ dependenciesÚ installed)rHrYrcrdrerfrgr r r$Ú__init__`s  zComponent.__init__cCsd|j›d|j›d�S)Nz Component('z', 'ú'))rYrdrGr r r$rIgszComponent.__repr__cCs tj t¡ tj|k¡ ¡}|Sra)rÚsessionÚqueryr]ÚfilterrPÚfirst)rHZrep_idr^r r r$Úget_repository_by_idiszComponent.get_repository_by_idN)r3r4r5rKrLrMrrNrOr,rPrYrcrdrerfrUr ÚutcnowZdate_installedrQrgrhrIÚ classmethodrnr r r r$r]Ss  r]Ú componentsÚ templates)Útemplate_foldercCs tj |¡Sra)r9rkÚget)Zuser_idr r r$Ú load_userps ruú/ÚGETÚPOST)ÚmethodscCstjrtdƒStdƒS)Nú /dashboardú/login)rÚis_authenticatedrr r r r$Úhometsr}r{cCs„tƒ}| ¡r<|jj}|jj}tjj|d� ¡}|r)t   |j|¡r)t |ƒt dƒSd|›d|›d|j›�}t d||d�St d|d�S)NrFrzuHÐ�еправильне ім`Ñ� кориÑ�тувача чи пароль ú z /login.html)ÚformÚ error_message)r)r-Zvalidate_on_submitr6Údatar7r9rkÚ filter_byrmr Úcheck_password_hashr rr)rr6r7r;r€r r r$r}s z/logoutcCstƒtdƒS)Nr{)r rr r r r$Úlogout‘sr„rzc s¶tjstdƒSzt d¡}| ¡}dd„|Dƒ}Wnd}Ytj ¡}dd„|Dƒ}tjr8tj }t j ¡}nd}t j  d¡‰g}ˆrN‡fdd„|Dƒ}n|}t d |||||ˆd �S) Nr{ú$http://127.0.0.1:8001/api/componentscSsg|]}|‘qSr r )r!Úitemr r r$r% szdashboard..cSsg|]}|j‘qSr rX©r!r^r r r$r%¦srÚ search_querycsRg|]%}|drˆ ¡|d ¡vs%n |dr#ˆ ¡|d ¡vrn q|‘qS)rYFrc)Úlowerr‡©rˆr r$r%´sÿÿÿÿþzdashboard.html)r6ZusersrqÚcomponents_namesÚcomponent_serverrˆ)rr|rÚrequestsrtÚjsonr]rkÚallr6r9rÚargsr)ÚresponseÚ json_datarŒrqr‹r6Z users_dataZfiltered_componentsr rŠr$Ú dashboard–s.     þr“z&/show_components/cs6t d¡}| ¡}t‡fdd„|Dƒdƒ}td|d�S)Nr…c3ó �|] }|dˆkr|VqdS©rPNr r‡©Ú component_idr r$Ú Äó€z"show_components..zcomponent-info.html)Úselected_component)r�rtrŽÚnextr)r—r‘r’ršr r–r$Úshow_components¿s  rœz,/install_components_bl/c s”d}t d¡}| ¡}t‡fdd„|Dƒdƒ}|d}tj ||¡}|d}zŠtj |¡s2t |¡tj |d¡}tj |¡sFt |dƒ  ¡d d d d d d|d|g} t   | ¡d} |d} t | dƒ�} |   d¡|   | ¡|   d¡Wdƒn1s}wYtjj|dd� ¡} | s®t|d|d|d|d|ddd�}tj |¡tj ¡dWSt jyÉ}z dt|ƒWYd}~Sd}~ww)Nrqr…c3r”r•r r‡r–r r$r˜Ïr™z(install_components_bl..rYrez __init__.pyÚazvenv/Scripts/python.exez-mZpipÚinstallz --use-pep517zgit+z --target=ú routes.pyrfÚ rXrcrdTrbzOInstalled successfully zError installing : )r�rtrŽr›ÚosÚpathr)ÚexistsÚmakedirsÚopenÚcloseÚ subprocessÚ check_callÚwriter]rkr‚rmrrjÚaddÚcommitÚCalledProcessErrorÚstr)r—Úproject_folderr‘r’ršÚrepository_nameÚrepository_folderZ git_repo_urlZ init_fileÚcommandÚ file_pathÚcodeÚfiler^Z new_componentÚer r–r$Úinstall_components_blÇsN         üú €ÿr¶z)/install_components/c sbd}t d¡}| ¡}t‡fdd„|Dƒdƒ}|durdS|d}|d}zñtj |¡}tj|dd �tj|dd �}| ¡tj ||d ›d �¡}t |d ƒ�} |j dd�D]} |   | ¡qVWdƒn1shwYt   |d¡� } |  |¡Wdƒn1sƒwYt |¡d} d|d ›d|d ›d|d ›d|d ›d|d ›d� } t | dƒ�} |   d¡|   | ¡|   d¡Wdƒn1sÊwYtjj|d d� ¡}|sót|d |d||d| dd�}tj |¡n||_|d|_| |_d|_tj ¡d|d ›d|›d |d ›d!�WSt�y0}z d"t|ƒ›�WYd}~Sd}~ww)#Nrqr…c3r”r•r r‡r–r r$r˜r™z1install_component_from_archive..zComponent not foundZlatest_component_dataZlatest_versionT)Úexist_ok)ÚstreamrYz.zipÚwbi )Ú chunk_sizeÚrrŸzfrom components.Ú.z.views import z app.register_blueprint(z, url_prefix='/rir�r rXrcrerbz"Component installed successfully: z vzh, please wait installing requirments... zError installing component: )r�rtrŽr›r¡r¢r)r¤Zraise_for_statusr¥Z iter_contentr©ÚzipfileÚZipFileÚ extractallÚremover]rkr‚rmrrjrªrdrerfrgr«Ú Exceptionr­)r—r®r‘r’ršZ archive_urlrdZcomponent_folderZ archive_pathr´ÚchunkZzip_refr²r³r^rµr r–r$Úinstall_component_from_archive sf    ÿÿ ÿ 8    üú  "€ÿrÃz5/install-requirments/cCsDtj d|d¡}tj |¡r tjd›d|›�}tj|ddd�dS)Nrqzrequirements.txtÚ VENV_BIN_PATHz/python -m pip install -r T)ÚshellÚcheckz]Requirements installed successfully: )r¡r¢r)ÚisfilerÚconfigr§Úrun)Zselected_component_nameZrequirements_fileZ pip_commandr r r$Úinstall_requirmentsVs  rÊz*/remove_dependencies/cs¤tj |¡‰ˆs dSd}t|dƒ� }| ¡}Wdƒn1s wY‡fdd„|Dƒ}t|dƒ� }| |¡Wdƒn1sCwYdˆ_tj  ¡dS) NúLComponent not found rŸr»csg|] }| ¡ˆjvr|‘qSr )Ústriprf)r!Úline©r^r r$r%qsz'remove_dependencies..ÚwFzZDependencies removed successfully ) r]rkrtr¥Ú readlinesÚ writelinesrgrrjr«)r—r²r´ÚlinesZ updated_linesr rÎr$Úremove_dependencies`s   ÿ  ÿ rÓz'/add_dependencies/cCsftj |¡}|s dSd}|j}t|dƒ� }| |¡Wdƒn1s$wYd|_tj  ¡dS)NrËrŸr�TzXDependencies added successfully ) r]rkrtrfr¥r©rgrrjr«)r—r^r²r³r´r r r$Úadd_dependencies}s   þ rÔz'/remove-component/c CsŒd}tj |¡}|j}tj ||¡}ztj |¡rt  |¡|r+t j   |¡t j   ¡WdStyE}z dt|ƒWYd}~Sd}~ww)NrqzWComponent removed successfully zError removing component: )r]rkrtrYr¡r¢r)r£ÚshutilÚrmtreerrjÚdeleter«rÁr­)r—r®r^r¯r°rµr r r$Úremove_component“s     €þrØ)Er½Úflaskrrrrrrr¡rÕZ flask_loginrZ flask_bcryptr r r r r rr&Z flask_wtfrZwtformsrrrZwtforms.validatorsrrrÚ db.databaserrrZ flask_migraterrÚk2Úmainrr�r§ÚstringÚ app_contextZ login_managerZ login_viewr,r-ÚModelr9rVr]r3Z components_bpZ user_loaderruÚrouter}rr„r“rœr¶rÃrÊrÓrÔrØÚregister_blueprintr r r r$Ús�                    (  B I     ���$ì