def register(): """ 注册视图,只接受POST消息,根据发来的用户名和密码 进行注册,参数不对返回400,如果账户已有的话返回401 :return: HTTP状态码和json信息 """ json = request.get_json() data, errors = AccountParaSchema().load(json) if errors: return error_jsonify(InvalidArguments, errors, 400) if current_user.isAdmin != 2: return error_jsonify(10000003) username = data['name'] password_md5 = data['password'] is_admin = data['isAdmin'] area = data['area'] if User.is_exist(username, area): return error_jsonify(AccountAlreadyExist, status_code=400) if is_admin == PERMISSION_CITY: if User.query.filter_by(isAdmin=PERMISSION_CITY, area=area).count(): return error_jsonify(AccountAlreadyExist) new_user = User(name=username, password=password_md5, isAdmin=is_admin, area=area) session.add(new_user) session.commit() return jsonify({})
def info_report(): json = request.get_json() data, errors = DataParaSchema().load(json) if errors: return error_jsonify(10000001, errors) tmp_info = Info.query.filter_by( user_id=current_user.id).first() # 找到企业信息中是否有当前用户的信息 if tmp_info is None: return error_jsonify(10000021) now = datetime.datetime.now() data['time'] = now admin_user = User.query.filter_by(isAdmin=2).first() # 找到省管理员账户id report_time = ReportTime.query.filter( and_(ReportTime.user_id == admin_user.id, ReportTime.start_time <= now, ReportTime.end_time >= now)).first() # 找到省级管理员设置的提交时间中符合条件的 if report_time: # 如果在当前时间段 tmp_data = DataCollection.query.filter_by(user_id=current_user.id, time_id=report_time.id) # 找到企业填报的符合条件的数据 if tmp_data: # 上报 if tmp_data.first().status != 0: return error_jsonify(10000016) data['status'] = 1 tmp_data.update(data) session.commit() else: # 没有找到说明没有保存 return error_jsonify(10000015) else: # 现在不在任何可以填报的时间段内 return error_jsonify(10000014) return jsonify({})
def pass_or_not(): # 审核是否通过 json = request.get_json() data, errors = PassParaSchema().load(json) if errors: return error_jsonify(10000001, errors) data_need = DataCollection.query.filter_by(id=data['id']) if data_need.first() is None: return error_jsonify(10000020) data_update = {} if current_user.isAdmin == 1: # 市级审核 if data['status'] == 0: data_update['status'] = 4 else: data_update['status'] = 2 elif current_user.isAdmin == 2: # 省级审核 if data['status'] == 0: data_update['status'] = 4 else: data_update['status'] = 3 else: return error_jsonify(10000003) data_need.update(data_update) session.commit() return jsonify({})
def delete(pk): user = User.query.filter_by(id=pk).first() if user is None: return error_jsonify(10000012) session.delete(user) session.commit() return jsonify({})
def arrange(): # 管理员排班审批 json = request.get_json() data, errors = ArrangeParaSchema().load(json) if errors: return error_jsonify(InvalidParameters, errors) user_id = data['user_id'] time = bin(data['time']).replace('0b', '') # 将time转化为二进制数字符串 time_list = [i for i in range(len(time)) if time[i] == '1'] # 提取所有有空的时间段 info = Info.query.filter_by(Info.user_id == user_id).first() if info is None: return error_jsonify(NoStudentInfo, errors) now = datetime.now() year = now.strftime('%Y') month = int(now.strftime('%m')) for schedule_time in time_list: for wk in range(1, 21): schedule = Schedule( user_id=user_id, year=year, term=False if 2 <= month <= 7 else True, # 判断学期 week=wk + 1, time=schedule_time, department=info.department_id, position=info.position_id ) session.add(schedule) session.commit() return jsonify({})
def time_manage_delete(id): # 省级管理员删除时间段 if current_user.isAdmin != 2: # 只能省级管理员 return error_jsonify(10000003) data_need = ReportTime.query.filter_by(id=id).first() if data_need is None: return error_jsonify(10000017) session.delete(data_need) session.commit() return jsonify({})
def notice_manage_delete(id): # 删除id对应的通知 if current_user.isAdmin == 0: # 只能为管理员 return error_jsonify(10000003) data_need = Notice.query.filter_by(id=id).first() if data_need is None: return error_jsonify(10000017) session.delete(data_need) session.commit() return jsonify({})
def time_manage(): # 省级管理员设定上交开始时间,结束时间 json = request.get_json() data, errors = TimeParaSchema().load(json) if errors: return error_jsonify(10000001, errors) if current_user.isAdmin != 2: # 只能省级管理员 return error_jsonify(10000003) new_time = ReportTime(start_time=data['start_time'], end_time=data['end_time'], user_id=current_user.id) session.add(new_time) session.commit() return jsonify({})
def approve_rest(rest_id): json = request.get_json() data, errors = RestApprovalParaSchema().load(json) if errors: return error_jsonify(InvalidParameters) rest = Rest.query.filter_by(Rest.id == rest_id).first() rest.is_approval = 1 schedule = Schedule.query.filter( and_(Schedule.user_id == rest.user_id, Schedule.week == rest.week, Schedule.time == rest.time)) schedule.is_rest = 1 session.commit()
def modify(pk): json = request.json data, error = AccountParaSchema(exclude=('is_admin', 'id', 'area')).load(json) if error: return error_jsonify(10000001, error) user = User.query.filter_by(id=pk).first() if user is None: return error_jsonify(10000012) for k, v in data.items(): setattr(user, k, v) session.add(user) session.commit() return jsonify({})
def time_manage_id(id): # 省级管理员更改上交开始时间,结束时间 json = request.get_json() data, errors = TimeParaSchema().load(json) if errors: return error_jsonify(10000001, errors) if current_user.isAdmin != 2: # 只能省级管理员 return error_jsonify(10000003) data_need = ReportTime.query.filter_by(id=id) if data_need.first() is None: return error_jsonify(10000018) data_need.update(data) session.commit() return jsonify({})
def notification_manage(): # 管理员设定通知 if current_user.isAdmin == 0: # 只能为管理员 return error_jsonify(10000003) json = request.get_json() data, errors = NoticeParaSchema().load(json) if errors: return error_jsonify(10000001, errors) now = datetime.datetime.now() data['created_at'] = now data['source'] = '山东省人力资源管理部门' data['user_id'] = current_user.id new_data = Notice(**data) session.add(new_data) session.commit() return jsonify({})
def info_record(): json = request.get_json() data, errors = InfoParaSchema().load(json) if errors: return error_jsonify(InvalidArguments, errors, 400) else: data['user_id'] = current_user.id tmp_info = Info.query.filter_by(user_id=current_user.id) if tmp_info.first() is not None: tmp_info.update(data) session.commit() else: new_info = Info(**data) session.add(new_info) session.commit() return jsonify({})
def notice_manage_id(id): # 更改管理员获得的通知 if current_user.isAdmin == 0: # 只能为管理员 return error_jsonify(10000003) json = request.get_json() data, errors = NoticeParaSchema().load(json) if errors: return error_jsonify(10000001, errors) data_need = Notice.query.filter_by(id=id) if data_need.first() is None: # 没有这个id,更改失败 return error_jsonify(10000018) data_need.update(data) session.commit() return jsonify({})
def rest(): # 学生用户请假 json = request.get_json() data, errors = RestParaSchema().load(json) if errors: return error_jsonify(InvalidParameters) week = data['week'] time = data['free_time'] schedule = Schedule.query.filter( and_(Schedule.user_id == current_user.id, Schedule.week == week, Schedule.time == time)).first() if schedule is None: return error_jsonify(1002, errors) rest = Rest(user_id=current_user.id, week=week, time=time) session.add(rest) session.commit()
def data_modify(pk): json = request.get_json() data, error = DataParaSchema().load(json) if error: return error_jsonify(10000001, error) data_c = DataCollection.query.filter_by(id=pk).first() if data_c is None: return error_jsonify(10000018) if data_c.status == 5: return error_jsonify(10000022) data['time'] = data_c.time data['time_id'] = data_c.time_id data['status'] = data_c.status data['user_id'] = data_c.user_id data_c.status = 5 session.add(data_c) new_data = DataCollection(**data) session.add(new_data) session.commit() return jsonify({})
def login(): """ 最基本的登录视图,只能通过post发送登录信息 如果发送的参数不对返回400 :return: HTTP状态码和json信息 """ json = request.get_json() data, errors = AccountParaSchema().load(json) if errors: return error_jsonify(InvalidParameters, errors, 400) username = data['username'] attempt_user = User.query.filter_by(username=username).first() if attempt_user is None: is_admin = True if 'admin' in username else False new_user = User(username=username, is_admin=is_admin) session.add(new_user) session.commit() login_user(new_user) return jsonify({}) else: login_user(attempt_user) return jsonify({})
def info_modify(user_id): json = request.get_json() data, errors = InfoModifyParaSchema().load(json) if errors: return error_jsonify(InvalidParameters) user = User.query.filter_by(User.user_id == user_id).first() session.commit() info = Info.query.filter_by(user_id=user.id).first() exist = 0 if info is not None: exist = 1 info = Info(student_id=data['student_id'], user_id=user_id, financial_difficulties=data['financial_difficulties'], work=data['work'], department_id=data['department_id'], position_id=data['position_id'], experience=data['experience'], skill=data['skill'], free_time=data['free_time'], school=data['school'], name=data['name'], sex=data['sex'], phone=data['phone'], email=data['email'], on_position=0) if exist == 0: session.add(info) session.commit()
def init_quota(): for kind, quantity in DEFAULT_QUOTA_QUANTITY: Quota.create(kind, quantity) session.commit()