Mein erster Tipp wäre: Füge ein bisschen CSS hinzu, sodass der Screenshot nicht ganz so wie aus den 90ern aussieht. Und einen "dies ist valides XHTML"-Button halte ich ja für total entbehrlich.
Was hast du für ein komisches ZIP-Programm benutzt? Mein Unzip meckert über die \ im Pfad, die eigentlich jedes Zip als / darstellen sollte - habe ich bislang noch niemals so gesehen.
Gleich in der ersten Funktion von mypy_board.py hast du meinen Aufreger Nummer 1 benutzt. Ein "if ... return True else return False" ist eigentlich so gut wie immer total und absolut unnötig und kann bei dir durch folgendes ersetzt werden:
Code: Alles auswählen
def login_check():
return request.get_cookie('login_flag') == '54742010'
Man muss übrigens keine Funktionen mit nicht mehr Informationen als ihrem Funktionnamen schon steht dokumentieren

Und was ist da da für eine komische Konstante? Kann ich mich im Forum anmelden, wenn ich nur manuell so ein Cookie setze? Nicht gerade sicher...
Bitte benutze nicht ein und die selbe Variable für Objekte völlig unterschiedlichen Typs. So wäre es besser:
Code: Alles auswählen
pw = request.GET.get('admin_password', '').strip()
digest = hashlib.md5(pw).hexdigest()
Immer wenn mit Ressourcen wie Dateien oder Datenbank-Cursorn hantiert wird, würde ich try/finally benutzen, um sicherzustellen, dass die Ressource in jedem Fall wieder freigegeben wird, auch wenn das Programm unerwartet mit einer Exception abgebrochen wird.
Du hast verschiedene Datenbanken für Logins, Topics, usw.? Das ist eher ungewöhnlich. Ich würde übrigens empfehlen, klar zwischen Domain-Modell (also den Objekten, die das Forum ausmachen) und der Darstellung (also den route-annotierten View-Funktionen) trennen. Jetzt vermischt du das sehr stark. Das lässt sich so schwerer testen. Baue lieber erst mal ein Domain-Modell für das Forum, dass du komplett ohne Web-Oberfläche benutzen kannst. Dann rufe aus dieser die passenden Methoden des Domain-Modells auf.
Ich glaube übrigens, das Projekt wäre viel einfacher mit Django zu realisieren gewesen, denn das nimmt dir 95% der DB-Operationen ab, bietet dir einen einfachen Weg zu einem Domain-Modell und ist was Routing und Views angeht, auch nicht viel komplizierter. Oder schaue dir mal SQAlchemy an, auch wenn das ein bisschen komplexer ist.
Stefan