def ls_domain(): data = {'monitors':[],'members':[]} for i in Domain.objects(monitors__in=[g.user]): data['monitors'].append(i.get_json()) for i in Domain.objects(members__in=[g.user]): data['members'].append(i.get_json()) return trueReturn(data)
def edit_domain(): d = Domain.get_by_id(g.data['id']) if g.user in d.monitors: d.modify_members(g.data['members'],g.data['monitors']) return trueReturn() else: return falseReturn(msg='您没有此域的管理权限')
def rename_domain(): d = Domain.get_by_id(g.data['id']) if g.user in d.monitors: d.rename(g.data['name']) return trueReturn() else: return falseReturn(msg='您没有此域的更名权限')
def remove_domain(): d = Domain.get_by_id(g.data['id']) if g.user in d.monitors: d.delete() return trueReturn() else: return falseReturn(msg='您没有此域的删除权限')
def export_sign(): return trueReturn({ 'all_signs': [{ 'user': j, 'signs': [i.get_base_info() for i in Sign.objects(user=j)] } for j in User.objects()] })
def alloc_user(): for i in g.data['roles']: if not g.user.restrict_permission(Role.get_by_id(i).permission): return falseReturn(msg='您无法赋予他人权限不小于自己的角色') if not g.user.restrict_functions(Role.get_by_id(i).allow_functions): return falseReturn(msg='您无法赋予他人权能不在自己范围内的角色') u = User.get_by_id(g.data['id']) u.change_role(g.data['roles']) return trueReturn()
def import_user(): if 'file' not in request.files: return falseReturn(None, '无文件') f = request.files['file'] if f.filename == '': return falseReturn(None, '未选择上传') else: sheet(f) return trueReturn()
def do_sign(): # shift改变排班的week只是记签到目的week,不作为判断是否允许签到的依据 wk = int( (datetime.datetime.now() - Admin.objects().first().server_starttime ).total_seconds()) % (86400 * 7) r = Routine.objects(user=g.user).first() ima = datetime.datetime.now().timestamp() + 28800 m = [] if r.signtime != r.shift: # 有调班: if int((ima + 259200) % 604800 / 86400) == int(r.shift / 5) and int( ima % 86400) in time_table[r.shift % 5]: if not Sign.objects(user=g.user, week=r.shift_week): if Sign.create(user=g.user, typ='s', week=r.shift_week): r = r.recover_shift() return trueReturn() else: r = r.recover_shift() m.append('【调班】本时间段内签过到') else: r = r.recover_shift() m.append('【调班】本周已签过到') else: m.append('【调班】不在签到时段内') # print(int((ima + 259200) % 604800 / 86400) == int(r.signtime / 5)) # print(ima % 86400 in time_table[r.signtime % 5]) # print(ima % 86400) # print(time_table[r.signtime % 5]) if int((ima + 259200) % 604800 / 86400) == int(r.signtime / 5) and int( ima % 86400) in time_table[r.signtime % 5]: if not Sign.objects(user=g.user, week=wk): if Sign.create(user=g.user, typ='n', week=wk): return trueReturn() else: m.append('【正常班次】本时间段内签过到') return falseReturn(msg='\n'.join(m)) else: m.append('【正常班次】本周已签过到') return falseReturn(msg='\n'.join(m)) else: m.append('【正常班次】不在签到时段内') return falseReturn(msg='\n'.join(m))
def remove_role(): if g.user.restrict_permission(Role.get_by_id(g.data['id']).permission): if g.user.restrict_functions( Role.get_by_id(g.data['id']).allow_functions): Role.get_by_id(g.data['id']).delete() return trueReturn() else: return falseReturn(msg='您无法删除权能比自己多的角色') else: return falseReturn(msg='您无法删除权限不小于自己的角色')
def rename_role(): if g.user.restrict_permission(Role.get_by_id(g.data['id']).permission): if g.user.restrict_functions( Role.get_by_id(g.data['id']).allow_functions): Role.get_by_id(g.data['id']).rename(g.data['name']) return trueReturn() else: return falseReturn(msg='您无法为权能比自己多的角色更名') else: return falseReturn(msg='您无法为权限不小于自己的角色更名')
def signin(): name = g.data.get("username", "").strip() password = g.data.get("password", "") user = Admin.objects(user_id=name).first() if not user or not user.valid_password(password): return falseReturn(None, "用户名或密码有误") return trueReturn({ 'user': user.get_base_info(), 'token': generate_jwt(user) })
def edit_role(): if g.user.restrict_permission(g.data['permission']): if g.user.restrict_functions(g.data['functions']): Role.get_by_id(g.data['id']).modify_permission( g.data['permission']) Role.get_by_id(g.data['id']).modify_functions(g.data['functions']) return trueReturn() else: return falseReturn(msg='您无法为角色分配自己没有的权能') else: return falseReturn(msg='您无法为角色分配不小于自身的权限')
def initialize_instance(): Admin.insert_admin(g.data['user'], g.data['password']) Domain(name='默认部员域').save() Role.new_role('成员', 0, []) Role.new_role('部长', 64, [ 'new_user', 'remove_user', 'rename_user', 'alloc_user', 'ls_user', 'import_from_sheet' ]) Role.new_role('总监', 4096, ['*']) with open('isinit.flag', 'w') as f: pass return trueReturn(msg="初始化完成")
def remove_user(): u = User.get_by_id(g.data['id']) if not g.user.restrict_permission(u.max_permission()): return falseReturn(msg='您无法删除权限不小于自己的用户') u.delete() return trueReturn()
def new_role(): if g.user.restrict_permission(g.data['permission']): Role.new_role(g.data['name'], g.data['permission']) return trueReturn() else: return falseReturn(msg='您无法新建权限不小于自己的角色')
def ls_role(): return trueReturn({"roles": [i.get_base_info() for i in Role.objects()]})
def rename_user(): u = User.get_by_id(g.data['id']) if not g.user.restrict_permission(u.max_permission()): return falseReturn(msg='您无法重命名权限不小于自己的用户') u.rename(g.data['name']) return trueReturn()
def ls_user(): return trueReturn({'users': [i.get_base_info() for i in User.objects()]})
def ls_sign(): return trueReturn( {'signs': [i.get_base_info() for i in Sign.objects(user=g.user)]})
def new_event(): Event.new_event(g.user, g.data['name'], g.data['frequency'], g.data['offset'], g.data['start'], g.data['end'], g.data['timenode']) return trueReturn()
def edit_domain(): d = Domain.get_by_id(g.data['id']) d.modify_members(g.data['members'], g.data['monitors']) return trueReturn()
def rename_domain(): d = Domain.get_by_id(g.data['id']) d.rename(g.data['name']) return trueReturn()
def remove_domain(): d = Domain.get_by_id(g.data['id']) d.delete() return trueReturn()
def new_domain(): Domain.new_domain(g.data['name'], None) return trueReturn()
def change_routine(): # 永久调班 if int(g.data['signtime']) not in range(0, 35): return falseReturn(msg='值班时间段设置不合法') u = User.get_by_id(g.data['user']) Routine.objects(user=u).first().change_signtime(g.data['signtime']) return trueReturn()
def edit_event(): e = Event.get_by_id(g.data['id']) e.edit_event(g.user, g.data['name'], g.data['frequency'], g.data['offset'], g.data['start'], g.data['end'], g.data['timenode']) return trueReturn()
def new_user(): User.get_or_create(g.data['name'], g.data['user_id'], g.data['password']) return trueReturn()
def ls_domain(): return trueReturn({"domains": [i.get_json() for i in Domain.objects()]})
def remove_event(): # 临时调班 e = Event.get_by_id(g.data['id']) e.delete() return trueReturn()
def set_starttime(): # 设置系统启动时间 d = datetime.datetime.strptime(g.data['time'], '%Y/%m/%d %H:%M:%S') Admin.objects().first().change_starttime(d) return trueReturn()