From 73551d2d3cf1675f53bd9fda9b3ff43bfb49dffd Mon Sep 17 00:00:00 2001 From: lmt <2806012050@qq.com> Date: Wed, 24 Apr 2019 18:12:56 +0800 Subject: [PATCH 01/11] =?UTF-8?q?=E4=B8=80=E7=BA=A7=E8=8F=9C=E5=8D=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../86090516-39a3-4a0f-a8df-5e5e14165788.xml" | 101 ++-- .../e4c24a35-2c1f-48b2-bb7a-5dc9ccac8fae.xml" | 531 ------------------ .../.idea/workspace.xml" | 357 ++++++++---- .../db.sqlite3" | Bin 60416 -> 73728 bytes .../__pycache__/settings.cpython-36.pyc" | Bin 2507 -> 2566 bytes .../luffy_permission/settings.py" | 4 + .../rabc/__pycache__/admin.cpython-36.pyc" | Bin 556 -> 579 bytes .../rabc/__pycache__/models.cpython-36.pyc" | Bin 1982 -> 2112 bytes .../rabc/admin.py" | 4 +- .../migrations/0002_auto_20190424_1623.py" | 25 + .../0002_auto_20190424_1623.cpython-36.pyc" | Bin 0 -> 778 bytes .../rabc/models.py" | 2 + .../rabc/templates/menu.html" | 7 + .../rabc/templatetags/__init__.py" | 6 + .../__pycache__/__init__.cpython-36.pyc" | Bin 0 -> 294 bytes .../__pycache__/mu_tage.cpython-36.pyc" | Bin 0 -> 636 bytes .../rabc/templatetags/mu_tage.py" | 17 + .../web/__pycache__/models.cpython-36.pyc" | Bin 1088 -> 1088 bytes .../midwear/__pycache__/mid.cpython-36.pyc" | Bin 1105 -> 1109 bytes .../web/midwear/mid.py" | 4 +- .../migrations/0002_auto_20190423_2324.py" | 49 ++ .../migrations/0003_auto_20190424_1623.py" | 36 ++ .../0002_auto_20190423_2324.cpython-36.pyc" | Bin 0 -> 1249 bytes .../0003_auto_20190424_1623.cpython-36.pyc" | Bin 0 -> 722 bytes .../web/models.py" | 18 + .../web/templates/index.html" | 7 + .../web/templates/layout.html" | 15 +- .../web/templates/login.html" | 18 +- .../__pycache__/promiiss.cpython-36.pyc" | Bin 973 -> 1361 bytes .../web/views/promiiss.py" | 29 +- 30 files changed, 521 insertions(+), 709 deletions(-) delete mode 100644 "luffy_permission-\347\251\272\347\231\275\347\211\210/.idea/dataSources/e4c24a35-2c1f-48b2-bb7a-5dc9ccac8fae.xml" create mode 100644 "luffy_permission-\347\251\272\347\231\275\347\211\210/rabc/migrations/0002_auto_20190424_1623.py" create mode 100644 "luffy_permission-\347\251\272\347\231\275\347\211\210/rabc/migrations/__pycache__/0002_auto_20190424_1623.cpython-36.pyc" create mode 100644 "luffy_permission-\347\251\272\347\231\275\347\211\210/rabc/templates/menu.html" create mode 100644 "luffy_permission-\347\251\272\347\231\275\347\211\210/rabc/templatetags/__init__.py" create mode 100644 "luffy_permission-\347\251\272\347\231\275\347\211\210/rabc/templatetags/__pycache__/__init__.cpython-36.pyc" create mode 100644 "luffy_permission-\347\251\272\347\231\275\347\211\210/rabc/templatetags/__pycache__/mu_tage.cpython-36.pyc" create mode 100644 "luffy_permission-\347\251\272\347\231\275\347\211\210/rabc/templatetags/mu_tage.py" create mode 100644 "luffy_permission-\347\251\272\347\231\275\347\211\210/web/migrations/0002_auto_20190423_2324.py" create mode 100644 "luffy_permission-\347\251\272\347\231\275\347\211\210/web/migrations/0003_auto_20190424_1623.py" create mode 100644 "luffy_permission-\347\251\272\347\231\275\347\211\210/web/migrations/__pycache__/0002_auto_20190423_2324.cpython-36.pyc" create mode 100644 "luffy_permission-\347\251\272\347\231\275\347\211\210/web/migrations/__pycache__/0003_auto_20190424_1623.cpython-36.pyc" create mode 100644 "luffy_permission-\347\251\272\347\231\275\347\211\210/web/templates/index.html" diff --git "a/luffy_permission-\347\251\272\347\231\275\347\211\210/.idea/dataSources/86090516-39a3-4a0f-a8df-5e5e14165788.xml" "b/luffy_permission-\347\251\272\347\231\275\347\211\210/.idea/dataSources/86090516-39a3-4a0f-a8df-5e5e14165788.xml" index ec83443..057fd98 100644 --- "a/luffy_permission-\347\251\272\347\231\275\347\211\210/.idea/dataSources/86090516-39a3-4a0f-a8df-5e5e14165788.xml" +++ "b/luffy_permission-\347\251\272\347\231\275\347\211\210/.idea/dataSources/86090516-39a3-4a0f-a8df-5e5e14165788.xml" @@ -458,219 +458,228 @@ model varchar(32)|0s 1 - + + 4 + varchar(32)|0s + + + 5 + bool|0s + 1 + + id 1 - + 1 integer|0s 1 1 - + 2 varchar(32)|0s 1 - + id 1 - + 1 integer|0s 1 1 - + 2 integer|0s 1 - + 3 integer|0s 1 - + role_id permission_id 1 - + role_id - + permission_id - + id 1 - + role_id rabc_role id - + permission_id rabc_permission id - + 1 integer|0s 1 1 - + 2 varchar(32)|0s 1 - + 3 varchar(32)|0s 1 - + id 1 - + 1 integer|0s 1 1 - + 2 integer|0s 1 - + 3 integer|0s 1 - + user_id role_id 1 - + user_id - + role_id - + id 1 - + user_id rabc_user id - + role_id rabc_role id - + 1 text|0s - + 2 text|0s - + 3 text|0s - + 4 int|0s - + 5 text|0s - + 1 - + 2 - + 1 integer|0s 1 1 - + 2 varchar(32)|0s 1 - + 3 varchar(32)|0s 1 - + 4 varchar(32)|0s 1 - + 5 varchar(32)|0s 1 - + id 1 - + 1 integer|0s 1 1 - + 2 integer|0s 1 - + 3 datetime|0s 1 - + 4 integer|0s 1 - + customer_id - + id 1 - + customer_id web_customer id diff --git "a/luffy_permission-\347\251\272\347\231\275\347\211\210/.idea/dataSources/e4c24a35-2c1f-48b2-bb7a-5dc9ccac8fae.xml" "b/luffy_permission-\347\251\272\347\231\275\347\211\210/.idea/dataSources/e4c24a35-2c1f-48b2-bb7a-5dc9ccac8fae.xml" deleted file mode 100644 index 47624ce..0000000 --- "a/luffy_permission-\347\251\272\347\231\275\347\211\210/.idea/dataSources/e4c24a35-2c1f-48b2-bb7a-5dc9ccac8fae.xml" +++ /dev/null @@ -1,531 +0,0 @@ - - - - - 3.25.1 - - - 1 - 1 - - - - - -
-
-
-
-
-
-
-
-
-
- 1 -
- - 1 -
- -
- - 1 - integer|0s - 1 - 1 - - - 2 - varchar(80)|0s - 1 - - - 1 - name - - 1 - - - id - 1 - - - name - sqlite_autoindex_auth_group_1 - - - 1 - integer|0s - 1 - 1 - - - 2 - integer|0s - 1 - - - 3 - integer|0s - 1 - - - group_id -permission_id - - 1 - - - group_id - - - - permission_id - - - - id - 1 - - - group_id - auth_group - id - - - permission_id - auth_permission - id - - - 1 - integer|0s - 1 - 1 - - - 2 - integer|0s - 1 - - - 3 - varchar(100)|0s - 1 - - - 4 - varchar(255)|0s - 1 - - - content_type_id -codename - - 1 - - - content_type_id - - - - id - 1 - - - content_type_id - django_content_type - id - - - 1 - integer|0s - 1 - 1 - - - 2 - varchar(128)|0s - 1 - - - 3 - datetime|0s - - - 4 - bool|0s - 1 - - - 5 - varchar(30)|0s - 1 - - - 6 - varchar(30)|0s - 1 - - - 7 - varchar(254)|0s - 1 - - - 8 - bool|0s - 1 - - - 9 - bool|0s - 1 - - - 10 - datetime|0s - 1 - - - 11 - varchar(150)|0s - 1 - - - 1 - username - - 1 - - - id - 1 - - - username - sqlite_autoindex_auth_user_1 - - - 1 - integer|0s - 1 - 1 - - - 2 - integer|0s - 1 - - - 3 - integer|0s - 1 - - - user_id -group_id - - 1 - - - user_id - - - - group_id - - - - id - 1 - - - user_id - auth_user - id - - - group_id - auth_group - id - - - 1 - integer|0s - 1 - 1 - - - 2 - integer|0s - 1 - - - 3 - integer|0s - 1 - - - user_id -permission_id - - 1 - - - user_id - - - - permission_id - - - - id - 1 - - - user_id - auth_user - id - - - permission_id - auth_permission - id - - - 1 - integer|0s - 1 - 1 - - - 2 - text|0s - - - 3 - varchar(200)|0s - 1 - - - 4 - smallint unsigned|0s - 1 - - - 5 - text|0s - 1 - - - 6 - integer|0s - - - 7 - integer|0s - 1 - - - 8 - datetime|0s - 1 - - - content_type_id - - - - user_id - - - - id - 1 - - - content_type_id - django_content_type - id - - - user_id - auth_user - id - - - 1 - integer|0s - 1 - 1 - - - 2 - varchar(100)|0s - 1 - - - 3 - varchar(100)|0s - 1 - - - app_label -model - - 1 - - - id - 1 - - - 1 - integer|0s - 1 - 1 - - - 2 - varchar(255)|0s - 1 - - - 3 - varchar(255)|0s - 1 - - - 4 - datetime|0s - 1 - - - id - 1 - - - 1 - varchar(40)|0s - 1 - - - 2 - text|0s - 1 - - - 3 - datetime|0s - 1 - - - 1 - session_key - - 1 - - - expire_date - - - - session_key - 1 - sqlite_autoindex_django_session_1 - - - 1 - text|0s - - - 2 - text|0s - - - 3 - text|0s - - - 4 - int|0s - - - 5 - text|0s - - - 1 - - - 2 - - - 1 - integer|0s - 1 - 1 - - - 2 - varchar(32)|0s - 1 - - - 3 - varchar(32)|0s - 1 - - - 4 - varchar(32)|0s - 1 - - - 5 - varchar(32)|0s - 1 - - - id - 1 - - - 1 - integer|0s - 1 - 1 - - - 2 - integer|0s - 1 - - - 3 - datetime|0s - 1 - - - 4 - integer|0s - 1 - - - customer_id - - - - id - 1 - - - customer_id - web_customer - id - - - \ No newline at end of file diff --git "a/luffy_permission-\347\251\272\347\231\275\347\211\210/.idea/workspace.xml" "b/luffy_permission-\347\251\272\347\231\275\347\211\210/.idea/workspace.xml" index 0c1717e..882a3f3 100644 --- "a/luffy_permission-\347\251\272\347\231\275\347\211\210/.idea/workspace.xml" +++ "b/luffy_permission-\347\251\272\347\231\275\347\211\210/.idea/workspace.xml" @@ -2,16 +2,22 @@ - - - - - - - - - - + + + + + + + + + + + + + + + + - + - + + + + + + + + + + - - + + - + - + - - + + @@ -99,11 +116,11 @@ - + - - + + @@ -112,15 +129,22 @@ - - + + + + + + + + + - - + + @@ -129,28 +153,37 @@ - + - - + + - + - - + + - + - - + + + + + + + + + + + @@ -160,8 +193,8 @@ @@ -171,17 +204,24 @@ @@ -192,9 +232,10 @@ DEFINITION_ORDER - @@ -202,7 +243,6 @@ - @@ -220,6 +260,12 @@ + + + + + + @@ -231,16 +277,29 @@ + + + + + + + + + + + + @@ -12,4 +19,7 @@

{{ error }}

