Beispiel #1
0
def delete(stu_id, skill_id):
    """
    删除技能评价
    成功:返回{'tag': OK_DEL_SKILL}
    失败:返回{'tag': ERR_DEL_SKILL_DB}
    """
    select_rlt = stu_info.select(stu_id=stu_id)
    # 如果学生存在
    if select_rlt['tag'] == stu_info.OK_SELECT:
        delete_tag = skill.id_stu_delete(skill_id, select_rlt['stu'])
        if delete_tag == skill.OK_DELETE:
            return {'tag': OK_DEL_SKILL}

        # delete_tag == ERR_DELETE_DB
        else:
            return {'tag': ERR_DEL_SKILL_DB}

    # 如果学生不存在
    elif select_rlt['tag'] == stu_info.ERR_SELECT_NOTEXIST:
        logger.warning('尝试删除不存在的学生的技能评价')
        return {'tag': ERR_DEL_SKILL_DB}

    # 如果数据库异常导致无法确认学生是否存在(select_rlt['tag'] == ERR_SELECT_DB)
    else:
        logger.error('数据库异常导致无法确认学生是否存在,删除技能评价失败')
        return {'tag': ERR_DEL_SKILL_DB}
Beispiel #2
0
def get(stu_id):
    """
    获取学生的简历路径
    成功:返回{'tag': OK_GET_RESUME, 'resume_path': select_rlt['stu'].resume_path}
    失败:返回{'tag': ERR_GET_RESUME_DB}
    """
    select_rlt = stu_info.select(stu_id)
    # 如果学生存在
    if select_rlt['tag'] == OK_SELECT:
        # 如果没有简历
        if select_rlt['stu'].resume_path == NO_RESUME:
            return {'tag': ERR_GET_NO_RESUME}

        # 如果成功
        return {
            'tag': OK_GET_RESUME,
            'resume_path': select_rlt['stu'].resume_path
        }

    # 如果学生不存在
    elif select_rlt['tag'] == ERR_SELECT_NOTEXIST:
        logger.warning('尝试获取不存在学生的简历路径')
        return {'tag': ERR_GET_RESUME_DB}

    # 如果数据库异常导致无法确认学生是否存在 select_rlt['tag'] == ERR_SELECT_DB
    else:
        logger.error('数据库异常导致无法确认学生是否存在,获取简历路径失败')
        return {'tag': ERR_GET_RESUME_DB}
Beispiel #3
0
def add(stu_id, name, duty, url, description, img, audio, video):
    """
    增加作品集信息
    成功:返回{'tag': OK_ADD_WORKS, 'works_id': insert_rlt['works'].works_id}
    失败:返回{'tag': ERR_ADD_WORKS_DB}或{'tag': ERR_ADD_WORKS_FULL}
    """
    select_rlt = stu_info.select(stu_id=stu_id)
    # 如果学生存在
    if select_rlt['tag'] == stu_info.OK_SELECT:
        filter_set = works.stu_filter(stu=select_rlt['stu'])

        # 如果该学生有合法的作品数量数量
        if filter_set.count() < 6:
            insert_rlt = works.insert(name, duty, url, description, select_rlt['stu'], img, audio, video)
            if insert_rlt['tag'] == works.OK_INSERT:
                return {'tag': OK_ADD_WORKS, 'works_id': insert_rlt['works'].works_id}
            else:
                return {'tag': ERR_ADD_WORKS_FULL}

    # 如果学生记录不存在
    elif select_rlt['tag'] == stu_info.ERR_SELECT_NOTEXIST:
        logger.warning('尝试为不存在的学生增加作品集信息')
        return {'tag': ERR_ADD_WORKS_DB}
    # 如果数据库异常导致获取学生信息失败(select_rlt['tag'] == ERR_SELECT_DB)
    else:
        logger.error('数据库异常导致无法确认学生是否存在,增加作品集信息失败')
        return {'tag': ERR_ADD_WORKS_DB}
