我的第一个python web开发框架(38)——管理员管理功能

栏目: 后端 · 前端 · 发布时间: 5年前

内容简介:后台管理员的管理功能,它主要用来管理后台的登录账号,绑定权限,当然如果想将后台管理扩展成企业相关管理系统,比如用于公司人事管理,在这个基础上进行适当扩展就可以了。我们先看看界面效果(也可以看着数据字典来写页面和接口)

后台管理员的管理功能,它主要用来管理后台的登录账号,绑定权限,当然如果想将后台管理扩展成企业相关管理系统,比如用于公司人事管理,在这个基础上进行适当扩展就可以了。

我们先看看界面效果(也可以看着数据字典来写页面和接口)

我的第一个python web开发框架(38)——管理员管理功能

看起来功能项还是不少,管理员也可以直接改为员工管理。列表没有什么特别的地方,所以接口也比较简单,不详细讲解。当然你也可以在这个基础上增加一下按姓名、手机、账号、部门和职位等查询条件上去

 1 @get('/api/system/manager/')
 2 def callback():
 3     """
 4     获取列表数据
 5     """
 6     # 页面索引
 7     page_number = convert_helper.to_int1(web_helper.get_query('page', '', is_check_null=False))
 8     # 页面页码与显示记录数量
 9     page_size = convert_helper.to_int0(web_helper.get_query('rows', '', is_check_null=False))
10     sidx = web_helper.get_query('sidx', '', is_check_null=False)
11     sord = web_helper.get_query('sord', '', is_check_null=False)
12     # 初始化 排序 字段
13     order_by = 'id asc'
14     if sidx:
15         order_by = sidx + ' ' + sord
16 
17     _manager_logic = manager_logic.ManagerLogic()
18     # 读取记录
19     result = _manager_logic.get_list('*', '', page_number, page_size, order_by)
20     if result:
21         return json.dumps(result, cls=json_helper.CJsonEncoder)
22     else:
23         return web_helper.return_msg(-1, "查询失败")

由于在设计管理员数据表时,字段也有不少,所以我们在管理新增与编辑页面上,可以改为标签分类方式查看,这样会比较容易找到自己想要的东西,而不是全部罗列下来一大堆

我的第一个python web开发框架(38)——管理员管理功能

我的第一个python web开发框架(38)——管理员管理功能

我的第一个python web开发框架(38)——管理员管理功能

我们将管理员信息分为基本信息、权限信息和账户安全设置三类,这样看起来会清晰很多。

