From: Joseph Spiros Date: Mon, 9 Aug 2010 09:06:29 +0000 (-0400) Subject: Merge branch 'master' of git://github.com/kgodey/philo X-Git-Tag: philo-0.9~44 X-Git-Url: http://git.ithinksw.org/philo.git/commitdiff_plain/a66152cd03df94d103944255b836ed6ebed6ed15?hp=82e22de23b182353e35aa4e2fde0c08f4df5653f Merge branch 'master' of git://github.com/kgodey/philo * 'master' of git://github.com/kgodey/philo: Added archives support to get_subpath in penfield's BlogView. Registered Node in register_value_model. Added "entry_dates" method to model to provide distinct yearly, monthly and daily dates for posts. --- diff --git a/contrib/penfield/models.py b/contrib/penfield/models.py index eede5a4..c4cb49e 100644 --- a/contrib/penfield/models.py +++ b/contrib/penfield/models.py @@ -15,6 +15,11 @@ class Blog(Entity, Titled): def entry_tags(self): """ Returns a QuerySet of Tags that are used on any entries in this blog. """ return Tag.objects.filter(blogentries__blog=self).distinct() + + @property + def entry_dates(self): + dates = {'year': self.entries.dates('date', 'year', order='DESC'), 'month': self.entries.dates('date', 'month', order='DESC'), 'day': self.entries.dates('date', 'day', order='DESC')} + return dates register_value_model(Blog) @@ -75,6 +80,17 @@ class BlogView(MultiView): elif isinstance(obj, Tag): if obj in self.blog.entry_tags: return reverse(self.tag_view, urlconf=self, kwargs={'tag_slugs': obj.slug}) + elif isinstance(obj, (str, unicode)): + split_obj = obj.split(':') + if len(split_obj) > 1: + entry_archive_view_args = {} + if split_obj[0].lower() == 'archives': + entry_archive_view_args.update({'year': str(int(split_obj[1])).zfill(4)}) + if len(split_obj) > 2: + entry_archive_view_args.update({'month': str(int(split_obj[2])).zfill(2)}) + if len(split_obj) > 3: + entry_archive_view_args.update({'day': str(int(split_obj[3])).zfill(2)}) + return reverse(self.entry_archive_view, urlconf=self, kwargs=entry_archive_view_args) raise ViewCanNotProvideSubpath @property diff --git a/models/nodes.py b/models/nodes.py index 4fa4935..f84565d 100644 --- a/models/nodes.py +++ b/models/nodes.py @@ -7,7 +7,7 @@ from django.core.servers.basehttp import FileWrapper from django.core.urlresolvers import resolve, clear_url_caches from django.template import add_to_builtins as register_templatetags from inspect import getargspec -from philo.models.base import TreeEntity, Entity, QuerySetMapper +from philo.models.base import TreeEntity, Entity, QuerySetMapper, register_value_model from philo.utils import ContentTypeSubclassLimiter from philo.validators import RedirectValidator from philo.exceptions import ViewDoesNotProvideSubpaths @@ -122,4 +122,5 @@ class File(View): return self.file.name -register_templatetags('philo.templatetags.nodes') \ No newline at end of file +register_templatetags('philo.templatetags.nodes') +register_value_model(Node) \ No newline at end of file