diff options
author | Aurélien Bompard <aurelien@bompard.org> | 2013-07-12 11:13:54 +0200 |
---|---|---|
committer | Aurélien Bompard <aurelien@bompard.org> | 2013-07-12 11:13:54 +0200 |
commit | 579bd91b14f8d2926f64aa6032b41145f90b46fe (patch) | |
tree | 4fb79092d0a278d2625a8807fdda06a5717b01be /hyperkitty/lib | |
parent | 65146a1229604b059e1d637761e9096068a05ab3 (diff) | |
download | hyperkitty-579bd91b14f8d2926f64aa6032b41145f90b46fe.tar.gz hyperkitty-579bd91b14f8d2926f64aa6032b41145f90b46fe.tar.xz hyperkitty-579bd91b14f8d2926f64aa6032b41145f90b46fe.zip |
Revive the 'discussions by category' widget on the overview page
Diffstat (limited to 'hyperkitty/lib')
-rw-r--r-- | hyperkitty/lib/__init__.py | 24 |
1 files changed, 18 insertions, 6 deletions
diff --git a/hyperkitty/lib/__init__.py b/hyperkitty/lib/__init__.py index 6dbfbea..a25dcd7 100644 --- a/hyperkitty/lib/__init__.py +++ b/hyperkitty/lib/__init__.py @@ -180,17 +180,29 @@ def paginate(objects, page_num, max_page_range=10, paginator=None): return objects -def get_category_widget(request, current_category=None): +def get_category_widget(request=None, current_category=None): + """ + Returns the category form and the applicable category object (or None if no + category is set for this thread). + + If current_category is not provided or None, try to deduce it from the POST + request. + if request is not provided or None, don't return the category form, return + None instead. + """ categories = [ (c.name, c.name.upper()) for c in ThreadCategory.objects.all() ] \ + [("", "no category")] - if request.method == "POST": - category_form = CategoryForm(request.POST) + if request: + if request.method == "POST": + category_form = CategoryForm(request.POST) + else: + category_form = CategoryForm(initial={"category": current_category or ""}) + category_form["category"].field.choices = categories else: - category_form = CategoryForm(initial={"category": current_category or ""}) - category_form["category"].field.choices = categories - if request.method == "POST" and category_form.is_valid(): + category_form = None + if request and request.method == "POST" and category_form.is_valid(): # is_valid() must be called after the choices have been set current_category = category_form.cleaned_data["category"] |