o RÁˆdßJã@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"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*¡d+d,„ƒZ+e $d-¡d.d/„ƒZ,e $d0¡d1d2„ƒZ-ej$d3dgd�d4d5„ƒZ.e $d6¡d7d8„ƒZ/ej$d9dgd�d:d;„ƒZ0ej$d„ƒZ1e $d?¡d@dA„ƒZ2dS)Bé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©Ú generated_idrú%/home/yana/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/r0r1r2r3r4rrrÚ__init__"s  zComponent.__init__cCsd|j›d|j›d�S)Nz Component('z', 'ú'))r/r1)r5rrrÚ__repr__)szComponent.__repr__cCs tj t¡ tj|k¡ ¡}|Sr-)ÚdbrÚqueryr"ÚfilterÚidÚfirst)r5Úrep_idr$rrrÚget_repository_by_id+szComponent.get_repository_by_idN)Ú__name__Ú __module__Ú __qualname__Ú __bind_key__Ú __tablename__Ú__table_args__r9ÚColumnÚStringr!r<r/r0r1r2r3ÚDateTimer ÚutcnowÚdate_installedÚBooleanr4r6r8Ú classmethodr?rrrrr"s  r"Ú componentsÚ templates)Útemplate_folderzdb/first-login.ymlcstˆƒ‡fdd„ƒ}|S)Ncs"dtvr ttdƒƒSˆ|i|¤ŽS©NÚusernamezcomponents.first_login)rrr)ÚargsÚkwargs©Ú view_funcrrÚdecorated_view3s z,first_login_required..decorated_viewr)rUrVrrTrÚfirst_login_required2srWcCsÀt|dƒ�}t |¡p g}Wdƒn1swY|s!d}n tdd„|Dƒƒd}t||d�D] \}}||d<| |¡q2t|dƒ�}tj||dd �WdƒdS1sYwYdS) NÚrécss�|] }| dd¡VqdS)r<rN)Úget©rÚitemrrrÚ As€z&append_to_yaml_file..)Ústartr<ÚwF)Údefault_flow_style)ÚopenÚyamlÚ safe_loadÚmaxÚ enumerateÚappendÚdump)Ú file_pathÚdataÚfÚ existing_dataÚstart_idrr\rrrÚappend_to_yaml_file:s ÿ  "ÿrmz/api/languagesÚGET)ÚmethodscCsZtj ¡}g}| d¡|D]}d|jd|jd}| |¡qd |¡}t|ƒ|S)NÚ languagesú components/ú/z /languagesú;)r"r:Úallrfr/rÚprint)rMÚlanguages_pathsr$Úcomponent_languages_directoryÚresultrrrÚ find_languageJs    ryrrÚPOSTcCstdƒS)Nú /dashboard)rrrrrÚhomeXsr|z/logincCsltjdkr2tj d¡}tj d¡}tdD]}|d|kr/|d|kr/|td<ttdƒƒSqdStdƒS)NrzrQÚpasswordÚusersúcomponents.dashboarduBÐ�евірне ім'Ñ� кориÑ�тувача або пароль.zfirst-login.html) r ÚmethodÚformrZÚconfigrrrr)rQr}ÚuserrrrÚ first_login]s    €r„z/logoutcCst dd¡ttdƒƒSrP)rÚpoprrrrrrÚlogoutis  r†z/change_language/cCs|td<|t_ttdƒƒS)NÚlangr)rr Úcurrent_languagerr)r‡rrrÚchange_languagens r‰r{cs’zt d¡}| ¡}dd„|Dƒ}Wnd}Ytj ¡}dd„|Dƒ}tj d¡‰g}ˆr9‡fdd„|Dƒ}n|}tj }t d|||ˆtj d�S) Nú$http://127.0.0.1:8001/api/componentscSsg|]}|‘qSrrr[rrrr~szdashboard..cSsg|]}|j‘qSr©r/©rr$rrrr„sÚ search_querycsTg|]&}|drˆ ¡|d ¡vs&n  |dr$ˆ ¡|d ¡vrn q|‘qS)r/Fr0)ÚlowerrŒ©r�rrrŠsÿÿÿÿþþ ýzdashboard.html)rMÚcomponents_namesÚcomponent_serverr�Úlanguage) ÚrequestsrZÚjsonr"r:rtr rRr rˆrÚmenu)ÚresponseÚ json_datar‘rMr�Úfiltered_componentsrˆrr�rÚ dashboardts$   þr™z&/show_components/cs6t d¡}| ¡}t‡fdd„|Dƒdƒ}td|d�S)NrŠc3ó �|] }|dˆkr|VqdS©r<NrrŒ©Ú component_idrrr]šó€z"show_components..zcomponent-info.html)Úselected_component)r“rZr”Ú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)NrMrŠc3ršr›rrŒrœrrr]¤ržz)install_components_git..r/r2z __init__.pyÚazvenv/Scripts/python.exez-mÚpipÚinstallz --use-pep517zgit+z --target=ú routes.pyr3Ú r‹r0r1Tr.zOInstalled successfully zError installing : )r“rZr”r ÚosÚpathrÚexistsÚmakedirsraÚcloseÚ subprocessÚ check_callÚwriter"r:Ú filter_byr=r9rÚaddÚcommitÚCalledProcessErrorÚstr)r�Úproject_folderr–r—rŸÚrepository_nameÚrepository_folderÚ git_repo_urlÚ init_fileÚcommandrhÚcodeÚfiler$Ú new_componentÚerrœrÚinstall_components_git�sN         üú €ÿr¾z)/install_components/c sød}t d¡}| ¡}t‡fdd„|Dƒdƒ}|durdS|d}|d}�z;tj |¡}tj|dd �tj|dd �}| ¡tj ||d ›d �¡}t |d ƒ�} |j dd�D]} |   | ¡qWWdƒn1siwYt   |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�}tj |¡�r4t |dd d!�� } t | ¡}Wdƒn 1�s.wYnd d"id"|d ›d#�d"d$œ}d%} t| |ƒt  !¡d&|d ›d'|›d(t j"›d)|d ›d*� WSt#�y{}z d+t$|ƒ›�WYd}~Sd}~ww),NrMrŠc3ršr›rrŒrœrrr]åržz1install_component_from_archive..zComponent not foundÚlatest_component_dataÚlatest_versionT)Úexist_ok)Ústreamr/z.zipÚwbi )Ú chunk_sizerXr¥zfrom components.Ú.z.views import z app.register_blueprint(z, url_prefix='/r7r¢r¦r‹r0r2r.rqz/menu_items.ymlzutf-8)ÚencodingÚerrorz--error)ÚurlÚiconÚtitleÚcategoryzcomponents/menu.ymlz"Component installed successfully: z vÚ z�, please wait installing requirments... zError installing component: )%r“rZr”r r§r¨rrªÚraise_for_statusraÚ iter_contentr®ÚzipfileÚZipFileÚ extractallÚremover"r:r¯r=r9rr°r1r2r3r4r±r©rbrcrmr Ú$search_babel_translation_directoriesÚbabel_translation_directoriesÚ Exceptionr³)r�r´r–r—rŸÚ archive_urlr1Úcomponent_folderÚ archive_pathr»ÚchunkÚzip_refrhrºr$Úfile_path_inputrir½rrœrÚinstall_component_from_archiveÞs†    ÿÿ ÿ 8    üú   ÿ€ ü  þ€ÿrÜz5/install-requirments/cCs@tj d|d¡}tj |¡rtj›d|›�}tj|ddd�dS)NrMzrequirements.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)Úselected_component_nameÚrequirements_fileÚ 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.txtrXz/install_components/ziRequirements components installed successfully z8)r§r¨rßraÚreadÚ splitlinesr“rZ)rãÚ component_idsr»r�r–rrrÚinstall_requirements_componentsFs  ÿÿ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¥rXcsg|] }| ¡ˆjvr|‘qSr)Ústripr3)rÚline©r$rrrhsz'remove_dependencies..r_FzXComponent successfully turn off ) r"r:rZraÚ readlinesÚ writelinesr4r9rr±)r�rhr»ÚlinesÚ updated_linesrrírÚremove_dependenciesYs   ÿ  ÿ ròz'/add_dependencies/cCsftj |¡}|s dSd}|j}t|dƒ� }| |¡Wdƒn1s$wYd|_tj  ¡dS)Nrêr¥r¢TzXDependencies added successfully ) r"r:rZr3rar®r4r9rr±)r�r$rhrºr»rrrÚadd_dependenciests   þ róz'/remove-component/c CsŒd}tj |¡}|j}tj ||¡}ztj |¡rt  |¡|r+t j   |¡t j   ¡WdStyE}z dt|ƒWYd}~Sd}~ww)NrMzWComponent removed successfully zError removing component: )r"r:rZr/r§r¨rr©ÚshutilÚrmtreer9rÚdeleter±rÕr³)r�r´r$rµr¶r½rrrÚremove_component‰s     €þr÷)3rÏÚflaskrrrrrrrr r§rôr rr Úk2.k2cfgr Ú flask_migrater r“r¬rrbÚ functoolsrr9r!ÚModelr"r@Ú components_bprcrar‚rWrmÚrouteryr|r„r†r‰r™r¡r¾rÜråréròrór÷rrrrÚsf(               @ \