+
+
+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
+