X-Git-Url: https://git.mdrn.pl/redakcja.git/blobdiff_plain/5780495e13ec2d55bc2dee96dec372a9ea395462..9249e6ddc35e7cc7077fa5035fbc27397fbb70a9:/apps/wiki/helpers.py?ds=sidebyside diff --git a/apps/wiki/helpers.py b/apps/wiki/helpers.py index 2cdb916e..fe4b3b86 100644 --- a/apps/wiki/helpers.py +++ b/apps/wiki/helpers.py @@ -62,19 +62,19 @@ def ajax_require_permission(permission): import collections def recursive_groupby(iterable): - """ + """ # >>> recursive_groupby([1,2,3,4,5]) # [1, 2, 3, 4, 5] - + >>> recursive_groupby([[1]]) [1] - + >>> recursive_groupby([('a', 1),('a', 2), 3, ('b', 4), 5]) ['a', [1, 2], 3, 'b', [4], 5] - + >>> recursive_groupby([('a', 'x', 1),('a', 'x', 2), ('a', 'x', 3)]) ['a', ['x', [1, 2, 3]]] - + """ def _generator(iterator): @@ -129,3 +129,42 @@ def recursive_groupby(iterable): grouper = None return list(_generator(iterable)) + + +def active_tab(tab): + """ + View decorator, which puts tab info on a request. + """ + def wrapper(f): + @wraps(f) + def wrapped(request, *args, **kwargs): + request.wiki_active_tab = tab + return f(request, *args, **kwargs) + return wrapped + return wrapper + + +class BookChunks(object): + """ + Yields the chunks of a book. + """ + + def __init__(self, book): + self.book = book + + @property + def chunks(self): + return self.book.chunk_set.all() + + +class ChoiceChunks(BookChunks): + """ + Associates the given chunks iterable for a book. + """ + + chunks = None + + def __init__(self, book, chunks): + self.book = book + self.chunks = chunks +