# HG changeset patch # User Filip de Waard # Date 1261214882 -3600 # Node ID 2e9c39c213fd9fc019c2c59ac0808c2ec46c4313 # Parent 8c0298e3a235149977ccc439a8cfa81335eacb62 added updated field to model.User diff -r 8c0298e3a235149977ccc439a8cfa81335eacb62 -r 2e9c39c213fd9fc019c2c59ac0808c2ec46c4313 vix/model/__init__.py --- a/vix/model/__init__.py Fri Dec 18 16:16:46 2009 +0100 +++ b/vix/model/__init__.py Sat Dec 19 10:28:02 2009 +0100 @@ -53,6 +53,7 @@ type = schema.TextField(default=u"user") created = schema.DateTimeField(default=datetime.utcnow) + updated = schema.DateTimeField() id = username = schema.TextField() password = schema.TextField() @@ -74,8 +75,12 @@ def store(self, db): """Validates the document and calls schema.Document.store(db).""" + #raise ValueError if something is wrong self.validate() + #refresh self.updated stamp + self.updated = datetime.utcnow() + return super(User, self).store(db) def get_permissions(self, database, feed): diff -r 8c0298e3a235149977ccc439a8cfa81335eacb62 -r 2e9c39c213fd9fc019c2c59ac0808c2ec46c4313 vix/tests/test_models.py --- a/vix/tests/test_models.py Fri Dec 18 16:16:46 2009 +0100 +++ b/vix/tests/test_models.py Sat Dec 19 10:28:02 2009 +0100 @@ -19,6 +19,7 @@ """ +import time from datetime import datetime from unittest import TestCase @@ -65,6 +66,8 @@ user = model.User() user = user.load(self.db, u'fmw') + assert user.id == user.username + #check if the basic values contain what we expect: self.assertEquals(user.id, u'fmw') self.assertEquals(user.mail, u'fmw@vix.io') @@ -72,13 +75,31 @@ self.assertEquals(user.password, u'$2a$10$zovtWSOSm0PTsiuovPOxC.uEJxsEzVf0AlswKvgT/jtxMqf44.Kpi') - assert user.id == user.username - #max difference between current time and .created is μs 9,999,999 μs - timedelta = datetime.utcnow() - user.created + now = datetime.utcnow() + timedelta = now - user.created self.assertTrue(timedelta.seconds < 1) - #add updated field + #and the same for .updated + timedelta = now - user.updated + self.assertTrue(timedelta.seconds < 1) + + #quick nap, needs to be 1 second because that is the highest + #precision that CouchDB-Python stores DateTimeFields in + time.sleep(1) + + #reload user + user.store(self.db) + user = model.User.load(self.db, u'fmw') + + #test if .updated got refreshed + timedelta = datetime.utcnow() - user.updated + self.assertTrue(timedelta.seconds < 1) + + #make sure .created doesn't get updated + timedelta = now - user.created + self.assertTrue(timedelta.seconds < 1) + #add profile #duplication