Beispiel #4
0
def get(stu_id):
    """
    获取技能评价
    成功:{'tag': OK_GET_SKILL, 'skill_list': list(filter_set.values())}
                            "skill_list": [{
                                        "skill_id": skill_id,
                                        "name": name,
                                        "value": value},
                                        ...]}
    失败:{'tag': ERR_GET_NO_SKILL}或{'tag': ERR_GET_SKILL_DB}
    """
    select_rlt = stu_info.select(stu_id=stu_id)
    # 如果学生存在
    if select_rlt['tag'] == stu_info.OK_SELECT:
        filter_set = skill.stu_filter(stu=select_rlt['stu'])

        # 如果该学生有合法的技能评价数量
        if filter_set.count() != 0:
            return {
                'tag': OK_GET_SKILL,
                'skill_list': list(filter_set.values())
            }

        # 如果该学生无技能评价 filter_set.count() == 0
        else:
            return {'tag': ERR_GET_NO_SKILL}

    # 如果学生不存在
    elif select_rlt['tag'] == stu_info.ERR_SELECT_NOTEXIST:
        logger.warning('尝试获取不存在的学生的技能评价')
        return {'tag': ERR_GET_SKILL_DB}
    # 如果数据库异常导致无法确认学生是否存在(select_rlt['tag'] == ERR_SELECT_DB)
    else:
        logger.error('数据库异常导致无法确认学生是否存在,查询技能评价失败')
        return {'tag': ERR_GET_SKILL_DB}
Beispiel #5
0
def get(stu_id):
    """
    获取学生的作品集
    """
    select_rlt = stu_info.select(stu_id=stu_id)
    # 如果学生存在
    if select_rlt['tag'] == stu_info.OK_SELECT:
        filter_set = works.stu_filter(stu=select_rlt['stu'])

        # 如果该学生有合法的作品数量数量
        if filter_set.count() in range(1, 6):
            return {'tag': OK_GET_WORKS,
                    'works_list': list(filter_set.values())}

        # 如果该学生无作品
        elif filter_set.count() == 0:
            return {'tag': ERR_GET_NO_WORKS}
        # 如果该学生的作品数量不合法
        else:
            logger.error('学生id为%s的学生拥有不合法的作品数量,导致获取作品失败' % stu_id)
            return {'tag': ERR_GET_WORKS_DB}

    # 如果学生不存在
    elif select_rlt['tag'] == stu_info.ERR_SELECT_NOTEXIST:
        logger.warning('尝试获取不存在的学生的作品')
        return {'tag': ERR_GET_WORKS_DB}
    # 如果数据库异常导致无法确认学生是否存在(select_rlt['tag'] == ERR_SELECT_DB)
    else:
        logger.error('数据库异常导致无法确认学生是否存在,查询作品失败')
        return {'tag': ERR_GET_WORKS_DB}
Beispiel #6
0
def delete(stu_id, works_id):
    """
    删除作品
    成功:返回{'tag': OK_DEL_WORKS}
    失败:返回{'tag': ERR_DEL_WORKS_DB}
    """
    select_rlt = stu_info.select(stu_id=stu_id)
    # 如果学生存在
    if select_rlt['tag'] == stu_info.OK_SELECT:
        delete_tag = works.delete(works_id, select_rlt['stu'])
        if delete_tag == works.OK_DELETE:
            return {'tag': OK_DEL_works}

        # delete_tag == ERR_DELETE_DB
        else:
            return {'tag': ERR_DEL_works_DB}

    # 如果学生不存在
    elif select_rlt['tag'] == stu_info.ERR_SELECT_NOTEXIST:
        logger.warning('尝试删除不存在的学生的技能评价')
        return {'tag': ERR_DEL_works_DB}

    # 如果数据库异常导致无法确认学生是否存在(select_rlt['tag'] == ERR_SELECT_DB)
    else:
        logger.error('数据库异常导致无法确认学生是否存在,删除技能评价失败')
        return {'tag': ERR_DEL_works_DB}
