o vyˆdIã@s<ddlZddlmZmZmZmZmZmZmZm Z ddl Z ddl Z ddl m Z ddl Z ddlmZddlmZddlmZddlZddlZddlmZddlZddlmZejZd d „ZGd d „d ejƒZed edd�Ze e dƒ¡Z!dd„Z"ej#ddgd�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"d/d0„ƒƒZ,ej#d1dgd�e"d2d3„ƒƒZ-e #d4¡e"d5d6„ƒƒZ.ej#d7dgd�e"d8d9„ƒƒZ/ej#d:dgd�e"d;d<„ƒƒZ0e #d=¡e"d>d?„ƒƒZ1dS)@éN)ÚFlaskÚ BlueprintÚjsonifyÚrender_templateÚredirectÚurl_forÚsessionÚg)Údatetime)Úrequest)Úk2)ÚMigrate)Ú current_app©Úwrapscs6t ¡jdd…‰d ‡fdd„tdtˆƒdƒDƒ¡S)Né Úcsg|] }ˆ||d…‘qS)é©)Ú.0Úi©Z generated_idrú;C:\Users\sv-work\PycharmProjects\k2root\k2root\k2\k2inst.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)Úselfr.r/r0r1r2r3rrrÚ__init__"s  zComponent.__init__cCsd|j›d|j›d�S)Nz Component('z', 'ú'))r.r0)r4rrrÚ__repr__)szComponent.__repr__cCs tj t¡ tj|k¡ ¡}|Sr,)ÚdbrÚqueryr!ÚfilterÚidÚfirst)r4Zrep_idr#rrrÚget_repository_by_id+szComponent.get_repository_by_idN)Ú__name__Ú __module__Ú __qualname__Ú __bind_key__Ú __tablename__Ú__table_args__r8ÚColumnÚStringr r;r.r/r0r1r2ÚDateTimer ÚutcnowZdate_installedÚBooleanr3r5r7Ú 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_view3s z,first_login_required..decorated_viewr)rSrTrrRrÚfirst_login_required2srUz/api/languagesÚGET)ÚmethodscCsZtj ¡}g}| d¡|D]}d|jd|jd}| |¡qd |¡}t|ƒ|S)NÚ languagesz components/ú/z /languagesú;)r!r9ÚallÚappendr.rÚprint)rJZlanguages_pathsr#Zcomponent_languages_directoryÚresultrrrÚ find_language<s    r_rYÚPOSTcCstdƒS)Nú /dashboard)rrrrrÚhomeJsrbz/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)rNrcÚuserrrrrOOs    €rOz/logoutcCst dd¡ttdƒƒSrM)rÚpoprrrrrrÚlogout[s  rkz/change_language/cCs|td<|t_ttdƒƒS)NÚlangrd)rr Úcurrent_languagerr)rlrrrÚchange_language`s rnracs�zt d¡}| ¡}dd„|Dƒ}Wnd}Ytj ¡}dd„|Dƒ}tj d¡‰g}ˆr9‡fdd„|Dƒ}n|}tj }t d|||ˆ|d�S) Nú$http://127.0.0.1:8001/api/componentscSsg|]}|‘qSrr)rÚitemrrrrpszdashboard..cSsg|]}|j‘qSr©r.©rr#rrrrvsÚ search_querycsRg|]%}|drˆ ¡|d ¡vs%n |dr#ˆ ¡|d ¡vrn q|‘qS)r.Fr/)Úlowerrr©rsrrr|sÿÿÿÿþzdashboard.html)rJÚcomponents_namesÚcomponent_serverrsÚlanguage) ÚrequestsrgÚjsonr!r9r[r rPr rmr)ÚresponseÚ json_datarwrJrvZfiltered_componentsrmrrurÚ dashboardfs$   þ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)ryrgrzÚ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)NrJroc3r~rrrrr€rrr‚˜rƒz)install_components_git..r.r1z __init__.pyÚazvenv/Scripts/python.exez-mZpipÚinstallz --use-pep517zgit+z --target=ú routes.pyr2Ú rqr/r0Tr-zOInstalled successfully zError installing : )ryrgrzr…ÚosÚpathrÚexistsÚmakedirsÚopenÚcloseÚ subprocessÚ check_callÚwriter!r9Ú filter_byr<r8rÚ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 srd}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 ¡t ¡d|d ›d|›d tj›d!|d ›d"� WSt�y8}z d#t |ƒ›�WYd}~Sd}~ww)$NrJroc3r~rrrrr€rrr‚Úrƒz1install_component_from_archive..zComponent not foundZlatest_component_dataZlatest_versionT)Úexist_ok)Ústreamr.z.zipÚwbi )Ú chunk_sizeÚrr‰zfrom components.Ú.z.views import z app.register_blueprint(z, url_prefix='/r6r‡rŠrqr/r1r-z"Component installed successfully: z vÚ z�, please wait installing requirments... zError installing component: )!ryrgrzr…r‹rŒrrŽÚraise_for_statusr�Ú iter_contentr“ÚzipfileÚZipFileÚ extractallÚremover!r9r”r<r8rr•r0r1r2r3r–r Ú$search_babel_translation_directoriesÚbabel_translation_directoriesÚ Exceptionr˜)r�r™r{r|r„Z archive_urlr0Zcomponent_folderZ archive_pathrŸÚchunkZzip_refr�ržr#r rr€rÚinstall_component_from_archiveÒsl    ÿÿ ÿ 8    üú   þ€ÿr³z5/install-requirments/cCs@tj d|d¡}tj |¡rtj›d|›�}tj|ddd�dS)NrJzrequirements.txtz/python -m pip install -r T)ÚshellÚcheckzµRequirements installed successfully please wait installing requirments components... )r‹rŒrÚisfiler Ú venv_bin_pathr‘Ú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Ú splitlinesryrg)r¹Z component_idsrŸr�r{rrrÚinstall_requirements_components-s  ÿÿ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)Ústripr2)rÚline©r#rrrQsz'remove_dependencies..ÚwFzXComponent successfully turn off ) r!r9rgr�Ú readlinesÚ writelinesr3r8rr–)r�r�rŸÚlinesZ updated_linesrrÁrÚremove_dependenciesAs   ÿ  ÿ rÆz'/add_dependencies/cCsftj |¡}|s dSd}|j}t|dƒ� }| |¡Wdƒn1s$wYd|_tj  ¡dS)Nr¾r‰r‡TzXDependencies added successfully ) r!r9rgr2r�r“r3r8rr–)r�r#r�ržrŸrrrÚ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)NrJzWComponent removed successfully zError removing component: )r!r9rgr.r‹rŒrr�ÚshutilÚrmtreer8rÚdeleter–r±r˜)r�r™r#ršr›r rrrÚremove_componentss     €þrË)2r«Úflaskrrrrrrrr r‹rÈr rr Úk2.k2cfgr Z flask_migrater ryr‘rÚyamlÚ functoolsrr8r ÚModelr!r>Ú components_bpÚ safe_loadr�rhrUÚrouter_rbrOrkrnr}r†r¡r³rºr½rÆrÇrËrrrrÚst(                @ M