class ScheduleBuilderForm(forms.Form): _courses = [(c.id, str(c)) for c in Course.objects.filter(current=True)] _hours = [(x, "%s:00" % (x % 12)) for x in [8,9,10,11,13,14,15,16]] _lengths = [(x, "%s hours" % x) for x in [1,2,3,4]] _instructors = [(p.instructor_letter, str(p)) for p in Person.objects.filter(kind=FACULTY_KIND)] _rooms = [(r.id, str(r)) for r in Room.objects.all()] course = forms.ChoiceField(choices=_courses) start_time = forms.ChoiceField(choices=_hours) length = forms.ChoiceField(choices=_lengths) room = forms.ChoiceField(choices=_rooms) sections = forms.MultipleChoiceField(widget=forms.CheckboxSelectMultiple, choices=SECTION_CHOICES) instructors = forms.MultipleChoiceField(widget=forms.CheckboxSelectMultiple, choices=_instructors, required=False)
def __init__(self, *args, **kwargs): debugOutput("Creating") # Pre-load with user details if there is a user. if "user" in kwargs and kwargs["user"]: user = kwargs["user"] initial = user self.mode = "edit" # TODO: Load the roles of this user. else: initial = None user = None self.mode = "create" if "user" in kwargs: del kwargs["user"] super(self.__class__, self).__init__(initial=initial, *args, **kwargs) # Setup the roles field. choices = [(role, role) for role in wikidbase.core.security.getRoles()] userRoles = user and wikidbase.core.security.getUserRoles( user["username"]) or [] self.fields["roles"] = newforms.MultipleChoiceField( initial=userRoles, widget=newforms.CheckboxSelectMultiple, choices=choices, required=False)
class PreferencesForm(forms.Form): """ Returns basic preferences form containing: source(s) to search alert method(s) criteria """ sources_choices = [] for source in Source.objects.all(): sources_choices.append((source.id, source.name)) sources = forms.MultipleChoiceField(widget=CheckboxSelectMultiple(), choices=sources_choices, required=False) alert_methods_choices = ( ('mail', 'E-Mail'), ('rss', 'RSS'), ) alert_methods = forms.MultipleChoiceField(widget=CheckboxSelectMultiple(), choices=alert_methods_choices, required=False) enable = forms.BooleanField(required=False) def save(self, user): """ Overrides save method to add form values to the correct place in the db for this user """ user_profile = user.get_profile() # set sources if self.cleaned_data.has_key('sources'): user_profile.sources.clear() for source_id in self.cleaned_data.get('sources', []): user_profile.sources.add(source_id) # set alert methods if self.cleaned_data.has_key('alert_methods'): user_profile.alert_methods.clear() for alert_method in self.cleaned_data.get('alert_methods', []): alert_method_obj = AlertMethod.objects.get(name=alert_method) user_profile.alert_methods.add(alert_method_obj)
class ModelSearchForm(forms.Form): query = forms.CharField(required=False) models = forms.MultipleChoiceField(choices=model_choices(), required=False, widget=forms.CheckboxSelectMultiple) def get_models(self): """Return a list of model classes specified by the models field.""" search_models = [] for model in self.cleaned_data['models']: search_models.append(models.get_model(*model.split('.'))) if len(search_models) == 0: return None return search_models
def choice_field(self, **kwargs): kwargs['required'] = False return forms.MultipleChoiceField(choices=self.choices, **kwargs)