o OÁŠdQã@sNddlZddlmZmZmZmZmZmZmZm Z ddl Z ddl Z ddl m Z ddl Z ddlmZddlmZddlmZddlZddlZddlmZddlZddlmZddl Z ddlZejZd d „ZGd d „d ejƒZed edd�Ze  e!dƒ¡Z"dd„Z#dd„Z$dd„Z%ej&ddgd�dd„ƒZ'ej&dddgd�e#dd„ƒƒZ(ej&d ddgd�d!d"„ƒZ)e &d#¡d$d%„ƒZ*e &d&¡d'd(„ƒZ+e &d)¡e#d*d+„ƒƒZ,e &d,¡d-d.„ƒZ-e &d/¡d0d1„ƒZ.e &d2¡d3d4„ƒZ/ej&d5dgd�d6d7„ƒZ0e &d8¡d9d:„ƒZ1ej&d;dgd�ddgd�d?d@„ƒZ3e &dA¡dBdC„ƒZ4e &dD¡dEdF„ƒZ5dS)Gé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„ƒ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__cCó tj t¡ tj|k¡ ¡}|Sr,©ÚdbrÚqueryr!ÚfilterÚidÚfirst©r4Zrep_idr#rrrÚget_repository_by_id0ózComponent.get_repository_by_idcCr8r,r9r?rrrr@4rAN)Ú__name__Ú __module__Ú __qualname__Ú __bind_key__Ú __tablename__Ú__table_args__r:Ú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Úusernamezcomponents.first_login)rrr)ÚargsÚkwargs©Ú view_funcrrÚdecorated_view<s z,first_login_required..decorated_viewr)rVrWrrUrÚfirst_login_required;srXcCsÀ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Ú Js€z&append_to_yaml_file..)Ústartr=ÚwF©Údefault_flow_style)ÚopenÚyamlÚ safe_loadÚmaxÚ enumerateÚappendÚdump)Ú file_pathÚdataÚfÚ existing_dataZstart_idrr^rrrÚappend_to_yaml_fileCs ÿ  "ÿrocsŠt|dƒ�}t |¡p g}Wdƒn1swY‡fdd„|Dƒ}t|dƒ�}tj||dd�WdƒdS1s>wYdS)NrYcsg|] }| d¡ˆkr|‘qS©Úcomponent_namer[r]rprrrXóz)remove_from_yaml_file..raFrb)rdrerfrj)rkrqrmrnZ updated_datarrprÚremove_from_yaml_fileTs ÿ "ÿrsz/api/languagesÚGET)ÚmethodscCsZtj ¡}g}| d¡|D]}d|jd|jd}| |¡qd |¡}t|ƒ|S)NÚ languagesz components/ú/z /languagesú;)r!r;Úallrir.rÚprint)rNZlanguages_pathsr#Zcomponent_languages_directoryÚresultrrrÚ find_language]s    r|rwÚPOSTcCstdƒS)Nú /dashboard)rrrrrÚhomeksrz/logincCsltjdkr2tj d¡}tj d¡}tdD]}|d|kr/|d|kr/|td<ttdƒƒSqdStdƒS)Nr}rRÚpasswordZusersúcomponents.dashboarduBÐ�евірне ім'Ñ� кориÑ�тувача або пароль.zfirst-login.html) r ÚmethodÚformr\Úconfigrrrr)rRr€ÚuserrrrÚ first_loginps    €r†z/logoutcCst dd¡ttdƒƒSrQ)rÚpoprrrrrrÚlogout|s  rˆz/change_language/cCs|td<|t_ttdƒƒS)NÚlangr�)rr Úcurrent_languagerr)r‰rrrÚchange_language�s r‹r~csšzt tj›d�¡}| ¡}dd„|Dƒ}Wnd}Ytj ¡}dd„|Dƒ}tj  d¡‰g}ˆr=‡fdd„|Dƒ}n|}tj }t d|||ˆtj d�S) Núapi/componentscSsg|]}|‘qSrrr]rrrr‘szdashboard..cSsg|]}|j‘qSr©r.©rr#rrrr—sÚ search_querycsRg|]%}|drˆ ¡|d ¡vs%n |dr#ˆ ¡|d ¡vrn q|‘qS)r.Fr/)ÚlowerrŽ©r�rrr�sÿÿÿÿþzdashboard.html)rNÚcomponents_namesÚcomponent_serverr�Úlanguage) Úrequestsr\r Ú update_domainÚjsonr!r;ryr rSrŠrÚmenu)ÚresponseÚ json_datar“rNr’Zfiltered_componentsrŠrr‘rÚ dashboard‡s$  þr›z&/show_components/cs>t tj›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•r\r r–r—Únextr)rŸr™ršr¡rržrÚshow_components©s r£z-/install_components_git/c sœd}t tj›d�¡}| ¡}t‡fdd„|Dƒdƒ}|d}tj ||¡}|d}zŠtj  |¡s6t  |¡tj |d¡}tj  |¡sJt |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)NrNrŒc3rœr�rrŽržrrr_·r z)install_components_git..r.r1z __init__.pyÚazvenv/Scripts/python.exez-mZpipÚinstallz --use-pep517zgit+z --target=ú routes.pyr2Ú r�r/r0Tr-zOInstalled successfully zError installing : )r•r\r r–r—r¢ÚosÚpathrÚexistsÚmakedirsrdÚ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ÚcommandrkÚcodeÚfiler#Z new_componentÚerržrÚinstall_components_git°sN        üú €ÿr¼z)/install_components/c s„d}t tj›d�¡}| ¡}t‡fdd„|Dƒdƒ}|dur!dS|d}|d}zþtj |¡}tj |dd �tj|dd �}|  ¡tj ||d ›d �¡}t |d ƒ�} |j dd�D]} |   | ¡qZWdƒn1slwYt |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 ¡ttj ƒd|d ›d|›d tj!›d!|d ›d"� WSt"�yA}z d#t#|ƒ›�WYd}~Sd}~ww)$NrNrŒc3rœr�rrŽržrrr_ør z1install_component_from_archive..zComponent not foundZlatest_component_dataZlatest_versionT)Úexist_ok)Ústreamr.z.zipÚwbi )Ú chunk_sizerYr¦zfrom components.Ú.z.views import z app.register_blueprint(z, url_prefix='/r6r¤r§r�r/r1r-z"Component installed successfully: z vÚ z�, please wait installing requirments... zError installing component: )$r•r\r r–r—r¢r¨r©rr«Úraise_for_statusrdÚ iter_contentr¯ÚzipfileÚZipFileÚ extractallÚremover!r;r°r>r:rr±r0r1r2r3r²Ú$search_babel_translation_directoriesrzÚdomainÚbabel_translation_directoriesÚ Exceptionr´)rŸrµr™ršr¡Z archive_urlr0Zcomponent_folderZ archive_pathrºÚchunkZzip_refrkr¹r#r»rržrÚinstall_component_from_archiveñsn   ÿÿ ÿ 8    üú    þ€ÿrÎz5/install-requirments/cCs´t tj›|›d�¡}|jdkr| ¡}t|ƒn ddid|›d�ddœg}|D]}||d<q(d}t||ƒt ¡t j   d |d ¡}t j   |¡rXtj ›d |›�}tj|d d d �dS)Nz /menu-itemsr*r.Úerrorz--error)ÚurlZiconÚtitleÚcategoryrqúcomponents/menu.ymlrNzrequirements.txtz/python -m pip install -r T)ÚshellÚcheckzµRequirements installed successfully please wait installing requirments components... )r•r\r rÊÚ status_coder—rzroÚget_menu_elenentsr¨r©rÚisfileÚ venv_bin_pathr­Úrun)Zselected_component_namer™rlr^rkÚrequirements_fileZ pip_commandrrrÚinstall_requirmentsNs&  ü   rÜz/install-requirments-componentscCspd}d}tj |¡r%tddƒ�}| ¡ ¡}Wdƒn1s wY|r6|D] }t d|›�¡}q)dSdS)Nzrequirements_components.txtrYz/install_components/ziRequirements components installed successfully z8)r¨r©rØrdÚreadÚ splitlinesr•r\)rÛZ component_idsrºrŸr™rrrÚinstall_requirements_componentsls  ÿÿrßz*/remove_dependencies/cs¸tj |¡‰ˆs dSˆj}d}t||ƒd}t|dƒ� }| ¡}Wdƒn1s*wY‡fdd„|Dƒ}t|dƒ� }| |¡Wdƒn1sMwYdˆ_t j   ¡d S) NúLComponent not found rÓr¦rYcsg|] }| ¡ˆjvr|‘qSr)Ústripr2)rÚline©r#rrr�rrz'remove_dependencies..raFzXComponent successfully turn off ) r!r;r\r.rsrdÚ readlinesÚ writelinesr3r:rr²)rŸrqrkrºÚlinesZ updated_linesrrãrÚremove_dependenciess"    ÿ  ÿ rçz'/add_dependencies/cCsftj |¡}|s dSd}|j}t|dƒ� }| |¡Wdƒn1s$wYd|_tj  ¡dS)Nràr¦r¤TzXDependencies added successfully ) r!r;r\r2rdr¯r3r:rr²)rŸr#rkr¹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)NrNzWComponent removed successfully zError removing component: )r!r;r\r.r¨r©rrªÚshutilÚrmtreer:rÚdeleter²rÌr´)rŸrµr#r¶r·r»rrrÚremove_component­s     €þrìz/api/main-menu/cCstjSr,)r r˜rrrrÚ project_menuÆsrí)6rÅÚflaskrrrrrrrr r¨rér rr Úk2.k2cfgr Z flask_migrater r•r­rreÚ functoolsrÚsysr:r ÚModelr!rBÚ components_bprfrdr„rXrorsÚrouter|rr†rˆr‹r›r£r¼rÎrÜrßrçrèrìrírrrrÚsp(               @ \