diff --git a/cms/models.py b/cms/models.py index 6db4fc4..a90c59f 100644 --- a/cms/models.py +++ b/cms/models.py @@ -144,6 +144,7 @@ class Post (models.Model, Routable): content = models.TextField ( _('description'), default = '', + blank = True, null = True, ) image = models.ImageField( blank = True, null = True, diff --git a/cms/sections.py b/cms/sections.py index abd164c..3cd06b9 100644 --- a/cms/sections.py +++ b/cms/sections.py @@ -317,6 +317,28 @@ class List(Section): return self.paginate_by and self.paginate_by < len(self.object_list) +class Similar(List): + """ + Section that uses tags to render similar objects of a given one. + Note that the list is not a queryset, but the sorted result of + taggit's similar_objects function. + """ + title = _('Similar publications') + models = None + """ + List of models allowed in the resulting list. If not set, all models + are available. + """ + + def get_object_list(self): + if not self.object: + return + + qs = self.object.tags.similar_objects() + qs.sort(key = lambda post: post.date, reverse=True) + return qs + + class Comments(List): """ Section used to render comment form and comments list. It renders the diff --git a/notes.md b/notes.md index eb808a5..6290fae 100644 --- a/notes.md +++ b/notes.md @@ -5,21 +5,17 @@ # TODO: - general: - timezone shit + - translation - programs: - - schedule: - - (old) schedule.to_string unused? commented - - write more tests - - sounds: - - check that a sound is available when uploading too - - one sound, one diffusion - -> sound_monitor - -> liquidsoap - -> tests: sound_monitor, liquidsoap (monitor) + - tests: + - sound_monitor - liquidsoap: - update rc's supervisor scripts - - check when a played sound has a temp blank + - tests: + - monitor + - check when a played sound has a temp blank - cms: - empty content -> empty string @@ -33,7 +29,6 @@ - admin cms - content management -> do we use a markup language? - sections: - - similar articles (using tags) - calendar - article list with the focus -> set html attribute based on values that are public