-{% endblock %} \ No newline at end of file + + + + diff --git "a/luffy_permission-\347\251\272\347\231\275\347\211\210/web/views/__pycache__/promiiss.cpython-36.pyc" "b/luffy_permission-\347\251\272\347\231\275\347\211\210/web/views/__pycache__/promiiss.cpython-36.pyc" index e6873721c9299c1dae8ad6d08349c94df8d05526..a01c945b4a1c41a40d2d086bcb94823d76432994 100644 GIT binary patch delta 921 zcmYjQ&ubGw6rP#=z1bw&q=Er2()uHa#Zp1gAVS+i!KS6#A}mU*ooU>4vq@(rP;t{J z@!CVlP5cM^FZ>5Qc-^a4&wBOErkL*V-hA`+y>GsGyYs{P=`O96%kGD@?=P{9&@Xi5 zA%LHOiQS8(yY~^*602v2HbxXtJ#l(&=mIvV`5A>JYEc_zk2(Qrx)-k>kDEBx4+P^d z+k#0MrCo7^FZp3FWP+_L{y*R{6eEh?5&m0ZN+uYq2#GbSP4Ea`VjVD%dThjIhBHEq za}rw`6OA)KoemJkf$N%Cy*tP3lnh9LFv#QID2sWunI=DABuUWPq8c8=1a= zUbRM6X2c$?W)>|q5Kt%y7A-drKg-P6o5jIb8Y=EL5MB5R;xIZndx0_oB$j0*uC`ES zD*O-@ehbl>TF`n6$pu-XixVIY&`j%uK(DT~bA5Lw*pI$Izo$F+<2YOxFy4!Vi2AAM zbfTkv8rJ6_h=@*)rNgi`4?>=dWWsW7$dk~YznIlGHC}}#=f*5aSDZOs4Q-%G`rRna zjVPt;v{}#18$Bl9_GxYmc$7-+s5-67B)0%fE9BAGJRA&IN^?uFLL^sTGxv8l_qMl! zU~8uxbe?Yo`?<5d**+*B*CB%&;F@-Badt9fLULCHOR82M!jF=>bJ<~ajyp*tWay|P z7tkrr@(uCj=_hjVM9C5lz#;5n8++Izi&)1#@iBqnYC6`5i)+{hZ{iy9V7Qt``0eRm zvVQL-RPyEj?v_Gza4TR!-2sG)b-P)fGHsQHC4TtkXrbj07)Pa*{w4Sv25P*1*P#1ae3=%2qIN{f1 zcKdSU`4fTioE;|^VN5Z_WXuNX<>}7X4{)!ECuI1*IStqJx9;sS=kot5uo#SGncEj*&c+v{wBJKYN+q7|# diff --git "a/luffy_permission-\347\251\272\347\231\275\347\211\210/web/views/promiiss.py" "b/luffy_permission-\347\251\272\347\231\275\347\211\210/web/views/promiiss.py" index 0bc8ef9..b9956b0 100644 --- "a/luffy_permission-\347\251\272\347\231\275\347\211\210/web/views/promiiss.py" +++ "b/luffy_permission-\347\251\272\347\231\275\347\211\210/web/views/promiiss.py" @@ -1,21 +1,40 @@ from django.shortcuts import HttpResponse, render, redirect, reverse from rabc import models +from rabc.models import User +from luffy_permission import settings def login(request): if request.method == 'POST': - + print(666) username = request.POST.get('username') password = request.POST.get('password') - user = models.User.objects.filter(name=username, pwd=password).first() + user = User.objects.filter(name=username, pwd=password).first() if not user: return render(request, 'login.html', {'error': '用户名或密码错误'}) - # 用户对象点关系管理对象,得角色,筛选出来 - permission = user.roles.filter(permissions__url__isnull=False).values('permissions__url').distinct() + # 用户对象点关系管理对象,得角色,筛选出来,图标,是否是菜单栏,菜单图标菜单名单 + permission = user.roles.filter(permissions__url__isnull=False).values('permissions__url', + 'permissions__icon', + 'permission__is_menu', + 'permissions__title', + ).distinct() + + permission_list = [] + menu_list = [] # 保存权限信息到session中 + for url in permission: + permission_list.append({'url': url['permissions__url']}) + if url['permission__is_menu']: + # 菜单需要三个条件 url title icon + menu_list.append({'url': url['permissions__url'], + 'title': url['permissions__title'], + 'icon': url['permission__icon'], + }) + request.session[settings.PERMISSIONS_LIST] = permission_list + + request.session[settings.MENU_LIST] = menu_list - request.session['permission'] = list(permission) request.session['is_login'] = '1' # 重定向到首页 -- Gitee From 66b52a2d842376411f316eb5eb014214a58af788 Mon Sep 17 00:00:00 2001 From: lmt <2806012050@qq.com> Date: Wed, 24 Apr 2019 19:13:02 +0800 Subject: [PATCH 02/11] =?UTF-8?q?=E4=B8=80=E7=BA=A7=E8=8F=9C=E5=8D=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../.idea/workspace.xml" | 144 ++++++++---------- .../db.sqlite3" | Bin 73728 -> 73728 bytes .../__pycache__/promiiss.cpython-36.pyc" | Bin 1361 -> 1351 bytes .../web/views/promiiss.py" | 9 +- 4 files changed, 65 insertions(+), 88 deletions(-) diff --git "a/luffy_permission-\347\251\272\347\231\275\347\211\210/.idea/workspace.xml" "b/luffy_permission-\347\251\272\347\231\275\347\211\210/.idea/workspace.xml" index 882a3f3..ccc901c 100644 --- "a/luffy_permission-\347\251\272\347\231\275\347\211\210/.idea/workspace.xml" +++ "b/luffy_permission-\347\251\272\347\231\275\347\211\210/.idea/workspace.xml" @@ -2,21 +2,7 @@ - - - - - - - - - - - - - - @@ -231,11 +199,11 @@ true DEFINITION_ORDER
- + @@ -361,14 +329,15 @@ - + + - + - + @@ -530,13 +499,24 @@ - + - - - - - + + + + + + + + + + + + + + + + @@ -549,59 +529,55 @@ - + - - - - - - - - - - - + - - + + - + - + - - + + - - + + - + - - + + + + + - + - - + + + + + diff --git "a/luffy_permission-\347\251\272\347\231\275\347\211\210/db.sqlite3" "b/luffy_permission-\347\251\272\347\231\275\347\211\210/db.sqlite3" index e9847024186416a0fa05324be7f71a2c49dfb931..724c3ff8bb637c053a16570e1a091226f8f5ef70 100644 GIT binary patch delta 1161 zcmZuwPi)&%9DdKw>7TV-)e0n}r4X_uY(i~qCnojK1SM@!r?HEhG;u5tBzD)>vD;`) zlehwPhe@3f12&(yjS3{R0}}N_hbW_n3rL8|xN(33g;5UE5ZYxs@Us44C|LIU`F;N0 z@Av(__k4bvJikr8cdTz605G-x_%5G}!SzpH-#G%qUZUrV$DSf|&0>L2fa zxbw;SZx=Viy&ZsU5vxVVnqRE7^M2pDe*608?upGxFj2^C9ovT7T4st^jn!rMnUxXhXPUjk~{m6Y%O=e$=)08uSV8 z2oI5jn4Dt;gJ;Bv1-h`ZKq*;;MOc>E_@4An_5cc?k5C3d;$uRB_u&orD)BOJ%l-rDUq`#T`I2GBL^ z(^WK>4R?e7y(D9MIo!V8$bVL{F^*-{{p97BN%zLq538D-vUy`kPczNB!kEixC&i_w zZ2ezcq}9l5y_C;6m{V0FQk`Fn|VgRgyXT zFvaf8VEQmcqad3#CC^f6CQ(t^r9ARIS1HO;eLB%pi+SnXbml;|`}S7>_AsHNVolbHi!ZUQ#?DG-&M*|s4O8qe)poA&Uv=R# T5_Ue}Bk>V_akJMC|3?1+;b(0O delta 358 zcmZoTz|wGlWr8&CTm}XP4=84zsA0}HcVog+E=HBjZrr;?Kd5p8kj2>nphc{ zTA7&YnOPbc85nOm@Sa-`Q}hgrj06`$I|K7l=3r(HP?g#uoDG#QJSCwH^RG3rlV#j=c10{~l2 BHTwVn delta 245 zcmX@kb&-qHn3tEU+W0^W<3!HOeBT%t7-|@@7*ZIsnTp;_e3dpif>ArRu7)j(r-nU+ zTap1t@_|VKNrn``In2$Bj0}Z!;S4pbKyADwd|CW93^i;}wtx*oiV%pMB5cD@B3L4n zBGSy*%oxm2!coJJ!q&_b%%CYc`2phsZsCH|qTI~l;>`TK$vsR;LQw(;f%y2$zEQ584V^2ut-nVWzo`Q0=m>0h>JOZL Date: Thu, 25 Apr 2019 01:01:52 +0800 Subject: [PATCH 03/11] =?UTF-8?q?=E4=BA=8C=E7=BA=A7=E7=9B=AE=E5=BD=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../86090516-39a3-4a0f-a8df-5e5e14165788.xml" | 320 ++++++++++-------- .../.idea/workspace.xml" | 253 +++++++++----- .../db.sqlite3" | Bin 73728 -> 73728 bytes .../rabc/__pycache__/admin.cpython-36.pyc" | Bin 579 -> 578 bytes .../rabc/__pycache__/models.cpython-36.pyc" | Bin 2112 -> 2369 bytes .../rabc/admin.py" | 6 +- .../migrations/0003_auto_20190424_2030.py" | 37 ++ .../0003_auto_20190424_2030.cpython-36.pyc" | Bin 0 -> 1119 bytes .../rabc/models.py" | 16 +- .../rabc/templates/menu.html" | 21 +- .../__pycache__/mu_tage.cpython-36.pyc" | Bin 636 -> 536 bytes .../rabc/templatetags/mu_tage.py" | 9 +- .../__pycache__/v_def.cpython-36.pyc" | Bin 0 -> 923 bytes .../rabc/views_def/v_def.py" | 39 +++ .../midwear/__pycache__/mid.cpython-36.pyc" | Bin 1109 -> 1125 bytes .../web/midwear/mid.py" | 1 + .../web/templates/layout.html" | 11 + .../__pycache__/promiiss.cpython-36.pyc" | Bin 1351 -> 979 bytes .../web/views/promiiss.py" | 26 +- 19 files changed, 456 insertions(+), 283 deletions(-) create mode 100644 "luffy_permission-\347\251\272\347\231\275\347\211\210/rabc/migrations/0003_auto_20190424_2030.py" create mode 100644 "luffy_permission-\347\251\272\347\231\275\347\211\210/rabc/migrations/__pycache__/0003_auto_20190424_2030.cpython-36.pyc" create mode 100644 "luffy_permission-\347\251\272\347\231\275\347\211\210/rabc/views_def/__pycache__/v_def.cpython-36.pyc" create mode 100644 "luffy_permission-\347\251\272\347\231\275\347\211\210/rabc/views_def/v_def.py" diff --git "a/luffy_permission-\347\251\272\347\231\275\347\211\210/.idea/dataSources/86090516-39a3-4a0f-a8df-5e5e14165788.xml" "b/luffy_permission-\347\251\272\347\231\275\347\211\210/.idea/dataSources/86090516-39a3-4a0f-a8df-5e5e14165788.xml" index 057fd98..b512e33 100644 --- "a/luffy_permission-\347\251\272\347\231\275\347\211\210/.idea/dataSources/86090516-39a3-4a0f-a8df-5e5e14165788.xml" +++ "b/luffy_permission-\347\251\272\347\231\275\347\211\210/.idea/dataSources/86090516-39a3-4a0f-a8df-5e5e14165788.xml" @@ -21,665 +21,689 @@
-
-
-
-
-
-
+
+
+
+
+
+
+
1
- +
1
- -
- +
+
+ 1 integer|0s 1 1 - + 2 varchar(80)|0s 1 - + 1 name 1 - + id 1 - + name sqlite_autoindex_auth_group_1 - + 1 integer|0s 1 1 - + 2 integer|0s 1 - + 3 integer|0s 1 - + group_id permission_id 1 - + group_id - + permission_id - + id 1 - + group_id auth_group id - + permission_id auth_permission id - + 1 integer|0s 1 1 - + 2 integer|0s 1 - + 3 varchar(100)|0s 1 - + 4 varchar(255)|0s 1 - + content_type_id codename 1 - + content_type_id - + id 1 - + content_type_id django_content_type id - + 1 integer|0s 1 1 - + 2 varchar(128)|0s 1 - + 3 datetime|0s - + 4 bool|0s 1 - + 5 varchar(30)|0s 1 - + 6 varchar(30)|0s 1 - + 7 varchar(254)|0s 1 - + 8 bool|0s 1 - + 9 bool|0s 1 - + 10 datetime|0s 1 - + 11 varchar(150)|0s 1 - + 1 username 1 - + id 1 - + username sqlite_autoindex_auth_user_1 - + 1 integer|0s 1 1 - + 2 integer|0s 1 - + 3 integer|0s 1 - + user_id group_id 1 - + user_id - + group_id - + id 1 - + user_id auth_user id - + group_id auth_group id - + 1 integer|0s 1 1 - + 2 integer|0s 1 - + 3 integer|0s 1 - + user_id permission_id 1 - + user_id - + permission_id - + id 1 - + user_id auth_user id - + permission_id auth_permission id - + 1 integer|0s 1 1 - + 2 text|0s - + 3 varchar(200)|0s 1 - + 4 smallint unsigned|0s 1 - + 5 text|0s 1 - + 6 integer|0s - + 7 integer|0s 1 - + 8 datetime|0s 1 - + content_type_id - + user_id - + id 1 - + content_type_id django_content_type id - + user_id auth_user id - + 1 integer|0s 1 1 - + 2 varchar(100)|0s 1 - + 3 varchar(100)|0s 1 - + app_label model 1 - + id 1 - + 1 integer|0s 1 1 - + 2 varchar(255)|0s 1 - + 3 varchar(255)|0s 1 - + 4 datetime|0s 1 - + id 1 - + 1 varchar(40)|0s 1 - + 2 text|0s 1 - + 3 datetime|0s 1 - + 1 session_key 1 - + expire_date - + session_key 1 sqlite_autoindex_django_session_1 - + + 1 + integer|0s + 1 + 1 + + + 2 + varchar(32)|0s + 1 + + + 3 + varchar(64)|0s + + + id + 1 + + 1 integer|0s 1 1 - + 2 varchar(108)|0s 1 - + 3 varchar(32)|0s 1 - + 4 - varchar(32)|0s - - - 5 - bool|0s - 1 + integer|0s - + + menu_id + + + id 1 - + + menu_id + rabc_menu + id + + 1 integer|0s 1 1 - + 2 varchar(32)|0s 1 - + id 1 - + 1 integer|0s 1 1 - + 2 integer|0s 1 - + 3 integer|0s 1 - + role_id permission_id 1 - + role_id - + permission_id - + id 1 - + role_id rabc_role id - + permission_id rabc_permission id - + 1 integer|0s 1 1 - + 2 varchar(32)|0s 1 - + 3 varchar(32)|0s 1 - + id 1 - + 1 integer|0s 1 1 - + 2 integer|0s 1 - + 3 integer|0s 1 - + user_id role_id 1 - + user_id - + role_id - + id 1 - + user_id rabc_user id - + role_id rabc_role id - + 1 text|0s - + 2 text|0s - + 3 text|0s - + 4 int|0s - + 5 text|0s - + 1 - + 2 - + 1 integer|0s 1 1 - + 2 varchar(32)|0s 1 - + 3 varchar(32)|0s 1 - + 4 varchar(32)|0s 1 - + 5 varchar(32)|0s 1 - + id 1 - + 1 integer|0s 1 1 - + 2 integer|0s 1 - + 3 datetime|0s 1 - + 4 integer|0s 1 - + customer_id - + id 1 - + customer_id web_customer id diff --git "a/luffy_permission-\347\251\272\347\231\275\347\211\210/.idea/workspace.xml" "b/luffy_permission-\347\251\272\347\231\275\347\211\210/.idea/workspace.xml" index ccc901c..84a4889 100644 --- "a/luffy_permission-\347\251\272\347\231\275\347\211\210/.idea/workspace.xml" +++ "b/luffy_permission-\347\251\272\347\231\275\347\211\210/.idea/workspace.xml" @@ -2,7 +2,16 @@ + + + + + + + + + + + + + + + + + + + + + - - + + @@ -81,8 +102,8 @@ - - + + @@ -93,8 +114,8 @@ - - + + @@ -102,11 +123,20 @@ + + + + + + + + + - - + + @@ -115,43 +145,47 @@ - + - + - + + - + - - - - - + + - + - - + + + + + - + - - + + + + + @@ -161,8 +195,8 @@ @@ -177,19 +211,21 @@ @@ -199,11 +235,11 @@ true DEFINITION_ORDER - - \ No newline at end of file diff --git "a/luffy_permission-\347\251\272\347\231\275\347\211\210/db.sqlite3" "b/luffy_permission-\347\251\272\347\231\275\347\211\210/db.sqlite3" index 724c3ff8bb637c053a16570e1a091226f8f5ef70..471466dc3d56c59aefda399240c668f9694e5d03 100644 GIT binary patch delta 3069 zcmai0eNY?66~Em*Nqh;6Y>fF9!m8!v?c4X>?*8`e9$lo5F48AT@-I*n)v@{`Tpm7IX9gEudgzQwr-s+n=yk-P zsi$Ww7LjYfJy&IU^o^U zn}S7o$Oc612L+-jdowa^+#+^l57%opDv$yArxM}eiO^(Bh{uKTF>3)pCJ>DH#}1AU z$Ap8E{sflBH;M0LGaEGUO$z-LNAw=Lik^jUrZhPVFjq|%6v)nqFHPz#qRj4;jh7Ou;q|Poq z@%80XXKx(4xHX5SEP9dFX_fkHnzHGoXNp0kvMh_Hw(G^$bVbVYOq#0Ei|^}-mHG^# zA^xsXr%=(9T`$#@0G+a2DJ$%*Dppn~Xv&}$>vScf8)%v;Dl#QP$%JX?@uzNl|7aDW zsgj*0VJsL*nwFn_ZRz#X3IqVmq!9(w1ab&u6Ud@bCQy)C1_2cTCEhlLETc&i5r7C$ znJ;gpHz5tYBB~myAiR>QYxoY#&C$?QK>^tvvS6uSJ4^~>g^Qx9@t_i3g_q$XUYjnc zAt7k2GFoKhQ*SqOEHc4mQI&9OP&QJ)|H6O4zr&Blfa_~xhl7q26 z^N_bW?1?mSp4J}T9q9~rw;oJ-BGG7f>yXgx4UY~+!h(l$@%ZOFUh#!X)ik!{e0lL^ zb}sK=S%<}HY_M5*3-kQdtvPDk2hlYOEum{T@}HuX&5)+_Ma!2KRu+D|eEzxR6HgrQ z*GDF1ivX5aES-NIQ*KQ@6%S3;kE_AoD4N<&p@)H++7CYvH~hnsH6I;N6&eiSu{`mU ze^!A;vHaFkG}%b;mj}wlydNmqNkgZt)(JsfP0hU4t17Ih0FUM+{3FrO+L>Id>}=_6 zYx1^fy-m$sZCc%$T=bvdrN#8^D}!?g%%5V zEPvIyvVXN>f1lj(=nKN1$j_ z&*2a_2hTfryU}j9@ph)aRyNRgpMmeKRBr$Lv1Yr`!to7uwy!4bT>NCkaO4Y}aSoO< z;)(GVdt)^jkZHiqxb@uKdr0RG217xeLwg8^tGPQ|bA!Xe7;Ux&JI^<6U$eljXZhZm zFEhc}jaIwWW^NGAeL7GH->1~jjL=_j3O|ERqH*NGJNF-GhL_-JI0pN0^2vuPZKeX} zWI&QKfYQEVu;l@`HAg|2^^|GCKa1y_Fa<+VQ}tJah8ok-v1dPg`b>IaP@k>93IC2- zC@3Vbp7g_Fz^E|Ubv1g5*lpUT&q!+qrs9e5SZMM-i|L6{+f)jCD^R92z1t>tl>l35 z<{f!dh~v9J&H-sQNGD4`{1qB}hEDFL#dj~AKm9hiB|QT`aaO?DZW$Tqp9;1}y8$RH zG&hGs18j6;tY>;~pm(%uw$t9#5f?&0bw)IArKEC_6C#_k8X@WhC-cXo(ODVn%9e153aMZ#y@t6|?0zH|+Ma;BfPAMi0d z)BLv7GYwkS?6BbD$QoIjm19|w>1m{)@VnwkOi3~S)Q*(4^a|YJ*rcEezS2Yz8^bW> zVf@e;A0~Dfp5t-Fj1$WGGj3)a<_4qL&eTtsmZS)+C9Sc}KG8@wWsPDUYn18N{E=?#Tkew<3PBgSDXCYq z;3$w72nwVp0mxC04h_sqKiHlO47J23q{{$=Yf0@kf4_*jU9;hU&zZIpf}nb<%@t|; z98UBLgI>ao!CCiQkZ_{%!Jy9*4G8Qs;pUf+<6dsF?noQqIN#km$m8+SK1|JT0+3P7 z1`pulZ5QV{~oFdK-?kkdDP=ZxFe(H~Q>XXjm1y!+unRvCW~|4sOB#((B&*@(*r O@XdDo;*Ux}5BeYVb!eji delta 1230 zcmZ{je@t6d6vywq=e2!Miqx*dLZLsP1stQL9Tw0DV+$~2-_X=#)|gso?GIa8Y01W7 zl*Q<#b7FUgWHBltCODHRyed(_kSr$C@Q=dygN0<#l+MiPvX~eXBHlNah-S-sCpYih z@BO@U&;8!v1#WnOd#hYMfe`Ax9WpkiGWAY8G5yS>!dyhwR4@;A7=bBx5n}KZtb&%@ zBx}$KM0!NE{#{ZA%dm{@2VgmY+ z*~A+PfbYpS7__Ds9V6kLD-8+A8*5PL6ashEE5NvYA&-uYWjf z0XZt)%NU<*8h8_tBZ)zO*eus-Fq@Iou|z1+Z_A(iIyXN$Q_bxFHMvX`%~b>;vA+2o zLNC!`@p7w822S!LRkVj#mjZ+?ba3KIM?)i6p@J&XZg%Y7ZDmbIe&$$qKUKUSWq&8) z{+BL3#GOHKCX?wDd*;kQ-}}bMpYUOs`%U*gdiA2QQ|Nl4$sIlD5DtVIpF9?_dp&(e z-O;`w;XwE~uji5Qp{~w|*W-=2Jwnv&3530IZ&WyzbRCSfgad~kPaJl#4(*#+xT!3* zw>p~H+u&+(HZ?gW7OQ8v30Hgt5qtx|^Y{iEYH7(I!dOm^PdrdZuHeE_rxU;2l=k<= zf_HH29a3YfdR#%@KifK6Ux8z|@aJIlKWgwU|?}4FCuTzJ=F7VC&jpR#4(EI4H;YF+~Y> zvBrOlXY*=YL3jdL#7v%Lx+xgTmf}av5&&@w@+*7~laPS~2w(w@tdV&#N(RZ(4DcXn z+o_VFQVX&T1VgrUaVq!fZL?Pv$t3&U)$3NJO!B&9bvpOA@sOoJhUyys)o(ZCt;=!k z!e`7=2A;_n_O7O{QOG3IOP;5~W{rNEbUX6ag`}CylzwZQsGW^nEcUYKVA0N^jW+Tl Kv!CkmWAG1S$BmEx diff --git "a/luffy_permission-\347\251\272\347\231\275\347\211\210/rabc/__pycache__/admin.cpython-36.pyc" "b/luffy_permission-\347\251\272\347\231\275\347\211\210/rabc/__pycache__/admin.cpython-36.pyc" index 9a36203cb8ba676fa4c26e18e897245a95048aa5..585e1fb6adf76c0db6b43f491834316b03faebb5 100644 GIT binary patch delta 194 zcmX@ia)?FQn3tF9TKIvO2u22m#|%h-1;};);^K^n%8^{Dj9F}1?5WII+!HJGb(vvu zazI8ZLlk2QLljdAV+vCWb2@VrGni(IVo6~MX3%7vct>$E52HI9FHmg}@8n3vFfJ~} zB9QTZnmm(tGDce7V)0GQD=mU30ILEKd_dwBhfQvNN@-529ng6U#XLZQhmnU_h)sZz G4+sIck|Kft delta 254 zcmX@aa+pQgn3tDpip+tSP(}uZ#|%h-1;};);^L@@%8?VhwCh=60%|};Dnk@w3PTiA z3S$aW3Udle3TrxR6f>O762+3j7R;c@ev3aKwJ0~UxHvOE&oL!8Gw&8tX38zrlFX8v z)LYD@MLDUiQ(SK1A}aBK{LrXr5CViCQlUIREEH0NR+d&9&n9(Pufwbt zNW?=>B4~sxDg+XNR4Pa)?GqI*ph}>Aj(sh*lMlc<|1;w_n?RdJY&4UZGnaGboZp=B z)YzD__1>NOl%;8RwamxRo<@n^N5wU+hgwT_bzOT?;|4c3G;Rj^lCf^OCM1kokXS_IuyL1CA@&Y5AXc zVGu2LE+?d|_rst4>tF0mqd8YK1$?5V)_mwkAEYcw!my!3LLdF7asef#m7i)$8qTBF zu&dQ+cESJ+76;+NO-&Rr;qTW_z43CLFZt18yFU5iLmVu~Y%T*y5q=D1pP)+S zbR&+6M-Cy85f5QmY9=C-`=`#uwg{Sw(Obbv%39!18hCGnDp*b?#AKFjlmXExv&;m^ z4+Uj}(d!t=1|?ui7F~YMBs>i8(B*#+c-U+^3?w$YJ74c^{<{0)4H-Pu>s{>*c5X>v zh8#(&lE-0ynn6MS@@K?(@co7gH9=$B^;_HlR%uDL@~j7-dtC{E(+dq|9O@>*;@yVu2LJO&(*mqJ|fc zbP7m14lg3<6p?fsUgBd&Iz?Vatj1GzDGr3>X7J68{*~W|8%jQ^2X3;^sAuGt&j;5( zleS8J)XXeDD%AgjAF}BvKT6F>`8i8oruX0^{Kx>`2cL8Mn-V_K))79XqjW!oxku44 zmp|s>X$-iQz)d-hmS-^YIZ{ctf)b_7EW`_q)T;Tkpx)gHKCj+BYlePr$frTxa~Ui- b`@b$)YQLf$(pTwX$MlAj%!*wZuay1)J^%D~ literal 2112 zcmbuA-)kII6vyYso!yz)+1+%j;!h9+VIB-k3#As(U^Tv&MPm9gEL>*yPTEapXX2e5 zYl07z1Z|L|K`OMGLKL*^Q;QD@g2lgMUS)T)e}M0vb8mJtn-*(umV5S|`)j`UoX@>; zrd+mfzWit7SE49?DY*xHWgbeh0EQ_{4V8}SsjBjU!ZfCDDNGO4Rc%xEbZ8;WfEMGR zg+NPz6``eg&|)z2W5u;bu$JPgS)miNAWT~5j-LWl=Ak4_FoEK!Oz||PdU`-s4SXdd zJF3g zopzG6<0!S@rGq=0quV?CKim`E#ibAXyAS(!u8l(I1JQQJ|BQw~bg6qeMX`guuSP%K z8odhDw1)nz2mPI&!S3JK?f1SN?A=&^Sw$AC_-WV`Q~KXOf?3P1&JCE58O_j-u4E)i z!*D7VD)i1nNuB|dj|I~_!gNqiHmZl}XBUI6FExoRqz+6QY+oDfZp%H@T_ZCojr>kP zX=YOj@lQjnJCuHs`r$#3^J&1FaT17;*~z>|*TR(h;eCZyVR2#peg|srpKq{LKe`k* z=FZKXK7DrX%~NOQ8ezJ!vQF0~@qJ@>|M%hTKZe`a8{BWU8Z!U0YwH<7?KUiwAaSNj zRDJ>~EeruZ_>biRlmx^6xw5K20Mt4J*XXvpVE`491mVh|GCl(Xvm&KQms487sTvqX z-KgcFcF%wK9FSLV@WqQg(j>*oPcjGt={7AHW#dbnF zL6mx=-HIcz1CF`NNfKd0U0er)B|%}hEf7`Q%l&jMy_ zRsv>9z>LitRt9EDtO9weX5?ZLaKX&*=Dor7-^SOZ^njT>F!Hi{@a1st3!zo8BS+@h zk!k)P?4YKj?8w&~mz~!z%9y$1up<)uFX+5JUKG(0S|{i@{{{%ZA3UB zfdm{zoOY$va^SY&A0Q+izoU<^5b^`KZ*_Y^R%@$ERo!1zSAA7IXtnB}?tC16poa0; z_|J#7v5qUhgaQmOV0-PxDl9O1O!e^ z&A{SxW`hNkJF^g%BDt*1rG}jvau_oBouq>F5i=0&P5c) z(L*kq_qiBlIcI5@aA_A&5%YsH$VsUf`uokJ{kMO8d-3wi{5Q>N_<+ScofbP{0goj` z;?sk51$R(<`SbnPS5NV7dlZN1U9qGwX&J{FjuEK7#+gJshFsQnxk#cs$2RHcs!uu* zv8p_4QO*)o7FF`0rx@s{I(;gZ5g=9+%F9xQe!Sq46q#>{HFcx|*!rHEJ`pNAQA6P` zNtfw67?X9za5l=AquylfUKz$JKV<>mYm1?rgB>)Dbx^4Zv*?VrAm?B z=1wRowebs2virO;+zo(At8Zn3N7M8M^6$VbOsAP7Fp{p$9T||d&5c`|8&|K%dWO7I z!~5D09hJHg-+x7M?b5Jv9`-Ku`u+1b1B2c$E+>;ccEsjS`>)^b|M71B`Lm%SZFuw= zhB!cj{|!*TJLq - {% for menu in menu_list %} - - {{ menu.title }} +{#
#} +{# {% for menu in menu_list %}#} +{# #} +{# {{ menu.title }}#} +{# {% endfor %}#} +{#
#} +
+ {% for menu in menu_list %} +
+
   {{ menu.title }}
