Added web/ directory in template path.
Attempting basic log-in in CherryPy.
session should be sessions
Adding view element to indicate invalid log-in.
Set-up for AJAX log-in.

- Better styling of log-in fail indicator.
- Set-up of Javascript functions for log-in (index.js).
- Included Javascript in index.jinja.

Only problem now is that my local SQL isn't properly configured so I can't test
happy path log-in.
Tested AJAX call intergration.

However, there seems to be a problem with the @authentication_req decorator.
Hits to /dashboard are not being routed properly.
Some more debugging...
Getting to know decorators.
Added z-index 1 to login box.

For some weird reason, the text boxes suddenly became inaccessible both in
Chromium and in Firefox. Specifying z-index resolves the issue.
Reorganized functions in main. Dashboard is now authenticated properly.

BUT the authenticating function is not yet fully working. Need to check on
sending request with cookies.
Accessing cookie via dict's get method since if user is not logged in, KeyError leads to status 500.
Unhashable type morsel issue solved.

Use the .value attribute of the cookie map contents (Morsel.value).
Log-in now pretty much working.
Code cleanup.
Now calling loginCheck() on click of log-in button.
index.jinja clean-up.
Restructuring login model so we can add userid to the session.
Adding operations.py
Login model should now be returning userid.

Apparently, when RowProxy is converted as a dictionary, the columns are namespaced
as tablename_columnname ('cause, duh, in a query you can mix and match columns
of the same name from different tables).
Adding prototype operations.