84 lines
3.1 KiB
Python
84 lines
3.1 KiB
Python
import sqlite3
|
|
import argparse
|
|
import json
|
|
|
|
DB_NAME = 'form_filler.db'
|
|
conn = sqlite3.connect(DB_NAME)
|
|
|
|
def add_website(address):
|
|
try:
|
|
conn.execute("INSERT INTO websites (address) VALUES (?)", (address,))
|
|
conn.commit()
|
|
print(f"Dodano stronę {address}")
|
|
except sqlite3.IntegrityError:
|
|
print(f"Strona już istnieje w bazie!")
|
|
|
|
def list_websites():
|
|
rows = conn.execute("SELECT id, address, active FROM websites").fetchall()
|
|
for row in rows:
|
|
print(f"[{row[0]}] {row[1]} - {'WŁĄCZONA' if row[2] else 'WYŁĄCZONA'}")
|
|
|
|
def set_active_status(address, status):
|
|
conn.execute("UPDATE websites SET active = ? WHERE address = ?", (1 if status else 0, address))
|
|
conn.commit()
|
|
print(f"Ustawiono testowanie formularza w witrynie {address}")
|
|
|
|
def add_data_json(website_address, form_fields_str):
|
|
try:
|
|
form_fields = json.loads(form_fields_str)
|
|
except json.JSONDecodeError:
|
|
print("Nieprawidłowy JSON!")
|
|
return
|
|
|
|
conn.execute("INSERT INTO data (website_address, form_fields) VALUES (?, ?)",
|
|
(website_address, json.dumps(form_fields)))
|
|
conn.commit()
|
|
|
|
print(f"Dodano dane formularza dla {website_address}")
|
|
|
|
def list_data(website_address=None):
|
|
if website_address:
|
|
rows = conn.execute("SELECT id, website_address, form_fields FROM data WHERE website_address = ?", (website_address,)).fetchall()
|
|
else:
|
|
rows = conn.execute("SELECT id, website_address, form_fields FROM data").fetchall()
|
|
|
|
for row in rows:
|
|
print(f"[{row[0]}] Strona: {row[1]}")
|
|
print(json.dumps(json.loads(row[2]), indent=2))
|
|
print("---")
|
|
|
|
def remove_form_data(address):
|
|
cur = conn.execute("DELETE FROM data WHERE website_address = ?", (address,))
|
|
conn.commit()
|
|
if cur.rowcount:
|
|
print(f"Usunięto dane formularza o adresie {address}")
|
|
else:
|
|
print(f"Nie znaleziono danych formularza o adresie {address}")
|
|
|
|
def cli():
|
|
parser = argparse.ArgumentParser()
|
|
parser.add_argument("--add", help="Dodaj nową witrynę")
|
|
parser.add_argument("--active", nargs=2, metavar=("address", "0|1"), help="Włącz/wyłącz testowanie formularza na witrynie")
|
|
parser.add_argument("--list", action="store_true", help="Pokaż listę witryn")
|
|
parser.add_argument("--add-form-data", nargs=2, metavar=("address", "json_data"), help="Dodaj dane formularza (JSON!)")
|
|
parser.add_argument("--remove-form-data", help="Usuń dane formularza o podanym adresie")
|
|
parser.add_argument("--list-form-data", nargs="?", const="", metavar="address", help="Wypisz dane formularza dla wszystkich stron")
|
|
|
|
args = parser.parse_args()
|
|
|
|
if args.add:
|
|
add_website(args.add)
|
|
elif args.active:
|
|
set_active_status(args.active[0], bool(int(args.active[1])))
|
|
elif args.list:
|
|
list_websites()
|
|
elif args.add_form_data:
|
|
add_data_json(args.add_form_data[0], args.add_form_data[1])
|
|
elif args.remove_form_data:
|
|
remove_form_data(args.remove_form_data)
|
|
elif args.list_form_data is not None:
|
|
list_data(args.list_form_data if args.list_form_data else None)
|
|
|
|
if __name__ == "__main__":
|
|
cli()
|