+
+ {% for child in menu.children %} + {{ child.title }} + {% endfor %} +
+
{% endfor %} -
\ No newline at end of file diff --git "a/luffy_permission-\347\251\272\347\231\275\347\211\210/rabc/templatetags/__pycache__/mu_tage.cpython-36.pyc" "b/luffy_permission-\347\251\272\347\231\275\347\211\210/rabc/templatetags/__pycache__/mu_tage.cpython-36.pyc" index f324519092ef4635b045078012ccd4c3d0977b0e..ab9c39f2aa4028e3087c440a55b4dfcaaad4bd38 100644 GIT binary patch delta 182 zcmeyvGJ}QFn3tF9cEy1hqlujTj?4@U3`{`m48+9>K%#~ri=mbgNHS(Il`v=CWD~->|EH2Sxo2<&HrN&m4m{XcstjTX>Fl}jejADm`iqbCpRK`gGC-dmLT{F zzJRs(7T(gw5DUlB;(VOpoCEVBe`K&7hQqI|_mj6p@boAFz-8^R>O+PB1uZgB3GFD^ zVJoz2M284>n?~%z>7;eEr~Dk%z&J|eoONih6Ew~pU|P(Y^Qx?M5-dJ9cHA2(XW9zl$~4v4mGv&KiCrSCPsO|` zYE6G{lh3eNz5@Qh1sj| zLN9y(p)b%^5CpG%gxq>jd;sq~GhOJmCgjV>cTUd9Ifv{lFZ;X2&*(ix=r>vz7RV1^ z=}iEJ7?x;^LyQr#82N-ki`hLC&_AF>0XClIStinv9#j{r;m+4X*!3@f0w*ZJ3^VI1 zPQVGX8D$Q0OPY`p&8*BWtP%o@(2NK)vp=fBdW7C2Gg^>@GOwVFw2;7+O+gcf(Gt&` z!qL%Dr?3;ZaB9{malN}G9wF8^C8Y)ScHy)T^IIsPwbq_nkrK0|(>m@^=QS!wff6rk zB>rA?=R#iEL#$cJY#Ag3X|Hr22RPiEay1rOi%F{EI9D=`g-&xR!?o+0aQzCCiA?hF z#uaYN(>xaJn%A0*FYGt|w~xhOk{SZB17c`xX6%~t2JeJqil@qf+6R`hVN(Ra;CAQ< z9m~l`q(ReAHIZB!XDDRGm2r;yGKaIrgocg|GDD|Iq?vL0(r=v;KzT4j3?zDIB?6f194~Hl5rMKJX zXW!4i{W$;fIa2+%gXmcB4?2bp;rYB}qq#|3mQYEBs0U)x1t@-qcXW1})Yn}L( z4XlGbm_E5lnz)Ho3+%hlkEM%8Z9$8Mb!}=*{p + + + + + + {% block js %} {% endblock %} \ No newline at end of file diff --git "a/luffy_permission-\347\251\272\347\231\275\347\211\210/web/views/__pycache__/promiiss.cpython-36.pyc" "b/luffy_permission-\347\251\272\347\231\275\347\211\210/web/views/__pycache__/promiiss.cpython-36.pyc" index 62f7b4a407e3896876dc3c9b0e512f05d51fa995..69bb4411ca203d894a52d92e4d23f10b6bb8a0e1 100644 GIT binary patch delta 428 zcmYjNu};G<5cN3;O`Mcgs1mfDN~eI-g@Fa3N(?Y{>4Ku73Ti_GOZpn>s3QQqo7hyIk}ReJCnn9LnL0@hB7`oW>*gqcl~vRGer^t{_FX zh{7G_e;e6QGum>f@OVa<3L zOHT4Hyw~B5BIa6(Yc1a_N}Sy%Oi1qPrl+7V6T$cs;`RK+2pTojLO{R<4?J806RHNm z9_G#b)a>qW>$UnnG;~!}pj$$p2*K*#^DFtY8Jq_-et9+O%tQ7dhLl}*<{E!}HP!TL dc#UvHtyv5ED4Nn_!jARDgm${4Ev;fgc5Z(2+9jEz3YEGz1s4xgszy(2sB4`njXs8GX$)d8VtX0-HcDn1J9vtP6 zs^Y?-%9TIBAK=W5AHZ#|+&FVa%$kZecr~+cp688c*8AQ3=CtpY%g%@UU*BA{5c+{G zJqq9+7~eZ<_pa!~I6;1in8bqJCH4?`&e_SJGs5Q@&?5uvvDEwqm!k*~{7zxNmNtGm z&(+9|3}O@KBaR$WA}%SDwS^Xy7HFnrIM)^!qeC>)!HnbWT-!$b-I8$Y%QvEw@_}J2h}bjHHk^Ri?Ui) zCyfOZ9-_?35iu4D%+_3Tygz^9VSjxRvN7eHrU?&%DT{-E@?;vve)a!1er<)JqcriG zs}v8$VKVjWD{MxyI20<>_Ec7ZqZ4{T-4dFtA@FVAqCAMxLz)PkCL}!e8p0Td+1r!| zeZpvxF?;zF-D}Cr zEp-05YZ5iUZGmxlZxJryfmdE`sQv@C2~@#cQWbhB6;^kgl4%@1lvkO{`POAu*j26T Fe*l6*$s+&& diff --git "a/luffy_permission-\347\251\272\347\231\275\347\211\210/web/views/promiiss.py" "b/luffy_permission-\347\251\272\347\231\275\347\211\210/web/views/promiiss.py" index dc994cb..5ae3d57 100644 --- "a/luffy_permission-\347\251\272\347\231\275\347\211\210/web/views/promiiss.py" +++ "b/luffy_permission-\347\251\272\347\231\275\347\211\210/web/views/promiiss.py" @@ -2,7 +2,7 @@ from django.shortcuts import HttpResponse, render, redirect, reverse from rabc import models from rabc.models import User from luffy_permission import settings - +from rabc.views_def.v_def import init_permission def login(request): if request.method == 'POST': @@ -13,31 +13,9 @@ def login(request): user = User.objects.filter(name=username, pwd=password).first() if not user: return render(request, 'login.html', {'error': '用户名或密码错误'}) - # 用户对象点关系管理对象,得角色,筛选出来,图标,是否是菜单栏,菜单图标菜单名单 - permission = user.roles.filter(permissions__url__isnull=False).values('permissions__url', - 'permissions__icon', - 'permissions__is_menu', - 'permissions__title', - ).distinct() - - print(permission) - permission_list = [] - menu_list = [] - # 保存权限信息到session中 - for url in permission: - permission_list.append({'url': url['permissions__url']}) - if url['permissions__is_menu']: - # 菜单需要三个条件 url title icon - menu_list.append({'url': url['permissions__url'], - 'title': url['permissions__title'], - 'icon': url['permissions__icon'], - }) - request.session[settings.PERMISSIONS_LIST] = permission_list - - request.session[settings.MENU_LIST] = menu_list - request.session['is_login'] = '1' + init_permission(request,user) # 重定向到首页 return redirect(reverse('index')) -- Gitee From c03fd946860119e9ba0a89756752308500bceea2 Mon Sep 17 00:00:00 2001 From: lmt <2806012050@qq.com> Date: Thu, 25 Apr 2019 16:19:57 +0800 Subject: [PATCH 04/11] =?UTF-8?q?=E4=BA=8C=E7=BA=A7=E8=8F=9C=E5=8D=95?= =?UTF-8?q?=E9=BB=98=E8=AE=A4=E9=80=89=E4=B8=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../86090516-39a3-4a0f-a8df-5e5e14165788.xml" | 111 ++++++----- .../.idea/workspace.xml" | 188 ++++++++---------- .../db.sqlite3" | Bin 73728 -> 73728 bytes .../rabc/__pycache__/models.cpython-36.pyc" | Bin 2369 -> 2586 bytes .../rabc/migrations/0004_menu_weight.py" | 20 ++ .../0004_menu_weight.cpython-36.pyc" | Bin 0 -> 638 bytes .../rabc/models.py" | 12 +- .../rabc/templates/menu.html" | 10 +- .../__pycache__/mu_tage.cpython-36.pyc" | Bin 536 -> 982 bytes .../rabc/templatetags/mu_tage.py" | 18 +- .../__pycache__/v_def.cpython-36.pyc" | Bin 923 -> 972 bytes .../rabc/views_def/v_def.py" | 6 +- .../web/templates/layout.html" | 12 +- 13 files changed, 206 insertions(+), 171 deletions(-) create mode 100644 "luffy_permission-\347\251\272\347\231\275\347\211\210/rabc/migrations/0004_menu_weight.py" create mode 100644 "luffy_permission-\347\251\272\347\231\275\347\211\210/rabc/migrations/__pycache__/0004_menu_weight.cpython-36.pyc" diff --git "a/luffy_permission-\347\251\272\347\231\275\347\211\210/.idea/dataSources/86090516-39a3-4a0f-a8df-5e5e14165788.xml" "b/luffy_permission-\347\251\272\347\231\275\347\211\210/.idea/dataSources/86090516-39a3-4a0f-a8df-5e5e14165788.xml" index b512e33..4d28adf 100644 --- "a/luffy_permission-\347\251\272\347\231\275\347\211\210/.idea/dataSources/86090516-39a3-4a0f-a8df-5e5e14165788.xml" +++ "b/luffy_permission-\347\251\272\347\231\275\347\211\210/.idea/dataSources/86090516-39a3-4a0f-a8df-5e5e14165788.xml" @@ -458,252 +458,257 @@ model 3 varchar(64)|0s
- + + 4 + integer|0s + 1 + + id 1 - + 1 integer|0s 1 1 - + 2 varchar(108)|0s 1 - + 3 varchar(32)|0s 1 - + 4 integer|0s - + menu_id - + id 1 - + menu_id rabc_menu id - + 1 integer|0s 1 1 - + 2 varchar(32)|0s 1 - + id 1 - + 1 integer|0s 1 1 - + 2 integer|0s 1 - + 3 integer|0s 1 - + role_id permission_id 1 - + role_id - + permission_id - + id 1 - + role_id rabc_role id - + permission_id rabc_permission id - + 1 integer|0s 1 1 - + 2 varchar(32)|0s 1 - + 3 varchar(32)|0s 1 - + id 1 - + 1 integer|0s 1 1 - + 2 integer|0s 1 - + 3 integer|0s 1 - + user_id role_id 1 - + user_id - + role_id - + id 1 - + user_id rabc_user id - + role_id rabc_role id - + 1 text|0s - + 2 text|0s - + 3 text|0s - + 4 int|0s - + 5 text|0s - + 1 - + 2 - + 1 integer|0s 1 1 - + 2 varchar(32)|0s 1 - + 3 varchar(32)|0s 1 - + 4 varchar(32)|0s 1 - + 5 varchar(32)|0s 1 - + id 1 - + 1 integer|0s 1 1 - + 2 integer|0s 1 - + 3 datetime|0s 1 - + 4 integer|0s 1 - + customer_id - + id 1 - + customer_id web_customer id diff --git "a/luffy_permission-\347\251\272\347\231\275\347\211\210/.idea/workspace.xml" "b/luffy_permission-\347\251\272\347\231\275\347\211\210/.idea/workspace.xml" index 84a4889..0d8f05d 100644 --- "a/luffy_permission-\347\251\272\347\231\275\347\211\210/.idea/workspace.xml" +++ "b/luffy_permission-\347\251\272\347\231\275\347\211\210/.idea/workspace.xml" @@ -2,17 +2,15 @@ - + - - + - - - - - - - - - - - - - - - + + @@ -102,7 +90,7 @@ - + @@ -114,7 +102,7 @@ - + @@ -126,8 +114,8 @@ - - + + @@ -135,7 +123,7 @@ - + @@ -144,24 +132,20 @@ - + - - - - - - + + - + - - + + @@ -169,8 +153,8 @@ - - + + @@ -181,8 +165,8 @@ - - + + @@ -217,15 +201,15 @@ @@ -235,10 +219,9 @@ true DEFINITION_ORDER - -
@@ -16,7 +19,9 @@ - + {% if request|has_permission:'customer_del' or request|has_permission:'customer_edit' %} + + {% endif %} @@ -27,12 +32,20 @@ - + {% if request|has_permission:'customer_del' or request|has_permission:'customer_edit' %} + + + {% endif %} {% endfor %} diff --git "a/luffy_permission-\347\251\272\347\231\275\347\211\210/web/templates/layout.html" "b/luffy_permission-\347\251\272\347\231\275\347\211\210/web/templates/layout.html" index b29ac52..6bec4e4 100644 --- "a/luffy_permission-\347\251\272\347\231\275\347\211\210/web/templates/layout.html" +++ "b/luffy_permission-\347\251\272\347\231\275\347\211\210/web/templates/layout.html" @@ -168,15 +168,7 @@
- + {% dao_hang_lan request %}
{% block content %} {% endblock %}
diff --git "a/luffy_permission-\347\251\272\347\231\275\347\211\210/web/urls.py" "b/luffy_permission-\347\251\272\347\231\275\347\211\210/web/urls.py" index 0190203..54ad48c 100644 --- "a/luffy_permission-\347\251\272\347\231\275\347\211\210/web/urls.py" +++ "b/luffy_permission-\347\251\272\347\231\275\347\211\210/web/urls.py" @@ -8,13 +8,13 @@ urlpatterns = [ url(r'login/$', promiiss.login,name='login'), url(r'index/$', promiiss.index,name='index'), - url(r'^customer/list/$', customer.customer_list), - url(r'^customer/add/$', customer.customer_add), - url(r'^customer/edit/(?P\d+)/$', customer.customer_edit), - url(r'^customer/del/(?P\d+)/$', customer.customer_del), + url(r'^customer/list/$', customer.customer_list,name='customer_list'), + url(r'^customer/add/$', customer.customer_add,name='customer_add'), + url(r'^customer/edit/(?P\d+)/$', customer.customer_edit,name='customer_edit'), + url(r'^customer/del/(?P\d+)/$', customer.customer_del,name='customer_del'), - url(r'^payment/list/$', payment.payment_list), - url(r'^payment/add/$', payment.payment_add), - url(r'^payment/edit/(?P\d+)/$', payment.payment_edit), - url(r'^payment/del/(?P\d+)/$', payment.payment_del), + url(r'^payment/list/$', payment.payment_list,name='payment_list'), + url(r'^payment/add/$', payment.payment_add,name='payment_add'), + url(r'^payment/edit/(?P\d+)/$', payment.payment_edit,name='payment_edit'), + url(r'^payment/del/(?P\d+)/$', payment.payment_del,name='payment_del'), ] diff --git "a/luffy_permission-\347\251\272\347\231\275\347\211\210/web/views/__pycache__/promiiss.cpython-36.pyc" "b/luffy_permission-\347\251\272\347\231\275\347\211\210/web/views/__pycache__/promiiss.cpython-36.pyc" index 68ce0443be0ef006ad6cd58431255f7cbbee6374..6b026c88827fd4f1d424d9900abc398316684bdb 100644 GIT binary patch delta 24 gcmdnXzL%ZTn3tD}`|QCO!Ht|hnHZTSGc)f309OwN`Tzg` delta 24 gcmdnXzL%ZTn3tDJcG Date: Tue, 28 May 2019 22:28:24 +0800 Subject: [PATCH 08/11] CMDB --- CMDB/autoclient/.idea/autoclient.iml | 11 + CMDB/autoclient/.idea/markdown-navigator.xml | 85 ++ .../markdown-navigator/profiles_settings.xml | 3 + CMDB/autoclient/.idea/misc.xml | 7 + CMDB/autoclient/.idea/modules.xml | 8 + CMDB/autoclient/.idea/workspace.xml | 769 ++++++++++++++++++ CMDB/autoclient/bin/client.py | 12 + .../__pycache__/settings.cpython-36.pyc | Bin 0 -> 807 bytes CMDB/autoclient/config/cret | 1 + CMDB/autoclient/config/settings.py | 49 ++ CMDB/autoclient/files/board.out | 12 + CMDB/autoclient/files/cpuinfo.out | 600 ++++++++++++++ CMDB/autoclient/files/disk.out | 273 +++++++ CMDB/autoclient/files/memory.out | 135 +++ CMDB/autoclient/files/nic.out | 25 + .../lib/__pycache__/auth.cpython-36.pyc | Bin 0 -> 355 bytes .../lib/__pycache__/convert.cpython-36.pyc | Bin 0 -> 568 bytes .../__pycache__/import_string.cpython-36.pyc | Bin 0 -> 371 bytes .../lib/__pycache__/logger.cpython-36.pyc | Bin 0 -> 1050 bytes .../lib/__pycache__/response.cpython-36.pyc | Bin 0 -> 578 bytes CMDB/autoclient/lib/auth.py | 8 + .../conf/__pycache__/config.cpython-36.pyc | Bin 0 -> 739 bytes .../global_settings.cpython-36.pyc | Bin 0 -> 322 bytes CMDB/autoclient/lib/conf/config.py | 28 + CMDB/autoclient/lib/conf/global_settings.py | 12 + CMDB/autoclient/lib/convert.py | 21 + CMDB/autoclient/lib/import_string.py | 22 + CMDB/autoclient/lib/logger.py | 27 + CMDB/autoclient/lib/response.py | 16 + CMDB/autoclient/log/cmdb.log | 15 + .../src/__pycache__/script.cpython-36.pyc | Bin 0 -> 471 bytes .../engine/__pycache__/agent.cpython-36.pyc | Bin 0 -> 1397 bytes .../engine/__pycache__/base.cpython-36.pyc | Bin 0 -> 1688 bytes .../engine/__pycache__/salt.cpython-36.pyc | Bin 0 -> 592 bytes .../src/engine/__pycache__/ssh.cpython-36.pyc | Bin 0 -> 816 bytes CMDB/autoclient/src/engine/agent.py | 84 ++ CMDB/autoclient/src/engine/ansible.py | 65 ++ CMDB/autoclient/src/engine/base.py | 50 ++ CMDB/autoclient/src/engine/salt.py | 13 + CMDB/autoclient/src/engine/ssh.py | 21 + CMDB/autoclient/src/plugins/__init__.py | 12 + .../__pycache__/__init__.cpython-36.pyc | Bin 0 -> 488 bytes .../plugins/__pycache__/base.cpython-36.pyc | Bin 0 -> 1166 bytes .../plugins/__pycache__/basic.cpython-36.pyc | Bin 0 -> 1696 bytes .../plugins/__pycache__/cpu.cpython-36.pyc | Bin 0 -> 1696 bytes .../plugins/__pycache__/disk.cpython-36.pyc | Bin 0 -> 2085 bytes .../__pycache__/main_board.cpython-36.pyc | Bin 0 -> 1444 bytes .../plugins/__pycache__/memory.cpython-36.pyc | Bin 0 -> 1913 bytes .../plugins/__pycache__/nic.cpython-36.pyc | Bin 0 -> 5482 bytes CMDB/autoclient/src/plugins/base.py | 36 + CMDB/autoclient/src/plugins/basic.py | 59 ++ CMDB/autoclient/src/plugins/cpu.py | 54 ++ CMDB/autoclient/src/plugins/disk.py | 86 ++ CMDB/autoclient/src/plugins/main_board.py | 47 ++ CMDB/autoclient/src/plugins/memory.py | 73 ++ CMDB/autoclient/src/plugins/nic.py | 225 +++++ CMDB/autoclient/src/script.py | 31 + CMDB/autoclient/test.py | 60 ++ .../\350\204\232\346\234\254/data.py" | 95 +++ .../\350\204\232\346\234\254/run.py" | 74 ++ .../\347\272\277\347\250\213\346\261\240.py" | 14 + ...31\350\257\257\345\244\204\347\220\206.py" | 15 + CMDB/autoserver | 1 + .../.idea/workspace.xml" | 564 +++++++------ .../db.sqlite3" | Bin 76800 -> 78848 bytes .../__pycache__/settings.cpython-36.pyc" | Bin 2567 -> 2620 bytes .../__pycache__/urls.cpython-36.pyc" | Bin 1007 -> 1063 bytes .../luffy_permission/settings.py" | 10 + .../luffy_permission/urls.py" | 3 + .../rabc/__pycache__/models.cpython-36.pyc" | Bin 2728 -> 2764 bytes .../rabc/__pycache__/urls.cpython-36.pyc" | Bin 0 -> 1049 bytes .../rabc/__pycache__/views.cpython-36.pyc" | Bin 195 -> 6273 bytes .../rabc/form/__init__.py" | 6 + .../form/__pycache__/__init__.cpython-36.pyc" | Bin 0 -> 286 bytes .../form/__pycache__/forms.cpython-36.pyc" | Bin 0 -> 2860 bytes .../rabc/form/forms.py" | 66 ++ .../rabc/midwear/__init__.py" | 0 .../rabc/midwear/mid.py" | 0 .../rabc/models.py" | 5 +- .../rabc/static/rbac/css/menu.css" | 75 ++ .../rabc/static/rbac/js/menu.js" | 4 + .../rabc/templates/breadcrumb.html" | 9 + .../templates/distribute_permissions.html" | 243 ++++++ .../rabc/templates/form.html" | 53 ++ .../rabc/templates/menu.html" | 19 +- .../rabc/templates/menu_list.html" | 135 +++ .../rabc/templates/multi_permissions.html" | 144 ++++ .../rabc/templates/role_list.html" | 31 + .../__pycache__/mu_tage.cpython-36.pyc" | Bin 1140 -> 1477 bytes .../rabc/templatetags/mu_tage.py" | 21 +- .../rabc/urls.py" | 37 + .../rabc/views.py" | 300 ++++++- .../__pycache__/routes.cpython-36.pyc" | Bin 0 -> 1524 bytes .../__pycache__/v_def.cpython-36.pyc" | Bin 1109 -> 1128 bytes .../rabc/views_def/routes.py" | 79 ++ .../rabc/views_def/v_def.py" | 11 +- .../web/__pycache__/urls.cpython-36.pyc" | Bin 860 -> 860 bytes .../__pycache__/__init__.cpython-36.pyc" | Bin 288 -> 0 bytes .../midwear/__pycache__/mid.cpython-36.pyc" | Bin 1360 -> 0 bytes .../web/templates/layout.html" | 58 +- .../web/templates/login.html" | 12 +- .../web/urls.py" | 6 + .../views/__pycache__/role.cpython-36.pyc" | Bin 0 -> 1114 bytes .../web/views/role.py" | 0 .../\346\225\260\346\215\256.py" | 11 + new_crm/.idea/workspace.xml | 365 ++++----- new_crm/crm/__pycache__/forms.cpython-36.pyc | Bin 5520 -> 5520 bytes new_crm/crm/__pycache__/urls.cpython-36.pyc | Bin 1493 -> 1510 bytes .../__pycache__/auth.cpython-36.pyc | Bin 853 -> 831 bytes new_crm/crm/midelwaers/auth.py | 2 +- .../viwes/__pycache__/customer.cpython-36.pyc | Bin 8049 -> 8069 bytes .../viwes/__pycache__/teacher.cpython-36.pyc | Bin 3904 -> 4215 bytes new_crm/crm/viwes/customer.py | 1 + .../__pycache__/settings.cpython-36.pyc | Bin 2445 -> 2445 bytes 114 files changed, 4997 insertions(+), 527 deletions(-) create mode 100644 CMDB/autoclient/.idea/autoclient.iml create mode 100644 CMDB/autoclient/.idea/markdown-navigator.xml create mode 100644 CMDB/autoclient/.idea/markdown-navigator/profiles_settings.xml create mode 100644 CMDB/autoclient/.idea/misc.xml create mode 100644 CMDB/autoclient/.idea/modules.xml create mode 100644 CMDB/autoclient/.idea/workspace.xml create mode 100644 CMDB/autoclient/bin/client.py create mode 100644 CMDB/autoclient/config/__pycache__/settings.cpython-36.pyc create mode 100644 CMDB/autoclient/config/cret create mode 100644 CMDB/autoclient/config/settings.py create mode 100644 CMDB/autoclient/files/board.out create mode 100644 CMDB/autoclient/files/cpuinfo.out create mode 100644 CMDB/autoclient/files/disk.out create mode 100644 CMDB/autoclient/files/memory.out create mode 100644 CMDB/autoclient/files/nic.out create mode 100644 CMDB/autoclient/lib/__pycache__/auth.cpython-36.pyc create mode 100644 CMDB/autoclient/lib/__pycache__/convert.cpython-36.pyc create mode 100644 CMDB/autoclient/lib/__pycache__/import_string.cpython-36.pyc create mode 100644 CMDB/autoclient/lib/__pycache__/logger.cpython-36.pyc create mode 100644 CMDB/autoclient/lib/__pycache__/response.cpython-36.pyc create mode 100644 CMDB/autoclient/lib/auth.py create mode 100644 CMDB/autoclient/lib/conf/__pycache__/config.cpython-36.pyc create mode 100644 CMDB/autoclient/lib/conf/__pycache__/global_settings.cpython-36.pyc create mode 100644 CMDB/autoclient/lib/conf/config.py create mode 100644 CMDB/autoclient/lib/conf/global_settings.py create mode 100644 CMDB/autoclient/lib/convert.py create mode 100644 CMDB/autoclient/lib/import_string.py create mode 100644 CMDB/autoclient/lib/logger.py create mode 100644 CMDB/autoclient/lib/response.py create mode 100644 CMDB/autoclient/log/cmdb.log create mode 100644 CMDB/autoclient/src/__pycache__/script.cpython-36.pyc create mode 100644 CMDB/autoclient/src/engine/__pycache__/agent.cpython-36.pyc create mode 100644 CMDB/autoclient/src/engine/__pycache__/base.cpython-36.pyc create mode 100644 CMDB/autoclient/src/engine/__pycache__/salt.cpython-36.pyc create mode 100644 CMDB/autoclient/src/engine/__pycache__/ssh.cpython-36.pyc create mode 100644 CMDB/autoclient/src/engine/agent.py create mode 100644 CMDB/autoclient/src/engine/ansible.py create mode 100644 CMDB/autoclient/src/engine/base.py create mode 100644 CMDB/autoclient/src/engine/salt.py create mode 100644 CMDB/autoclient/src/engine/ssh.py create mode 100644 CMDB/autoclient/src/plugins/__init__.py create mode 100644 CMDB/autoclient/src/plugins/__pycache__/__init__.cpython-36.pyc create mode 100644 CMDB/autoclient/src/plugins/__pycache__/base.cpython-36.pyc create mode 100644 CMDB/autoclient/src/plugins/__pycache__/basic.cpython-36.pyc create mode 100644 CMDB/autoclient/src/plugins/__pycache__/cpu.cpython-36.pyc create mode 100644 CMDB/autoclient/src/plugins/__pycache__/disk.cpython-36.pyc create mode 100644 CMDB/autoclient/src/plugins/__pycache__/main_board.cpython-36.pyc create mode 100644 CMDB/autoclient/src/plugins/__pycache__/memory.cpython-36.pyc create mode 100644 CMDB/autoclient/src/plugins/__pycache__/nic.cpython-36.pyc create mode 100644 CMDB/autoclient/src/plugins/base.py create mode 100644 CMDB/autoclient/src/plugins/basic.py create mode 100644 CMDB/autoclient/src/plugins/cpu.py create mode 100644 CMDB/autoclient/src/plugins/disk.py create mode 100644 CMDB/autoclient/src/plugins/main_board.py create mode 100644 CMDB/autoclient/src/plugins/memory.py create mode 100644 CMDB/autoclient/src/plugins/nic.py create mode 100644 CMDB/autoclient/src/script.py create mode 100644 CMDB/autoclient/test.py create mode 100644 "CMDB/autoclient/\350\204\232\346\234\254/data.py" create mode 100644 "CMDB/autoclient/\350\204\232\346\234\254/run.py" create mode 100644 "CMDB/autoclient/\350\204\232\346\234\254/\347\272\277\347\250\213\346\261\240.py" create mode 100644 "CMDB/autoclient/\350\204\232\346\234\254/\351\224\231\350\257\257\345\244\204\347\220\206.py" create mode 160000 CMDB/autoserver create mode 100644 "luffy_permission-\347\251\272\347\231\275\347\211\210/rabc/__pycache__/urls.cpython-36.pyc" create mode 100644 "luffy_permission-\347\251\272\347\231\275\347\211\210/rabc/form/__init__.py" create mode 100644 "luffy_permission-\347\251\272\347\231\275\347\211\210/rabc/form/__pycache__/__init__.cpython-36.pyc" create mode 100644 "luffy_permission-\347\251\272\347\231\275\347\211\210/rabc/form/__pycache__/forms.cpython-36.pyc" create mode 100644 "luffy_permission-\347\251\272\347\231\275\347\211\210/rabc/form/forms.py" rename "luffy_permission-\347\251\272\347\231\275\347\211\210/web/midwear/__init__.py" => "luffy_permission-\347\251\272\347\231\275\347\211\210/rabc/midwear/__init__.py" (100%) rename "luffy_permission-\347\251\272\347\231\275\347\211\210/web/midwear/mid.py" => "luffy_permission-\347\251\272\347\231\275\347\211\210/rabc/midwear/mid.py" (100%) create mode 100644 "luffy_permission-\347\251\272\347\231\275\347\211\210/rabc/static/rbac/css/menu.css" create mode 100644 "luffy_permission-\347\251\272\347\231\275\347\211\210/rabc/static/rbac/js/menu.js" create mode 100644 "luffy_permission-\347\251\272\347\231\275\347\211\210/rabc/templates/breadcrumb.html" create mode 100644 "luffy_permission-\347\251\272\347\231\275\347\211\210/rabc/templates/distribute_permissions.html" create mode 100644 "luffy_permission-\347\251\272\347\231\275\347\211\210/rabc/templates/form.html" create mode 100644 "luffy_permission-\347\251\272\347\231\275\347\211\210/rabc/templates/menu_list.html" create mode 100644 "luffy_permission-\347\251\272\347\231\275\347\211\210/rabc/templates/multi_permissions.html" create mode 100644 "luffy_permission-\347\251\272\347\231\275\347\211\210/rabc/templates/role_list.html" create mode 100644 "luffy_permission-\347\251\272\347\231\275\347\211\210/rabc/urls.py" create mode 100644 "luffy_permission-\347\251\272\347\231\275\347\211\210/rabc/views_def/__pycache__/routes.cpython-36.pyc" create mode 100644 "luffy_permission-\347\251\272\347\231\275\347\211\210/rabc/views_def/routes.py" delete mode 100644 "luffy_permission-\347\251\272\347\231\275\347\211\210/web/midwear/__pycache__/__init__.cpython-36.pyc" delete mode 100644 "luffy_permission-\347\251\272\347\231\275\347\211\210/web/midwear/__pycache__/mid.cpython-36.pyc" create mode 100644 "luffy_permission-\347\251\272\347\231\275\347\211\210/web/views/__pycache__/role.cpython-36.pyc" create mode 100644 "luffy_permission-\347\251\272\347\231\275\347\211\210/web/views/role.py" diff --git a/CMDB/autoclient/.idea/autoclient.iml b/CMDB/autoclient/.idea/autoclient.iml new file mode 100644 index 0000000..6711606 --- /dev/null +++ b/CMDB/autoclient/.idea/autoclient.iml @@ -0,0 +1,11 @@ + + + + + + + + + + \ No newline at end of file diff --git a/CMDB/autoclient/.idea/markdown-navigator.xml b/CMDB/autoclient/.idea/markdown-navigator.xml new file mode 100644 index 0000000..80926cc --- /dev/null +++ b/CMDB/autoclient/.idea/markdown-navigator.xml @@ -0,0 +1,85 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/CMDB/autoclient/.idea/markdown-navigator/profiles_settings.xml b/CMDB/autoclient/.idea/markdown-navigator/profiles_settings.xml new file mode 100644 index 0000000..57927c5 --- /dev/null +++ b/CMDB/autoclient/.idea/markdown-navigator/profiles_settings.xml @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/CMDB/autoclient/.idea/misc.xml b/CMDB/autoclient/.idea/misc.xml new file mode 100644 index 0000000..3999087 --- /dev/null +++ b/CMDB/autoclient/.idea/misc.xml @@ -0,0 +1,7 @@ + + + + + + \ No newline at end of file diff --git a/CMDB/autoclient/.idea/modules.xml b/CMDB/autoclient/.idea/modules.xml new file mode 100644 index 0000000..046bbb2 --- /dev/null +++ b/CMDB/autoclient/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/CMDB/autoclient/.idea/workspace.xml b/CMDB/autoclient/.idea/workspace.xml new file mode 100644 index 0000000..60518a9 --- /dev/null +++ b/CMDB/autoclient/.idea/workspace.xml @@ -0,0 +1,769 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true + DEFINITION_ORDER + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + + + + + + + + + + + + - - + - + - + - + @@ -371,31 +324,31 @@ - + - + - + - + - + - + @@ -405,28 +358,50 @@ - + + + + + + + + + + + + + + + + + + + + - - + + + + + + + + + - - + - - - - - + + - - - - + + + + @@ -437,80 +412,121 @@ - + - - - - + + - + + + + + + + + + + + + + + + - - + + - + - - - + - - + + - + - - + + - + - - + + - + - - + + - + + + - - + + - - - - + + + + - + - - + + - + + + + + + + + + + + + + + + + + + + + + + + - - + + + + + + + + + @@ -521,98 +537,164 @@ - + + + + + + + + - - + + - - + + + + + + - - + + - + - - + + + + + + + + + - + - + - - + + - + - - + + - + - + - - + + - + - - + + + + + + + + + - + + + + - + + + + + + + + + + + + + + + + + + + + + + - - + + - + - - + + - + - + - - + + + + + + + + + - + - + - - + + + + + + + + + + + + diff --git "a/luffy_permission-\347\251\272\347\231\275\347\211\210/db.sqlite3" "b/luffy_permission-\347\251\272\347\231\275\347\211\210/db.sqlite3" index 901c06ba80937ee14d72b03aaa79498a69f7804f..c9c902cc017cb6979b511ba7d632b53bdf3442f6 100644 GIT binary patch delta 6935 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 E3z*tWb^rhX delta 2977 zcmeHIeQXnD7{B+PcI&!LHyLcefDHj*3**|Z-8y4*8*912U2RwTahlAIZtSkTc3H>P z4iIJ*z+~Xat10|J@FR*wM8+9Mkd7%aacWRO12HHB-6jMGU(Ohf`nCgN1pm~(*30`m zm)`sQp5OC4zxQtQPpZvlRQ5h+9h`<^ zcP>Sz89>UZ;&C)b4G7UGlc9nPq=qY$I$H%4$|6QN{cxoQoltTMhX9{gHh1>u!52pR z;#ml&dE*CO8SmdRx^q`HVVn4z2@Fk4F^Y9$3hYpaTg{1PpIa2j5=!Z{W7!JchcoSYG9Onb} zytbdj_EPXW`~o*%0QSQ^cop`L-57QdoL+)<9*)BM@HKo(dU%3hd_-b-Pu?7kZa+}lM&856cvRTSsiW}660YtQX_A?xD-vpnqyC< zxy-9-Sp(j2ER>bHEoUV%wH1ekuVy~Pn2U7ADqTgDUSC$um<p)E8noG8Hk6Vvj03ZG8Tw;NH<<6_9)9KCY_2czkz zFDECB)>7~Wgkc7qp#8L#WS&5S+F57<%_rojwhA`nX!Bd6K~@Tjo)xQgoWyn!Z{#H} zgAW`lS>gyb)mDZ*mS|vQEYQh{U82uz7j4qo2pg(t6KYu#?_naW6iBr{yEVW`^=tgj z)iJNr60a^rd2!t$l;@84JUp{1#zt5<7$C`vt7_}JQb@8<*JO<*Cl=)hT63(P@p&8( zp@B8A!KjXx9kMs+o%OApg?PQUnO~2PU(c4YvK*w+n!%ut&eLLq9wH+oxjDS zGwT_hc`0LDdhdCg65f>X{x{(<<|<=lnXZBevV2N-Q^NZXglD|}8&6-QW6CNj%tpqX z6dw7}WU*w`la)a}#R-)5m@h5gUW#*P7AU%(+mW`Xu<`ci9B;d2!h2s-+DvUpS3QnZ_y(ix*9 zQgl*uQ}oiAqa;)GQw-9XqNGv`qoh-eqGVE-f*CZ8H_I?~vvJ&FD=tYa$xNQSoL!NL zId1Y%b_GV+&Cl5R8HH{M1cx|=csjdz`nU$iyLbi#PyWi`z@`ecvPgBZHD?NA#^eQ@ UG5pK|988Q%jBIQ`%*w(90K(!aVgLXD delta 128 zcmdlZ(k`N6%*)GFcj{nFD=!1XV+JI^0c1M>aq$<1i7L0`QnXWaQgqXqqa;%F(ix*9 zQ}m;xQVgP`Q<#DoGz~ZFF?O>}KFF>(`8m5Rqs(Sj4t~bTYMc&i%0Lr}lqctKrZA>V UzQ`HF&BDaU#K^|V#>&D705JF)Jpcdz diff --git "a/luffy_permission-\347\251\272\347\231\275\347\211\210/luffy_permission/__pycache__/urls.cpython-36.pyc" "b/luffy_permission-\347\251\272\347\231\275\347\211\210/luffy_permission/__pycache__/urls.cpython-36.pyc" index 9ce9ef329be31b8b7d06cb6de7ea5d34461a36fa..95fc7226e5a4f75b1f8e07e0d7168d18438e49ac 100644 GIT binary patch delta 143 zcmaFQzMMnZn3tEUM&U?IJ~IQuV+JI^0c1M>adE&zWoxNarWE#6<`j+;&J?a*re>ye z<|vL7?qCK@o{brMnAED+;))WJlJ%=NL6lx;QBLtK77$aD@fK%ZVs2`2L1J?1WEJK} cHeR5aMZA-nnG^W9fJ_!f0Y)BX9!4G}0On~Q^Z)<= delta 86 zcmZ3^@t$4Tn3tDp0`vYDBW4DM#|%h-707k~;$nx1%GO-zOi>&u?7dPbDXn3tF9r}mK;Gxm*KOPD6k;bbhC%*&=Q`394?QwmovOB81+OBQPicM4ky zM+#3ba}*bl&ym6lHnU$FW4R7D)hAPCm+_&!|56D@z!o_GBN{9$^8XU@?f`;AUauW8`BJVw(J#^$?@P zBZ;>mUEfBpRjx|$2@Bn!nDV#t)w>v`$Zwg-vLkeFrQxs1Me~Lg0Llkd{U@(KG&}2jA*F2g` zMeGa=3`HD3VzN7n(&SQ>e7;*eWvN9;`NgU6d5O8HlV7svGpbCMWDR4~m|VcxBg_v} zTPy%1IJj9D`G8P>aWX&KAx6o`yqso}IoQ1z4JY?;hA^5;Ucp|^s54oE;|W-=?0>z^v1PTaZ{OXCCP_b}%BPF^1%8uX z7(fC!kV4s!Wu|LEEmRzZYX!CHs9dY4HAmxG3+kcn=(0p)s1yCX0Xj53DM(GECbR?@ zoJ>I$QVZIGI!Fd|1@(|j=nLB7bVJZhBn!3$-Qsjx&<;`??g+Yz)PY?=dq`c_XLM#d zJvewH4G(|fj-{boC>ag#r?JSAG!6+xt*^XwNTQUbS2PZNKS@w)?|gER*S)sG{)ytlo{%-Do` z)s}M3^__GoH}S#y(<8RZ`%Qjm^UakWiaG*GNxn4=vmo_no4#aF^seRdohjh+rv5xj ziCt;N>Ev^KE- literal 0 HcmV?d00001 diff --git "a/luffy_permission-\347\251\272\347\231\275\347\211\210/rabc/__pycache__/views.cpython-36.pyc" "b/luffy_permission-\347\251\272\347\231\275\347\211\210/rabc/__pycache__/views.cpython-36.pyc" index 56570d794c52e61e864ab95921e773bb92b363c5..17ed5e16adc448095fa4334f6e4795a444e61465 100644 GIT binary patch literal 6273 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 M&~hxtESksu12)^n6#xJL delta 155 zcmZoPJj_^c%*)Gl{`|feCk6(F$3P4ROhA?c5Elyoi4=wu#vF!R#wbQch7_h?22JLd zKv4!w##?Mfsd*`>MShx0w**qM67$mY^@=m{i%OD9ONxs?W~^i=VgXWM;;S8yiW8bttBefq~&M5W@i@kmUfx#T-B)g&~R|g)x{xlc}^A$ko--RY=ZH$;?Z) zQYbA+)3s0lif}nNmX>7X7bz%MDLh@W{OOXFK*Z$`l9`*T00dSFMh1qK`X>5DW(tNT zR;Gqr4#D|pCFO}lsa6UBmChN7MY&uKZkahy)$#F}d6^~g@p=W7K*Z&z$#{!BK0YNs zIX-?RLlG0u6=3448<6E{6_b*cn3tX(V`yP$WMpP&X<%#^lT(_ORvBNAT9lhvT%4Jo tr~7>6uIDrNKJV;^DN0OAj!DZe%8fy?<`#!dZhlH>PO2Rn&`gj&82|zeQmg;~ literal 0 HcmV?d00001 diff --git "a/luffy_permission-\347\251\272\347\231\275\347\211\210/rabc/form/__pycache__/forms.cpython-36.pyc" "b/luffy_permission-\347\251\272\347\231\275\347\211\210/rabc/form/__pycache__/forms.cpython-36.pyc" new file mode 100644 index 0000000000000000000000000000000000000000..f8d89a85ceb81ca6a29eca3b2b83ae1a36df0fac GIT binary patch literal 2860 zcmbVOUyl?;5bvJ<`|l191&*BYR74kZCkMtLA>OrKK9FIZ*Kp9_GC^5{TkZ$JiBB2v4RBAH0q%{S;hW3^*Ou}=Z72Lg@H_VZX26F> z{^w?F`8K1z!;A*?U1oAGE?}S$WzH=cQNPGs@alCc1F!Q-JPnl_1Ywc{fhw(X(Tt>w z+AXQ9R@mgqt|g(AoifHYS8KOY(M~YdFinMAu9lP+1UL}>E(QSvo+YT4gWy6ICixeE z@hS@^RkqHJa_SLJm{cymR7*0(g@Ho~XZWS`SbkN z*uWwpJrEvss6`!9?17i%swGPB6lD|@6lfkUBG+C*n+?K&TjJt9s^7hViJe#LV;-!Qy^4nIcuKfLPINdqj?k5 zk$hsJarh=GMQegSH!6Ft8AG;fndQ#ttbrw4U%%c3X_aW;DIhU z4YqQ!RTick8jvMX#3h>XWtGEbDm)VD>D;`z_zEH)ll#jRDKi6cDd^Ago3ET$dU9vt88&2 zl1N)jv`+IFp)m$c=meB4gg%Ib1~Sh8nL+EC(6p#(ay$ zC3wQt7MGdJyq?jcdkOkrg=rF0bP<&DA{g&!|G0Dcb*4)Fi98L!M%l^|*xdXwCS>rg zjELo}Zw}U8HI~IY_?!^0z(dTU(9P~O)UZ>E*Fh*NiDarbKAl44w$H}AmO>HLqa@`* zV2e_vy!ZkftlZkUc2wgMcAx|32a8BxcM)%b7;t;M(B6eF61OTWv@)H6?C+wTnVl#w zD7Q^uu!AA5Pr)q_Ku8^Q8U|hD3hnEV(kn)nibGvP97>_@FtbO$)?cxoEsJ^hPhe)U zLm-~qzPEPkhqdo-uK)b&`cJ*5ckis-xw-!1FKf3SJn21pdiBQoxAz}Ey!!az186Pf zTEfE?X92XDP?@mX=cj .title { + padding: 10px 5px; + border-bottom: 1px solid #dddddd; + cursor: pointer; + color: #333; + display: block; + background: #efefef; + background: -webkit-gradient(linear, left bottom, left top, color-stop(0, #efefef), color-stop(1, #fafafa)); + background: -ms-linear-gradient(bottom, #efefef, #fafafa); + background: -o-linear-gradient(bottom, #efefef, #fafafa); + filter: progid:dximagetransform.microsoft.gradient(startColorStr='#e3e3e3', EndColorStr='#ffffff'); + -ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorStr='#fafafa',EndColorStr='#efefef')"; + box-shadow: inset 0 1px 1px white; +} + +.multi-menu .item > .body { + border-bottom: 1px solid #dddddd; +} + +.multi-menu .item > .body a { + display: block; + padding: 5px 20px; + text-decoration: none; + border-left: 2px solid transparent; + font-size: 13px; + +} + +.multi-menu .item > .body a:hover { + border-left: 2px solid #2F72AB; +} + +.multi-menu .item > .body a.active { + border-left: 2px solid #2F72AB; +} \ No newline at end of file diff --git "a/luffy_permission-\347\251\272\347\231\275\347\211\210/rabc/static/rbac/js/menu.js" "b/luffy_permission-\347\251\272\347\231\275\347\211\210/rabc/static/rbac/js/menu.js" new file mode 100644 index 0000000..0e24bf1 --- /dev/null +++ "b/luffy_permission-\347\251\272\347\231\275\347\211\210/rabc/static/rbac/js/menu.js" @@ -0,0 +1,4 @@ +$('.multi-menu .title').click(function () { + $(this).next().removeClass('hide'); + $(this).parent().siblings().find('.body').addClass('hide'); +}); diff --git "a/luffy_permission-\347\251\272\347\231\275\347\211\210/rabc/templates/breadcrumb.html" "b/luffy_permission-\347\251\272\347\231\275\347\211\210/rabc/templates/breadcrumb.html" new file mode 100644 index 0000000..7cdd9b6 --- /dev/null +++ "b/luffy_permission-\347\251\272\347\231\275\347\211\210/rabc/templates/breadcrumb.html" @@ -0,0 +1,9 @@ + \ No newline at end of file diff --git "a/luffy_permission-\347\251\272\347\231\275\347\211\210/rabc/templates/distribute_permissions.html" "b/luffy_permission-\347\251\272\347\231\275\347\211\210/rabc/templates/distribute_permissions.html" new file mode 100644 index 0000000..551e261 --- /dev/null +++ "b/luffy_permission-\347\251\272\347\231\275\347\211\210/rabc/templates/distribute_permissions.html" @@ -0,0 +1,243 @@ +{% extends 'layout.html' %} +{% load mu_tage %} +{% block css %} + +{% endblock %} + +{% block content %} +
+
+
+ +
+ 用户信息 +
+ +
+ +
+ +
+
+ +
+
+ {% csrf_token %} + +
+ +
+ 角色 + {% if uid %} + + {% endif %} +
+
+ 提示:点击用户后才能为其分配角色 +
+
年龄 邮箱 公司选项选项
{{ row.age }} {{ row.email }} {{ row.company }} - - - | - - + {% if request|has_permission:'customer_edit' %} + + + {% endif %} + + {% if request|has_permission:'customer_del' %} + + {% endif %} +
+ + + + + + + + {% for role in role_list %} + + + + + + {% endfor %} + + +
角色选择
{{ role.name }} + {% if role.id in user_has_roles_dict %} + + {% else %} + + {% endif %} +
+ + + + + +
+
+ {% csrf_token %} + +
+ +
+ 权限分配 + {% if rid %} + + {% endif %} +
+
+ 提示:点击角色后,才能为其分配权限。 +
+ + + {% for item in all_menu_list %} + + + + + + + {% endfor %} + +
{{ item.title }}
+ {% for node in item.children %} +
+ {% if node.id in role_has_permissions_dict %} + + {% else %} + + {% endif %} + + + +
+
+ {% for child in node.children %} +
+ {% if child.id in role_has_permissions_dict %} + + {% else %} + + {% endif %} + + +
+ {% endfor %} +
+ {% endfor %} +
+
+
+
+ + +{% endblock %} +{% block js %} + +{% endblock %} diff --git "a/luffy_permission-\347\251\272\347\231\275\347\211\210/rabc/templates/form.html" "b/luffy_permission-\347\251\272\347\231\275\347\211\210/rabc/templates/form.html" new file mode 100644 index 0000000..2cdd97b --- /dev/null +++ "b/luffy_permission-\347\251\272\347\231\275\347\211\210/rabc/templates/form.html" @@ -0,0 +1,53 @@ +{% extends 'layout.html' %} + +{% block css %} + + +{% endblock %} + +{% block content %} + +
+ +
+ {% csrf_token %} + {% for field in form_obj %} +
+ + +
+ {{ field }} + {{ field.errors.0 }} +
+
+ {% endfor %} +