在新增与编辑页面,由于我们的管理员权限需要绑定部门与职位,所以页面上需要增加部门树列表获取与职位列表获取接口的访问,在添加菜单时大家也要记得将这两个调用接口加上,不然等底层权限加上以后,这些页面数据都获取不了。

  1 @get('/api/system/manager/<id:int>/')
  2 def callback(id):
  3     """
  4     获取指定记录
  5     """
  6     _manager_logic = manager_logic.ManagerLogic()
  7     # 读取记录
  8     result = _manager_logic.get_model_for_cache(id)
  9     if result:
 10         return web_helper.return_msg(0, '成功', result)
 11     else:
 12         return web_helper.return_msg(-1, "查询失败")
 13 
 14 
 15 @post('/api/system/manager/')
 16 def callback():
 17     """
 18     新增记录
 19     """
 20     name = web_helper.get_form('name', '管理员名称')
 21     sex = web_helper.get_form('sex', '性别', is_check_null=False)
 22     if sex != '男':
 23         sex = '女'
 24     mobile = web_helper.get_form('mobile', '手机号码', is_check_null=False)
 25     if mobile and not string_helper.is_mobile(mobile):
 26         return web_helper.return_msg(-1, '手机号码格式不正确')
 27     birthday = web_helper.get_form('birthday', '出生日期', is_check_null=False)
 28     if birthday:
 29         birthday = convert_helper.to_date(birthday)
 30     email = web_helper.get_form('email', 'email', is_check_null=False)
 31     if email and not string_helper.is_email(email):
 32         return web_helper.return_msg(-1, 'Email格式不正确')
 33     remark = web_helper.get_form('remark', '备注', is_check_null=False)
 34     department_id = convert_helper.to_int0(web_helper.get_form('department_id', '所属部门'))
 35     positions_id = convert_helper.to_int0(web_helper.get_form('positions_id', '所属职位'))
 36     is_work = convert_helper.to_int0(web_helper.get_form('is_work', '工作状态'))
 37     is_enabled = web_helper.get_form('is_enabled', '是否启用', is_check_null=False)
 38     login_name = web_helper.get_form('login_name', '登录账号')
 39     login_password = web_helper.get_form('login_password1', '登录密码', is_check_special_char=False)
 40     if len(login_password) < 6:
 41         return web_helper.return_msg(-1, '登录密码长度必须大于等于6位')
 42     login_password = encrypt_helper.md5(encrypt_helper.md5(login_password)[2:24])
 43 
 44     # 判断提交的部门id是否正确
 45     _department_logic = department_logic.DepartmentLogic()
 46     department_result = _department_logic.get_model_for_cache(department_id)
 47     if not department_result:
 48         return web_helper.return_msg(-1, '所属部门不存在')
 49     # 判断提交的职位id是否正确
 50     _positions_logic = positions_logic.PositionsLogic()
 51     positions_result = _positions_logic.get_model_for_cache(positions_id)
 52     if not positions_result or positions_result.get('department_id') != department_id:
 53         return web_helper.return_msg(-1, '所属职位不存在')
 54 
 55     _manager_logic = manager_logic.ManagerLogic()
 56     # 组合更新字段
 57     fields = {
 58         'name': string(name),
 59         'sex': string(sex),
 60         'mobile': string(mobile),
 61         'email': string(email),
 62         'remark': string(remark),
 63         'department_id': department_id,
 64         'department_code': string(department_result.get('code', '')),
 65         'department_name': string(department_result.get('name', '')),
 66         'positions_id': positions_id,
 67         'positions_name': string(positions_result.get('name', '')),
 68         'is_work': is_work,
 69         'is_enabled': is_enabled,
 70         'login_name': string(login_name),
 71         'login_password': string(login_password),
 72     }
 73     if birthday:
 74         fields['birthday'] = string(str(birthday))
 75     # 添加记录
 76     result = _manager_logic.add_model(fields)
 77     if result:
 78         return web_helper.return_msg(0, '成功')
 79     else:
 80         return web_helper.return_msg(-1, "提交失败")
 81 
 82 
 83 @put('/api/system/manager/<id:int>/')
 84 def callback(id):
 85     """
 86     修改记录
 87     """
 88     name = web_helper.get_form('name', '管理员名称')
 89     sex = web_helper.get_form('sex', '性别', is_check_null=False)
 90     if sex != '男':
 91         sex = '女'
 92     mobile = web_helper.get_form('mobile', '手机号码', is_check_null=False)
 93     if mobile and not string_helper.is_mobile(mobile):
 94         return web_helper.return_msg(-1, '手机号码格式不正确')
 95     birthday = web_helper.get_form('birthday', '出生日期', is_check_null=False)
 96     if birthday:
 97         birthday = convert_helper.to_date(birthday)
 98     email = web_helper.get_form('email', 'email', is_check_null=False)
 99     if email and not string_helper.is_email(email):
100         return web_helper.return_msg(-1, 'Email格式不正确')
101     remark = web_helper.get_form('remark', '备注', is_check_null=False)
102     department_id = convert_helper.to_int0(web_helper.get_form('department_id', '所属部门'))
103     positions_id = convert_helper.to_int0(web_helper.get_form('positions_id', '所属职位'))
104     is_work = web_helper.get_form('is_work', '工作状态')
105     is_enabled = web_helper.get_form('is_enabled', '是否启用', is_check_null=False)
106     login_name = web_helper.get_form('login_name', '登录账号')
107     login_password1 = web_helper.get_form('login_password1', '新密码', is_check_null=False, is_check_special_char=False)
108     # 判断用户是否修改密码
109     if login_password1:
110         if len(login_password1) < 6:
111             return web_helper.return_msg(-1, '新密码长度必须大于等于6位')
112         login_password1 = encrypt_helper.md5(encrypt_helper.md5(login_password1)[2:24])
113 
114     # 判断提交的部门id是否正确
115     _department_logic = department_logic.DepartmentLogic()
116     department_result = _department_logic.get_model_for_cache(department_id)
117     if not department_result:
118         return web_helper.return_msg(-1, '所属部门不存在')
119     # 判断提交的职位id是否正确
120     _positions_logic = positions_logic.PositionsLogic()
121     positions_result = _positions_logic.get_model_for_cache(positions_id)
122     if not positions_result or positions_result.get('department_id') != department_id:
123         return web_helper.return_msg(-1, '所属职位不存在')
124 
125     _manager_logic = manager_logic.ManagerLogic()
126     result = _manager_logic.get_model_for_cache(id)
127     if not result:
128         return web_helper.return_msg(-1, '管理员账号不存在')
129 
130     # 组合更新字段
131     fields = {
132         'name': string(name),
133         'sex': string(sex),
134         'mobile': string(mobile),
135         'email': string(email),
136         'remark': string(remark),
137         'department_id': department_id,
138         'department_code': string(department_result.get('code', '')),
139         'department_name': string(department_result.get('name', '')),
140         'positions_id': positions_id,
141         'positions_name': string(positions_result.get('name', '')),
142         'is_work': is_work,
143         'is_enabled': is_enabled,
144         'login_name': string(login_name),
145     }
146     if birthday:
147         fields['birthday'] = string(str(birthday))
148     if login_password1:
149         fields['login_password'] = string(login_password1)
150     # 修改记录
151     result = _manager_logic.edit_model(id, fields)
152     if result:
153         return web_helper.return_msg(0, '成功', result)
154     else:
155         return web_helper.return_msg(-1, "提交失败")

