def filter_data_by_command_line_argument(
    infile,
    tag_str=None,
    date_str=None,
):
    indata = parse_file_content(infile)
    language_filter = BuiltIn().get_variable_value("${LANGUAGE_FILTER}")
    rows = []
    tag_cloud = []
    for row in indata:
        tag_match = True
        date_match = True
        row_tags = row["tags"].split(",")
        schedule = row["schedule"].lower()
        skip = False
        for x in row_tags:
            tag_cloud.append(x)
            if x in language_filter:
                skip = True
        if skip:
            continue
        if tag_str and tag_str not in row["tags"]:
            tag_match = False
        if date_str and date_str.lower() not in schedule:
            date_match = False
        if tag_match and date_match:
            rows.append(row)
    table = Tables().create_table(
        rows, columns=["name", "schedule", "description", "tags"])
    Tables().write_table_to_csv(
        table,
        "sessions.csv",
        header=["name", "schedule", "description", "tags"])
    counter = Counter(tag_cloud)
    return rows, counter
Пример #2
0
    def read_worksheet_as_table(self,
                                name=None,
                                header=False,
                                trim=True,
                                start=None):
        """Read the content of a worksheet into a Table container. Allows
        sorting/filtering/manipulating using the ``RPA.Tables`` library.

        :param name:   Name of worksheet to read
        :param header: If `True`, use the first row of the worksheet
                       as headers for the rest of the rows.
        :param trim:   Remove all empty rows from the end of the worksheet
        :param start:  Row index to start reading data from (1-indexed)

        Examples:

        .. code-block:: robotframework

            Open Workbook   orders.xlsx
            ${table}=       Read Worksheet As Table     header=True
            Close Workbook
        """
        tables = Tables()
        sheet = self.read_worksheet(name, header, start)
        return tables.create_table(sheet, trim)
Пример #3
0
    def read_worksheet_as_table(self, name=None, header=False, trim=True, start=None):
        """Read the content of a worksheet into a Table container. Allows
        sorting/filtering/manipulating using the `RPA.Tables` library.

        :param name:   Name of worksheet to read
        :param header: If `True`, use the first row of the worksheet
                       as headers for the rest of the rows.
        :param trim:   Remove all empty rows from the end of the worksheet
        :param start:  Row index to start reading data from (1-indexed)
        """
        tables = Tables()
        sheet = self.read_worksheet(name, header, start)
        return tables.create_table(sheet, trim)
Пример #4
0
    def _generate_table_from_SFDC_API_query(self, result, start=0, limit=0):
        records = (result["records"][start:]
                   if limit == 0 else result["records"][start:start + limit])
        if len(records) == 0:
            return Tables().create_table()

        cols = [k for k, v in self._get_values(records[0])]
        table = Tables().create_table(columns=cols)

        for row in records:
            values = self._get_values(row)
            table.append_row(row=dict(values))

        return table
Пример #5
0
 def get_orders(self, excel):
     files = Files()
     workbook = files.open_workbook(excel)
     rows = workbook.read_worksheet(header=True)
     tables = Tables()
     table = tables.create_table(rows)
     tables.filter_empty_rows(table)
     orders = []
     for row in table:
         order = {
             "item": row.Item,
             "zip": int(row.Zip),
             "first_name": row[0].split()[0],
             "last_name": row[0].split()[1]
         }
         orders.append(order)
     return orders