Beispiel #7
0
def reply(apply_id, text):
    """
    邮件回复投递(团队)
    @apply_id:
    @text: 邮件内容
    成功:返回OK_REPLY
    失败:返回ERR_REPLY_DB
    """
    apply_select_rlt = job_apply.id_select(apply_id)

    # 如果查询投递记录成功
    if apply_select_rlt['tag'] == OK_SELECT:
        apply = apply_select_rlt['apply']
        stu_select_rlt = stu_info.select(apply.stu_id)

        # 如果获取关联的学生成功
        if stu_select_rlt['tag'] == OK_SELECT:
            mail = stu_select_rlt['stu'].mail
            send_mail('WeMeet投递职位回复邮件', text, '*****@*****.**', [mail])  # TODO(hjf): 修改邮件标题、发送邮箱
            return OK_REPLY

        # 如果无法获取关联的学生
        else:
            logger.error('数据库异常,无法获取与投递记录关联的学生信息')
            return ERR_REPLY_DB

    # 如果投递记录不存在
    elif apply_select_rlt['tag'] == ERR_SELECT_NOTEXIST:
        logger.warning('尝试回复不存在的投递')
        return ERR_REPLY_DB
    # 如果数据库异常导致获取投递信息失败
    else:
        return ERR_REPLY_DB
Beispiel #8
0
def delete(stu_id):
    """
    删除简历(只删除学生信息的简历路径)
    成功:返回{'tag': OK_DEL_RESUME}
    失败:返回{'tag': ERR_DEL_RESUME_DB}
    """
    select_rlt = stu_info.select(stu_id)
    # 如果学生存在
    if select_rlt['tag'] == OK_SELECT:
        stu = select_rlt['stu']
        update_rlt = stu_info.update(stu_id=stu.id, resume_path=NO_RESUME)
        if update_rlt == OK_UPDATE:
            return {'tag': OK_DEL_RESUME}
        else:
            logger.error('数据库异常导致无法删除学生的简历(路径)')
            return {'tag': ERR_DEL_RESUME_DB}

    # 如果学生不存在
    elif select_rlt['tag'] == ERR_SELECT_NOTEXIST:
        logger.warning('尝试删除不存在学生的简历路径')
        return {'tag': ERR_DEL_RESUME_DB}

    # 如果数据库异常导致无法确认学生是否存在 select_rlt['tag'] == ERR_SELECT_DB
    else:
        logger.error('数据库异常导致无法确认学生是否存在,删除简历路径失败')
        return {'tag': ERR_DEL_RESUME_DB}
Beispiel #9
0
def dump_team_apply(team, state, rlt_list, unread_num):
    """
    从JobApply的QuerySet里获取团队查询投递关系所需要的信息
    """
    apply_set = job_apply.team_state_filter(team=team, state=state)
    for apply in apply_set:
        apply_job = job.id_job(apply.job_id)
        select_rlt = stu_info.select(apply.stu_id)

        # 如果数据库异常导致无法查询投递关联的学生
        if select_rlt['tag'] != OK_SELECT:
            logger.error('数据库异常导致无法查询apply_id为%s的投递关联的学生' % (apply.apply_id))
            return ERR_DUMP_DB

        is_read = True
        if state == 0:
            is_read = False

        # 如果获取学生成功
        apply_stu = select_rlt['stu']
        rlt_list.append({'apply_id': apply.apply_id,
                         'state': state,
                         'job_id': apply.job_id,
                         'stu_id': apply.stu_id,
                         'job_name': apply_job.name,
                         'stu_name': apply_stu.name,
                         'apply_time': apply.apply_time,
                         'is_read': int(is_read)
                         })

        if not is_read:
            unread_num[0] += 1

    return OK_DUMP
