From 4855ac0c7e04ff3f7b9c8c34f1809c5cb07f7292 Mon Sep 17 00:00:00 2001 From: Dan Helfman Date: Mon, 17 Nov 2008 23:42:29 -0800 Subject: [PATCH] New note_count member on model.Notebook. --- model/Notebook.py | 13 ++++++++++--- model/User.py | 6 +++++- model/test/Test_notebook.py | 25 +++++++++++++++++++++++++ 3 files changed, 40 insertions(+), 4 deletions(-) diff --git a/model/Notebook.py b/model/Notebook.py index 1d0dcda..420bf40 100644 --- a/model/Notebook.py +++ b/model/Notebook.py @@ -17,7 +17,7 @@ class Notebook( Persistent ): READ_WRITE_FOR_OWN_NOTES = 2 # user can only edit their own notes, not notes created by others def __init__( self, object_id, revision = None, name = None, trash_id = None, deleted = False, - user_id = None, read_write = None, owner = True, rank = None, own_notes_only = False ): + user_id = None, read_write = None, owner = True, rank = None, own_notes_only = False, note_count = None ): """ Create a new notebook with the given id and name. @@ -42,6 +42,8 @@ class Notebook( Persistent ): @param rank: indicates numeric ordering of this note in relation to other notebooks @type own_notes_only: bool or NoneType @param own_notes_only: True makes read_write be READ_WRITE_FOR_OWN_NOTES (optional, defaults to False) + @type note_count: int or NoneType + @param note_count: a count of the number of notes within this notebook (optional) @rtype: Notebook @return: newly constructed notebook """ @@ -63,10 +65,11 @@ class Notebook( Persistent ): self.__read_write = read_write self.__owner = owner self.__rank = rank + self.__note_count = note_count self.__tags = [] @staticmethod - def create( object_id, name = None, trash_id = None, deleted = False, user_id = None, read_write = None, owner = True, rank = None, own_notes_only = False ): + def create( object_id, name = None, trash_id = None, deleted = False, user_id = None, read_write = None, owner = True, rank = None, own_notes_only = False, note_count = None ): """ Convenience constructor for creating a new notebook. @@ -89,10 +92,12 @@ class Notebook( Persistent ): @param rank: indicates numeric ordering of this note in relation to other notebooks @type own_notes_only: bool or NoneType @param own_notes_only: True makes read_write be READ_WRITE_FOR_OWN_NOTES (optional, defaults to False) + @type note_count: int or NoneType + @param note_count: a count of the number of notes within this notebook (optional) @rtype: Notebook @return: newly constructed notebook """ - return Notebook( object_id, name = name, trash_id = trash_id, user_id = user_id, read_write = read_write, owner = owner, rank = rank, own_notes_only = own_notes_only ) + return Notebook( object_id, name = name, trash_id = trash_id, user_id = user_id, read_write = read_write, owner = owner, rank = rank, own_notes_only = own_notes_only, note_count = note_count ) @staticmethod def sql_load( object_id, revision = None ): @@ -340,6 +345,7 @@ class Notebook( Persistent ): owner = self.__owner, deleted = self.__deleted, user_id = self.__user_id, + note_count = self.__note_count, tags = self.__tags, ) ) @@ -390,4 +396,5 @@ class Notebook( Persistent ): deleted = property( lambda self: self.__deleted, __set_deleted ) user_id = property( lambda self: self.__user_id, __set_user_id ) rank = property( lambda self: self.__rank, __set_rank ) + note_count = property( lambda self: self.__note_count ) tags = property( lambda self: self.__tags, __set_tags ) diff --git a/model/User.py b/model/User.py index 2c3c4b4..f97d0be 100644 --- a/model/User.py +++ b/model/User.py @@ -197,7 +197,11 @@ class User( Persistent ): return \ """ select - notebook_current.*, user_notebook.read_write, user_notebook.owner, user_notebook.rank, user_notebook.own_notes_only + notebook_current.*, user_notebook.read_write, user_notebook.owner, user_notebook.rank, user_notebook.own_notes_only, + ( select count( note_current.id ) + from note_current + where note_current.notebook_id = notebook_current.id and + note_current.deleted_from_id is null ) from user_notebook, notebook_current%s where diff --git a/model/test/Test_notebook.py b/model/test/Test_notebook.py index c1a5ebb..57a240f 100644 --- a/model/test/Test_notebook.py +++ b/model/test/Test_notebook.py @@ -31,6 +31,7 @@ class Test_notebook( object ): assert self.notebook.owner == self.owner assert self.notebook.rank == self.rank assert self.notebook.tags == [] + assert self.notebook.note_count == None assert self.trash.object_id == self.trash_id assert datetime.now( tz = utc ) - self.trash.revision < self.delta @@ -42,6 +43,7 @@ class Test_notebook( object ): assert self.trash.owner == True assert self.trash.rank == None assert self.trash.tags == [] + assert self.trash.note_count == None def test_create_read_write_true( self ): notebook = Notebook.create( self.object_id, self.name, trash_id = None, deleted = False, user_id = self.user_id, read_write = True, owner = self.owner, rank = self.rank ) @@ -56,6 +58,7 @@ class Test_notebook( object ): assert notebook.owner == self.owner assert notebook.rank == self.rank assert notebook.tags == [] + assert notebook.note_count == None def test_create_read_write_false( self ): notebook = Notebook.create( self.object_id, self.name, trash_id = None, deleted = False, user_id = self.user_id, read_write = False, owner = self.owner, rank = self.rank ) @@ -70,6 +73,7 @@ class Test_notebook( object ): assert notebook.owner == self.owner assert notebook.rank == self.rank assert notebook.tags == [] + assert notebook.note_count == None def test_create_read_write_none( self ): notebook = Notebook.create( self.object_id, self.name, trash_id = None, deleted = False, user_id = self.user_id, read_write = None, owner = self.owner, rank = self.rank ) @@ -84,6 +88,7 @@ class Test_notebook( object ): assert notebook.owner == self.owner assert notebook.rank == self.rank assert notebook.tags == [] + assert notebook.note_count == None def test_create_read_write_true_and_own_notes_only_true( self ): notebook = Notebook.create( self.object_id, self.name, trash_id = None, deleted = False, user_id = self.user_id, read_write = True, owner = self.owner, rank = self.rank, own_notes_only = True ) @@ -98,6 +103,7 @@ class Test_notebook( object ): assert notebook.owner == self.owner assert notebook.rank == self.rank assert notebook.tags == [] + assert notebook.note_count == None def test_create_read_write_false_and_own_notes_only_true( self ): notebook = Notebook.create( self.object_id, self.name, trash_id = None, deleted = False, user_id = self.user_id, read_write = False, owner = self.owner, rank = self.rank, own_notes_only = True ) @@ -112,6 +118,7 @@ class Test_notebook( object ): assert notebook.owner == self.owner assert notebook.rank == self.rank assert notebook.tags == [] + assert notebook.note_count == None def test_create_read_write_false_and_own_notes_only_false( self ): notebook = Notebook.create( self.object_id, self.name, trash_id = None, deleted = False, user_id = self.user_id, read_write = False, owner = self.owner, rank = self.rank, own_notes_only = False ) @@ -126,6 +133,7 @@ class Test_notebook( object ): assert notebook.owner == self.owner assert notebook.rank == self.rank assert notebook.tags == [] + assert notebook.note_count == None def test_create_read_write_true_and_own_notes_only_false( self ): notebook = Notebook.create( self.object_id, self.name, trash_id = None, deleted = False, user_id = self.user_id, read_write = True, owner = self.owner, rank = self.rank, own_notes_only = False ) @@ -140,6 +148,22 @@ class Test_notebook( object ): assert notebook.owner == self.owner assert notebook.rank == self.rank assert notebook.tags == [] + assert notebook.note_count == None + + def test_create_with_note_count( self ): + notebook = Notebook.create( self.object_id, self.name, trash_id = None, deleted = False, user_id = self.user_id, read_write = True, owner = self.owner, rank = self.rank, note_count = 7 ) + + assert notebook.object_id == self.object_id + assert datetime.now( tz = utc ) - notebook.revision < self.delta + assert notebook.name == self.name + assert notebook.trash_id == None + assert notebook.deleted == False + assert notebook.user_id == self.user_id + assert notebook.read_write == Notebook.READ_WRITE + assert notebook.owner == self.owner + assert notebook.rank == self.rank + assert notebook.tags == [] + assert notebook.note_count == 7 def test_set_name( self ): new_name = u"my new notebook" @@ -213,6 +237,7 @@ class Test_notebook( object ): assert d.get( "read_write" ) == self.read_write assert d.get( "deleted" ) == self.notebook.deleted assert d.get( "user_id" ) == self.notebook.user_id + assert d.get( "note_count" ) == self.notebook.note_count assert d.get( "object_id" ) == self.notebook.object_id assert datetime.now( tz = utc ) - d.get( "revision" ) < self.delta assert d.get( "tags" ) == []