diff options
author | Aurélien Bompard <aurelien@bompard.org> | 2013-07-11 16:28:07 +0200 |
---|---|---|
committer | Aurélien Bompard <aurelien@bompard.org> | 2013-07-11 17:17:27 +0200 |
commit | 2c7c64b084040ad0666b15c511ff18bb96fc79b9 (patch) | |
tree | 0b3a627936cad2de88344fca4c351ee761128a33 /hyperkitty/lib | |
parent | 510c337117a77591400d7ee1d8d20ffd3ca2f731 (diff) | |
download | hyperkitty-2c7c64b084040ad0666b15c511ff18bb96fc79b9.tar.gz hyperkitty-2c7c64b084040ad0666b15c511ff18bb96fc79b9.tar.xz hyperkitty-2c7c64b084040ad0666b15c511ff18bb96fc79b9.zip |
Factorize the category widget code
Diffstat (limited to 'hyperkitty/lib')
-rw-r--r-- | hyperkitty/lib/__init__.py | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/hyperkitty/lib/__init__.py b/hyperkitty/lib/__init__.py index fef4a75..0cb1c7d 100644 --- a/hyperkitty/lib/__init__.py +++ b/hyperkitty/lib/__init__.py @@ -29,6 +29,8 @@ from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger from mailmanclient import MailmanConnectionError from hyperkitty.lib import mailman +from hyperkitty.models import ThreadCategory +from hyperkitty.views.forms import CategoryForm FLASH_MESSAGES = { @@ -176,3 +178,27 @@ def paginate(objects, page_num, max_page_range=10, paginator=None): else: objects.page_range = [ p+1 for p in range(paginator.num_pages) ] return objects + + +def get_category_widget(request, current_category=None): + categories = [ (c.name, c.name.upper()) + for c in ThreadCategory.objects.all() ] \ + + [("", "no categories")] + + if request.method == "POST": + category_form = CategoryForm(request.POST) + else: + category_form = CategoryForm(initial={"category": current_category or ""}) + category_form["category"].field.choices = categories + if 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"] + + if not current_category: + category = None + else: + try: + category = ThreadCategory.objects.get(name=current_category) + except ThreadCategory.DoesNotExist: + category = None + return category, category_form |