# HG changeset patch # User Filip de Waard # Date 1272588639 -7200 # Node ID c4fea38cbeb3a3712d5ce007896afef72315e735 # Parent ed7f680bee10b82c784dddf8b075b548a3070162 Refactored model.Feed diff -r ed7f680bee10b82c784dddf8b075b548a3070162 -r c4fea38cbeb3a3712d5ce007896afef72315e735 vix/model/__init__.py --- a/vix/model/__init__.py Fri Apr 30 02:19:43 2010 +0200 +++ b/vix/model/__init__.py Fri Apr 30 02:50:39 2010 +0200 @@ -257,18 +257,19 @@ published = mapping.DateTimeField() updated = mapping.DateTimeField() - def __init__(self, authority, slug_suggestion=None, **values): + def create(self, db, authority, slug_suggestion=None): """ Creates the feed using the slug_suggestion value for the Atom ID. If the particular ID is already in use the slug is incremented. - + Also sets published DateTime stamp and slug value. + + :arg db: Database object. + :type db: couchdb.client.Database :arg authority: TagURI authority for the active site (e.g. vix.io) - :arg slug_suggestion: Desired identifier for the resource. + :arg slug_suggestion: Desired identifier of the resource. """ - super(Feed, self).__init__(**values) - self.published = datetime.utcnow() self.slug = u'/feeds/%s' % (slug_suggestion or self.title) @@ -280,6 +281,8 @@ authority_name=authority, date=self.published, specific=self.slug)) + + self.store(db) def store(self, db): """Stores the document with a fresh updated value.""" diff -r ed7f680bee10b82c784dddf8b075b548a3070162 -r c4fea38cbeb3a3712d5ce007896afef72315e735 vix/tests/test_models.py --- a/vix/tests/test_models.py Fri Apr 30 02:19:43 2010 +0200 +++ b/vix/tests/test_models.py Fri Apr 30 02:50:39 2010 +0200 @@ -307,7 +307,9 @@ datetime.datetime(2010, 4, 19, 11, 12, 5))) feed = model.Feed(title=u'Vix Weblog', - subtitle=u'Hic Sunt Dracones', + subtitle=u'Hic Sunt Dracones') + + feed.create(model.db, slug_suggestion=u'blog', authority=u'vix.io') @@ -316,9 +318,7 @@ self.assertEquals(feed.published, datetime.datetime( 2010, 4, 19, 11, 12, 5)) - self.assertEquals(feed.updated, None) - - feed.store(model.db) + self.assertEquals(feed.updated, feed.published) r.replace('vix.model.datetime', _datetime( datetime.datetime(2010, 4, 29, 19, 5, 30))) @@ -332,19 +332,21 @@ #test if duplicate ID's are avoided correctly f2 = model.Feed(title=u'Vix Weblog', - subtitle=u'Hic Sunt Dracones', + subtitle=u'Hic Sunt Dracones') + + f2.create(model.db, slug_suggestion=u'blog', authority=u'vix.io') - f2.store(model.db) self.assertEquals(f2.slug, u'/feeds/blog-2') self.assertEquals(f2.id, u'tag:vix.io,2010-04-29:/feeds/blog-2') f3 = model.Feed(title=u'Vix Weblog', - subtitle=u'Hic Sunt Dracones', + subtitle=u'Hic Sunt Dracones') + + f3.create(model.db, slug_suggestion=u'blog', authority=u'vix.io') - f3.store(model.db) self.assertEquals(f3.slug, u'/feeds/blog-3') self.assertEquals(f3.id, u'tag:vix.io,2010-04-29:/feeds/blog-3') diff -r ed7f680bee10b82c784dddf8b075b548a3070162 -r c4fea38cbeb3a3712d5ce007896afef72315e735 vix/tests/test_views.py --- a/vix/tests/test_views.py Fri Apr 30 02:19:43 2010 +0200 +++ b/vix/tests/test_views.py Fri Apr 30 02:50:39 2010 +0200 @@ -37,16 +37,18 @@ views.by_slug.sync(model.db) feed = model.Feed(title=u'Vix Weblog', - subtitle=u'Hic Sunt Dracones', + subtitle=u'Hic Sunt Dracones') + + feed.create(model.db, slug_suggestion=u'blog', authority=u'vix.io') - feed.store(model.db) feed = model.Feed(title=u'Vix Photos', - subtitle=u'Hic Sunt Dracones', + subtitle=u'Hic Sunt Dracones') + + feed.create(model.db, slug_suggestion=u'photos', authority=u'vix.io') - feed.store(model.db) all = model.db.view('by_slug/by_slug') blog = model.db.view('by_slug/by_slug', key='/feeds/blog')