Beispiel #10
0
def update(skill_id, stu_id, name, value):
    """
    修改技能评价
    成功:返回{'tag': OK_UPDATE_SKILL}
    失败:返回{'tag': ERR_UPDATE_SKILL_DB}
    @skill_id: 技能评价的id
    @stu_id:  关联的学生id
    @name: 技能名称
    @value: 技能值
    """
    select_rlt = stu_info.select(stu_id=stu_id)
    # 如果学生存在
    if select_rlt['tag'] == stu_info.OK_SELECT:
        update_tag = \
            skill.id_stu_update(skill_id, select_rlt['stu'], name, value)

        # 如果更新成功
        if update_tag == skill.OK_UPDATE:
            return {'tag': OK_UPDATE_SKILL}
        # 如果更新失败
        else:
            return {'tag': ERR_UPDATE_SKILL_DB}

    # 如果学生不存在
    elif select_rlt['tag'] == stu_info.ERR_SELECT_NOTEXIST:
        logger.warning('尝试更新不存在的学生的技能评价')
        return {'tag': ERR_UPDATE_SKILL_DB}
    # 如果数据库异常导致无法确认学生是否存在(select_rlt['tag'] == ERR_SELECT_DB)
    else:
        logger.error('数据库异常导致无法确认学生是否存在,修改技能评价失败')
        return {'tag': ERR_UPDATE_SKILL_DB}
Beispiel #11
0
def stu_get_list(stu_id, state):
    """
    学生获取投递列表
    @stu_id: 学生id
    @state: 投递状态,0表示待查看,1表示待沟通,2表示待面试,3表示录用, 4表示不合适,5表示全部
    成功:返回{
                'tag': OK_GET_APPLY,
                'apply_list': apply_list
            }
    失败:返回{'tag': ERR_GET_NO_APPLY}或{'tag': ERR_GET_APPLY_DB}
    """
    state = int(state)
    select_rlt = stu_info.select(stu_id)
    # 如果学生存在
    if select_rlt['tag'] == OK_SELECT:
        apply_list = []
        if state == 5:
            for s in range(0, 5):
                dump_stu_apply(stu=select_rlt['stu'], state=s, rlt_list=apply_list)

            if not apply_list:
                return {'tag': ERR_GET_NO_APPLY}
            return {
                'tag': OK_GET_APPLY,
                'apply_list': apply_list
            }

        elif state in range(0, 5):
            dump_stu_apply(stu=select_rlt['stu'], state=state, rlt_list=apply_list)

            if not apply_list:
                return {'tag': ERR_GET_NO_APPLY}

            return {
                'tag': OK_GET_APPLY,
                'apply_list': apply_list
            }

        else:
            logger.warning('尝试用不合法的状态查询投递记录')
            return {'tag': ERR_GET_APPLY_DB}


        # 如果学生不存在
    elif select_rlt['tag'] == ERR_SELECT_NOTEXIST:
        logger.warning('尝试获取不存在学生的投递信息')
        return {'tag': ERR_GET_APPLY_DB}
    # 如果数据库异常导致无法确认学生是否存在
    else:
        logger.error('数据库异常导致无法确认学生是否存在,获取学生的投递信息失败')
        return {'tag': ERR_GET_APPLY_DB}
Beispiel #12
0
def upload(stu_id, works_file):
    """
    上传作品集文件
    @stu_id 学生id
    @works: 作品集文件
    成功:返回{'tag': OK_SAVE_WORKS, 'path': ref_path}
    失败:返回{'tag': ERR_SAVE_WORKS_FAIL}
    """

    def check_resume_file(file):  # TODO(hjf): Check works file
        """return true if works file is valid"""
        return True

    def get_works_path(folder, file_name, file_type):
        return '%s/%s/%s.%s' % (WORKS_PATH_ROOT, folder, file_name, file_type)

    # 确认学生是否存在
    select_rlt = stu_info.select(stu_id=stu_id)
    # 如果学生存在
    if select_rlt['tag'] == stu_info.OK_SELECT:
        # 如果作品集文件合法
        if check_resume_file(works_file):
            works_path = get_works_path(folder=stu_id,
                                        file_name=int(time.time()),
                                        file_type=file_helper.get_file_type(works_file.name))  # 用time作简历文件名称
            # ref_path = '/media/' + works_path
            ref_path = works_path

            # 如果作品集文件上传成功
            if file_helper.save(works_file, works_path):
                return {'tag': OK_SAVE_WORKS,
                        'path': ref_path}
            # 如果作品集文件上传失败,
            else:
                return {'tag': ERR_SAVE_WORKS_FAIL}

        # 如果作品集文件不合法
        else:
            return {'tag': ERR_WORKS_FILE_INVALID}

    # 如果学生不存在
    elif select_rlt['tag'] == stu_info.ERR_SELECT_NOTEXIST:
        logger.warning('尝试为不存在的学生上传作品集')
        return {'tag': ERR_SAVE_WORKS_FAIL}
    # 如果数据库异常导致查询学生是否存在失败(select_rlt['tag'] == ERR_SELECT_DB)
    else:
        logger.error('数据库异常导致无法确定学生是否存在,上传作品集失败')
        return {'tag': ERR_SAVE_WORKS_FAIL}
