Dan Helfman
9d2f0d344d
When you invite other people to view or edit your notebook, you can now see the invite link they'll get.
2008-07-18 15:01:09 -07:00
Dan Helfman
8271f82734
Unit tests for controller.Notebooks.revert_note().
2008-07-11 17:06:01 -07:00
Dan Helfman
3153492086
Basic note reverting now works.
2008-07-11 14:41:48 -07:00
Dan Helfman
bbb17e4046
controller.Root.guide() now accepts an optional note_id parameter.
2008-07-03 16:29:42 -07:00
Dan Helfman
48f58d0c0e
Fixed bug in which bolding of suggest-as-you-type search text was case sensitive. Now it's case insensitive.
2008-06-29 22:49:29 -07:00
Dan Helfman
0271c4b5d9
Implemented full unit tests for controller.Notebooks.search_titles().
2008-06-29 15:50:27 -07:00
Dan Helfman
fe139cc749
First pass for suggest-as-you-type for linking.
2008-06-27 16:11:09 -07:00
Dan Helfman
599971ba01
When linking to a note by title, the note resolution is now
...
case-insensitive instead of case-sensitive.
2008-06-25 20:04:06 -07:00
Dan Helfman
41a85bb41f
You can now resize embedded images (small, medium, or large).
...
Fixed a bug that potentially caused link pulldowns to open in the wrong
location when the page was scrolled past the top.
2008-06-18 17:14:07 -07:00
Dan Helfman
9c5d734fad
Updated unit tests for yearly subscription "12 M" -> "1 Y" transition.
2008-06-18 17:13:13 -07:00
Dan Helfman
41821e727e
Changing 12 month subscription validation to instead expect 1 year, to reflect similar changes in configuration.
2008-06-18 13:08:57 -07:00
Dan Helfman
eaf45f5599
Links to embedded images now show up within the note tree's list of links.
...
Links to files that have not yet been uploaded (or have been deleted) are
now excluded from the note tree's list of links.
2008-06-17 20:25:44 -07:00
Dan Helfman
9bbed27d73
Fixed a bug in which an image thumbnail could not be loaded unless
...
you had a valid session.
2008-06-16 23:22:12 -07:00
Dan Helfman
f7626d985c
Fixed a bug that caused image files to get deleted if there were multiple images embedded within a single note.
...
Prevented a link pulldown from auto-opening by hovering if another pulldown is already open.
2008-06-16 16:22:50 -07:00
Dan Helfman
522f8b9330
Implemented support for embedded images within wiki notes. Also added hover support to open link pulldowns.
2008-06-13 15:55:19 -07:00
Dan Helfman
8b52ffabfa
Updated tools/set_plan.py to automatically update a user's group
...
membership.
2008-06-09 20:14:42 -07:00
Dan Helfman
9a3f795985
More unit tests for user admin signup/modify/cancel, along with a fix for a bug unearthed by the unit tests.
2008-06-09 14:29:31 -07:00
Dan Helfman
46dc2663ee
Update/remove group admin membership upon signup/cancellation. Some unit tests, but more needed for complete coverage.
2008-06-07 18:18:49 -07:00
Dan Helfman
6fcec83167
Fixed annoying bug where some unit tests didn't use stub SMTP class and so actually send real email messages.
2008-06-07 17:06:43 -07:00
1ea667528e
Wrote unit tests for controller.Users.signup_group_member().
2008-06-06 16:14:44 -07:00
7ee838d46e
controller.Users.remove_group() now resets the removed user's rate plan to 0. Also fixed broken controller.Users.signup().
...
Updated unit tests.
2008-06-06 15:13:11 -07:00
a8a6070da0
Implemented controller.users.signup_group_member().
...
Modified UI code to call this method correctly and display results.
Split generic user signup functionality out into a separate private method.
2008-06-06 14:46:29 -07:00
9c923172ab
Fixing broken unit test.
2008-06-05 16:00:24 -07:00
0faa06ea10
Called controller.Users.calculate_group_storage() from various places. Fixed model.User.sql_calculate_group_storage().
2008-06-05 15:59:01 -07:00
a0ca8025d0
New controller.Users.calculate_group_storage().
2008-06-05 14:16:49 -07:00
0e51e461fa
New controller.Users.remove_group() method to remove a user's group membership.
2008-06-03 20:19:07 -07:00
3a9cd0a024
New controller.Groups.update_settings() and associated unit tests.
2008-06-03 16:11:27 -07:00
39ca4c619b
Groups.load_users() now returns info on the group itself as well.
2008-06-02 16:03:48 -07:00
79e2c45533
New controller.Groups class and a new controller.Users.check_group() method.
...
Also a new model.Group.sql_load_users() method.
Lots of unit tests.
2008-05-29 16:36:14 -07:00
df3d170362
View groups that you're a member of, with an indicatation if you're an admin of that group.
...
- modify controller.Users.current() to return the user's groups
- update test_current() unit tests to expect empty groups list in results
- modify Main_page, Notebook_rss, Front_page, Tour_page, and Upgrade_page to accept a new groups parameter
- Main_page should add it as a hidden HTML variable
- update Wiki.js to read the hidden groups variable and display the groups in account settings
2008-05-28 16:05:38 -07:00
Dan Helfman
e971959755
Attempting to access the RSS feed for a non-existent notebook now
...
displays a somewhat informative message in the feed instead of just
silently raising an error.
2008-05-26 23:00:31 -07:00
Dan Helfman
953f572b20
Bug fix: Clear the memcache, search for notes in an main notebook (as the
...
anonymous user), open a search result from a notebook. Then, login and try to
edit that notebook as a user with read-write privileges. it will show up as
read-only, presumably because it's being read from the cache.
2008-05-19 23:43:33 -07:00
Dan Helfman
ae5c911c1c
New multiple-notebook search query was way too slow. Now fixed.
...
- make model.Notebook.sql_search_notes() search either with user_id or an anonymous user_id, not both
- update controller.Notebooks.search(), so if the anonymous user has access to the given notebook,
then run the search as the anonymous user instead of the given user id
- update unit tests
- don't search trash/deleted notebooks
2008-05-19 22:36:21 -07:00
Dan Helfman
02a3544590
Search result now return notes from multiple notebooks.
...
- change model.Notebook.sql_search_notes() to be a static method
- take a first_notebook_id argument and a user_id argument
- join user_notebook on notebook_id and matches on user_notebook.user_id instead of notebook_id
- order by notebook_id = first_notebook desc, rank instead of just rank
- include search result for notebooks readable by anonymous user, but only if such a notebook is given as first_notebook_id
- update code that calls model.Notebook.sql_search_notes()
- update model.Note.to_dict() to include notebook_id
- modify Wiki.display_search_results()
- separate search results for the current notebook and results for all other notebooks
- indicate which notebook each result is from
- if there are results in other notebooks but no results in the current notebook, indicate that clearly
- when you click on a result note link in the current notebook, it should simply open a new note
- when you click on a result note link in another notebook, it should open in a new window
- test in IE
- update unit tests for:
- controller.Notebooks.search()
- model.Notebook.sql_search_notes()
- model.Note.to_dict()
2008-05-19 15:16:25 -07:00
Dan Helfman
20995d3b2e
Added support for database hostname and ssl mode in configuration file.
2008-05-16 14:12:01 -07:00
Dan Helfman
8b705ec4c3
In send_invites(), no longer implicitly assuming rate plan 0 has
...
notebook_collaboration set to False.
2008-05-08 23:17:17 +00:00
Dan Helfman
0323f6bc91
Passing new yearly parameter to main page.
2008-05-08 19:29:11 +00:00
Dan Helfman
a6baa45435
Made signup support yearly subscriptions.
2008-05-08 19:14:39 +00:00
Dan Helfman
269c28983d
Support for yearly subscriptions.
2008-05-08 18:39:46 +00:00
Dan Helfman
18982dc129
Implemented basic user account settings. Now you can change your email
...
address.
2008-05-08 03:05:35 +00:00
Dan Helfman
70f52a7406
Fixed a bug where an invite sent for a notebook with an accented unicode
...
name would cause a UnicodeEncodeError upon sending the invite email. Now
such invites are encoded as quoted-printable UTF-8, while other invites
continue to be 7-bit ASCII.
2008-05-06 23:29:43 +00:00
Dan Helfman
bb77cefeaa
Possibly fixed a bug where IE 7 would fail to download as HTML via HTTPS
...
due to cache issues. The fix entailed using a new @weakly_expire decorator
on controller.Notebooks.download_html().
2008-05-06 21:41:00 +00:00
Dan Helfman
8bed4a7f4d
Fixed a bug where the Valid_id() validator would raise a TypeError when
...
given a None value. Now raising a ValueError instead.
2008-05-05 23:32:45 +00:00
Dan Helfman
1d17ea4eff
Fixed a bug where attempting to load a notebook preview without access
...
would give a "list index out of range" error instead of an access error.
2008-05-05 23:10:26 +00:00
Dan Helfman
1095e509de
Fixed yet another diff-breaking edge case. This one had to do with
...
inserting italicized text right before some existing italicized text.
2008-05-03 07:40:46 +00:00
Dan Helfman
570e0ade77
More diff fixes. This time for "<br/>" tags.
2008-05-03 06:10:09 +00:00
Dan Helfman
94fdd08cf4
* Fixed a bug that prevented diffs from working for notes with links.
...
* Made CSS for links within <del> or <ins> red or green, respectively.
2008-05-03 05:36:28 +00:00
Dan Helfman
97c373561d
* Added replace_contents() to model.Note to set the contents without updating the revision or anything else.
...
* Added new optional previous_revision params to default(), contents() and load_note() in controller.Notebooks.
These use Html_differ() to generate and return diffs.
* Updated Wiki.js:
* provide previous_revision when a revision is opened in a new window/tab
* call load_note() when two revisions when a revision is clicked in Changes_pulldown
* update compare_versions() to display a diff instead of opening the two revisions separately
* update load_editor():
* update all invocations of load_editor(), including in Editor.js, to accept a new previous_revision argument
* modify load_editor() to use the previous_revision argument (when supplied) to load a diff
2008-05-03 04:29:23 +00:00
Dan Helfman
42ae3e0ba1
Completed Html_differ unit tests.
2008-05-02 23:59:03 +00:00
Dan Helfman
ba89c8116b
Updated to handle the following case:
...
* If a phrase becomes italicized, it should show the non-italic version in red and immediately after, the italic
version in green.
This required doing a pass on the HTML to merge certain elements together before doing the actual diff.
2008-05-02 21:03:46 +00:00
Dan Helfman
9b2a9db4e9
Implemented new HTML diffing class to produce an HTMLized diff of two HTML
...
strings. Not perfect yet. For instance, if string a contains "foo bar baz" and
string b contains "foo <i>bar</i> baz", the resulting output does not show
"bar" in strikeout and "<i>bar</i>" in green, as one might expect.
2008-05-02 18:58:36 +00:00
Dan Helfman
e052e3b357
Fixed bug in Html_cleaner which produced broken tags like "<br/>" instead of "<br />"
2008-05-02 18:56:03 +00:00
Dan Helfman
5f852a3d8e
Bug fix: Used to get access error when you loaded the children links for a note that was in the trash.
2008-04-29 21:26:09 +00:00
Dan Helfman
b71568b35b
Implemented unit tests for controller.Notebooks.load_recent_updates().
2008-04-29 03:25:38 +00:00
Dan Helfman
1d0867d776
* Renamed existing controller.Notebooks.load_recent_notes method to just recent_notes().
...
* Implemented new controller.Notebooks.load_recent_updates() method.
* Added new Wiki.js total_notes_count_updated signal
* Added "more" and "less" links to "recent updates" table.
* Updated Wiki.js Recent_notes to support new "more" and "less" links.
* Commented out unfinished discussion forums unit test.
2008-04-29 00:54:08 +00:00
Dan Helfman
09f771b508
Commenting out discussion forums for now since they're unfinished.
2008-04-25 20:36:01 +00:00
Dan Helfman
011baf2cb4
Adding unfinished Forums controller and associated tests.
2008-04-25 20:34:01 +00:00
Dan Helfman
9c617687bd
Fixing comment.
2008-04-25 19:46:42 +00:00
Dan Helfman
ea87c273f9
Added unit tests for new RSS related controller methods.
...
Setting separator to empty for a few more Rss_item elements.
2008-04-23 02:54:59 +00:00
Dan Helfman
b316b2f4a3
* Increasing after_login max string size from 100 to 1000 to accomodate larger URLs.
...
* controller.Notebooks now takes (and stores) an https_url constructor parameter.
* New controller.Notebooks.updates() method to produce an updates RSS feed for a particular notebook.
* New controller.Notebooks.get_update_link() method to make a brief page with just a link for an updated note, referred to by the feed.
* Implemented views for the new RSS feed.
* Fixed bug in Rss_item's guid that caused newlines to be inserted before and after long URLs.
* Still need to unit test new controller code.
2008-04-22 23:24:30 +00:00
Dan Helfman
d3dce6f775
Sigh.
2008-04-22 20:26:09 +00:00
Dan Helfman
0f30c89ff3
Fixing "local variable 'image_buffer' referenced before assignment" error.
2008-04-22 19:35:33 +00:00
Dan Helfman
b3d5187c6c
Fixed bug where calling image.save() with an interlaced PNG file would
...
raise an IOError. Now just displaying the default thumbnail if that
happens.
2008-04-22 18:34:34 +00:00
Dan Helfman
1ca9af536c
Added RSS subscription links for all notebooks.
2008-04-18 20:49:22 +00:00
Dan Helfman
eb587fc44f
Fixed bug where recent notes were ordered by creation time instead of revision time.
2008-04-18 20:39:23 +00:00
Dan Helfman
c488864273
* Now if you try to load a page where access is required, and you're not
...
logged in, you'll be redirected to a login page. After you login, you'll
be redirected to the page you were originally trying to access.
2008-04-18 19:54:50 +00:00
Dan Helfman
d0a1cbf71d
Complete unit tests for controller.Notebooks.load_note_links().
2008-04-16 08:13:35 +00:00
Dan Helfman
8541c784be
Modified tests for controller.Notebooks.default() to test for new "recent_notes" return value.
2008-04-16 07:33:07 +00:00
Dan Helfman
456c1b5fb8
Don't display recent notes on the main Luminotes notebook.
2008-04-16 01:39:24 +00:00
Dan Helfman
431bf6ace7
Completed recent notes list:
...
* displaying list of links
* adding links
* removing links
* updating links
* controller.Notebooks.contents() changes to return recent notes
2008-04-16 00:28:18 +00:00
Dan Helfman
db03f39c06
When all the children of a display note are removed, remove the expander from
...
that note's entries in the note tree. When a note with no children is updated
so that it has at least one child, add an expander to that note's entries in
the note tree.
2008-04-14 23:54:04 +00:00
Dan Helfman
0d4bb81943
Clicking an external link or a file link in the note tree now opens with target=_new.
2008-04-12 02:32:11 +00:00
Dan Helfman
eaaf1b3de5
Lots more work on the note tree control. Still not done, and some of the new icons suck.
2008-04-12 00:51:32 +00:00
Dan Helfman
272dd3e157
Converted dump_emails.sh to dump_emails.py so that it can run on a separate server from the database.
2008-04-07 04:47:07 +00:00
Dan Helfman
6fb7038229
* Implemented all unit tests for new thumbnail() and related methods.
...
* Changed default thumbnail size to ( 125, 125 ) instead of ( 75, 75 ).
2008-04-02 05:34:50 +00:00
Dan Helfman
03f015f99a
* Propsetting a bunch of svn:ignores.
...
* Added a bunch of thumbnail-related methods to controller.Files.
* Modified Files.download() method to redirect to image preview if
requested.
* Implemented image preview to popup full image in a separate window.
* Added empty stubs for relevant unit tests. Still to-do.
* Added new dependency on python-imaging package (PIL).
* Updated file info popup to include clickable thumbnail.
2008-04-01 21:54:43 +00:00
Dan Helfman
276bb9b5bc
Fixing unit test to account for new Html_cleaner tag stripping behavior.
2008-04-01 21:32:01 +00:00
Dan Helfman
388b49c345
Now stripping HTML comments.
2008-03-31 04:29:18 +00:00
Dan Helfman
b403e5419c
Made Html_cleaner support many more HTML tags and attributes, so users can
...
cut and paste from other programs into Luminotes.
2008-03-31 00:31:13 +00:00
Dan Helfman
3fc9a74591
Additional unit tests for purging file links that have a quote_filename parameter.
2008-03-27 03:48:13 +00:00
Dan Helfman
afe8c1227c
Fixed a bug in which Files.purge_unused() deleted the file for a file link
...
that had a quote_filename parameter.
2008-03-27 02:50:16 +00:00
Dan Helfman
c452408106
Finished remake of signup page. You can now click "signup" for non-free accounts even if you're not logged in.
2008-03-24 22:33:00 +00:00
Dan Helfman
e9d2ea28d1
Began redesign of upgrade/pricing page.
2008-03-22 04:01:21 +00:00
Dan Helfman
2cae1faf2d
Conditionally quoting download filenames based on detected browser.
2008-03-18 22:22:19 +00:00
Dan Helfman
39a9cba457
Fixed a bug that prevented the upload of filenames with special characters
...
in them. In other words, I made controller.Files work better with unicode.
2008-03-18 20:40:39 +00:00
Dan Helfman
0754a0b4bb
Apparently get_transaction_status() was introduced in psycopg 2.0.6. :(
2008-03-17 23:10:14 +00:00
Dan Helfman
49a4c3c72d
Completed unit tests for notebook movement methods.
2008-03-17 22:37:37 +00:00
Dan Helfman
f3b0d563c1
Fixed database transaction leak by wrapping every exposed database-using
...
controller method with a new @end_transaction() decorator. This
decorator is responsible for rolling back unfinished transactions.
2008-03-17 21:17:00 +00:00
Dan Helfman
a4387ea371
New rollback() method. Not yet used anywhere.
2008-03-17 19:47:56 +00:00
Dan Helfman
90a31c4e81
Makes blog work again.
2008-03-17 08:32:21 +00:00
Dan Helfman
94a51889f9
Added ability to reorder notebooks on the right side of the page.
...
Need to complete unit tests for controller.Notebooks.move_up() and move_down().
2008-03-15 03:04:59 +00:00
Dan Helfman
68fe84b707
Adding missing unit tests for controller.Root.tour().
2008-03-13 20:45:45 +00:00
Dan Helfman
2d55455120
Fixed a bug where, after you highlighted a link and clicked the link button
...
to unlink it, the link info box popped up.
Actually checking in cache changes that were supposed to be in previous
release.
2008-03-10 23:15:33 +00:00
Dan Helfman
1f57e4ba8a
Whoops.
2008-03-07 23:20:32 +00:00
Dan Helfman
2b0a9af3e3
Client code now only calls save_note() on the server when necessary, and
...
takes startup flag into account.
Fixed unit test for database cache.
2008-03-07 23:14:39 +00:00
Dan Helfman
7a0368b5d9
Fixed cache behavior so we don't touch the cache within Database.save() if
...
there's no commit flag. Then, when Database.commit() is called, any pending
saves are put into the cache.
2008-03-07 23:00:07 +00:00
Dan Helfman
6dcad328b0
Exposing take_a_tour alias.
2008-03-07 21:16:19 +00:00
Dan Helfman
8fb1d9a80e
Temporary hack so that cache sets are performed whenever save() is called,
...
regardless of commit flag. Without this, the file upload progress bar breaks
because it gets a stale File object out of the cache.
Eventually, it would be better if cache sets were only done condittionally
based on commit flag, and also whenever Database.commit() is called.
2008-03-06 23:21:15 +00:00
Dan Helfman
50367579c0
Beginning revamp of tour page and screenshots.
2008-03-06 07:21:35 +00:00
Dan Helfman
e5b0dd0418
Generalized product page so it could be used for more than just the front page.
2008-03-05 20:55:09 +00:00
Dan Helfman
21ccc97826
Now using memcached in various places to improve performance. If the Python
...
cmemcache module is not importable, then memcached simply won't be used.
2008-03-05 00:34:58 +00:00
Dan Helfman
3af5af18c5
Changed controller.Users.logout() to not be a JSON method so just hitting the
...
"/users/logout" URL will log you out and redirect you the front page.
Made front page prettier and better at explaining Luminotes (hopefully). The
front page is no longer a wiki, but is instead a mostly static page.
2008-03-01 00:26:06 +00:00
Dan Helfman
42de8979dc
For demo accounts, no longer doing automatic redirect to first notebook thing when you hit "/" without a referrer.
2008-02-27 21:32:39 +00:00
Dan Helfman
dcd40eaa45
Tweaked controller.Files.download() to better handle filenames with weird characters.
2008-02-24 01:01:50 +00:00
Dan Helfman
9743859b41
Now correctly allowing large file uploads.
2008-02-24 00:31:07 +00:00
Dan Helfman
bb8442bb03
All unit tests passing again.
2008-02-23 23:57:05 +00:00
Dan Helfman
b7e1b26d3b
Unit tests for controller.Files are done!
2008-02-23 23:16:39 +00:00
Dan Helfman
3ed4145ed3
Yet more controller.Files unit tests.
2008-02-23 22:59:36 +00:00
Dan Helfman
4150811d9e
Many more controller.Files unit tests.
2008-02-23 22:17:02 +00:00
Dan Helfman
7b76d6371b
Additional unit tests.
2008-02-23 08:59:39 +00:00
Dan Helfman
3f5d5d2a89
Implemented several unit tests for controller.Files.
2008-02-23 08:14:19 +00:00
Dan Helfman
e7c96cadf5
Using "link.innerHTML =" instead of replaceChildNodes() to set a file link's
...
title when uploading a file, as this plays more nicely with IE. With
replaceChildNodes(), IE swallows the text cursor and won't give it back.
Also explicitly passing link parameter to Upload_pulldown() constructor, as
editor.find_link_at_cursor() wasn't always working in IE.
2008-02-22 23:03:10 +00:00
Dan Helfman
36b11805c6
Now purging files from the database/filesystem when notes they're linked from
...
are deleted from the trash. Also displaying a message when deleting a file
manually via the "delete" button.
2008-02-22 21:08:29 +00:00
Dan Helfman
db1bc247ad
Changing file link pattern slightly so that a file link with no title is not counted.
2008-02-22 20:04:23 +00:00
Dan Helfman
65ce915755
When saving a note, auto-delete any files that used to be linked from it but no longer are. Still need unit tests.
2008-02-22 19:47:28 +00:00
Dan Helfman
7b8f6bd6e5
Improved error reporting in the controller.Files.upload() method. Now
...
correctly displays an error to the user when uploading without a filename or
with an invalid file.
2008-02-21 19:39:03 +00:00
Dan Helfman
6a5481f7d6
Fixed updating and display of storage usage when an uploaded file is deleted.
2008-02-21 03:41:37 +00:00
Dan Helfman
eb18b6020d
File renaming works. Unit tests still pending.
...
File deleting implemented. Testing and unit tests still pending.
Now releasing session lock at top of download() to prevent session deadlocks.
2008-02-20 23:25:13 +00:00
Dan Helfman
fd0e91ea39
Implemented quota enforcement when uploading a file. This occurs in two places:
...
1. In progress(), around the time when the file starts uploading. This causes
an upload that's too large to bail before the whole file uploads, but the
quota calculation is only an estimate and relies on the client actually
calling progress().
2. In upload(), when the file finishes uploading. This quota calculation is
exact, but only happens after the entire upload completes.
2008-02-20 20:21:54 +00:00
Dan Helfman
3d5baa1e24
* Quota storage calculation now takes uploaded files into account.
...
* controller.Files.upload() now updates user quota storage.
* When a file is uploaded, the new storage bytes count is returned to the client and displayed.
2008-02-20 00:57:10 +00:00
Dan Helfman
f6c5071099
Moved HTML streaming progress bar code into view/ where it belongs.
2008-02-19 21:27:14 +00:00
Dan Helfman
8443f7e5cb
Once an upload has started, you can no longer close the Upload_pulldown by
...
clicking somewhere else. You have to click "cancel". This is to prevent
accidental upload cancellations.
2008-02-19 20:48:43 +00:00
Dan Helfman
a34ffe2dc6
controller.Files.upload() now removes file data from disk upon an aborted upload.
...
Wiki.js Upload_pulldown() now has an update_position() method that's used when the pulldown is already open.
2008-02-19 20:40:19 +00:00
Dan Helfman
ebf123d052
Now you can close an upload / file link pulldown and end a file link.
2008-02-19 20:25:35 +00:00
Dan Helfman
b80ad248f9
Fixed to make progress bar and download link work properly in IE 6 and 7.
2008-02-18 23:44:17 +00:00
Dan Helfman
b543121767
Now Content-Type header is saved upon upload and sent upon download.
2008-02-18 20:19:36 +00:00
Dan Helfman
731dc52623
More work on file uploading. Unit tests need to be fixed.
2008-02-18 20:08:07 +00:00
Dan Helfman
1398e89f96
Wrote initial unit tests for new Files controller. A few more still needed.
2008-02-06 01:34:12 +00:00
Dan Helfman
90c83ad1e5
New File_link_pulldown, not yet complete.
2008-02-05 19:45:11 +00:00
Dan Helfman
04f86f05a6
Rewrote controller.Files.upload_file() not to use a CherryPy-2.1-style file upload filter.
...
Now releasing session lock before streaming the file to prevent session deadlock in the event of a cancelled upload.
2008-02-04 20:06:02 +00:00
Dan Helfman
362a125b1b
Working "cancel" button during upload.
2008-02-01 22:44:01 +00:00
Dan Helfman
e56503903b
Factored out file upload methods from Notebooks to new Files controller.
...
Changed file link insertion code to reuse existing link creation code.
2008-02-01 19:17:10 +00:00
Dan Helfman
0cf2b5bda7
Initial work on UI and controller for file uploading:
...
* new toolbar button for attaching a file
* button opens new Upload_pulldown() for uploading a file
* began controller.Notebooks.upload_file() to process the upload
2008-01-31 21:52:32 +00:00
Dan Helfman
ffd2d15175
Now, if you delete a notebook and the only remaining notebook is read-only,
...
then a new read-write notebook is created for you automatically. This fixes a
bug where you could delete a notebook and have only a read-only notebook
remaining, thereby having no way to add a new notebook.
2008-01-24 22:02:02 +00:00
Dan Helfman
4fd44700e1
Now tracking conversions for subscriptions.
...
Notes in the trash can no longer be edited. They must be undeleted first.
2008-01-22 20:29:29 +00:00
Dan Helfman
c82832e23a
Upgrade page should not be cached.
2008-01-15 09:43:21 +00:00
Dan Helfman
76d5f48fa2
Wrote unit tests for controller.Users.paypal_notify() and thanks() methods.
...
Changed some wording on the thank you page.
2008-01-15 00:36:19 +00:00
Dan Helfman
095df38e96
Added docstring to paypal_notify().
...
Now ignoring refunds.
Lowered retry timeout.
2008-01-12 04:38:56 +00:00
Dan Helfman
f6538ad3a5
First pass at "thank you" page (and related processing/error pages) is complete.
2008-01-11 22:55:04 +00:00
Dan Helfman
ae6a501117
Basic paypal integration working. Still need to do thank-you page and more testing.
2008-01-11 01:55:50 +00:00
Dan Helfman
7d2e2e4de2
Added a paypal unsubscribe button. Also added a paypal banner image.
2008-01-10 23:15:37 +00:00
Dan Helfman
d0362a3ad1
Upgrade page now tells you what rate plan you're at.
2008-01-10 21:11:45 +00:00
Dan Helfman
8f00cceb94
Made upgrade page dynamically generated on the server instead of static html.
...
This allows things like only displaying subscription buttons if you're logged in.
2008-01-10 08:33:19 +00:00
Dan Helfman
17b7dfc74e
If the user is logged in and hits the front page of the site with an HTTP
...
request that has no referrer, then redirect to the user's first notebook.
2008-01-08 09:45:05 +00:00
Dan Helfman
7bdc228d09
A user can now revoke their own access. Protecting users from the own
...
stupidity proved too complex and fragile. So now they have the full power to
shoot themselves in the foot.
A user can no longer, however, redeem an invite that they send to themself.
2008-01-06 21:59:22 +00:00
Dan Helfman
2bcbc17172
Feature to preview notebook as viewer or collaborator, so you can see what it
...
will look like to people you share it with.
Hopefully fixed broken demo conversion detection.
2008-01-06 00:12:18 +00:00
Dan Helfman
980ad74e79
When redirected to a note in the main notebook as a result of accessing, for
...
instance, the "/upgrade" URL, your no longer appear to get logged out.
2008-01-05 00:42:50 +00:00
Dan Helfman
9fb0951c16
Unit test for one user saving a note that was created by a different user.
2008-01-04 22:58:20 +00:00
Dan Helfman
5520fe5892
* make a User_revision object containing a revision timestamp, user_id, username
...
* 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
2008-01-04 04:45:43 +00:00
Dan Helfman
a354eadcbb
When saving a model.Notebook or model.Note to the database, set the user_id field based on the current user.
2008-01-01 01:44:54 +00:00
Dan Helfman
d0d87731d2
* Preventing a user from revoking their own access.
...
* More unit tests for revoking access.
2007-12-30 01:20:38 +00:00
Dan Helfman
05876e2d7e
Another unit test for sending invites.
2007-12-29 20:00:42 +00:00
Dan Helfman
bb1bbb26e1
Unit tests for controller.Users.redeem_invite().
2007-12-28 06:36:57 +00:00
Dan Helfman
f00809955c
* Users.signup(), Users.login(), and Root.default() now support optional invite_id parameter.
...
* Modified Wiki.js to include invite_id parameter when necessary.
* Increased storage quota (and price) for premium rate plan.
* Added a note displayed when redeeming an invite, with links to signup and login.
2007-12-27 22:16:47 +00:00
Dan Helfman
8372b03373
Began work on invite redeeming.
2007-12-18 00:05:13 +00:00
Dan Helfman
4a5aeaed98
Implemented server-side portion of revoke_invite(), so now the UI for revoking invites functions properly.
2007-12-14 01:53:12 +00:00
Dan Helfman
f9b4d41a15
model.Invite.sql_load_similar() should not require from_user_id to be the same.
...
This way, when there are multiple notebook owners, they can get each others' similar invites.
2007-12-13 23:17:24 +00:00
Dan Helfman
36c5ff5b08
Display of current invites now updates when you add new invites.
...
This means that controller.Users.send_invites() now returns a list of current invites.
Added a "new!" to the share link.
2007-12-13 20:26:32 +00:00
Dan Helfman
05279d2c8e
Only owners of a notebook should get a list of its invites.
2007-12-12 06:15:15 +00:00
Dan Helfman
225167035d
* model.Invite now has a to_dict() method, like other model classes do.
...
* Initial invites are now returned through Main_page() and displayed (but not
yet updated) within the "share this notebook" note.
2007-12-12 00:52:34 +00:00
Dan Helfman
a4a6667642
Demo accounts cannot share their notebook anymore (but free accounts can).
2007-12-11 06:28:56 +00:00
Dan Helfman
52c111895a
Non-paying users can now invite people to their notebook, but only as viewers.
...
Paying users can invite them as viewers, collaborators, or owners.
2007-12-11 02:58:31 +00:00
Dan Helfman
5554b1df17
* Started a static upgrade HTML file with rate plans.
...
* Fixed Invite.sql_update() to have SQL params in proper order.
* Fixed bug where email addresses containing "-" were considered invalid.
* Made UI for inviting other people to your notebook.
* Tweaked the rate plans and added a new one.
2007-12-11 01:15:03 +00:00
Dan Helfman
a615f65d29
Made send_invites() update any similar invites that have already been sent.
2007-12-06 22:05:00 +00:00
Dan Helfman
32fd09b3f7
* Implemented controller.Users.send_invites().
...
* Added some SQL indices to invite table.
2007-12-06 01:32:20 +00:00
Dan Helfman
1cb12f6ae4
Making various notebook/user functions support the new "owner" access flag.
2007-12-04 21:28:03 +00:00
Dan Helfman
af3bf3c51c
Improving error reporting and completing 1.0.2.
2007-11-28 19:17:13 +00:00
Dan Helfman
0152b49475
Refactored the way note summaries are created in the link pulldown window.
2007-11-27 21:28:25 +00:00
Dan Helfman
45f94aa188
Deleting a notebook forever now updates the user's storage usage accordingly.
2007-11-19 22:03:04 +00:00
Dan Helfman
bffe9e2f3b
Exclude deleted notebooks in various places.
2007-11-17 23:57:30 +00:00
Dan Helfman
517e4d4925
Add strongly expire to default().
2007-11-17 23:45:18 +00:00
Dan Helfman
eec5ef6411
Implemented delete forever for notebooks. And unit tests!
2007-11-17 23:29:22 +00:00
Dan Helfman
7bd83199a1
Almost done with notebook deletion/undeletion. Just need to implement delete forever.
2007-11-17 22:55:13 +00:00
Dan Helfman
cdd971780e
Began work on notebook deletion and subsequent undo/undeletion.
...
Changed schema slightly to support this.
Added a schema delta file and wrote an UPGRADE doc with info on how to upgrade schemas.
2007-11-17 04:21:48 +00:00
Dan Helfman
fc2ab3800b
Fixing broken unit tests due to rename change.
2007-11-16 00:35:24 +00:00
Dan Helfman
c1b4a58f65
Adding a new notebook now puts you directly into renaming it.
2007-11-15 23:46:30 +00:00
Dan Helfman
3b2462eff3
Not allowing "trash" as a new name when you rename a notebook.
...
Not allowing renaming of the actual trash notebook.
Not showing "add new notebook" link when anonymous user.
2007-11-15 22:55:57 +00:00
Dan Helfman
b22c784d39
Can now create and rename notebooks. Still need to implement deletion and some other niceties.
2007-11-15 01:30:45 +00:00
Dan Helfman
ebd427d667
Make privacy policy accessible from sane URL.
2007-11-13 00:59:19 +00:00
Dan Helfman
c31856b40b
Added some code to support Google's conversion tracking.
2007-11-12 10:51:31 +00:00
Dan Helfman
f2721be076
Basic rss feed for blog.
2007-11-10 03:57:27 +00:00
Dan Helfman
44a1cb79c2
Added basic multipage navigation to blog.
...
Made name of notebook link at the top of the page better for "special" Luminotes notebooks.
2007-11-10 01:46:56 +00:00
Dan Helfman
3b7a5422ac
Fixing blog and guide not showing user correctly.
2007-11-07 00:23:58 +00:00
Dan Helfman
7552157865
Handy way to load the user's guide.
2007-11-06 22:42:53 +00:00
Dan Helfman
2831d56db5
Email address is now completely optional during signup.
2007-11-04 19:09:48 +00:00
Dan Helfman
88dd396feb
Fix for: I get "that note is in the trash" error when clicking on an old
...
revision of a note that's not in the trash. This is because that particular
revision of the note represents when the note used to be in the trash (because
it was previously deleted).
2007-11-03 08:15:39 +00:00
Dan Helfman
37e886f27c
Revamped searching to use PostgreSQL's tsearch2 full-text searching.
2007-11-02 20:19:53 +00:00
Dan Helfman
f7de4c9e94
Now emailing tracebacks to support email address.
2007-10-31 23:33:09 +00:00
Dan Helfman
ad58956f34
Some early work in support of a reverse chronological order view of a notebook, useful for a blog.
2007-10-30 23:05:46 +00:00
Dan Helfman
84283f524e
If you click on a link for a note that's in the trash, you just get a message telling you so, with a button to undelete the note.
2007-10-22 23:17:56 +00:00
Dan Helfman
28835e5850
Strip newlines before comparing contents of a note to see if it's been altered.
2007-10-22 21:20:20 +00:00
Dan Helfman
27a6a06c91
Display a realtime count of total notes next to the "all notes" link.
2007-10-19 20:24:16 +00:00
Dan Helfman
d7ee122efb
* Altered password reset URL path to start with /r/
...
* Made notes in the main notebook accessable by title at root URLs. So you can get to the "sign up" note at the /sign_up URL.
2007-10-17 07:53:42 +00:00
Dan Helfman
218fe3995c
Bug fix. Repro: Try making a link to a note that doesn't exist yet, then click
...
on the link. Delete the new note. Then go back to the first message, and click
after the link, so the link's pulldown shows. You'll get this error message:
"Sorry, you don't have access to do that."
The fix was to look for the cases when the deleted note is either in the trash
or deleted "forever", and then return None for the note value (instead of just
raising an Access_error).
2007-10-17 01:47:46 +00:00
Dan Helfman
613ee8a217
Completely revamped the way the main page and the notes on it are loaded by
...
the client. Previously, the main page would load as mostly blank, then the
client would immediately issue two async json calls to load the user and
notebook data, including startup notes. Now, the main page loads with the note
data actually as part of the page. If JavaScript is off, then you see all the
notes displayed, including startup notes and any designated note. If
JavaScript is on, then those "static" notes are instantly hidden and their
contents are loaded into iframes for editing/display.
The real upshot is that Luminotes in read-only mode is now more useful when
JavaScript is off, and actually displays notes and their contents. This is
very useful for search engine indexing.
Updated all Python unit tests. Still have to get to JavaScript unit tests,
what few their are.
2007-10-16 21:37:12 +00:00
Dan Helfman
322134cba6
Password reset now stores and uses a revision timestamp, which helps when testing for expiry.
2007-10-11 20:18:20 +00:00
Dan Helfman
bbebad528e
Renaming new_model to model, now that the old bsddb model is out of the way.
2007-10-11 19:49:00 +00:00
Dan Helfman
17ad869635
Old model no longer needed now that all databases are convered to PostgreSQL.
2007-10-11 19:45:46 +00:00
Dan Helfman
eb3983af9c
Oops.. Debugging print was left in.
2007-10-11 11:18:51 +00:00
Dan Helfman
b71b12fe50
Converting strings pulled out of the database from utf8 to unicode.
2007-10-11 11:06:50 +00:00