用户权限验证后增加用户和组织的简短信息
wisdoms的Python项目详细描述
[目录]
天
use
- 项目名称
- 中国石油天然气股份有限公司
- 引
-
发电厂
确保安装了setuptools和wheel。
important:必须在setup.py中修改包的版本并删除文件夹(build、dist、egg info)
python setup.py sdist bdist_wheel
上传-上传代码
在进行此操作之前安装绳线(qays:i)
twine upload dist/*
安装-
pip install wisdoms
查找最新的智慧包-Disease
pip list --outdated
升级-新建
pip install wisdoms --upgrade
数据包使用:
ms.py:
# 权限验证fromwisdoms.msimportpermit,add_uid,add_userhost={'AMQP_URI':"amqp://guest:guest@localhost"}auth_=permit(host)user_=add_user(host)uid_=add_uid(host)classA:@auth_deffunc_need_auth(self,data):""" 1.进入这个方法之前会验证权限,data需带有token 2.之后的data的数据结构: {'uid':用户id, 'full_user':用户全部信息字典类型,'data':前端传来的data,'token':token,'full_org':当前组织, 'user':精简用户信息,'org':精简组织信息} :param data: :return: """user=data.get('user')data=data.get('data')# ...@user_deffunc_need_user(self,data):""" 1.进入这个方法不需要验证权限,需要token返回用户信息 2.之后的data的数据结构: {'uid':用户id, 'full_user':用户全部信息字典类型,'data':前端传来的data,'token':token,'full_org':当前组织, 'user':精简用户信息,'org':精简组织信息} :param data: :return: """user=data.get('user')data=data.get('data')# ...@uid_deffunc_need_uid(self,data):""" 1.进入这个方法不需要验证权限,需要token只返回用户id 2.之后的data的数据结构:{'uid':用户id, 'data':前端传来的data,'token':token} :param data: :return: """uid=data.get('uid')data=data.get('data')# ...
配置py
# 读取yml配置fromwisdoms.configimportc# gains item of YML configprint(c.get('name'))# transforms class into dictd=c.to_dict()print(d['name'])
公共软件包
# 返回执行后的状态码fromwisdoms.commonsimportrevert,codes,successdeffunc():# do something# revert(codes.code) or revert(number)# return revert(1)returnrevert(codes.ERROR)deffoo():# return revert(code, data, desc)returnrevert(codes.SUCCESS,{'data':'data'},'返回成功描述信息')defdone():# simplified revert where success execute# return success(data) or success()returnsuccess()
实用py
# 多个字符串连接成路径fromwisdoms.utilsimportjoint4pathprint(joint4path('abc','dac','ccc'))# $: abc/dac/ccc# ------------------------------------------------------------------# 对象转字典fromwisdoms.utilsimporto2do2d(obj)# ------------------------------------------------------------------# 捕获异常装饰器fromwisdoms.utilsimportfunc_exceptionex=func_exception(codes.WARNING)@exdeffunc():pass# ------------------------------------------------------------------# 捕获异常类装饰器fromwisdoms.utilsimportcls_exception# ex为方法装饰器xpt_cls=cls_exception(ex)@xpt_clsclassA:name='a'def__init__(self,param):self.desc=paramdeffunc1(self,param):returnself.desc+param@classmethoddeffunc2(cls,param):print(cls)print('func2',param)raiseException('func2 error')@staticmethoddeffunc3(param):print('func3',param)raiseException('func3 error')aa=A('param')# 注意: 该装饰器的静态方法和类方法必须用实例调用print(aa.func1('1111111'))print(aa.func2('2222222'))print(aa.func3('3333333'))
ms.py
# 应用微服务 基类fromwisdoms.msimportms_basefromxximportROLES# ROLES 数据结构# import json# defRole = {# 'role': 'default',# 'name': '默认角色',# 'desc': '',# 'functions': ['user_register', 'user_update', 'user_logoff', 'user_search', 'user_audit', 'user_login',# 'user_logout', 'org_register', 'org_update', 'org_dismiss', 'org_search', 'org_audit',# 'org_user_list', 'app_register', 'app_update', 'app_delete', 'app_search', 'app_audit',# 'user_org_apply', 'user_org_choose', 'user_org_list', 'user_org_audit', 'user_org_update',# 'user_org_rid', 'user_app_apply', 'user_app_apply_list', 'user_app_audit', 'user_app_update',# 'user_app_rid', 'user_app_router'],# 'router': {}# }# ROLES = list()# ROLES.append(json.dumps(defRole))# 不需要的不写MsBase=ms_base(MS_HOST,name='XX应用',roles=ROLES,types='free',entrance='/xx/index')classA(MsBase):pass# -----------------------------------------------fromwisdoms.msimportclosure_crfcrf=closure_crf(config('ms_host'))
pg_db.py
fromwisdoms.pg_dbimportsession_exceptionse=session_exception(session)@sedeffunc():# raise exception extend SqlalChemyErrorpass# ------------------------------------------------------------------# session 增删改查表基础类,已经实现增删改查通用方法,直接继承就能使用fromwisdoms.dbimportrepo_refRepoBase=repo_ref(session)classFooRepo(RepoBase):""" common add, delete, update, get(include search) function finished """pass# Foo is the model of tablefoo=FooRepo(Foo)# you can do follow listfoo.add(name='name',desc='desc',...)foo.update(id,name='rename',desc='redesc',...)foo.delete(id)foo.get()# return list of all objectsfoo.get(id)# return a objectfoo.get(name='name',...)# return list of objects what you search#-----------------------------------------------------postgresql使用ARRAYJSON使用jsonb来存储example:notes=Column(CastingArray())classCastingArray(ARRAY):defbind_expression(self):returncast(JSONB,self)#---------------------------------------------------------定制PGmodel五个基本属性classBaseModelPG(declarative_base()):__abstract__=True# 定制基本属性id=Column(Integer,nullable=False,primary_key=True,unique=True,autoincrement=True,)uid=Column(Integer,nullable=False)oid=Column(Integer,nullable=False)create_time=Column(DateTime,default=datetime.now(),onupdate=datetime.now())update_time=Column(DateTime,default=datetime.now(),)使用例子classSomeEntity(BaseModelPG):name=models.CharField(max_length=1000)address=models.CharField(max_length=1000,default='')info=models.CharField(max_length=2000,default='')