From 7285fe209e8a9db38cd2eecac6a709b0e4990cda Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=92=D0=B0=D1=81=D0=B8=D0=BB=D1=8C=20=D0=A1=D0=B2=D1=96?= =?UTF-8?q?=D0=B4=D1=80=D1=96=D0=BA?= Date: Wed, 14 Jun 2023 11:59:17 +0300 Subject: [PATCH] add remove menu items function --- __pycache__/main.cpython-310.pyc | Bin 690 -> 719 bytes __pycache__/routes.cpython-310.pyc | Bin 411 -> 411 bytes .../k2test/__pycache__/__init__.cpython-310.pyc | Bin 169 -> 169 bytes .../k2test/__pycache__/__init__.cpython-310.pyc | Bin 176 -> 176 bytes .../k2test/__pycache__/views.cpython-310.pyc | Bin 1985 -> 1985 bytes components/menu.yml | 20 +++++++------- db/database.db | Bin 36864 -> 36864 bytes k2/__pycache__/k2inst.cpython-310.pyc | Bin 12906 -> 13560 bytes k2/k2inst.py | 30 +++++++++++++++------ main.py | 2 ++ 10 files changed, 34 insertions(+), 18 deletions(-) diff --git a/__pycache__/main.cpython-310.pyc b/__pycache__/main.cpython-310.pyc index 85190c691f8b66792896b4355938e232a09552a2..d75eab1e78a9c3038bafb28ea0e1463bbd7a7110 100644 GIT binary patch delta 125 zcmdnQdY+XxpO=@50SKlxbf$Dqvh9Wtj c$whLLU6{NWl_vKy$#61rFmo^oF|zyz0QTP`HUIzs delta 96 zcmX@lx`~xHpO=@50SJ=gJ5zEd^2#!g%~K664K0%`6Ag@$ zO$|)5jY?9BOAPf4%!~|-jCBpnbPY`u3@ofnEv$?T^-N5REG!Hs*XfFF-k@*bpg_p9 HMFk1~xrZcJ delta 133 zcmZozz|^pSX@WGP@I)DBM&XSK-}GFJ&5|qjY?9BOAPf4%!~|-jCBpnbPY`u49u+z&8!T8q827*hNhG2bj3Dr&^K^UAY|I2 G0tEocCnU=N diff --git a/k2/__pycache__/k2inst.cpython-310.pyc b/k2/__pycache__/k2inst.cpython-310.pyc index 7bb4c80efed3cc9f8219ad1a482ab50e3d8840b2..c56d7e1643bba81b32abf8728fb5bd9385a8d27f 100644 GIT binary patch delta 3273 zcmbVOYiv~45x(c%-MiQO@~-jPYkU1%zt(T_Y5?O9aEXM3n}j6TG_YEHu3^nS%(?4O z(7HM;`H?=8{%E7B+Exux6eVfXs1<62sx)-wEV4<} z{OPXlcjwH^nVmB;XJ-GxZ^pf8kH@Lt=V0zIfAPK(-Vp11solYHJiyBiDqEV&+OcL{ z&VxG`uQ;aiN?vtPIl#8GNPdV1dG!vJBxab`@LH0gv{g#$7NoqMH^_Yvvv#_fhi4dX zY2mGs(~g{6Gmp$LG}^}7ZyW89iXEuf$-AUtr{r`ar-%1SPM72?M$Qtx zRC2ndE6e5&u$+HM@_VG_U8uQ&uaul#sky44*@tKC9HwFY4+5%(a#3gaQR5{?@cw$-#u>J{*Y zv5~ET?&5N2D{`_%SXNYTb23$%d$_2bu|D{QbHMj78Q4r9tv>|6ch>k<;o8y>bmnC? zn;4q2yCTd*h6O_yoP`zcPPPGdxciHUn`e90&%zJg+gTp`o*K3ddOR&`9SnKu^)$*y zRPeV2*%1i4R<%8$j54lr?Vyp>2C#%CZ5bu2aN7a(xPMa3urV!b%c|VYb@-{PysUo@ zV+wtT@!<*v)iEfB;bT`2>PqdfzTKDO$_$%Qc4iVb(1p7^4^hjay*?fQ<-Qg zmNdmz$@{GY;{@`!GL99v9Kz=YC8I{!7ZGMM{iqoo73pMjZ!DRJj>Z#aS6?DM5=&V9 zNW`rS8SfV{+_7Hdw&N>e6C7W{Bp4+aBd%TSB6>GLk|2e!#XT|3V;Pf25n}~cq*LTi zKJY((|3MU4UIaJuvCyp&&8?QOhFikIWM@6U2~*DUS}c(eail~SK{fI0<078Qpd*8j z^loEY;Z1Lqo+a@f_?tKCA^$8ox}k|23>Tl$CrS7K+$=uD9)Xj-2K@nI?1!tqCN>V& zebwv`eCAun?uWJhWyNI5qPlgfZYHMSkbfI{4Bqp1vBOYW5-xj;wjgiwrT3m=GdHQ4GPs6Q>^XwR$ugq3{k<;S)&{x&OIBc)#E|X*zRn@3=^hnIoC#Xga}7ap&>iX4M9^3)Y1?*jX44)v-%(BD9%Z zoBJ^IEA{_4z|Fz|w7M7dVIt4N%XP!9b3{Hza11KyKNQ@}WhN|n(ev&&9eE_3%3zBT7hy+3ccrYnOSHWZ2cjrD;w8A$5M-C(mkkew zt{@}gD`fj+65f$=SP@>%uEKb@w36eqZ0glz*ZUXjZwlZgeX{9Oy%2kNy1B+h)i3rDq~Z1Ea=j3E_;Yie=K^x` znwUsM99zmE+F0%{L?}Vp+X!|+SIfQ22XPcx&A2YpoXlWOrfVv`@%hwnIGGJO2J>mu zFMYTYe?rxLwUB78g`c%tWW(@i>+AO~B>WF#nOb<>Cd?SmJFW3VJd=p0OiRoc4Ytug zqRJM}{1uGGxh1aB-oo{TsmKzRfNPO3dk3yZ`f{@Mp`6CM^%I1QGRCIWEY7UM%9LU` z>2Ji8GNw)9RK)p*3Cc1`5!Y~K$4N+&(T%Cpru7+R(zY3=pbftVFa;^2SFzgeoRD(5 z;_SrfYNP2|ia8}C4m9GCMjTl?L^}iFjdyP2#*`8@3e`Y$!HY1rPWWBheXifq;m#8b zL!^DeIF4}_0>{qt?d>cEZ?{K7Zc$HiS^l!kb6Gjxi+)-D*l1O>w~bt}X*j`Dw;K9P zw^MQ(9>dkgrdkY@djM(SyH%IAHrXImiuHC z)9n&o0uy?BE6Qaw>TsR6Z%m^Xg-ou6Snr}8qogLIcaW$d0{S~AGn==I^aQ$`B}R_m z5Wy6|QG(M1&k|fCc#DAUpm>MieS!}NKEl7KLHM}Wi`VAgy=|@$KklOl4*&oF delta 2800 zcma)8Yiu0V6`nggJ3IUI`t7yX>sS0(zwLE`(}WO6WTZ%Opu}?GQg7G3V|&eJ*SRy> z#9&VWJ zBGse$_Re?CxpSU({O{x~9?1Cp9tHo#<7fCk2A>avS>H;Vi_M!g(~Z28mrXKW{+!Ay zc<7X}z($%RU&+gO)uc)ivw??sHOWxgETxeRDX-zR(yqm9CDSc6x2|h`jc+@p^kFnTQm}npa4+8>4SMAk_u&>h`TdfKarTH3ePA`E z?pE2mu%i7!=f%jBte$ihs?36mt|*JbI}&fYwj8RT zC4|PYGh+jRb0&;hpolC*j|_` z-dvC-dkw*-`k0u5YsI7N+fZB5$&SOml7=#i;RlEEoTex zTIrMQ40M)Vsaink>r9*?C7I0%T7?kK!OgPG7+R#fB~0SHkxHZ|vx!MF>dza(Je)Nx z+Y-YtR^Cub84=`}@Dfle#5}xQ-sC+^%RK~7!>`LjHS@HTZ+ePW^t!y8C#t4e}~{4!3zY^2Y}y%LdA>tY#9hes==sg;-%HkL${eO{U$%Ed!Hwp3+slI zHv#L9GHc}3>qLDQ;aK!SWf=^G&$5&7=Wwp_s~ixaKo_ta7d`M`|GOq=6&d?J(LrnoyKh(-1=6OKpP8NeHnT6PuQj|{Vw)lD_O zQtt|+D@L6JyW zCI%qlIA(U%5~D=>k`(fICT*K(Tf72SH+98iQ~iJ}*YZFss*?C2K{r7UK`%j!;8oBX z_lKzl(coIqe?;_Ml?S_VOV?XS=AGkH+4N&0u4BoWxG*P#Nt!<3O1(hkbx@0UX`0JkbEP1(+Q@DHC zF{jCAUrt+QVxO%}`xh1N$!UwqWyhS;4ony1oZO3-?>PrkxF65W06f(^P=2g%t2?Ehv^O#fARi8a}g7C_*f7xJl(Ft zf1)?o5d5z7+QS<)f1fs!#nptF;CYWVlS2%j}GDTCqIz>EY@evmH6c9SiC?-<+CL zm$YSN&H<0LMjm}ynP6Pw&QnItu^YeBSPxRwQPnS1om3g73@cpG@LIqsq>UcM+I0k3 zx(?#aU8j|}Zo8(9B{$WW8(1edJkarwPUnaif`@!1u+ow6AEy-3Ngq*;HN*Yw#n9bZ zilGd2#)~|nj+AAK%j0Vlu65Q9^b;w2{8e0Ga^%S+TXU^xW%@?^*%|y&nLNIhP1&Y@ zBvW~u7Sp?$GxYW_l0JuqMbaETEM)l0BF%?|3xBC=9;T_{BS>}q)cbp~mEK>1w(g1D z8*a(jq9O`P`P!8IZztu{Yz)y`@Q3bA>>2pHyM}!Xl|6aW zb8iMcTPx`fA~xFDijU2RZy_f~LCn%>KY^T4r^sY6p2I}g1dl6Q5a(!lg5W&CO9U$f z?-5)lxIyp{!N&xj;J-@cFxywarr}IqtGhD54An3KL3pRHt)R-o0!4UN;^3A9*na^t CA*>Dn diff --git a/k2/k2inst.py b/k2/k2inst.py index 207810a..4e31ca0 100644 --- a/k2/k2inst.py +++ b/k2/k2inst.py @@ -49,6 +49,10 @@ class Component(db.Model): def get_repository_by_id(self,rep_id): component = db.session.query(Component).filter(Component.id == rep_id).first() return component + @classmethod + def get_repository_by_id(self,rep_id): + component = db.session.query(Component).filter(Component.id == rep_id).first() + return component components_bp = Blueprint('components', __name__, template_folder='templates') config = yaml.safe_load(open("db/first-login.yml")) @@ -76,6 +80,16 @@ def append_to_yaml_file(file_path, data): with open(file_path, 'w') as f: yaml.dump(existing_data, f, default_flow_style=False) + +def remove_from_yaml_file(file_path, component_name): + with open(file_path, 'r') as f: + existing_data = yaml.safe_load(f) or [] + + updated_data = [item for item in existing_data if item.get('component_name') != component_name] + + with open(file_path, 'w') as f: + yaml.dump(updated_data, f, default_flow_style=False) + @components_bp.route('/api/languages', methods=['GET']) def find_language(): components = Component.query.all() @@ -331,7 +345,9 @@ def install_requirments(selected_component_name): 'title': f"{selected_component_name}--error", 'category': 'error', }] - + # add component_name key for menu items + for item in data: + item['component_name'] = selected_component_name file_path = 'components/menu.yml' append_to_yaml_file(file_path, data) k2.get_menu_elenents() @@ -370,22 +386,20 @@ def remove_dependencies(component_id): component = Component.query.get(component_id) if not component: return 'Component not found ' + #remove menu items + component_name = component.name + file_path = "components/menu.yml" + remove_from_yaml_file(file_path, component_name) - # Шлях до файлу, з якого потрібно видалити залежності + # remove routes file_path = 'routes.py' - - # Зчитуємо вміст файлу with open(file_path, 'r') as file: lines = file.readlines() - # Видаляємо рядки, що містять залежності компоненти updated_lines = [line for line in lines if line.strip() not in component.dependencies] - - # Записуємо оновлений вміст у файл with open(file_path, 'w') as file: file.writelines(updated_lines) - # Оновлюємо статус компоненти component.installed = False db.session.commit() diff --git a/main.py b/main.py index e79ea8b..61f0ec5 100644 --- a/main.py +++ b/main.py @@ -19,6 +19,8 @@ app.config['BABEL_TRANSLATION_DIRECTORIES'] = k2.babel_translation_directories babel = Babel(app) babel.init_app(app, locale_selector=k2.get_locale) +#menu +k2.get_menu_elenents() # flask routing from routes import * -- 1.9.1