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
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
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}
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}
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}
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}