Beispiel #1
0
def share_command():
    if "-l" in sys.argv:
        ss = get_spreadsheet()
        print_permissions(ss)
    elif "-a" in sys.argv:
        email = get_argument(sys.argv, "-a")
        if validate_email(email):
            try:
                display_loading_message("Adding permission", "Permission added")
                ss = get_spreadsheet()
                share_spreadsheet(ss, email)
                hide_loading_message_with_error(False)
            except Exception:
                hide_loading_message_with_error(True)
        else:
            write_error("Invalid email: " + email)
    elif "-d" in sys.argv:
        email = get_argument(sys.argv, "-d")
        if validate_email(email):
            try:
                display_loading_message("Removing permission", "Permission removed")
                ss = get_spreadsheet()
                ss.remove_permissions(email)
                hide_loading_message_with_error(False)
            except Exception:
                hide_loading_message_with_error(True)
        else:
            write_error("Invalid email: " + email)
Beispiel #2
0
def delete_command(user, is_sudo):
    ws = get_worksheet()

    if "-r" in sys.argv:
        row = int(get_argument(sys.argv, "-r"))
        if row >= 2:
            try:
                display_loading_message("Deleting message", "Message deleted")

                if int(is_sudo) != 0:
                    selected_row = ws.row_values(row)
                    if selected_row[0] and user != selected_row[0]:
                        hide_loading_message_with_error(
                            True,
                            "You cannot delete rows written by other users")
                        exit()

                delete_row(ws, row)
                hide_loading_message_with_error(False)
            except Exception:
                hide_loading_message_with_error(True)
        else:
            write_error("Invalid row")
    else:
        try:
            display_loading_message("Deleting message", "Message deleted")
            last_row = get_users_last_row(ws, user)
            delete_row(ws, last_row)
            hide_loading_message_with_error(False)
        except IndexError:
            hide_loading_message_with_error(
                True, "Error. No rows inserted by the current user")
Beispiel #3
0
def change_command(user):
    ws = get_worksheet()
    stored_row = ""
    try:
        if "-r" in sys.argv:
            row_number = int(get_argument(sys.argv, "-r"))
            if row_number and row_number >= 2:
                selected_row = ws.row_values(row_number)
                if user == selected_row[0]:
                    stored_row = selected_row
                else:
                    write_error("You can't edit others information")
                    exit()
            else:
                write_error("Invalid row")
                exit()
        else:
            row_number = get_users_last_row(ws, user)
            stored_row = ws.row_values(row_number)

        display_loading_message("Updating info", "Information updated")
        new_date = get_date() if "-d" in sys.argv else stored_row[1]
        new_message = get_argument(
            sys.argv, "-m") if "-m" in sys.argv else stored_row[2]
        new_description = get_argument(sys.argv, "-t") if "-t" in sys.argv else stored_row[3] \
            if len(stored_row) >= 4 else ""

        stored_row = [stored_row[0], new_date, new_message, new_description]
        update_row(ws, stored_row, row_number)

        hide_loading_message_with_error(False)
    except Exception:
        hide_loading_message_with_error(True)
        exit()
Beispiel #4
0
def read_command():
    try:
        display_loading_message("Loading messages", "")
        ws = get_worksheet()

        if "-a" in sys.argv:
            n = -1
        elif "-n" in sys.argv:
            n = int(get_argument(sys.argv, "-n"))
        else:
            n = 10

        rows = get_last_n_rows(ws, n)
        formatted_rows = format_log(rows)
        hide_loading_message_with_error(False)
        pydoc.pipepager(formatted_rows, cmd="less -R")
        print("")
    except Exception:
        raise KeyboardInterrupt
Beispiel #5
0
def write_command(user):
    if "-m" in sys.argv:
        try:
            ws = get_worksheet()
            current_row = next_available_row(ws)
            display_loading_message("Saving message", "Message saved")
            message = get_argument(sys.argv, "-m")
            set_name_date(current_row, user, ws)
            ws.update_acell("C{}".format(current_row), message)

            if "-t" in sys.argv:
                description = get_argument(sys.argv, "-t")
                ws.update_acell("D{}".format(current_row), description)

            hide_loading_message_with_error(False)
        except Exception:
            hide_loading_message_with_error(True)
    else:
        write_error("A message argument should be specified")
Beispiel #6
0
def init_app():
    print("Starting servy init process")
    print("............................")
    credentials_path = get_credentials_path()
    while True:
        default_spreadsheet = input("Insert the spreadsheets name\n")
        if default_spreadsheet:
            try:
                append_default_spreadsheet(credentials_path, default_spreadsheet)
                break
            except FileNotFoundError:
                write_error("\n'credentials.json' does not exists\n")
                print("Enter/Paste the downloaded content. Ctrl-D to save it.")
                try:
                    credentials_content = []
                    while True:
                        try:
                            line = input()
                        except EOFError:
                            break
                        credentials_content.append(line)

                    with open(credentials_path, "w+") as f:
                        for line in credentials_content:
                            f.write(line + "\n")

                    append_default_spreadsheet(credentials_path, default_spreadsheet)
                    break
                except PermissionError:
                    write_error("Permission error\n`servy init` should be run using root permissions\n")
                    exit()
                except Exception as e:
                    write_error("An error occured while saving credentials\n")
                    exit()
                    
    ss = get_spreadsheet()
    if ss and ss.sheet1:
        resume_ss = input(
            "A spreadsheet with this name already exists. Do you want to use it? Y/N\n")
        if resume_ss == "Y":
            print("Spreadsheet in use: " + default_spreadsheet)
            print("The following users has read permission to this file")
            print_permissions(ss)
            return

    print("Insert the email you want to have access to the spreadsheet")
    while True:
        email = input("Insert email: ")
        if email:
            if not validate_email(email):
                write_error("Invalid email")
            else:
                break

    display_loading_message("Creating spreadsheet " + default_spreadsheet, "Created spreadsheet " + default_spreadsheet)
    try:
        if ss:
            delete_spreadsheet(ss)
        ws = create_spreadsheet(email)
        init_spreadsheet(ws)
        hide_loading_message_with_error(False)
    except:
        hide_loading_message_with_error(True)