万叶集 |
---|
🎉 隐约雷鸣,阴霾天空。 🎉 |
🎉 但盼风雨来,能留你在此。 🎉 |
文章目录
该章节我们将来开发 “admin.py” 模块的相关功能,今天主要有5件事情需要实现:
🐳 admin 类的搭建
代码示例如下:
# coding:utf-8
import os
from base import Base
"""
***************************************************************************************************************
1、admin 类的搭建(继承 Base 类)
2、获取当前用户函数(包含获取身份)
3、添加用户(判断当前身份是否是管理员)
4、冻结与恢复用户(active 标签判断用户是否可用的标识)
5、修改用户身份(管理员操作修改 role为 "admin" 或者 "normal" ;"normal"用户可参与抽奖,"admin"用户只能是为普通用户服务的角色)
***************************************************************************************************************
"""
class Admin(Base):
def __init__(self, username, user_json, gift_json): # 定义构造函数,同时也利用super()函数继承并使用 Base 类的构造函数
self.username = username
super().__init__(user_json, gift_json)
if __name__ == '__main__':
user_path = os.path.join(os.getcwd(), "storage", "user.json")
gift_path = os.path.join(os.getcwd(), "storage", "gift.json")
admin = Admin('Neo', user_path, gift_path)
运行结果如下:
🐳 获取用户的函数
接下来编写获取用户的函数,首先最重要的就是获取用户的身份。
代码示例如下:
# coding:utf-8
import os
from base import Base
from common.error import NotUserError, UserActiveError, RoleError
"""
***************************************************************************************************************
1、admin 类的搭建(继承 Base 类)
2、获取当前用户函数(包含获取身份)
3、添加用户(判断当前身份是否是管理员)
4、冻结与恢复用户(active 标签判断用户是否可用的标识)
5、修改用户身份(管理员操作修改 role为 "admin" 或者 "normal" ;"normal"用户可参与抽奖,"admin"用户只能是为普通用户服务的角色)
***************************************************************************************************************
"""
class Admin(Base):
def __init__(self, username, user_json, gift_json): # 定义构造函数,同时也利用super()函数继承并使用 Base 类的构造函数
self.username = username
super().__init__(user_json, gift_json)
self.get_user()
def get_user(self):
users = self._Base__read_users() # 注意 "__read_users()" 是 Base 类的私有函数,不能直接调用 "self.__read_users()"
current_user = users.get(self.username)
if current_user is None: # 判断用户是否存在,不存在则抛出自定义 "error.py" 模块的 NotUserError 异常
raise NotUserError('not user %s' % self.username)
if current_user.get('active') == False: # 判断用户可用状态,不可用则抛出自定义 "error.py" 模块的 UserActiveError 异常
raise UserActiveError('the user %s had not use' % self.username)
if current_user.get('role') != 'admin':
raise RoleError('permission by admin')
self.user = current_user
self.role = current_user.get('role')
self.name = current_user.get('username')
self.active = current_user.get('active')
if __name__ == '__main__':
gift_path = os.path.join(os.getcwd(), 'storage', 'gift.json')
user_path = os.path.join(os.getcwd(), 'storage', 'user.json')
admin = Admin('Neo', user_path, gift_path)
admin.get_user()
print(admin.name, admin.role)
运行结果如下:
🐳 添加用户
添加用户之前,我们需要判断是否是 “admin” 的身份。
# coding:utf-8
import os
from base import Base
from common.error import NotUserError, UserActiveError, RoleError
"""
***************************************************************************************************************
1、admin 类的搭建(继承 Base 类)
2、获取当前用户函数(包含获取身份)
3、添加用户(判断当前身份是否是管理员)
4、冻结与恢复用户(active 标签判断用户是否可用的标识)
5、修改用户身份(管理员操作修改 role为 "admin" 或者 "normal" ;"normal"用户可参与抽奖,"admin"用户只能是为普通用户服务的角色)
***************************************************************************************************************
"""
class Admin(Base):
def __init__(self, username, user_json, gift_json): # 定义构造函数,同时也利用super()函数继承并使用 Base 类的构造函数
self.username = username
super().__init__(user_json, gift_json)
self.get_user()
def get_user(self):
users = self._Base__read_users() # 注意 "__read_users()" 是 Base 类的私有函数,不能直接调用 "self.__read_users()"
current_user = users.get(self.username)
if current_user is None: # 判断用户是否存在,不存在则抛出自定义 "error.py" 模块的 NotUserError 异常
raise NotUserError('not user %s' % self.username)
if current_user.get('active') == False: # 判断用户可用状态,不可用则抛出自定义 "error.py" 模块的 UserActiveError 异常
raise UserActiveError('the user %s had not use' % self.username)
if current_user.get('role') != 'admin':
raise RoleError('permission by admin')
self.user = current_user
self.role = current_user.get('role')
self.name = current_user.get('username')
self.active = current_user.get('active')
def __check(self, message): # 判断是否是管理员身份
self.get_user()
if self.role != 'admin':
raise Exception(message)
def add_user(self, username, role): # 添加用户函数
self.__check('permission')
self._Base__write_user(username=username, role=role) # 调用 Base 类的 "__write_user()" 函数添加用户啊
if __name__ == '__main__':
gift_path = os.path.join(os.getcwd(), 'storage', 'gift.json')
user_path = os.path.join(os.getcwd(), 'storage', 'user.json')
admin = Admin('Neo', user_path, gift_path)
# admin.get_user()
# print(admin.name, admin.role)
admin.add_user(username="Adem", role="normal")
admin.get_user()
执行结果如下:
🐳 冻结与恢复用户及修改用户的身份
冻结用户、恢复用户就是通过 active
标签判断用户是否可用, true
为可用状态, false
即禁用状态;
修改用户身份就更简单了,直接修改 role
标签即可,目前只有两个身份 'admin' 与 'normal'
。
代码示例如下:
# coding:utf-8
import os
from base import Base
from common.error import NotUserError, UserActiveError, RoleError
"""
***************************************************************************************************************
1、admin 类的搭建(继承 Base 类)
2、获取当前用户函数(包含获取身份)
3、添加用户(判断当前身份是否是管理员)
4、冻结与恢复用户(active 标签判断用户是否可用的标识)
5、修改用户身份(管理员操作修改 role为 "admin" 或者 "normal" ;"normal"用户可参与抽奖,"admin"用户只能是为普通用户服务的角色)
***************************************************************************************************************
"""
class Admin(Base):
def __init__(self, username, user_json, gift_json): # 定义构造函数,同时也利用super()函数继承并使用 Base 类的构造函数
self.username = username
super().__init__(user_json, gift_json)
self.get_user()
def get_user(self):
users = self._Base__read_users() # 注意 "__read_users()" 是 Base 类的私有函数,不能直接调用 "self.__read_users()"
current_user = users.get(self.username)
if current_user is None: # 判断用户是否存在,不存在则抛出自定义 "error.py" 模块的 NotUserError 异常
raise NotUserError('not user %s' % self.username)
if current_user.get('active') == False: # 判断用户可用状态,不可用则抛出自定义 "error.py" 模块的 UserActiveError 异常
raise UserActiveError('the user %s had not use' % self.username)
if current_user.get('role') != 'admin':
raise RoleError('permission by admin')
self.user = current_user
self.role = current_user.get('role')
self.name = current_user.get('username')
self.active = current_user.get('active')
def __check(self, message): # 判断是否是管理员身份
self.get_user()
if self.role != 'admin':
raise Exception(message)
def add_user(self, username, role): # 添加用户函数
self.__check('permission')
self._Base__write_user(username=username, role=role) # 调用 Base 类的 "__write_user()" 函数添加用户
def update_user_active(self, username): # 变更用户的 active 状态
self.__check('permission')
self._Base__change_acitve(username=username) # 调用 Base 类的 "__change_acitve" 函数变更用户的 active 状态
def update_user_role(self, username, role): # 变更用户的 role 状态 (权限)
self.__check('permission')
self._Base__change_role(username=username, role=role) # 调用 Base 类的 "__change_role" 函数变更用户的 role 状态
if __name__ == '__main__':
gift_path = os.path.join(os.getcwd(), 'storage', 'gift.json')
user_path = os.path.join(os.getcwd(), 'storage', 'user.json')
admin = Admin('Neo', user_path, gift_path)
# admin.get_user()
# print(admin.name, admin.role)
admin.update_user_active(username="Adem")
admin.update_user_role(username='Adem', role='admin')
运行结果如下:(将 “user.json” 文件内的内容进行JSON格式化)