add DiffusionManager, use it

This commit is contained in:
bkfox
2016-07-18 16:27:09 +02:00
parent d3e05211c3
commit 6b7255112d
6 changed files with 108 additions and 71 deletions

View File

@ -147,7 +147,12 @@ class Post (models.Model, Routable):
)
title = models.CharField (
_('title'),
max_length = 64,
)
subtitle = models.CharField (
_('subtitle'),
max_length = 128,
blank = True, null = True,
)
content = models.TextField (
_('description'),
@ -192,6 +197,8 @@ class Post (models.Model, Routable):
"""
Return an url to the post detail view.
"""
if not self.pk:
return ''
return self.reverse(
routes.DetailRoute,
pk = self.pk, slug = slugify(self.title)
@ -437,11 +444,6 @@ class RelatedPost (Post, metaclass = RelatedMeta):
note: bound values can be any value, not only Django field.
"""
defaults = None
"""
dict of `post_attr: value` that gives default value for the given
fields.
"""
post_to_rel = False
"""
update related object when the post is saved, using bindings

View File

@ -93,7 +93,7 @@ class DetailRoute(Route):
@classmethod
def get_object(cl, model, request, pk, **kwargs):
"""
* request is optional
* request: optional
"""
return model.objects.get(pk = int(pk))
@ -107,7 +107,7 @@ class AllRoute(Route):
@classmethod
def get_queryset(cl, model, request, **kwargs):
"""
* request is optional
* request: optional
"""
return model.objects.all()
@ -147,7 +147,7 @@ class ThreadRoute(Route):
@classmethod
def get_queryset(cl, model, request, thread_model, pk, **kwargs):
"""
* request is optional
* request: optional
"""
thread = cl.get_thread(model, thread_model, pk)
return model.get_siblings(thread_model = thread, thread_id = pk)
@ -176,15 +176,17 @@ class DateRoute(Route):
]
@classmethod
def get_queryset(cl, model, request, year, month, day, **kwargs):
def get_queryset(cl, model, request, year, month, day,
attr='date', **kwargs):
"""
* request is optional
* request: optional
* attr: name of the attribute to check the date against
"""
return model.objects.filter(
date__year = int(year),
date__month = int(month),
date__day = int(day),
)
return model.objects.filter(**{
attr + '__year': int(year),
attr + '__month': int(month),
attr + '__day': int(day)
})
@classmethod
def get_title(cl, model, request, year, month, day, **kwargs):
@ -208,7 +210,7 @@ class SearchRoute(Route):
@classmethod
def get_queryset(cl, model, request, q = None, **kwargs):
"""
* request is required if q is None
* request: required if q is None
"""
q = request.GET.get('q') or q or ''
qs = None

View File

@ -285,6 +285,7 @@ class ListItem:
behaves like it.
"""
title = None
subtitle = None
content = None
author = None
date = None
@ -332,7 +333,8 @@ class List(Section):
"""
paginate_by = 4
fields = [ 'date', 'time', 'image', 'title', 'content', 'info', 'actions' ]
fields = [ 'date', 'time', 'image', 'title', 'subtitle', 'content', 'info',
'actions' ]
"""
Fields that must be rendered.
"""