Beispiel #13
0
def update(works_id, stu_id, name, duty, url, description, img, audio, video):
    """
    修改作品集信息
    成功:返回{'tag': OK_UPDATE_WORKS}
    失败:返回{'tag': ERR_UPDATE_WORKS_DB}
    """
    select_rlt = stu_info.select(stu_id=stu_id)
    # 如果学生存在
    if select_rlt['tag'] == stu_info.OK_SELECT:
        return {'tag': OK_UPDATE_WORKS} \
            if works.update(
                works_id, select_rlt['stu'], name, duty, url, description, img, audio, video
            ) == works.OK_UPDATE \
            else {'tag': ERR_UPDATE_WORKS_DB}

    # 如果学生不存在
    elif select_rlt['tag'] == stu_info.ERR_SELECT_NOTEXIST:
        logger.warning('尝试更新不存在的学生的作品集信息')
        return {'tag': ERR_UPDATE_WORKS_DB}
    # 如果数据库异常导致无法确认学生是否存在(select_rlt['tag'] == ERR_SELECT_DB)
    else:
        logger.error('数据库异常导致无法确认学生是否存在,修改作品集信息失败')
        return {'tag': ERR_UPDATE_WORKS_DB}
Beispiel #14
0
def add(stu_id, name, value):
    """
    增加技能评价
    成功:返回{'tag': OK_ADD_SKILL, 'skill_id': insert_rlt['skill'].skill_id}
    失败:返回{'tag': ERR_ADD_SKILL_DB}或{'tag': ERR_ADD_SKILL_FULL}
    @stu_id:关联的学生id
    @name: 技能名称
    @value: 技能值
    """
    select_rlt = stu_info.select(stu_id=stu_id)
    # 如果学生存在
    if select_rlt['tag'] == stu_info.OK_SELECT:
        # 如果评价数量已满
        if skill.stu_filter(select_rlt['stu']).count() >= 8:
            logger.error('技能评价数量已满')
            return {'tag': ERR_ADD_SKILL_FULL}

        insert_rlt = \
            skill.insert(name=name, value=value, stu=select_rlt['stu'])
        # 如果插入成功:
        if insert_rlt['tag'] == skill.OK_INSERT:
            return {
                'tag': OK_ADD_SKILL,
                'skill_id': insert_rlt['skill'].skill_id
            }
        # 如果插入失败(insert_rlt['tag'] == ERR_INSERT_DB)
        else:
            return {'tag': ERR_ADD_SKILL_DB}

    # 如果学生记录不存在
    elif select_rlt['tag'] == stu_info.ERR_SELECT_NOTEXIST:
        logger.warning('尝试为不存在的学生增加技能评价')
        return {'tag': ERR_ADD_SKILL_DB}
    # 如果数据库异常导致获取学生信息失败(select_rlt['tag'] == ERR_SELECT_DB)
    else:
        logger.error('数据库异常导致无法确认学生是否存在,增加技能评价失败')
        return {'tag': ERR_ADD_SKILL_DB}
