예제 #1
0
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({})
예제 #2
0
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({})
예제 #3
0
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({})
예제 #4
0
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({})
예제 #5
0
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({})
예제 #6
0
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({})
예제 #7
0
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({})
예제 #8
0
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({})
예제 #9
0
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()
예제 #10
0
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({})
예제 #11
0
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({})
예제 #12
0
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({})
예제 #13
0
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({})
예제 #14
0
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({})
예제 #15
0
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()
예제 #16
0
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({})
예제 #17
0
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({})
예제 #18
0
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()
예제 #19
0
def init_quota():
    for kind, quantity in DEFAULT_QUOTA_QUANTITY:
        Quota.create(kind, quantity)
        session.commit()