diff --git a/freepost/__init__.py b/freepost/__init__.py index 60a9b36..783bd10 100755 --- a/freepost/__init__.py +++ b/freepost/__init__.py @@ -103,6 +103,10 @@ def requires_logout (controller): @get ('/', name='homepage') def homepage (): + """ + Display homepage with posts sorted by 'hot'. + """ + # Page number page = int (request.query.page or 0) @@ -120,6 +124,10 @@ def homepage (): @get ('/new', name='new') def new (): + """ + Display homepage with posts sorted by 'new'. + """ + # Page number page = int (request.query.page or 0) @@ -137,16 +145,28 @@ def new (): @get ('/about', name='about') def about (): + """ + Display "About" page. + """ + return template ('about.html') @get ('/login', name='login') @requires_logout def login (): + """ + The login page. + """ + return template ('login.html') @post ('/login') @requires_logout def login_check (): + """ + Check login form. + """ + username = request.forms.get ('username') password = request.forms.get ('password') remember = 'remember' in request.forms @@ -177,11 +197,19 @@ def login_check (): @get ('/register', name='register') @requires_logout def register (): + """ + Register new account. + """ + return template ('register.html') @post ('/register') @requires_logout def register_new_account (): + """ + Check form for creating new account. + """ + username = request.forms.get ('username') password = request.forms.get ('password') @@ -220,6 +248,10 @@ def register_new_account (): @get ('/logout', name='logout') @requires_login def logout (): + """ + Logout user and return to homepage. + """ + session.close () redirect (application.get_url ('homepage')) @@ -227,11 +259,20 @@ def logout (): @get ('/password_reset', name='password_reset') @requires_logout def password_reset (): + """ + Display form to reset users password. + """ + return template ('login_reset.html') @post ('/password_reset', name='password_reset_send_code') @requires_logout def password_reset_send_code (): + """ + Validate form for resetting password, and if valid send secret + code via email. + """ + username = request.forms.get ('username') email = request.forms.get ('email') @@ -276,11 +317,21 @@ def password_reset_send_code (): @get ('/change_password', name='change_password') @requires_logout def change_password (): + """ + After the secret code was sent via email, display this form where + the user can insert the secret code + new password. + """ + return template ('login_change_password.html') @post ('/change_password', name='validate_new_password') @requires_logout def validate_new_password (): + """ + Validate the new password, check the secret code, and if everything + is OK change the user password. + """ + username = request.forms.get ('username') email = request.forms.get ('email') password = request.forms.get ('password') @@ -322,11 +373,19 @@ def validate_new_password (): @get ('/user', name='user') @requires_login def user_private_homepage (): + """ + A user's personal page. + """ + return template ('user_private_homepage.html') @post ('/user') @requires_login def update_user (): + """ + Update user info (about, email, ...). + """ + user = session.user () about = request.forms.get ('about') @@ -367,6 +426,10 @@ def user_replies (): @get ('/user/', name='user_public') def user_public_homepage (username): + """ + Display a publicly accessible page with public info about the user. + """ + account = database.get_user_by_username (username) if account is None: @@ -376,6 +439,10 @@ def user_public_homepage (username): @get ('/post/', name='post') def post_thread (hash_id): + """ + Display a single post with all its comments. + """ + user = session.user () post = database.get_post (hash_id, user['id'] if user else None) comments = database.get_post_comments (post['id'], user['id'] if user else None) @@ -511,11 +578,19 @@ def edit_comment_check (hash_id): @get ('/submit') @requires_login def submit (): + """ + Submit a new post. + """ + return template ('submit.html') @post ('/submit') @requires_login def submit_check (): + """ + Check submission of new post. + """ + # Somebody sent a
without a title??? if not request.forms.get ('title'): abort () @@ -597,6 +672,10 @@ def reply_check (hash_id): @requires_login @post ('/vote', name='vote') def vote (): + """ + Handle upvotes and downvotes. + """ + user = session.user () # Vote a post @@ -677,6 +756,10 @@ def vote (): @get ('/search') def search (): + """ + Search content on this instance, and display the results. + """ + # Get the search query query = request.query.get ('q') @@ -694,11 +777,19 @@ def search (): @get ('/rss') def rss_default (): + """ + Redirect base RSS URL to default "hot" feed. + """ + return redirect (application.get_url ('rss', sorting='hot')) # TODO check if is correctly displayed in RSS aggregators @get ('/rss/', name='rss') def rss (sorting): + """ + Output an RSS feed of posts. + """ + posts = [] # Retrieve the hostname from the HTTP request. @@ -718,6 +809,10 @@ def rss (sorting): @get ('/', name='static') def static (filename): + """ + Serve static files. + """ + return static_file (filename, root='freepost/static/')