Пример #6
0
    def _process_tables(self, raw_tables):
        self.tables = {}
        for idx, t in raw_tables.items():
            rows = {}
            for tid in t:
                row = self.cells[tid]["RowIndex"]
                col = self.cells[tid]["ColumnIndex"]
                val = self.cells[tid]["Content"]
                if row in rows.keys():
                    rows[row][col] = val
                else:
                    rows[row] = {col: val}

            tables = Tables()
            data = [[rows[col][idx] for idx in sorted(rows[col])]
                    for col in sorted(rows)]
            table = tables.create_table(data)
            self.tables[idx] = table
    def control_room_start_fix_process(self, data, original):
        tables = Tables()
        excel = Files()
        google = Google()
        conflicts = []
        updated_table = tables.export_table(original,
                                            with_index=True,
                                            as_list=False)
        for k in data.keys():
            copyof_orig = copy.deepcopy(original)
            if "nameerror" in k:
                mid, _ = data[k].split(" - ")
                tables.filter_table_by_column(copyof_orig, "Account Id", "==",
                                              mid)
                row = tables.get_table_row(copyof_orig, 0)
                conflicts.append({"id": mid, "name": row["Name in SAP"]})
                name_position = updated_table["Account Id"].index(mid)
                updated_table["Name OK in SFDC"][name_position] = "TRUE"

        if conflicts:
            self.control_room_run_process(CONTROL_ROOM_PROCESS_FIX_SFDC,
                                          conflicts)

        google.set_robocorp_vault(vault_name="googlecloud",
                                  vault_secret_key="credentials")
        google.init_drive(use_robocorp_vault=True)
        del updated_table["index"]
        excel.create_workbook(COMPARISON_EXCEL)
        excel.append_rows_to_worksheet(updated_table, header=True)
        excel.save_workbook()
        google.drive_upload_file(COMPARISON_EXCEL,
                                 GOOGLE_DRIVE_SYNC_FOLDER,
                                 overwrite=True)
Пример #8
0
def notebook_table(table, count: int = 20):
    """Display RPA.Table as IPython Markdown object in the notebook

    :param table: `RPA.Table` object to print
    """
    # pylint: disable=C0415,E0611
    from RPA.Tables import Tables  # noqa

    if count:
        table = Tables().table_head(table, count=count)
    output = _get_table_output(table)
    if output:
        display(Markdown(output))
Пример #9
0
def notebook_table(table: Any, count: int = 20, columns=None):
    """Display RPA.Table or RPA.Table shaped data as IPython Markdown object in the notebook

    :param table: `RPA.Table` object to print
    :param count: How many rows of table to print
    :param columns: Names / headers of the table columns
    :param index: List of indices for table rows
    """
    # pylint: disable=C0415,E0611
    from RPA.Tables import Table, Tables  # noqa

    table = Table(table, columns)
    if count:
        table = Tables().table_head(table, count=count)
    output = _get_table_output(table)
    if output:
        display(Markdown(output))
Пример #10
0
    def read_worksheet_as_table(self, name=None, header=False, trim=True):
        """Read the content of a worksheet into a Table container. Allows
        sorting/filtering/manipulating using the `RPA.Tables` library.

        :param name:   Name of worksheet to read
        :param header: If `True`, use the first row of the worksheet
                       as headers for the rest of the rows.
        :param trim:   Remove all empty rows from the end of the worksheet
        """
        tables = Tables()
        sheet = self.read_worksheet(name, header)

        table = tables.create_table(sheet)
        if trim:
            tables.trim_empty_rows(table)
            tables.trim_column_names(table)

        return table
Пример #11
0
def _get_table_output(table):
    # pylint: disable=C0415,E0611
    from RPA.Tables import Tables, Table  # noqa

    output = ""
    try:
        if isinstance(table, Table):
            output = "<table class='rpafw-notebook-table'>"
            header = Tables().table_head(table, count=1)
            for row in header:
                output += "<tr>"
                for h, _ in row.items():
                    output += f"<th>{h}</th>"
                output += "</tr>"
            for row in table:
                output += "<tr>"
                for _, cell in row.items():
                    output += f"<td>{cell}</td>"
                output += "</tr>"
            output += "</table><br>"
    except ImportError:
        pass
    return None if output == "" else output
Пример #12
0
def library():
    return Tables()
import os
import emailer
from RPA.Excel.Files import Files
from RPA.Tables import Tables

EMPLOYEES_EXCEL_PATH = os.environ["EMPLOYEES_EXCEL_PATH"]
TRAININGS_EXCEL_PATH = os.environ["TRAININGS_EXCEL_PATH"]
excel = Files()
tables = Tables()


def send_training_reminders():
    employees = get_active_employees(EMPLOYEES_EXCEL_PATH)
    trainings = read_excel_as_table(TRAININGS_EXCEL_PATH)
    send_reminders(employees, trainings)


def get_active_employees(excel_path):
    employees = read_excel_as_table(excel_path)
    tables.filter_table_by_column(employees, "Status", "==", "Active")
    tables.filter_table_by_column(employees, "Category", "==", "Employee")
    return employees


def read_excel_as_table(excel_path):
    try:
        excel.open_workbook(excel_path)
        return excel.read_worksheet_as_table(header=True)
    finally:
        excel.close_workbook()