Exemple #1
0
def save_logo(name, img):
    name = str(time.time()).replace('.', '').replace(' ', '') + name
    name = name.replace(' ', '')
    path = name2path(name)
    print(path)
    save(img, path)
    return path
Exemple #2
0
def save_photo(tid, name, img):
    teams = team.get(tid)
    if teams.count() < 1:
        return ACC_NO_FOUND
    img_count = team.img_cnt()
    name = str(time.time()).replace('.', '').replace(
        ' ', '') + str(img_count) + name
    name = name.replace(' ', '')
    path = name2path(name)
    save(img, path)
    img_id = team.add_img(teams.first(), path)
    return img_id, path
Exemple #3
0
def save_img(prod_id, prod_img):
    """
    保存项目照片
    @prod_id: 项目id
    @prod_img: 照片文件
    成功:返回{'err': PRODUCT_SUCCEED, 'path': img_path}
    失败:返回{'err': ERR_PROD_TABLE/ERR_PROD_NOT_EXIT/ERR_PROD_SAVE_IMG/ERR_PROD_CHECK_IMG,
             'msg': 错误信息}
    """
    def check_img_file(file):  # TODO: Check avatar file
        """return true if avatar file is valid"""
        return True

    def get_img_path(file_name, file_type):
        return '%s%s/%s.%s' % (str(time.time()).replace('.', '').replace(
            ' ', ''), IMG_PATH_ROOT, file_name, file_type)

    # 确认项目是否存在
    prod_msg = product.select(prod_id)
    if prod_msg['err'] == PRODUCT_SUCCEED:
        prod = prod_msg['msg']
    else:
        return prod_msg

    # 项目存在,如果项目照片合法
    pre_img_path = prod.img_path
    if check_img_file(prod_img):
        # 使用项目ID作为照片名
        img_path = get_img_path(file_name=prod_id,
                                file_type=file_helper.get_file_type(
                                    prod_img.name))
        # 更新项目照片路径
        res = product.update(id=prod_id, img_path=img_path)
        # 更新项目照片路径
        if res['err'] == PRODUCT_SUCCEED:
            # 更新项目照片路径成功
            if file_helper.save(prod_img, img_path):
                return {'err': PRODUCT_SUCCEED, 'msg': img_path}
            # 更新项目照片路径成功失败, 回滚
            else:
                roll_tag = product.update(id=prod_id, img_path=img_path)
                # 如果回滚失败
                if roll_tag['err'] == PRODUCT_SUCCEED:
                    logging.error('更新项目照片,但数据库异常导致无法将更新的项目照片路径恢复')
                return {'err': ERR_PROD_SAVE_IMG, 'msg': MSG_PROD_SAVE_IMG}

        # 如果写入路径失败
        else:
            return res
    # 如果项目照片不合法
    else:
        return {'err': ERR_PROD_CHECK_IMG, 'msg': MSG_PROD_CHECK_IMG}
Exemple #4
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}
Exemple #5
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}
Exemple #6
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}