# HG changeset patch # User Filip de Waard # Date 1277047258 -7200 # Node ID 1812d4e7c11855181faf2bbd79befe4a8d8e98f5 # Parent d8647e077ada292ed93addac52d56b9e8008e78b added slug normalization to model.Entry and model.Feed diff -r d8647e077ada292ed93addac52d56b9e8008e78b -r 1812d4e7c11855181faf2bbd79befe4a8d8e98f5 vix/model/__init__.py --- a/vix/model/__init__.py Wed May 12 07:01:18 2010 +0200 +++ b/vix/model/__init__.py Sun Jun 20 17:20:58 2010 +0200 @@ -271,7 +271,9 @@ """ self.published = datetime.utcnow() - self.slug = u'/feeds/%s' % (slug_suggestion or self.title) + + slug = slug_suggestion or self.title + self.slug = u'/feeds/%s' % (util.normalize_local_identifier(slug)) #prevent duplicate ID's while len(db.view('by_slug/by_slug', key=self.slug)) > 0: @@ -386,9 +388,11 @@ """ self.published = datetime.utcnow() + + slug = slug_suggestion or self.title self.slug = u'/%04d/%02d/%02d/%s' % ( self.published.year, self.published.month, self.published.day, - slug_suggestion or self.title) + util.normalize_local_identifier(slug)) #prevent duplicate ID's while len(db.view('by_slug/by_slug', key=self.slug)) > 0: diff -r d8647e077ada292ed93addac52d56b9e8008e78b -r 1812d4e7c11855181faf2bbd79befe4a8d8e98f5 vix/tests/test_models.py --- a/vix/tests/test_models.py Wed May 12 07:01:18 2010 +0200 +++ b/vix/tests/test_models.py Sun Jun 20 17:20:58 2010 +0200 @@ -353,8 +353,24 @@ #TODO: assure that Feed.store throws exception w/o published #TODO: assure that exception is raised w/o required elements - #TODO: create feed w/o slug suggestion - #TODO: assure slug_suggestion is normalized + + #create feed w/o slug suggestion + feed = model.Feed(title=u'Hello, Cruel World!') + feed.create(model.db, authority=u'vix.io') + + self.assertEquals(feed.slug, u'/feeds/hello-cruel-world') + self.assertEquals(feed.id, + u'tag:vix.io,2010-04-29:/feeds/hello-cruel-world') + + #assure slug_suggestion is normalized + feed = model.Feed(title=u'Hello, World!') + feed.create(model.db, slug_suggestion=u'Hello, World!', + authority=u'vix.io') + + self.assertEquals(feed.slug, u'/feeds/hello-world') + self.assertEquals(feed.id, + u'tag:vix.io,2010-04-29:/feeds/hello-world') + #TODO: add following: #categories (term, scheme, label) #authors (name, uri, email) @@ -433,7 +449,7 @@ authority=u'vix.io') entry.create(model.db, - slug_suggestion=u'announcing-vix-prototype', + slug_suggestion=u'Announcing Vix Prototype!', authority=u'vix.io') self.assertEquals(blog_feed.updated,