baforms/manage.py

65 lines
2.2 KiB
Python

import sqlite3
import argparse
import json
DB_NAME = 'form_filler.db'
conn = sqlite3.connect(DB_NAME)
def add_website(address, json_data):
try:
form_fields = json.loads(json_data)
form_fields["task"] = "form.message"
except json.JSONDecodeError:
print("Nieprawidłowy JSON!")
return
try:
conn.execute("INSERT INTO websites (address) VALUES (?)", (address,))
conn.execute("INSERT INTO data (website_address, form_fields) VALUES (?, ?)",
(address, json.dumps(form_fields)))
conn.commit()
print(f"Dodano stronę {address} z podanymi polami.")
except sqlite3.IntegrityError:
print(f"Strona już istnieje w bazie! Użyj flagi --remove aby ją usunąć.")
def remove_website(address):
cur = conn.execute("DELETE FROM websites WHERE address = ?", (address,))
conn.commit()
if cur.rowcount:
print(f"Usunięto dane strony o adresie {address}")
else:
print(f"Nie znaleziono strony o adresie {address}")
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 cli():
parser = argparse.ArgumentParser()
parser.add_argument("--add", nargs=2, metavar=("address", "fields"), help="Dodaj nową witrynę")
parser.add_argument("--remove", help="Usuń witrynę z bazy danych")
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")
args = parser.parse_args()
if args.add:
add_website(args.add[0], args.add[1])
elif args.remove:
remove_website(args.remove)
elif args.active:
set_active_status(args.active[0], bool(int(args.active[1])))
elif args.list:
list_websites()
if __name__ == "__main__":
cli()