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)
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")
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()
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
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")
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)