@route('/download/transcript')
def download_transcript(self, **post):
# 获取当前用户
user_id = request.env.user
# 获取学生数据
student_id = user_id.partner_id
# 数据文件
template_file = None
# 获取模板
template_id = request.env['hw.exam.import.template'].sudo().search([('name', '=', '毕业生成绩单')])
# 获取成绩
score_ids = request.env['hw.score.enter'].sudo().search([('student_number', '=', student_id.student_number), ('score_efficient', '=', '1')])
score_list = []
# 总学分
overall_credit = 0
if score_ids.exists():
for score_id in score_ids:
overall_credit += score_id.credit
score_list.append({
'course': score_id.course_id.name, # 课程名称
'typee': '必修课' if score_id.typee=='Compulsory' else '选修课', # 课程性质
'semester_id': score_id.semester_id.name, # 学期
'credit': score_id.credit, # 学分
'scoresemester': score_id.scoresemester, # 成绩
})
else:
return
# 获取文件
if template_id.exists():
template_file = template_id.template
else:
return
datas=base64.b64decode(template_file or b'')
doc = DocxTemplate(io.BytesIO(datas))
# 计算出生日期
date_of_birth = ''
identification = student_id.identification
if len(identification) == 18:
date_of_birth = datetime.datetime.strptime(identification[6:14:], '%Y%m%d').date()
else:
return
# 生成数据
context = {
'student_number': student_id.student_number, # 学号
'name': student_id.name, # 姓名
'sex': '男' if student_id.sex == 'male' else '女', # 性别
'date_of_birth': date_of_birth, # 出生日期
'department_id': student_id.department_id.name, # 院系
'major_id': student_id.major_id.name, # 专业
'address': student_id.address, # 家庭住址
'educational_system_id':student_id.educational_system_id.name, # 学制
'class_id': student_id.class_id.name, # 班级
'mobile': student_id.mobile, # 手机号
'overall_credit': overall_credit, # 总学分
'identification': student_id.identification, # 身份证号
'score_list': score_list, # 成绩列表
'date': datetime.date.today(), # 下载申请表日期
}
# 生成模板
doc.render(context)
# 获取选然后的数据
buffer = io.BytesIO()
doc.save(buffer)
binary = base64.encodebytes(buffer.getvalue())
# 返回下载文档
return request.make_response(base64.b64decode(binary),
[('Content-Type', 'application/octet-stream'), (
'Content-Disposition',
"attachment; filename=%s" % template_id.template_name.encode(
"utf-8").decode("latin1"))])
odoo word导出数据为word文档
最新推荐文章于 2022-10-13 14:02:33 发布
关键词由CSDN通过智能技术生成