#! /usr/bin/env python3 import cgi import json import datetime import html def handle_fields(): form = cgi.FieldStorage() name = form.getvalue("name") url = form.getvalue("url") message = form.getvalue("message") # Nothign was submitted. if name is None and url is None and message is None: return "" if name is None: return "

name is required

" elif message is None: return "

please write a silly something (:

" url = "" if url is None else url # Make the names safe. name = html.escape(name) url = html.escape(url) message = html.escape(message) guest_book = [] # Open data if already there. try: with open("guest_book.json", "r") as fp: guest_book = json.load(fp) except FileNotFoundError: pass # Already in list. for guest in guest_book: if guest["name"] == name and guest["url"] == url and guest["message"] == message: return "

You already been added

" date = datetime.datetime.now() guest_entry = {"name": name, "url": url, "message": message, "date": date.strftime("%B, %d %Y")} # Dump guest to file. with open("guest_book.json", "w") as fp: guest_book.append(guest_entry) json.dump(guest_book, fp, indent=4) return "

You been added to the guest book yippe (:

\"yippee!\"/" def get_guest_html_from_list(): guest_html = "" try: with open("guest_book.json", "r") as fp: for guest in json.load(fp)[::-1]: guest_table = """
{name} {url} --- signed {date}

{message}

""" guest_table = guest_table.format(name=guest["name"], url=guest["url"], date=guest["date"], message=guest["message"]) guest_html += guest_table except FileNotFoundError: guest_html = """

No guest have been added ): But you can be the first!

""" return guest_html def display_html(fields_reponse): print("Content-Type: text/html") html_text = """ Guest Book Back to home page

Sign my fucking guest book

Name
Website (Optional)

Write a little silly something

You can't delete/edit it afterwards

Be nice! Dont be a fucking ass.

{fields_reponse}
{guest_html}
""" html_text = html_text.format( fields_reponse=fields_reponse, guest_html=get_guest_html_from_list() ) print(html_text) fields_reponse = handle_fields() display_html(fields_reponse)