Beispiel #15
0
def get(stu_id):
    """
    获取学生信息
     成功:返回{'tag': OK_GET_INFO, 'stu': select_rlt['stu']}
     失败:返回{'tag': ERR_GET_INFO_NOTEXIST}
           或{'tag': ERR_GET_INFO_DB}
    """
    select_rlt = stu_info.select(stu_id=stu_id)
    # 如果学生存在
    if select_rlt['tag'] == OK_SELECT:

        return {'tag': OK_GET_INFO, 'stu': select_rlt['stu']}
        # 'engineering_isSet': select_rlt['engineering_isSet'],
        # 'literature_isSet': select_rlt['literature_isSet'],
        # 'management_isSet': select_rlt['management_isSet'],
        # 'humanity_isSet': select_rlt['humanity_isSet']}
    # 如果学生记录不存在
    elif select_rlt['tag'] == ERR_SELECT_NOTEXIST:
        logger.error('学生不存在,获取学生信息失败')
        return {'tag': ERR_GET_INFO_NOTEXIST}
    # 如果数据库异常导致获取学生信息失败(select_rlt['tag'] == ERR_SELECT_DB)
    else:
        logger.error('数据库异常导致获取学生信息失败')
        return {'tag': ERR_GET_INFO_DB}
Beispiel #16
0
def upload(stu_id, resume):
    """
    上传简历文件
    @stu_id 学生id
    @resume: 简历文件
    成功:返回{'tag': OK_SAVE_RESUME, 'path': resume_path}
    失败:返回{'tag': ERR_SAVE_RESUME_FAIL}
    """
    def check_resume_file(file):  # TODO(hjf): Check resume file
        """return true if avatar file is valid"""
        return True

    def get_resume_path(folder, file_name, file_type):
        return '%s/%s/%s.%s' % (RESUME_PATH_ROOT, folder, file_name, file_type)

    # 确认学生是否存在
    select_rlt = stu_info.select(stu_id=stu_id)
    # 如果学生存在
    if select_rlt['tag'] == OK_SELECT:
        # 如果简历文件合法
        if check_resume_file(resume):
            pre_ref_path = select_rlt['stu'].resume_path
            resume_path = get_resume_path(folder=stu_id,
                                          file_name=int(time.time()),
                                          file_type=file_helper.get_file_type(
                                              resume.name))  # 用时间作简历文件名称
            # 引用的简历路径
            # ref_path = '/media/' + resume_path
            ref_path = resume_path

            # 更新学生的当前简历路径
            update_stu_tag = stu_info.update(stu_id=stu_id,
                                             resume_path=ref_path)
            # 如果更新学生的当前简历路径成功:
            if update_stu_tag == OK_UPDATE:

                # 如果简历文件上传成功
                if file_helper.save(resume, resume_path):
                    return {'tag': OK_SAVE_RESUME, 'path': ref_path}
                # 如果简历文件上传失败,
                else:
                    logger.error('简历文件上传失败')
                    # 回滚
                    roll_tag = stu_info.update(stu_id=stu_id,
                                               resume_path=pre_ref_path)
                    if roll_tag != OK_UPDATE:
                        logger.error('简历文件上传失败,但学生的简历路径已更新,无法回滚')
                    return {'tag': ERR_SAVE_RESUME_FAIL}

            # 如果更新学生的当前简历路径时学生记录不存在
            elif update_stu_tag == ERR_UPDATE_NOTEXIST:
                logger.error('更新学生当前简历路径时,学生记录丢失,导致上传简历失败')
                return {'tag': ERR_SAVE_RESUME_FAIL}
            # 如果数据库异常导致无法更新学生的当前简历路径update_stu_tag == ERR_UPDATE_DB
            else:
                logger.error('数据库异常导致无法更新学生当前简历路径,上传简历失败')
                return {'tag': ERR_SAVE_RESUME_FAIL}

        # 如果简历不合法
        else:
            return {'tag': ERR_RESUME_FILE_INVALID}

    # 如果学生不存在
    elif select_rlt['tag'] == ERR_SELECT_NOTEXIST:
        logger.warning('尝试为不存在的学生上传简历')
        return {'tag': ERR_SAVE_RESUME_FAIL}
    # 如果数据库异常导致查询学生是否存在失败(select_rlt['tag'] == ERR_SELECT_DB)
    else:
        logger.error('数据库异常导致无法确定学生是否存在,上传简历失败')
        return {'tag': ERR_SAVE_RESUME_FAIL}
