Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Jac/image export #186

Merged
merged 4 commits into from
Oct 11, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion tabcmd/commands/auth/session.py
Original file line number Diff line number Diff line change
Expand Up @@ -44,8 +44,8 @@ def __init__(self):
self.timeout = None

self.logging_level = "info"
self._read_from_json()
self.logger = log(__class__.__name__, self.logging_level) # instantiate here mostly for tests
self._read_from_json()
self.tableau_server = None # this one is an object that doesn't get persisted in the file

# called before we connect to the server
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -99,8 +99,15 @@ def apply_png_options(request_options: TSC.ImageRequestOptions, args, logger):
if args.height or args.width:
# only applicable for png
logger.warn("Height/width arguments not yet implemented in export")
if args.image_resolution:
request_options.image_resolution = args.image_resolution
# Always request high-res images
request_options.image_resolution = "high"

@staticmethod
def apply_pdf_options(request_options: TSC.PDFRequestOptions, args, logger):
request_options.page_type = args.pagesize
if args.pagelayout:
logger.debug("Setting page layout to: {}".format(args.pagelayout))
request_options.orientation = args.pagelayout

@staticmethod
def save_to_data_file(logger, output, filename):
Expand Down
43 changes: 31 additions & 12 deletions tabcmd/commands/datasources_and_workbooks/export_command.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@
from tabcmd.execution.logger_config import log
from .datasources_and_workbooks_command import DatasourcesAndWorkbooks

pagesize = TSC.PDFRequestOptions.PageType # type alias for brevity


class ExportCommand(DatasourcesAndWorkbooks):

Expand All @@ -24,12 +26,29 @@ def define_args(export_parser):
export_parser.add_argument(
"--pagelayout",
choices=["landscape", "portrait"],
default="landscape",
default=None,
help="page orientation (landscape or portrait) of the exported PDF",
)
export_parser.add_argument("--pagesize", default="letter", help="Set the page size of the exported PDF")
export_parser.add_argument(
"--image-resolution", default="High", help="Set the image resolution of the exported image"
"--pagesize",
choices=[
pagesize.A3,
pagesize.A4,
pagesize.A5,
pagesize.B4,
pagesize.B5,
pagesize.Executive,
pagesize.Folio,
pagesize.Ledger,
pagesize.Legal,
pagesize.Letter,
pagesize.Note,
pagesize.Quarto,
pagesize.Tabloid,
pagesize.Unspecified,
],
default="letter",
help="Set the page size of the exported PDF",
)

export_parser.add_argument(
Expand Down Expand Up @@ -111,44 +130,44 @@ def apply_values_from_args(request_options: TSC.PDFRequestOptions, args, logger=

@staticmethod
def download_wb_pdf(server, workbook_item, args, logger):
logger.trace(args.url)
logger.debug(args.url)
pdf_options = TSC.PDFRequestOptions(maxage=1)
ExportCommand.apply_values_from_url_params(pdf_options, args.url, logger)
ExportCommand.apply_values_from_args(pdf_options, args, logger)
logger.trace(pdf_options)
logger.debug(pdf_options.get_query_params())
server.workbooks.populate_pdf(workbook_item, pdf_options)
return workbook_item.pdf

@staticmethod
def download_view_pdf(server, view_item, args, logger):
logger.trace(args.url)
logger.debug(args.url)
pdf_options = TSC.PDFRequestOptions(maxage=1)
ExportCommand.apply_values_from_url_params(pdf_options, args.url, logger)
ExportCommand.apply_values_from_args(pdf_options, args, logger)
logger.trace(pdf_options)
logger.debug(pdf_options.get_query_params())
server.views.populate_pdf(view_item, pdf_options)
return view_item.pdf

@staticmethod
def download_csv(server, view_item, args, logger):
logger.trace(args.url)
logger.debug(args.url)
csv_options = TSC.CSVRequestOptions(maxage=1)
ExportCommand.apply_values_from_url_params(csv_options, args.url, logger)
ExportCommand.apply_values_from_args(csv_options, args, logger)
logger.trace(csv_options)
logger.debug(csv_options.get_query_params())
server.views.populate_csv(view_item, csv_options)
return view_item.csv

@staticmethod
def download_png(server, view_item, args, logger):
logger.trace(args.url)
logger.debug(args.url)
image_options = TSC.ImageRequestOptions(maxage=1)
ExportCommand.apply_values_from_url_params(image_options, args.url, logger)
ExportCommand.apply_values_from_args(image_options, args, logger)
DatasourcesAndWorkbooks.apply_png_options(image_options, args, logger)
logger.trace(image_options)
logger.debug(image_options.get_query_params())
server.views.populate_image(view_item, image_options)
return view_item.png
return view_item.image

@staticmethod
def parse_export_url_to_workbook_and_view(logger, url):
Expand Down