o ©Õ†dNã@stddlZddlmZmZmZmZmZmZmZm Z ddl Z ddl Z ddl m Z ddl Z ddlmZddlmZddlmZddlmZddlZddlZddlmZddlZdd lmZdd lmZe ¡�Ëd d „ZGd d„dejƒZ ede!dd�Z"e #e$dƒ¡Z%dd„Z&dd„Z'ej(dddgd�e&dd„ƒƒZ)ej(dddgd�dd„ƒZ*e (d ¡d!d"„ƒZ+e" (d#¡d$d%„ƒZ,e" (d&¡e&d'd(„ƒƒZ-e" (d)¡e&d*d+„ƒƒZ.e" (d,¡e&d-d.„ƒƒZ/e" (d/¡e&d0d1„ƒƒZ0e"j(d2dgd�e&d3d4„ƒƒZ1e" (d5¡e&d6d7„ƒƒZ2e"j(d8dgd�e&d9d:„ƒƒZ3e"j(d;dgd�e&d¡e&d?d@„ƒƒZ5e 6e"¡WdƒdS1�s3wYdS)AéN)ÚFlaskÚ BlueprintÚjsonifyÚrender_templateÚredirectÚurl_forÚsessionÚg)Údatetime)Úrequest)Údb)ÚMigrate)Úapp)Ú current_app©Úwraps)Ú get_localecs6t ¡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ÚlenrrrrÚ generate_ids$r"c@sÀeZdZdZdZddiZeje d¡de d�Z eje d¡dd �Z e e d ¡¡Z e e d ¡¡Z e e d ¡¡Ze ej¡Zejejejd �Zejejdd �Zd d„Zdd„Zedd„ƒZdS)Ú ComponentÚdb2Ú componentÚextend_existingTé$)Ú primary_keyÚdefaultédF)ÚnullableéÈé)r)cCs(||_||_||_||_||_||_dS©N©ÚnameÚ descriptionÚversionÚgit_linkÚ dependenciesÚ installed)Úselfr0r1r2r3r4r5rrrÚ__init__&s  zComponent.__init__cCsd|j›d|j›d�S)Nz Component('z', 'ú'))r0r2)r6rrrÚ__repr__-szComponent.__repr__cCs tj t¡ tj|k¡ ¡}|Sr.)r rÚqueryr#ÚfilterÚidÚfirst)r6Zrep_idr%rrrÚget_repository_by_id/szComponent.get_repository_by_idN)Ú__name__Ú __module__Ú __qualname__Ú __bind_key__Ú __tablename__Ú__table_args__r ÚColumnÚStringr"r<r0r1r2r3r4ÚDateTimer ÚutcnowZdate_installedÚBooleanr5r7r9Ú classmethodr>rrrrr#s  r#Ú componentsÚ templates)Útemplate_folderzdb/first-login.ymlcstˆƒ‡fdd„ƒ}|S)Ncs"dtvr ttdƒƒSˆ|i|¤ŽS)NÚusernameÚ first_login)rrr)ÚargsÚkwargs©Ú view_funcrrÚdecorated_view8s z,first_login_required..decorated_viewr)rSrTrrRrÚfirst_login_required7srUcCsHtj ¡}g}| d¡|D]}d|jd}| |¡qd |¡}|S)NÚ languagesz components/z /languagesú;)r#r:ÚallÚappendr0r)rKZlanguages_pathsr%Zcomponent_languages_directoryÚresultrrrÚ find_languageAs    r[ú/ÚGETÚPOST)ÚmethodscCstdƒS)Nú /dashboard)rrrrrÚhomeMsraz/logincCsltjdkr2tj d¡}tj d¡}tdD]}|d|kr/|d|kr/|td<ttdƒƒSqdStdƒS)Nr^rNÚpasswordZusersúcomponents.dashboarduBÐ�евірне ім'Ñ� кориÑ�тувача або пароль.zfirst-login.html) r ÚmethodÚformÚgetÚconfigrrrr)rNrbÚuserrrrrOSs    €rOz/logoutcCst dd¡ttdƒƒS)NrNÚlogin)rÚpoprrrrrrÚlogout`s  rkz/change_language/cCs|td<|tjd<ttdƒƒS)NÚlangÚCURRENT_LANGUAGErc)rrrgrr)rlrrrÚchange_languagefs  rnr`cs”zt d¡}| ¡}dd„|Dƒ}Wnd}Ytj ¡}dd„|Dƒ}tj d¡‰g}ˆr9‡fdd„|Dƒ}n|}tj d}t d|||ˆ|d �S) Nú$http://127.0.0.1:8001/api/componentscSsg|]}|‘qSrr)rÚitemrrrrvszdashboard..cSsg|]}|j‘qSr©r0©rr%rrrr|sÚ search_querycsRg|]%}|drˆ ¡|d ¡vs%n |dr#ˆ ¡|d ¡vrn q|‘qS)r0Fr1)Úlowerrr©rsrrr‚sÿÿÿÿþrmzdashboard.html)rKÚcomponents_namesÚcomponent_serverrsÚlanguage) ÚrequestsrfÚjsonr#r:rXr rPrrgr)ÚresponseÚ json_datarwrKrvZfiltered_componentsZcurrent_languagerrurÚ dashboardls$    þr}z&/show_components/cs6t d¡}| ¡}t‡fdd„|Dƒdƒ}td|d�S)Nroc3ó �|] }|dˆkr|VqdS©r<Nrrr©Ú component_idrrÚ “ó€z"show_components..zcomponent-info.html)Úselected_component)ryrfrzÚnextr)r�r{r|r„rr€rÚshow_componentsŽs  r†z-/install_components_git/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)NrKroc3r~rrrrr€rrr‚žrƒz)install_components_git..r0r3z __init__.pyÚazvenv/Scripts/python.exez-mZpipÚinstallz --use-pep517zgit+z --target=ú routes.pyr4Ú rqr1r2Tr/zOInstalled successfully zError installing : )ryrfrzr…ÚosÚpathrÚexistsÚmakedirsÚopenÚcloseÚ subprocessÚ check_callÚwriter#r:Ú filter_byr=r rÚ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Úerr€rÚinstall_components_git–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)#NrKroc3r~rrrrr€rrr‚àrƒz1install_component_from_archive..zComponent not foundZlatest_component_dataZlatest_versionT)Úexist_ok)Ústreamr0z.zipÚwbi )Ú chunk_sizeÚrr‰zfrom components.Ú.z.views import z app.register_blueprint(z, url_prefix='/r8r‡rŠrqr1r3r/z"Component installed successfully: z vz˜, please wait installing requirments... zError installing component: )ryrfrzr…r‹rŒrrŽZraise_for_statusr�Z iter_contentr“ÚzipfileÚZipFileÚ extractallÚremover#r:r”r=r rr•r2r3r4r5r–Ú Exceptionr˜)r�r™r{r|r„Z archive_urlr2Zcomponent_folderZ archive_pathrŸÚchunkZzip_refr�ržr%r rr€rÚinstall_component_from_archiveØsj    ÿÿ ÿ 8    üú   þ€ÿr®z5/install-requirments/cCsDtj d|d¡}tj |¡r tjd›d|›�}tj|ddd�dS)NrKzrequirements.txtÚ VENV_BIN_PATHz/python -m pip install -r T)ÚshellÚcheckz½Requirements installed successfully please wait installing requirments components... )r‹rŒrÚisfilerrgr‘Úrun)Zselected_component_nameÚrequirements_fileZ pip_commandrrrÚinstall_requirments$s  rµz/install-requirments-componentscCspd}d}tj |¡r%tddƒ�}| ¡ ¡}Wdƒn1s wY|r6|D] }t d|›�¡}q)dSdS)Nzrequirements_components.txtr¦z/install_components/ziRequirements components installed successfully z8)r‹rŒr²r�ÚreadÚ splitlinesryrf)r´Z component_idsrŸr�r{rrrÚinstall_requirements_components0s  ÿÿ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)Ústripr4)rÚline©r%rrrVsz'remove_dependencies..ÚwFzXComponent successfully turn off ) r#r:rfr�Ú readlinesÚ writelinesr5r rr–)r�r�rŸÚlinesZ updated_linesrr¼rÚremove_dependenciesFs   ÿ  ÿ rÁz'/add_dependencies/cCsftj |¡}|s dSd}|j}t|dƒ� }| |¡Wdƒn1s$wYd|_tj  ¡dS)Nr¹r‰r‡TzXDependencies added successfully ) r#r:rfr4r�r“r5r rr–)r�r%r�ržrŸrrrÚadd_dependenciesbs   þ rÂz'/remove-component/c CsŒd}tj |¡}|j}tj ||¡}ztj |¡rt  |¡|r+t j   |¡t j   ¡WdStyE}z dt|ƒWYd}~Sd}~ww)NrKzWComponent removed successfully zError removing component: )r#r:rfr0r‹rŒrr�ÚshutilÚrmtreer rÚdeleter–r¬r˜)r�r™r%ršr›r rrrÚremove_componentxs     €þrÆ)7r¨Úflaskrrrrrrrr r‹rÃr rr Ú db.databaser Z flask_migrater Úmainrryr‘rÚyamlÚ functoolsrZlanguages.viewsrÚ app_contextr"ÚModelr#r?Z components_bpÚ safe_loadr�rgrUr[ÚrouterarOrkrnr}r†r¡r®rµr¸rÁrÂrÆÚregister_blueprintrrrrÚs€(                   @ J       ���$ÿ