Beispiel #17
0
def apply(stu_id, job_id):
    """
    投递简历
    成功:返回{'tag': OK_APPLY, 'apply_id': insert_apply_rlt['apply'].id}
    失败:返回{'tag': ERR_APPLY_DB}
          或{’tag': ERR_APPLY_NO_RESUME}
    @stu_id:学生id
    @job_id:职位id
    """
    select_stu_rlt = stu_info.select(stu_id)
    # 如果学生存在
    if select_stu_rlt['tag'] == OK_SELECT:
        select_job_rlt = job.id_job(job_id)
        # 如果职位存在
        if select_job_rlt is not None:
            team = select_job_rlt.team  # team一定存在(由model外键的on_delete=CASCADE保证)
            stu = select_stu_rlt['stu']

            # 如果学生无简历
            if stu.resume_path == NO_RESUME:
                return {'tag': ERR_APPLY_NO_RESUME}

            # 如果学生有简历
            else:
                select_apply_rlt = job_apply.stu_job_select(stu=stu,
                                                            job=select_job_rlt)
                # 如果尚未投递
                if select_apply_rlt['tag'] == ERR_SELECT_NOTEXIST:
                    insert_apply_rlt = \
                        job_apply.insert(stu=stu, job=select_job_rlt, state=0, team=team,
                                         apply_time=date_helper.curr_time(), resume_path=stu.resume_path,
                                         change_time=date_helper.now(), stu_read=True)

                    # 如果投递成功
                    if insert_apply_rlt['tag'] == OK_INSERT:
                        return {
                            'tag': OK_APPLY,
                            'apply_id': insert_apply_rlt['apply'].apply_id
                        }

                    # 如果投递失败insert_apply_rlt['tag'] == ERR_INSERT_DB
                    else:
                        logger.error('数据库异常导致投递记录插入失败,投递简历失败')
                        return {'tag': ERR_APPLY_DB}

                # 如果已经投递过了
                elif select_apply_rlt['tag'] == OK_SELECT:
                    return {'tag': ERR_APPLY_EXIST}

                # 如果数据库异常导致无法确认是否已经投递过了(select_apply_rlt['tag'] == ERR_SELECT_DB)
                else:
                    logger.error('数据库异常导致无法确认是否已经投递过,投递简历失败')
                    return {'tag': ERR_APPLY_DB}

        # 如果职位不存在(select_job_rlt is None)
        else:
            logger.warning('尝试投递简历给不存在的职位')
            return {'tag': ERR_APPLY_DB}

    # 如果学生不存在(select_stu_rlt['tag'] == ERR_SELECT_NOTEXIST)
    elif select_stu_rlt['tag'] == ERR_SELECT_NOTEXIST:
        logger.warning('尝试用不存在的学生投递简历')
        return {'tag': ERR_APPLY_DB}

    # 如果数据库异常导致无法确认学生是否存在(select_stu_rlt['tag'] == ERR_SELECT_DB)
    else:
        logger.error('数据库异常导致无法确认学生是否存在,投递简历失败')
        return {'tag': ERR_APPLY_DB}
