django 1.3, comments on books, last activity log, some minor changes
[redakcja.git] / apps / wiki / helpers.py
index 2cdb916..fe4b3b8 100644 (file)
@@ -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
+