download link for task order summary

This commit is contained in:
dandds
2018-12-20 10:41:54 -05:00
parent 59510819e7
commit 718f88d828
7 changed files with 55 additions and 5 deletions

View File

@@ -57,9 +57,13 @@ class TaskOrder(Base, mixins.TimestampsMixin):
self.number, self.budget, self.end_date, self.id
)
@property
def portfolio_name(self):
return self.workspace.name
def to_dictionary(self):
return {
"portfolio_name": self.workspace.name,
"portfolio_name": self.portfolio_name,
**{
c.name: getattr(self, c.name)
for c in self.__table__.columns

View File

@@ -3,3 +3,4 @@ from flask import Blueprint
task_orders_bp = Blueprint("task_orders", __name__)
from . import new
from . import index

View File

@@ -0,0 +1,17 @@
from flask import Response
from . import task_orders_bp
from atst.domain.task_orders import TaskOrders
from atst.utils.docx import Docx
@task_orders_bp.route("/task_orders/download_summary/<task_order_id>")
def download_summary(task_order_id):
task_order = TaskOrders.get(task_order_id)
byte_str = Docx.render(data=task_order.to_dictionary())
filename = "{}.docx".format(task_order.portfolio_name)
return Response(
byte_str,
headers={"Content-Disposition": "attachment; filename={}".format(filename)},
mimetype="application/vnd.openxmlformats-officedocument.wordprocessingml.document",
)

View File

@@ -42,4 +42,4 @@ class Docx:
Docx._write(docx_template, docx_file, document)
docx_file.close()
byte_str.seek(0)
return byte_str.read()
return byte_str