[snowy] Add 'latest-sync-revision' field to NotesHandler responses.
- From: Sanford Armstrong <sharm src gnome org>
- To: svn-commits-list gnome org
- Subject: [snowy] Add 'latest-sync-revision' field to NotesHandler responses.
- Date: Mon, 18 May 2009 02:57:18 -0400 (EDT)
commit b11e29eead4ea8df9e98ba560393c94d9603b0f5
Author: Sandy Armstrong <sanfordarmstrong gmail com>
Date: Sun May 17 23:47:23 2009 -0700
Add 'latest-sync-revision' field to NotesHandler responses.
---
api/handlers.py | 45 ++++++++++++++++++++++++++++++---------------
1 files changed, 30 insertions(+), 15 deletions(-)
diff --git a/api/handlers.py b/api/handlers.py
index 2e81bc2..6ebb6ff 100644
--- a/api/handlers.py
+++ b/api/handlers.py
@@ -60,7 +60,7 @@ class UserHandler(AnonymousBaseHandler):
'api-ref': reverse('note_api_index', kwargs=reverse_args),
'href': reverse('note_index', kwargs=reverse_args),
},
- 'latest-sync-revision' : Note.objects.filter(author=user).aggregate(Max('last_sync_rev'))['last_sync_rev__max']
+ 'latest-sync-revision' : get_latest_sync_rev(user)
# TODO: friends
}
@@ -77,22 +77,12 @@ class NotesHandler(BaseHandler):
if request.GET.has_key('since'):
notes=notes.filter(last_sync_rev__gt = int(request.GET['since']))
+ response = {'latest-sync-revision': get_latest_sync_rev(user)}
if request.GET.has_key('include_notes'):
- return {'notes': [describe_note(n) for n in notes] }
+ response['notes'] = [describe_note(n) for n in notes]
else:
- return {'notes': [{
- 'guid': n.guid,
- 'ref': {
- 'api-ref': reverse('note_api_detail', kwargs={
- 'username': n.author.username,
- 'note_id': n.pk,
- }),
- 'href': n.get_absolute_url(),
- },
- 'title': n.title,
- }
- for n in notes
- ]}
+ response['notes'] = [simple_describe_note(n) for n in notes]
+ return response
@catch_and_return(ObjectDoesNotExist, rc.NOT_HERE)
@catch_and_return(KeyError, rc.BAD_REQUEST)
@@ -120,6 +110,12 @@ class NotesHandler(BaseHandler):
# TODO: tags
note.save()
+ # TODO: Would like to be able to return this. Why does it break the update?
+ # Is it related to how the transaction is handled?
+ # Must we commit manually first?
+# return {'latest-sync-revision': get_latest_sync_rev(user),
+# 'notes': [simple_describe_note(n) for n in notes]}
+
# http://domain/api/1.0/user/notes/id
class NoteHandler(BaseHandler):
allow_methods = ('GET',)
@@ -149,3 +145,22 @@ def describe_note(note):
'last-sync-revision': note.last_sync_rev,
'tags': [t.name for t in note.tags.all()],
}
+
+def simple_describe_note(note):
+ return {
+ 'guid': note.guid,
+ 'ref': {
+ 'api-ref': reverse('note_api_detail', kwargs={
+ 'username': note.author.username,
+ 'note_id': note.pk,
+ }),
+ 'href': note.get_absolute_url(),
+ },
+ 'title': note.title
+ }
+
+def get_latest_sync_rev(user):
+ max_rev = Note.objects.filter(author=user).aggregate(Max('last_sync_rev'))['last_sync_rev__max']
+ if max_rev is None:
+ return -1
+ return max_rev
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]