这里有三个接口,第一个是管理员记录实体获取接口,用于编辑管理员时,要先从接口读取管理员的相关信息。

第二个是新增管理员接口,代码看起来很多,其实有一半是处理AJAX提交上来的数据的,大家如果熟悉common工具函数的话,会觉得这些代码非常熟悉,可以直接阅读,当然如果你对 工具 函数不熟的话,看起来可能会有点蒙,所以说要学好一个陌生框架,最好先熟悉它的工具函数有什么功能。前面让大家一定要反复使用单元测试和手打代码,就是让大家能更容易熟悉这些函数,在后面查看代码时一点都不会吃力。

第三个是编辑管理员信息接口,代码同新增接口只有很小的差别。

然后是删除接口,在删除管理员时,我们需要做个限制,判断它是否在职,在职的不能直接删除,以避免误操作。对于管理员账号,如果离职了,最好不要删除,可以留着有需要时查询,当然如果离职员工很多,相关人员又有强迫症不想查看到的话,可以将管理员管理分为两部分(两个单独的页面),一个是在职员工管理,一个是离职页面管理。

 1 @delete('/api/system/manager/<id:int>/')
 2 def callback(id):
 3     """
 4     删除指定记录
 5     """
 6     _manager_logic = manager_logic.ManagerLogic()
 7     # 删除记录
 8     result = _manager_logic.get_model_for_cache(id)
 9     if result:
10         # 未离职管理员不能直接删除
11         if result.get('is_work') == 1:
12             return web_helper.return_msg(-1, '未离职管理员不能直接删除')
13 
14         result = _manager_logic.delete_model(id)
15         if result:
16             return web_helper.return_msg(0, '删除成功')
17 
18     return web_helper.return_msg(-1, "删除失败")

除了增改删之外,对于管理员来说还会存在离职和复职的情况,所以我们还需要这两个接口,它们相对来说比较简单,离职就是将管理员的账号状态和工作状态都设置为false,复职就将它们改为true就可以了

可能有人会问,为什么还要增加工作状态和账号状态,用一个来管理不就可以了。如果后台管理系统做的简单的话,一个账号状态就够用了,如果将它拿来管理员工的话,有可能会出现有的员工在职中,但不给它登录系统,所以就需要两个不同的状态来进行管理。

 1 @put('/api/system/manager/<id:int>/dimission/')
 2 def callback(id):
 3     """
 4     设置用户离职
 5     """
 6     _manager_logic = manager_logic.ManagerLogic()
 7     fields = {
 8         'is_work': False,
 9         'is_enabled': False,
10     }
11     # 读取记录
12     result = _manager_logic.edit_model(id, fields)
13     if result:
14         return web_helper.return_msg(0, '成功')
15     else:
16         return web_helper.return_msg(-1, "管理员不存在")
17 
18 
19 @put('/api/system/manager/<id:int>/reinstated/')
20 def callback(id):
21     """
22     设置用户复职
23     """
24     _manager_logic = manager_logic.ManagerLogic()
25     # 读取记录
26     result = _manager_logic.get_model_for_cache(id)
27     if result:
28         if result.get('is_work'):
29             return web_helper.return_msg(-1, '该管理员工作状态正常,不需要复职')
30 
31         fields = {
32             'is_work': True,
33             'is_enabled': True,
34         }
35         # 读取记录
36         result = _manager_logic.edit_model(id, fields)
37         if result:
38             return web_helper.return_msg(0, '成功')
39 
40     return web_helper.return_msg(-1, "管理员不存在")

完成以上代码后,记得在菜单管理中添加对应的菜单项哦。

我的第一个python web开发框架(38)——管理员管理功能

版权声明:本文原创发表于  博客园 ,作者为  AllEmpty   本文欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则视为侵权。

python开发QQ群:669058475    作者博客:http://www.cnblogs.com/EmptyFS/


以上所述就是小编给大家介绍的《我的第一个python web开发框架(38)——管理员管理功能》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Algorithms Unlocked

Algorithms Unlocked

Thomas H. Cormen / The MIT Press / 2013-3-1 / USD 25.00

Have you ever wondered how your GPS can find the fastest way to your destination, selecting one route from seemingly countless possibilities in mere seconds? How your credit card account number is pro......一起来看看 《Algorithms Unlocked》 这本书的介绍吧!

在线进制转换器
在线进制转换器

各进制数互转换器

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具