Commit 31c7cbea016b711b6042f736ff59b0f1015f3a6a

Authored by Sergio Oliveira
1 parent 601362e6

Used lazy choices for display list names

Signed-off-by: Alexandre Barbosa <alexandreab@live.com>
Signed-off-by: Lucas Moura <lucas.moura128@gmail.com>
Signed-off-by: Macartur Sousa <macartur.sc@gmail.com>
Signed-off-by: Sergio Oliveira <sergio@tracy.com.br>
Showing 1 changed file with 26 additions and 9 deletions   Show diff stats
colab/accounts/forms.py
... ... @@ -11,6 +11,7 @@ from django.contrib.sites.shortcuts import get_current_site
11 11 from django.core.urlresolvers import reverse
12 12 from django.template import loader
13 13 from django.utils.encoding import force_bytes
  14 +from django.utils.functional import lazy
14 15 from django.utils.http import urlsafe_base64_encode
15 16 from django.utils.text import capfirst
16 17 from django.utils.translation import ugettext_lazy as _
... ... @@ -139,16 +140,32 @@ class UserUpdateForm(UserForm):
139 140 required=False)
140 141  
141 142  
  143 +def get_lists_choices():
  144 + lists_names = []
  145 + for mlist in mailman.all_lists():
  146 + name = mlist.get('listname')
  147 + desc = mlist.get('description')
  148 + formatted_desc = u'{} ({})'.format(name, desc)
  149 + lists_names.append((name, formatted_desc))
  150 + return lists_names
  151 +
  152 +
  153 +# XXX: This field is no longer required when using django 1.8
  154 +class MultipleChoiceFieldLazy(forms.MultipleChoiceField):
  155 + def _set_choices(self, value):
  156 + self._choices = self.widget.choices = value
  157 +
  158 + def _get_choices(self):
  159 + return list(self._choices)
  160 +
  161 + choices = property(_get_choices, _set_choices)
  162 +
  163 +
142 164 class ListsForm(forms.Form):
143   - LISTS_NAMES = ((
144   - mlist.get('listname'), u'{} ({})'.format(mlist.get('listname'),
145   - mlist.get('description'))
146   - ) for mlist in mailman.all_lists())
147   -
148   - lists = forms.MultipleChoiceField(label=_(u'Mailing lists'),
149   - required=False,
150   - widget=forms.CheckboxSelectMultiple,
151   - choices=LISTS_NAMES)
  165 + lists = MultipleChoiceFieldLazy(label=_(u'Mailing lists'),
  166 + required=False,
  167 + widget=forms.CheckboxSelectMultiple,
  168 + choices=lazy(get_lists_choices, list)())
152 169  
153 170  
154 171 class UserCreationForm(UserForm):
... ...