Exemplo n.º 1
0
async def fetch_groups(link, sheet, segments):
    if not link or not sheet:
        return Result(error="Missing `link` or `sheet` value")
    instance = models.GoogleSheetInterface(**config)
    instance.load_file(link, sheet)
    result = instance.fetch_groups(segments)
    return Result(data=result)
Exemplo n.º 2
0
async def read_last_row(link, sheet) -> Result:
    if not link or not sheet:
        return Result(error="Missing `link` or `sheet` value")
    instance = models.GoogleSheetInterface(**config)
    instance.load_file(link, sheet)
    result = instance.read_last_row()
    return Result(data=result)
Exemplo n.º 3
0
async def clear_all_rows(link, sheet):
    if not link or not sheet:
        return Result(error="Missing `link` or `sheet` value")
    instance = models.GoogleSheetInterface(**config)
    instance.load_file(link, sheet)
    instance.clear()
    return await read_row(link, sheet, None, None)
Exemplo n.º 4
0
async def add_to_sheet(link, sheet, value):
    if not link or not sheet:
        return Result(error="Missing `link` or `sheet` value")
    instance = models.GoogleSheetInterface(**config)
    instance.load_file(link, sheet)
    key, value = instance.update_records(value)
    return await read_row(link, sheet, key, value[key])
Exemplo n.º 5
0
async def read_sheetnames(link) -> Result:
    if not link:
        return Result(error="Missing `link` or `sheet` value")
    instance = models.GoogleSheetInterface(**config)
    result = instance.get_sheet_names(link)
    title = instance.get_spreadsheet_title(link)
    return Result(data=dict(title=title, sheet_names=result))
Exemplo n.º 6
0
async def add_multiple_rows(link, sheet, values):
    if not link or not sheet:
        return Result(error="Missing `link` or `sheet` value")
    instance = models.GoogleSheetInterface(**config)
    instance.load_file(link, sheet)
    instance.bulk_add(values)
    # for i in values:
    #     key, value = instance.update_records(i)
    return await read_row(link, sheet, None, None)
Exemplo n.º 7
0
async def read_referenced_cell(link, sheet, options, key, value) -> Result:
    if not link or not sheet:
        return Result(error="Missing `link` or `sheet` value")
    instance = models.GoogleSheetInterface(**config)
    instance.load_file(link, sheet)
    result = instance.get_referenced_cell_values(options)
    if value:
        if not key:
            return Result(error="Missing `key` field to read a single record")
        found = [x for x in result if x[key] == value]
        if found:
            return Result(data=found[0])
    return Result(data=result)
Exemplo n.º 8
0
async def get_provider_sheet(link=None,
                             sheet=None,
                             provider=None,
                             key="id",
                             **kwargs):
    updated_config = {**config, **kwargs}
    instance = models.GoogleSheetInterface(**updated_config)
    instance.load_file(link, sheet)
    result = instance.get_all_records()
    if key:
        found = [x for x in result if x[key].lower() == provider.lower()]
        if found:
            return found[0]
    return None
Exemplo n.º 9
0
async def update_row(link, sheet, key, value, data) -> Result:
    if not link or not sheet:
        return Result(error="Missing `link` or `sheet` value")
    instance = models.GoogleSheetInterface(**config)
    instance.load_file(link, sheet)
    if value:
        if not key:
            return Result(error="Missing `key` field to read a record")
        try:
            instance.update_existing_record(key, value, data)
        except KeyError as e:
            return Result(error="Wrong `key` passed in `data`")
        else:
            return await read_row(link, sheet, key, value)
Exemplo n.º 10
0
async def read_new_row(link, sheet, page, page_size, key, value) -> Result:
    if not link or not sheet:
        return Result(error="Missing `link` or `sheet` value")
    instance = models.GoogleSheetInterface(**config)
    instance.load_file(link, sheet)
    full_result = instance.get_all_records()
    result = models.get_page(full_result, page_size=page_size, page=page)
    if value:
        if not key:
            return Result(error="Missing `key` field to read a single record")
        found = [x for x in result if x[key] == value]
        if found:
            return Result(data=found[0])
    return Result(data=result)
Exemplo n.º 11
0
async def edit_sheet(link, sheet, value):
    if not link or not sheet:
        return Result(error="Missing `link` or `sheet` value")
    instance = models.GoogleSheetInterface(**config)
    result = instance.edit_sheet(link, sheet, value)
    return Result(data=result)