예제 #1
0
def get_chart_from_sheet(date):
    month = date.strftime("%B")
    result = SheetService().read_sheet(SPREADSHEET_ID, f'{month}!F2:G')
    values = result.get('values', [])
    if len(values) == 0:
        return None

    title = values[0]
    values = list(map(convert_to_decimal, values[1:]))
    values.insert(0, title)
    html = HTML(html=str(chart_template % {"json": values}))
    loop = asyncio.new_event_loop()
    text = threading.Thread(target=render, args=(html, loop))
    text.start()
    text.join()
    # HEROKU PATH
    # config = imgkit.config(wkhtmltoimage='.apt/usr/local/bin/wkhtmltoimage')
    config = imgkit.config(
        wkhtmltoimage='C:\\Program Files\\wkhtmltopdf\\bin\\wkhtmltoimage.exe')
    content = html.find('#content')[0].html
    img = imgkit.from_string(content,
                             False,
                             config=config,
                             options={
                                 'format': 'png',
                                 'crop-w': '650',
                                 'crop-x': '150',
                                 'crop-y': '50',
                                 'crop-h': '400',
                                 'encoding': 'utf-8',
                             })
    str_file = io.BytesIO(img)
    return str_file
예제 #2
0
def get_sheet_earnings(date, value_render_option='FORMATTED_VALUE'):
    month = date.strftime("%B")
    result = SheetService().read_sheet(SPREADSHEET_ID,
                                       f'{month}!A3:C',
                                       value_render_option=value_render_option)
    values = result.get('values', [])
    return values
예제 #3
0
def get_table_from_sheet(date):
    month = date.strftime("%B")
    result = SheetService().read_sheet_multiple(
        SPREADSHEET_ID, [f'{month}!A2:C', f'{month}!E2:G', f'{month}!I2:K'],
        major_dimension='COLUMNS')
    values = result.get('valueRanges', [])
    header = []
    l_ = []
    if len(values) > 0:
        for val in values:
            header = header + [item[0] for item in val['values']]
            l_ = l_ + [i[1:] for i in val['values']]
        scope = PlotlyScope()
        fig = go.Figure(data=[
            go.Table(columnwidth=[80, 150, 100, 80, 150, 100, 100, 100],
                     header=dict(values=header),
                     cells=dict(values=l_,
                                fill=dict(color=[
                                    'lightgreen', 'lightgreen', 'lightgreen',
                                    '#ff9982', '#ff9982', '#ff9982', '#ffbf70',
                                    '#ffbf70'
                                ]),
                                height=30))
        ])
        test = scope.transform(fig, format="png", scale=2)
        str_file = io.BytesIO(test)
        return str_file
    else:
        return None
예제 #4
0
def get_sheet_report(date):
    month = date.strftime("%B")
    result = SheetService().read_sheet(SPREADSHEET_ID, f'{month}!I3:K3')
    values = result.get('values', [])
    return values[0][0], values[0][1], values[0][2]