This was due to duplicate notebook timestamps within the sqlite
database, which meant that notebook_current included the placeholder
"next ids" along with the actual notebooks. The fix was to modify the
notebook_current view to filter out those placeholder ids.
note_current is now a table containing the current versions of each note, rather than a view.
This makes the tsearch2 index much less bloated with duplicate information
character) titles from saving correctly.
Changed the literal quotation character in the starting wiki note to the
""" character entity so it doesn't show up as a change in the diff.
* change controller.Notebooks.load_note_revisions() to select and return User_revision objects
* change controller.Notebooks.save_note() to use User_revision objects for new_revision and previous_revision as well
* update client to deal with new load_note_revisions() return values (make sure all uses of revisions_list are updated)
* update client to deal with new new_revision/previous_revision
* update changes pulldown to show username along with each timestamp
* update model.Invite to load redeemed_username along with redeemed_user_id
* display the redeemed username next to each email address in the "share this notebook" note
* added new database table of invited email addresses
* altered user_notebook table to have a new owner boolean column, indicating whether the user has owner access to the notebook
* altered notebook and note tables/views to have an additional user_id field to indicate the user that created that revision
* updated model.Notebook and model.Note to support new user_id field