bgneal@469: """ bgneal@469: This module contains custom forms to tailor the Haystack search application to bgneal@469: our needs. bgneal@469: bgneal@469: """ bgneal@469: from django import forms bgneal@469: from haystack.forms import ModelSearchForm bgneal@469: bgneal@469: bgneal@469: MODEL_CHOICES = ( bgneal@469: ('forums.topic', 'Forum Topics'), bgneal@469: ('forums.post', 'Forum Posts'), bgneal@469: ('news.story', 'News Stories'), bgneal@469: ('bio.userprofile', 'User Profiles'), bgneal@469: ('weblinks.link', 'Links'), bgneal@469: ('downloads.download', 'Downloads'), bgneal@469: ('podcast.item', 'Podcasts'), bgneal@469: ('ygroup.post', 'Yahoo Group Archives'), bgneal@469: ) bgneal@469: bgneal@469: bgneal@469: class CustomModelSearchForm(ModelSearchForm): bgneal@469: """ bgneal@469: This customized ModelSearchForm allows us to explictly label and order bgneal@469: the model choices. bgneal@469: bgneal@469: """ bgneal@469: q = forms.CharField(required=False, label='', bgneal@729: widget=forms.TextInput(attrs={'type': 'search', bgneal@729: 'class': 'search', bgneal@729: 'size': 48, bgneal@729: })) bgneal@469: bgneal@469: def __init__(self, *args, **kwargs): bgneal@469: super(CustomModelSearchForm, self).__init__(*args, **kwargs) bgneal@469: self.fields['models'] = forms.MultipleChoiceField(choices=MODEL_CHOICES, bgneal@469: label='', widget=forms.CheckboxSelectMultiple)