{{ form_obj.non_field_errors.0 }}

+
+
+ +
+
+
+
+ +{% endblock %} \ No newline at end of file diff --git "a/luffy_permission-\347\251\272\347\231\275\347\211\210/rabc/templates/menu.html" "b/luffy_permission-\347\251\272\347\231\275\347\211\210/rabc/templates/menu.html" index e72905e..0b3ec80 100644 --- "a/luffy_permission-\347\251\272\347\231\275\347\211\210/rabc/templates/menu.html" +++ "b/luffy_permission-\347\251\272\347\231\275\347\211\210/rabc/templates/menu.html" @@ -1,22 +1,17 @@ -{#
#} -{# {% for menu in menu_list %}#} -{# #} -{# {{ menu.title }}#} -{# {% endfor %}#} -{#
#} + + + +
{% for menu in menu_list %}
-
   {{ menu.title }}
- diff --git "a/luffy_permission-\347\251\272\347\231\275\347\211\210/rabc/templates/menu_list.html" "b/luffy_permission-\347\251\272\347\231\275\347\211\210/rabc/templates/menu_list.html" new file mode 100644 index 0000000..a98dd64 --- /dev/null +++ "b/luffy_permission-\347\251\272\347\231\275\347\211\210/rabc/templates/menu_list.html" @@ -0,0 +1,135 @@ +{% extends 'layout.html' %} + +{% block css %} + +{% endblock %} +{% block content %} + + + +
+ +
+
+
菜单管理 + 添加 +
+ + + + + + + + + + + {% for menu in all_menu %} + + + + + + {% endfor %} + + +
名称图标操作
+ +
+
+ +
+
+
权限管理 + 批量操作 + 新建 + +
+ + + + + + + + + + + + {% for p_permission in all_permission %} + + + + + + {# 编辑 #} + + + + {% for c_permission in p_permission.children %} + + + + + + + + {% endfor %} + + + + {% endfor %} + + +
名称URLURL别名所属菜单操作
{{ p_permission.title }}{{ p_permission.url }}{{ p_permission.name }}{{ p_permission.menu__title }} + {# 删除 传的类名不能是大写 否则报错#} + +
{{ c_permission.title }}{{ c_permission.url }}{{ c_permission.name }} + +
+
+
+
+ + + +{% endblock %} + + +{% block js %} + + + +{% endblock %} \ No newline at end of file diff --git "a/luffy_permission-\347\251\272\347\231\275\347\211\210/rabc/templates/multi_permissions.html" "b/luffy_permission-\347\251\272\347\231\275\347\211\210/rabc/templates/multi_permissions.html" new file mode 100644 index 0000000..35878a3 --- /dev/null +++ "b/luffy_permission-\347\251\272\347\231\275\347\211\210/rabc/templates/multi_permissions.html" @@ -0,0 +1,144 @@ +{% extends 'layout.html' %} + +{% block content %} +
+
+ {% csrf_token %} + {{ add_formset.management_form }} +
+ +
+ 待新建权限列表 + +
+
+ 注意:路由系统中自动发现且数据库中不存在的路由。 +
+ + + + + + + + + + + + + + {% for form in add_formset %} + + + + + + + + + + + {% endfor %} + +
序号名称URL别名父权限所属菜单
{{ forloop.counter }}{{ form.title }} {{ form.title.errors.0 }}{{ form.url }}{{ form.name }}{{ form.parent }}{{ form.menu }}
+
+
+ +
+ +
+ 待删除权限列表 +
+
+ 注意:数据库中存在,但路由系统中不存在的路由。 +
+ + + + + + + + + + + + + + + {% for form in del_formset %} + + + {{ form.id }} + + + + + + + + + + {% endfor %} + +
序号名称URL别名父权限所属菜单操作
{{ forloop.counter }}{{ form.title }} {{ form.title.errors.0 }}{{ form.url }}{{ form.name }}{{ form.parent }}{{ form.menu }} + + + +
+
+ +
+ {% csrf_token %} + {{ update_formset.management_form }} +
+ +
+ 待更新权限列表 + +
+
+ 注意:数据库和路由系统都存在的路由。 +
+ + + + + + + + + + + + + + + {% for form in update_formset %} + + {{ form.id }} + + + + + + + + + {% endfor %} + +
序号名称URL别名父权限所属菜单操作
{{ forloop.counter }}{{ form.title }} {{ form.title.errors.0 }}{{ form.url }}{{ form.name }}{{ form.parent }}{{ form.menu }} + + + +
+
+
+
+{% endblock %} \ No newline at end of file diff --git "a/luffy_permission-\347\251\272\347\231\275\347\211\210/rabc/templates/role_list.html" "b/luffy_permission-\347\251\272\347\231\275\347\211\210/rabc/templates/role_list.html" new file mode 100644 index 0000000..8b95393 --- /dev/null +++ "b/luffy_permission-\347\251\272\347\231\275\347\211\210/rabc/templates/role_list.html" @@ -0,0 +1,31 @@ +{% extends 'layout.html' %} +{% block content %} + {% load mu_tage %} +
+ + + + + + + + + + + {% for role in all_role %} + + + + + + + + {% endfor %} + +
序号名称操作
{{ role.id }}{{ role.name }}
+
+{% endblock %} \ No newline at end of file diff --git "a/luffy_permission-\347\251\272\347\231\275\347\211\210/rabc/templatetags/__pycache__/mu_tage.cpython-36.pyc" "b/luffy_permission-\347\251\272\347\231\275\347\211\210/rabc/templatetags/__pycache__/mu_tage.cpython-36.pyc" index 2f86f3af43ac11aa68bbbc1b2da147e4df43b1ba..894eb69db9acf96f07e649b76be374c5bc3be728 100644 GIT binary patch delta 715 zcmZ8e-HOvd6h1SPq-mOFLoK@NE`qJN+q>e57g82Q7pZ6!Qz+<`Qab6HY=0+NsF2c& z6kIO^m)v^m6Zi2xaL$}F`M#5HzWJ?Rhm delta 358 zcmYjMu}T9$5S`t*-Mb_g3_&mvBEf)=MuI{R38G+SB`BmYL4-{(XNbAW1ybx`ae@)C z2wU2SowZ+JVe1E6W8p9O0nTCLz#HCs^JZW^az9ROJD<;PeZF^&1;97_Dbb@9!HrEGWg(qUUZ`pCAYvhlA>zcjhoR+(nB7At=WqvorkLWljzVQUVuZ7j z#zW{9B5MxXDud?QYJuNu!|X_N&yInndy!B=3ng1HYiQx2vSUX6`er1xR1U3y=Unk% zs4}D}rm}x=f7k~9v<)hk9($X!B6BlIW_%G|o)1R-YxBf+m+Zt2dj7OG2@{+KL-WO( zc_)2nl^Sr#OchsH#q3~rd5xSzjDx`_tn;8uDp)hG*pOACb=PD?S5{KDY97Q!!6oW4 KmpLi0So#HYOiQo; diff --git "a/luffy_permission-\347\251\272\347\231\275\347\211\210/rabc/templatetags/mu_tage.py" "b/luffy_permission-\347\251\272\347\231\275\347\211\210/rabc/templatetags/mu_tage.py" index 5f45f6b..eafc610 100644 --- "a/luffy_permission-\347\251\272\347\231\275\347\211\210/rabc/templatetags/mu_tage.py" +++ "b/luffy_permission-\347\251\272\347\231\275\347\211\210/rabc/templatetags/mu_tage.py" @@ -2,15 +2,15 @@ from django import template from luffy_permission import settings import re from collections import OrderedDict + register = template.Library() @register.inclusion_tag('menu.html') def menu(request): - order_dict = OrderedDict() menu_dict = request.session.get(settings.MENU_LIST) - keys = sorted(menu_dict,key=lambda x:menu_dict[x]['weight'],reverse=True) + keys = sorted(menu_dict, key=lambda x: menu_dict[x]['weight'], reverse=True) for key in keys: order_dict[key] = menu_dict[key] @@ -21,8 +21,8 @@ def menu(request): for children in i.get('children'): # # 正则校验 给二级菜单添加active # if re.match(r'^{}$'.format(children['url']),url): - #不用正在匹配了,拿当前权限的id 与request.c_id 对比 - #因为把,在中间件中已经封装了c_id 都是二级菜单的id ,接着往下边走. + # 不用正在匹配了,拿当前权限的id 与request.c_id 对比 + # 因为把,在中间件中已经封装了c_id 都是二级菜单的id ,接着往下边走. if children['id'] == request.c_id: children['class'] = 'active' i['class'] = '' @@ -35,7 +35,20 @@ def dao_hang_lan(request): print(breadcrumb_list) return {'breadcrumb_list': breadcrumb_list} + +# 判断删除增加等按钮,在不在,这个权限列表里边,在就返回True @register.filter def has_permission(request, name): if name in request.session[settings.PERMISSIONS_LIST]: return True + + + + +# 权限分配 + +@register.simple_tag +def gen_role_url(request, rid): + params = request.GET.copy() + params['rid'] = rid + return params.urlencode() diff --git "a/luffy_permission-\347\251\272\347\231\275\347\211\210/rabc/urls.py" "b/luffy_permission-\347\251\272\347\231\275\347\211\210/rabc/urls.py" new file mode 100644 index 0000000..684a21d --- /dev/null +++ "b/luffy_permission-\347\251\272\347\231\275\347\211\210/rabc/urls.py" @@ -0,0 +1,37 @@ +from django.conf.urls import url +from web.views import customer +from web.views import payment +from web.views import promiiss +from rabc import views + +urlpatterns = [ + + # 角色管理,对角色的增删改查 + url(r'^role/list/$', views.role_list, name='role_list'), + + url(r'^role/add/$', views.role_change, name='role_add'), + + url(r'^role/edit/(?P\d+)/$', views.role_change, name='role_edit'), + url(r'^role/del/(?P\d+)/$', views.role_del, name='role_del'), + + + + url(r'^menu/list/$', views.menu_list, name='menu_list'), + + url(r'^menu/add/$', views.menu_change, name='menu_add'), + url(r'^menu/edit/(\d+)/$', views.menu_change, name='menu_edit'), + # url(r'^menu/del/(\d+)/$', views.menu_del, name='menu_del'), + + + # 权限的添加与编辑使用同一个 + url(r'^permission/add/$', views.permission_change, name='permission_add'), + url(r'^permission/edit/(?P\d+)/$', views.permission_change, name='permission_edit'), + + #q权限与Menu 的删除 + url(r'^(menu|permission)/del/(\d+)/$', views.delete, name='delete'), + +# 批量操作 + url(r'^multi_permissions$', views.multi_permissions, name='multi_permissions'), +# 分配权限 + url(r'^distribute/permissions/$', views.distribute_permissions, name='distribute_permissions'), +] diff --git "a/luffy_permission-\347\251\272\347\231\275\347\211\210/rabc/views.py" "b/luffy_permission-\347\251\272\347\231\275\347\211\210/rabc/views.py" index 91ea44a..e1386d0 100644 --- "a/luffy_permission-\347\251\272\347\231\275\347\211\210/rabc/views.py" +++ "b/luffy_permission-\347\251\272\347\231\275\347\211\210/rabc/views.py" @@ -1,3 +1,299 @@ -from django.shortcuts import render +from django.shortcuts import render, redirect, reverse,HttpResponse +from rabc import models +from rabc.form.forms import RoleForm, MenuForm, PermissionForm,MultiPermissionForm +from django.db.models import Q -# Create your views here. +from django.forms import modelformset_factory, formset_factory +from rabc.views_def.routes import * + +def role_list(request): + all_role = models.Role.objects.all() + return render(request, 'role_list.html', {'all_role': all_role}) + + +def role_change(request, edit_id=None): + obj = models.Role.objects.filter(pk=edit_id).first() + + form_obj = RoleForm(instance=obj) + if request.method == 'POST': + form_obj = RoleForm(request.POST, instance=obj) + if form_obj.is_valid(): + form_obj.save() + return redirect(reverse('rabc:role_list')) + + return render(request, 'form.html', {'form_obj': form_obj}) + + +def role_del(request, edit_id=None): + models.Role.objects.filter(pk=edit_id).delete() + return redirect(reverse('reabc:role_list')) + + +def menu_list(request): + all_menu = models.Menu.objects.all() + + mid = request.GET.get('mid') + + if mid: + all_permission = models.Permission.objects.filter(Q(menu_id=mid) | Q(parent__menu_id=mid)).values('id', 'url', + 'title', + 'name', + 'menu_id', + 'parent_id', + 'menu__title') + + else: + all_permission = models.Permission.objects.all().values('id', 'url', 'title', 'name', 'menu_id', 'parent_id', + 'menu__title') + + """ + { id: { + children : [ {} {} {} ] + } , + id: { + + } + } + + """ + permission_dict = {} + for i in all_permission: + if i.get('menu_id'): + i['children'] = [] + permission_dict[i['id']] = i + + for i in all_permission: + pid = i.get('parent_id') + if pid: + permission_dict[pid]['children'].append(i) + + return render(request, 'menu_list.html', + {'mid': mid, 'all_menu': all_menu, 'all_permission': permission_dict.values()}) + + +def menu_change(request, edit_id=None): + obj = models.Menu.objects.filter(pk=edit_id).first() + form_obj = MenuForm(instance=obj) + if request.method == 'POST': + form_obj = MenuForm(request.POST, instance=obj) + if form_obj.is_valid(): + form_obj.save() + return redirect(reverse('rabc:menu_list')) + + return render(request, 'form.html', {'form_obj': form_obj}) + + +# 当个权限的管理,........ +# 权限的添加与编辑 +def permission_change(request, edit_id=None): + obj = models.Permission.objects.filter(pk=edit_id).first() + form_obj = PermissionForm(instance=obj) + if request.method == 'POST': + form_obj = PermissionForm(request.POST, instance=obj) + if form_obj.is_valid(): + form_obj.save() + return redirect(reverse('rabc:menu_list')) + print(666) + return render(request, 'form.html', {'form_obj': form_obj}) + + +# 权限的删除,与Menu的删除 + +def delete(request, table, pk): + # 我在HTML写的是大写的表名字符串,看看会是怎么样,会报错啊大哥..... + + ret = getattr(models, table.capitalize()) + + ret.objects.filter(pk=pk).delete() + + return redirect(reverse('rabc:menu_list')) + + +# 批量操作 +def multi_permissions(request): + """ + 批量操作权限 + :param request: + :return: + """ + post_type = request.GET.get('type') + + # 删除和编辑使用modelformset + FormSet = modelformset_factory(models.Permission, MultiPermissionForm, extra=0) + # 添加使用的formset, + AddFormSet = formset_factory(MultiPermissionForm, extra=0) + + # 获取数据中所有的权限 + permissions = models.Permission.objects.all() + # 获取到路由系统所有的url(权限) + router_dict = get_all_url_dict(ignore_namespace_list=['admin', 'rbac']) + + # 数据库中权限别名的集合 + permissions_name_set = set([i.name for i in permissions]) + # 路由系统中权限别名的集合 + router_name_set = set(router_dict.keys()) + # 新增权限的别名的集合 路由中的url 权限 减去 数据库的url + add_name_set = router_name_set - permissions_name_set + add_formset = AddFormSet(initial=[row for name, row in router_dict.items() if name in add_name_set]) + + if request.method == 'POST' and post_type == 'add': + add_formset = AddFormSet(request.POST) + if add_formset.is_valid(): + permission_obj_list = [models.Permission(**i) for i in add_formset.cleaned_data] + query_list = models.Permission.objects.bulk_create(permission_obj_list) + add_formset = AddFormSet() + for i in query_list: + permissions_name_set.add(i.name) + # 删除权限的别名的集合 + del_name_set = permissions_name_set - router_name_set + del_formset = FormSet(queryset=models.Permission.objects.filter(name__in=del_name_set)) + + # 更新权限的别名的集合 + update_name_set = permissions_name_set & router_name_set + update_formset = FormSet(queryset=models.Permission.objects.filter(name__in=update_name_set)) + + if request.method == 'POST' and post_type == 'update': + update_formset = FormSet(request.POST) + if update_formset.is_valid(): + update_formset.save() + update_formset = FormSet(queryset=models.Permission.objects.filter(name__in=update_name_set)) + + return render( + request, + 'multi_permissions.html', + { + 'del_formset': del_formset, + 'update_formset': update_formset, + 'add_formset': add_formset, + } + ) + + + + + + +# 分配权限 +def distribute_permissions(request): + """ + 分配权限 + :param request: + :return: + """ + uid = request.GET.get('uid') # 用户的id + rid = request.GET.get('rid') # 角色的id + + if request.method == 'POST' and request.POST.get('postType') == 'role': + user = models.User.objects.filter(id=uid).first() + if not user: + return HttpResponse('用户不存在') + user.roles.set(request.POST.getlist('roles')) + + if request.method == 'POST' and request.POST.get('postType') == 'permission' and rid: + role = models.Role.objects.filter(id=rid).first() + if not role: + return HttpResponse('角色不存在') + role.permissions.set(request.POST.getlist('permissions')) + + # 所有用户 + user_list = models.User.objects.all() + # 用户的角色的id + user_has_roles = models.User.objects.filter(id=uid).values('id', 'roles') + # 用户所拥有角色id的字典 + user_has_roles_dict = {item['roles']: None for item in user_has_roles} + + # 所有的角色 + role_list = models.Role.objects.all() + + if rid: + role_has_permissions = models.Role.objects.filter(id=rid, permissions__id__isnull=False).values('id', + 'permissions') + elif uid and not rid: + user = models.User.objects.filter(id=uid).first() + if not user: + return HttpResponse('用户不存在') + role_has_permissions = user.roles.filter(permissions__id__isnull=False).values('id', 'permissions') + else: + role_has_permissions = [] + # 某一个角色所拥有的权限 某一个用户所拥有的所有的权限 + role_has_permissions_dict = {item['permissions']: None for item in role_has_permissions} + # 所有菜单 + all_menu_list = [] + """ + all_menu_list = [ + { id title children :[ + { 'id', 'title', 'menu_id' 'children' : [ + {'id', 'title', 'parent_id'} + ] } + ] } + {'id': None, 'title': '其他', 'children': [ + {'id', 'title', 'parent_id'} + ]} + ] + + """ + queryset = models.Menu.objects.values('id', 'title') # 一级菜单的id 和 标题 [ { id title } ] + # 菜单的字典 + menu_dict = {} + """ + menu_dict = { + 一级菜单的id: { id title children :[ + { 'id', 'title', 'menu_id' 'children' : [ + {'id', 'title', 'parent_id'} + ] } + ] }, + None: {'id': None, 'title': '其他', 'children': [ + {'id', 'title', 'parent_id'} + ]} + } + """ + + for item in queryset: # { id title } + item['children'] = [] # { id title children :[] } + menu_dict[item['id']] = item + all_menu_list.append(item) + + other = {'id': None, 'title': '其他', 'children': []} + all_menu_list.append(other) + menu_dict[None] = other + # 二级菜单 父权限 + root_permission = models.Permission.objects.filter(menu__isnull=False).values('id', 'title', 'menu_id') + + root_permission_dict = {} + """ + root_permission_dict = { + 父权限的id: { 'id', 'title', 'menu_id' 'children' : [ + {'id', 'title', 'parent_id'} + ] } + } + """ + + for per in root_permission: # { 'id', 'title', 'menu_id' } + per['children'] = [] # { 'id', 'title', 'menu_id' 'children' : [] } + nid = per['id'] + menu_id = per['menu_id'] + root_permission_dict[nid] = per + menu_dict[menu_id]['children'].append(per) + + node_permission = models.Permission.objects.filter(menu__isnull=True).values('id', 'title', 'parent_id') + + for per in node_permission: # {'id', 'title', 'parent_id'} + pid = per['parent_id'] + if not pid: + menu_dict[None]['children'].append(per) + continue + root_permission_dict[pid]['children'].append(per) + + return render( + request, + 'distribute_permissions.html', + { + 'user_list': user_list, # 所有的用户 + 'role_list': role_list, # 所有的角色 + 'user_has_roles_dict': user_has_roles_dict, # 当前用户所拥有的角色 + 'role_has_permissions_dict': role_has_permissions_dict, # 某一个角色所拥有的权限 某一个用户所拥有的所有的权限 + 'all_menu_list': all_menu_list, # 所有的菜单信息 父权限 子权限 普通的权限 + 'uid': uid, + 'rid': rid + } + ) diff --git "a/luffy_permission-\347\251\272\347\231\275\347\211\210/rabc/views_def/__pycache__/routes.cpython-36.pyc" "b/luffy_permission-\347\251\272\347\231\275\347\211\210/rabc/views_def/__pycache__/routes.cpython-36.pyc" new file mode 100644 index 0000000000000000000000000000000000000000..4d085ddef28b639d523d5eb357397fc142b9fd59 GIT binary patch literal 1524 zcmaJ>-D_M$6rY*M7&j&r(NKff5AcJHM5S=u=DN8vS?+qjGBewz zWfqECp}y#g2!aScNd+tQrKM8E2VeXX?yJV6e}FG}^31)PkQbe0&OPUM@A=J~IltL6 zlate7ju*!QUOE^5{u0Uv7O!WB%)DD4UGC!-|KxD15kfHX-lwZ?jE`~9`I z*Ovah`*@JKH)8j6`*~xNlv1nwRKT}O&>4cy{;`pCIu@EWho4Z*|(;3hOLZ|iP4q~ zTyo6flq_~?!+U2~T5(Id)EME9ahW|ajfRf0mDBgANv#oqr>&pV`I;z0*=K?A5}Yuc zlzaUT&uf&UouzEPF|#l;U&W2a2je#farGSV_%xqepPO$)X&4VEJ3V)mZL|OubIs=b z|K;$FZn$tXQ3F-xd?W29Oyu2=y*j7i|Kz%Sbi=TvnT7S43c7Bc63eGVdoTknfxhnD z`*HV+yMNvPVdvLR9)0`s-ko1|AKuZ+?A-n4?;GFktv^I12|{L|Gc>f(wgl4HZsa38tt68jJ(MLGO@#VLN2Ggp|S##-DSR z$53h0^(S-Af; zfU?aF&jyl-R(_2i12zYy(1(iZ9`>+_Z9GM6Vq=$>_$kBG5nwLyNcnv`#QI|x`j%KQ z%bT(ejzYQJLqjal2n~tElJr5jLjy2#yQPf23HN9g?t-N(X~R8QQC8nk_#>OIY|Vn^ zU1g0h+=;si`lUt3*$F97wNTWw$DCp2EyMk}E_@WSrqIZJ6-Y11xFM7=aS+QcA^g!F4; zSO@$hB>NIr7Egp h(akT{I>+vlaP@?zYfkuj4wN!ga%a?q6EkkQo2~ literal 0 HcmV?d00001 diff --git "a/luffy_permission-\347\251\272\347\231\275\347\211\210/rabc/views_def/__pycache__/v_def.cpython-36.pyc" "b/luffy_permission-\347\251\272\347\231\275\347\211\210/rabc/views_def/__pycache__/v_def.cpython-36.pyc" index c40f994d7077b286f4728372da91bb690a7a41a0..28951166a57a6d907aec81d04e118a0c463b3673 100644 GIT binary patch delta 410 zcmY+Ay-EW?5XWb~?k<~)@q-|nAcB%2wM~j>6JJ0SgrFS3J@rm#2se-zyC5j1N-58Ief2D;V-XmXH93uPk0#sx+asK+4XK+ zx+xDy3R4`wl$fNGOyNT~f0#Yj?-i4-09nbHB8Itu4k#8<$x<}6l$A_IZAC+-tm4*6 zQK9xyofKVxT*+vP5h$uGGpi~fTy)cA7g=g4MRGMW4#B8>3T9&yLVN6lC9{;O1@jKb zwVdU;AvlKChQ2|cTRk!K<3W%l!EKay-moA0(b)5%{=jcBeS~Xvj}3FDFL4)@^%LIF z?>O0(!Ns^&8u-zjm*X4-bGvYXe1uqNpY&TK|E&X4fUY3?7X%lFGm0tY*h2c72%Ead WMR7w{si-x~n^^oWb-hnF5&i|_>|eS7 delta 476 zcmYL_y-EW?5XWa`_r5k4qasLD5VT4of^A3>Ya0bc6bV^B?uZw?Tp-1T2-geYz$!1G zZz1>qHa1tM@F~Q(B@l-B&u>1MS@zfcan(_^sBIgc^Fooq zm;x9JcA3bOGDH}?rF0C}uVX8tM>m2xjhWRvvZsLWC zkIMyDnxI!p)@w{~3XS!=i}THfEUY9*dbfob#=U|9U5KYZ=P%SoKmVdV%X*4~D4)}C zw-*eOOYiYE8s3yxU{E+F3-mk0Tlq+ICRF}kiv`3A($WMGp>iZia!HYmrES=XB+uCB x8dKs>xa6ac@eXe|X^5ht!%lSHKj`+OySQ9#I`LLXOWEeMaGQ_){6f|c{{cjnXsQ4J diff --git "a/luffy_permission-\347\251\272\347\231\275\347\211\210/rabc/views_def/routes.py" "b/luffy_permission-\347\251\272\347\231\275\347\211\210/rabc/views_def/routes.py" new file mode 100644 index 0000000..05dec59 --- /dev/null +++ "b/luffy_permission-\347\251\272\347\231\275\347\211\210/rabc/views_def/routes.py" @@ -0,0 +1,79 @@ +from django.conf import settings +from django.utils.module_loading import import_string +from django.urls import RegexURLResolver, RegexURLPattern +from collections import OrderedDict + + +def recursion_urls(pre_namespace, pre_url, urlpatterns, url_ordered_dict): + """ + + None, "/", [ + url(r'^', include('web.urls')), + url(r'^rbac/', include('rbac.urls', namespace='rbac')), + ] + + None "/^" + + """ + + for item in urlpatterns: + if isinstance(item, RegexURLResolver): + if pre_namespace: + if item.namespace: + namespace = "%s:%s" % (pre_namespace, item.namespace,) + else: + namespace = pre_namespace + else: + if item.namespace: + namespace = item.namespace + else: + namespace = None + recursion_urls(namespace, pre_url + item.regex.pattern, item.url_patterns, url_ordered_dict) + else: + + if pre_namespace: + name = "%s:%s" % (pre_namespace, item.name,) + else: + name = item.name # login + if not item.name: + raise Exception('URL路由中必须设置name属性') + + url = pre_url + item._regex # /login/ + + url_ordered_dict[name] = {'name': name, 'url': url.replace('^', '').replace('$', '')} + + + + + +# 批量操作使用的函数 默认参数的用法 [] None +def get_all_url_dict(ignore_namespace_list=None): + """ + 获取路由中 + :return: + """ + ignore_list = ignore_namespace_list or [] # ignore_list = ['admin'] + + url_ordered_dict = OrderedDict() + + # import_string是django提供 的一个方法 ROOT_URLCONF=拿的是根的url 配置,项目最外边的url 拿到的md 就是一个模块,url的模块 + md = import_string(settings.ROOT_URLCONF) + urlpatterns = [] + # md.urlpatterns 拿到的就是 视图函数的额;列表 + for item in md.urlpatterns: + """ + [ + url(r'^', include('web.urls')), + url(r'^rbac/', include('rbac.urls', namespace='rbac')), + ] + + url 执行__init__方法,返回俩种情况, + 1:视图 RegexUR LPattern + 2 :include RegexURLResolver + """ + if isinstance(item, RegexURLResolver) and item.namespace in ignore_list: + + continue + urlpatterns.append(item) + recursion_urls(None, "/", urlpatterns, url_ordered_dict) + return url_ordered_dict diff --git "a/luffy_permission-\347\251\272\347\231\275\347\211\210/rabc/views_def/v_def.py" "b/luffy_permission-\347\251\272\347\231\275\347\211\210/rabc/views_def/v_def.py" index 68f38df..75173f8 100644 --- "a/luffy_permission-\347\251\272\347\231\275\347\211\210/rabc/views_def/v_def.py" +++ "b/luffy_permission-\347\251\272\347\231\275\347\211\210/rabc/views_def/v_def.py" @@ -1,5 +1,7 @@ from django.conf import settings -def init_permission(request, user): + +def init_permission(request,user): + # 获取权限信息 # 去除权限为空的权限 去重 permission_query = user.roles.filter(permissions__url__isnull=False).values( @@ -16,11 +18,9 @@ def init_permission(request, user): 'permissions__name', 'permissions__parent_id', - #拿到对这个权限对应的name + #拿到当前权限对应的子权限自关联的父权限name 'permissions__parent__name', - - ).distinct() # 权限的列表 @@ -28,7 +28,7 @@ def init_permission(request, user): # 菜单使用字典比较利于取值, menu_dict = {} - print(permission_query) + for i in permission_query: # 把权限加到permission_list @@ -56,7 +56,6 @@ def init_permission(request, user): menu_dict[menu_id]['children'].append({'title': i.get('permissions__title'), 'url': i.get('permissions__url'),'id':i.get('permissions__id')}) - print(permission_dict) # 保存权限信息和菜单信息到session中 request.session[settings.PERMISSIONS_LIST] = permission_dict request.session[settings.MENU_LIST] = menu_dict diff --git "a/luffy_permission-\347\251\272\347\231\275\347\211\210/web/__pycache__/urls.cpython-36.pyc" "b/luffy_permission-\347\251\272\347\231\275\347\211\210/web/__pycache__/urls.cpython-36.pyc" index f866e418c465a591797d6fd27f1213303c29d21a..26c9dd5809539ea08e1739a478f819463aff8ba6 100644 GIT binary patch delta 38 lcmcb^c887An3tE!N%=@j?nX`rW?@!7Mm{DW20<1G4FI3(1-AeI delta 38 kcmcb^c887An3tE!``E#l^o^Vj%)%^ujC@Q$41!P^0I|FVR{#J2 diff --git "a/luffy_permission-\347\251\272\347\231\275\347\211\210/web/midwear/__pycache__/__init__.cpython-36.pyc" "b/luffy_permission-\347\251\272\347\231\275\347\211\210/web/midwear/__pycache__/__init__.cpython-36.pyc" deleted file mode 100644 index 390d2a7d95fa6b2be6635f5df195d4b9f92fde8a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 288 zcmXr!<>gAfvoEHOfq~&M5W@i@kmUfx#T-B)g&~R|g)x{xlc}^A$ko--RY=ZH$;?Z) zQYbA+)3s0lif}nNmX>7X7bz%MDLh@W{OOXFK*Z$`l9`*T00dSFMh1qK`X>5D#tMe! zR>r1W4#D|pCFO}lsa6UBmChN7MY&uKZkahy)$#F}d6^~g@p=W7K*Z&z$#{!BK0YNs zIX-?RLlG0u6=3442ax4z6_b*cn3tX(V`yP$WMpP&X<%#^lT(_ORvBNAT9lhvT%4Jo vr~7>6uIDrNKJV;^DNjv`$<0hDPfaX}L9*x;hfQvNN@-529UIV8kWU!^^Tt!f diff --git "a/luffy_permission-\347\251\272\347\231\275\347\211\210/web/midwear/__pycache__/mid.cpython-36.pyc" "b/luffy_permission-\347\251\272\347\231\275\347\211\210/web/midwear/__pycache__/mid.cpython-36.pyc" deleted file mode 100644 index 007166a7eedfb884c3d66efa09a12f3a403feb95..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1360 zcmZWp&2Jk;6rb7IFFUpqN)HV}Rfx*L2U46$2oOS*Afk~-TE&$jtz1^?opG{eKb)Cy zlZN#HxvJ=`L%AY-Z#5V8(^$?`{uph`u4`a<6v5^pu6g-K|#PY1f_Uz(p#!ljTZoyk| z#jAXPs7;-_h&l|9iC3jo8#Uc2ctuUDX4fK0W40S`wifM0DTo}-ZZj@e(@?c*QVuql z7-Xqn%H@nkoP`oVu3%C|>6TazwWrf%0CN?#I1hv&4^!kB6jS3a@(3jm*;I{%a(WKj6}So@&lk+Fs0Wb9p(q;I~DZk-;eqrS=$)aT^u(Gyk*i7WUm!dx%j357yp6ZuRS9 z1o(SpJnHltIe`eS_E*F{D9#nYLpGqP0_Wro|2ubd{<$S*b7zd_(a44DjQ(8i(wTV# z)SXBAW@G4WYUg%=E)k?akh6#)!-GvEU!ag1)U&=mw4q?rZ@-)#{*Q2*^V;go75~H4_DyAQrmQ58;kI%F6C%n|MYfpay7!!D___7#{*9H5wbgce z_4;~gHuqf6E+zKuARaQI>|VyfpCS-V*}-7IQp)xCG%Ly!Ebi$Sy#q*D-WEr^3R-V= zz<3fB3HUS$C9mrQ8d_Cn+<&fpjQ9db|IrU~ZBKXn{v(jkz0?Jp(?v6$ E0Co*?ng9R* diff --git "a/luffy_permission-\347\251\272\347\231\275\347\211\210/web/templates/layout.html" "b/luffy_permission-\347\251\272\347\231\275\347\211\210/web/templates/layout.html" index 6bec4e4..8fb5afd 100644 --- "a/luffy_permission-\347\251\272\347\231\275\347\211\210/web/templates/layout.html" +++ "b/luffy_permission-\347\251\272\347\231\275\347\211\210/web/templates/layout.html" @@ -9,6 +9,7 @@ + @@ -162,6 +125,18 @@ {#
#} {% load mu_tage %} {% menu request %} + + +
@@ -178,12 +153,7 @@ -{##} +