Beispiel #18
0
def team_get_info(apply_id):
    """
    团队获取投递信息
    成功:返回{'tag': OK_APPLY_INFO,
                    'stu_id': apply.stu_id,
                    'name': stu.name,
                    'avatar_path': stu.avatar_path,
                    'sex': stu.sex,
                    'age': stu.age,
                    'mail': stu.mail,
                    'tel': stu.tel,
                    'school': stu.school,
                    'major': stu.major,
                    'location': stu.location,
                    'resume_path': apply.resume_path,
                    'state': apply.state
                    }
    失败:返回{'tag': ERR_APPLY_INFO_DB}
    """
    apply_select_rlt = job_apply.id_select(apply_id)

    # 如果查询投递记录成功
    if apply_select_rlt['tag'] == OK_SELECT:
        apply = apply_select_rlt['apply']
        stu_select_rlt = stu_info.select(apply.stu_id)

        # 如果获取关联的学生成功
        if stu_select_rlt['tag'] == OK_SELECT:
            stu = stu_select_rlt['stu']
            account_select_rlt = account.stu_select(stu.id)

            # 如果获取关联的账号成功
            if account_select_rlt['tag'] == OK_SELECT:
                return {'tag': OK_APPLY_INFO,
                        'stu_id': apply.stu_id,
                        'name': stu.name,
                        'avatar_path': stu.avatar_path,
                        'sex': stu.sex,
                        'age': '',
                        'mail': account_select_rlt['acnt'].account,
                        'tel': '',
                        'school': stu.school,
                        'major': '',
                        'location': '',
                        'resume_path': apply.resume_path,
                        'state': apply.state
                        }
            # 如果获取关联的账号失败
            else:
                logger.error('数据库异常或学生不存在,无法获取与投递记录关联的学生信息(账号)')
                return {'tag': ERR_APPLY_INFO_DB}

        # 如果无法获取关联的学生
        else:
            logger.error('数据库异常,无法获取与投递记录关联的学生信息')
            return {'tag': ERR_APPLY_INFO_DB}

    # 如果投递记录不存在
    elif apply_select_rlt['tag'] == ERR_SELECT_NOTEXIST:
        logger.warning('尝试获取不存在的投递记录的信息')
        return {'tag': ERR_APPLY_INFO_DB}
    # 如果数据库异常导致获取投递信息失败
    else:
        return {'tag': ERR_APPLY_INFO_DB}
Beispiel #19
0
def save(stu_id, avatar):
    """
    保存头像
    @stu_id:学生id
    @avatar:头像文件
    成功:返回{'tag': OK_SAVE_AVATAR, 'path': ref_path}
    失败:返回{'tag': ERR_SAVE_AVATAR_FAIL}
          或{'tag': ERR_AVATAR_FILE_INVALID}
    """

    def check_avatar_file(file):  # TODO(hjf): Check avatar file
        """return true if avatar file is valid"""
        return True

    def get_avatar_path(folder, file_name, file_type):
        return '%s/%s/%s.%s' % (AVATAR_PATH_ROOT, folder, file_name, file_type)

    # 确认学生是否存在
    select_rlt = stu_info.select(stu_id=stu_id)
    # 如果账号不存在
    if select_rlt['tag'] == ERR_SELECT_NOTEXIST:
        logger.warning('尝试为不存在的学生上传头像')
        return {'tag': ERR_SAVE_AVATAR_FAIL}
    # 如果数据库异常导致查询学生是否存在失败
    elif select_rlt['tag'] == ERR_SELECT_DB:
        logger.error('数据库异常导致无法确定学生是否存在,上传头像失败')
        return {'tag': ERR_SAVE_AVATAR_FAIL}

    # 学生存在,如果头像合法
    pre_ref_path = select_rlt['stu'].avatar_path
    if check_avatar_file(avatar):
        # 写入文件的路径
        avatar_path = get_avatar_path(folder=stu_id,
                                      file_name=int(time.time()),
                                      file_type=file_helper.get_file_type(avatar.name))  # use time as avatar file name

        # 引用头像的路径
        # ref_path = '/media/' + avatar_path
        ref_path = avatar_path

        # 更新学生头像路径
        update_tag = stu_info.update(stu_id=stu_id, avatar_path=ref_path)
        # 如果更新头像路径成功
        if update_tag == OK_UPDATE:
            # 如果头像保存成功
            if file_helper.save(avatar, avatar_path):
                return {'tag': OK_SAVE_AVATAR,
                        'path': ref_path}
            # 如果头像保存失败, 回滚
            else:
                roll_tag = stu_info.update(stu_id=stu_id, avatar_path=pre_ref_path)
                # 如果回滚失败
                if roll_tag != OK_UPDATE:
                    logger.error('头像保存失败,但数据库异常导致无法将已更新的头像路径恢复')
                return {'tag': ERR_SAVE_AVATAR_FAIL}

        # 如果写入路径失败
        else:
            return {'tag': ERR_SAVE_AVATAR_FAIL}
    # 如果头像不合法
    else:
        return {'tag': ERR_AVATAR_FILE_INVALID}