def render(self, request, place, content, context, *args, **kwargs): if not isinstance(content, Collection): return '' searchers = content.searcher_set.all() forms_search = [] for search in searchers: if not search.options: continue form_search_class = modelform_factory( model=search.content_type.model_class(), form=SearcherForm) data = None if request.GET.get('__searcher'): data = request.GET fields = get_fields(search) if not fields: continue form_search_class.base_fields = get_fields(search) form_search = form_search_class(data=data, is_admin=False, search=search) if data: form_search.is_valid() forms_search.append(form_search) return self.render_block(request, template_name='smartsearch/block_search.html', block_title=_('Searchers'), context={'forms_search': forms_search})
def get_field_form(self, opts=None, default=True, fields_form_filter=None, fields_form_display=None): prefix, field_name = parsed_field_name(self.field_name) form = modelform_factory(self.model, form=BaseReportForm, fields=[field_name]) field = self.get_basic_field_form(form, field_name) autoreports_initial = getattr(settings, 'AUTOREPORTS_INITIAL', True) autoreports_subfix = getattr(settings, 'AUTOREPORTS_SUBFIX', True) if not autoreports_initial: field.initial = None if opts: help_text = self.get_help_text_to_opts(opts) display = opts.get('display', None) filters = opts.get('filters', []) label = self.get_label_to_opts(opts) if label: field.label = label if help_text: field.help_text = help_text if display: fields_form_display[self.field_name] = copy(field) for fil in filters: field_copy = copy(field) fil, verbose_fil = self.get_change_filter(fil, opts) field_name_subfix = "%s__%s" % (self.field_name_parsed, fil) if autoreports_subfix: field_label = u"%s (%s)" % (field_copy.label, verbose_fil) field_copy.label = field_label fields_form_filter[field_name_subfix] = self.change_widget( field_copy, opts) else: if default: fil = self.get_filter_default() if fil is None: return (fields_form_filter, fields_form_display) field_name_subfix = "%s__%s" % (self.field_name_parsed, fil) if autoreports_subfix: field_label = u"%s (%s)" % (field.label, dict(self.get_filters())[fil]) field.label = field_label fields_form_filter[field_name_subfix] = self.change_widget( field) else: fields_form_display[self.field_name] = field return (fields_form_filter, fields_form_display)
def search_is_valid(request, searcher_id): search = Searcher.objects.get(pk=searcher_id) model = search.content_type.model_class() form_search_class = modelform_factory(model=model, form=SearcherForm) data = request.GET form_search_class.base_fields = get_fields(search) form_search = form_search_class(data=data, is_admin=False, search=search) __full_path = "%s?" % data.get('__path') del data['__path'] __full_path = "%s%s" % (__full_path, request.GET.urlencode()) if not form_search.is_valid(): __full_path = "%s&__ignore_filters=1" % __full_path return HttpResponseRedirect(__full_path)
def get_field_form(self, opts=None, default=True, fields_form_filter=None, fields_form_display=None): prefix, field_name = parsed_field_name(self.field_name) form = modelform_factory(self.model, form=BaseReportForm, fields=[field_name]) field = self.get_basic_field_form(form, field_name) autoreports_initial = getattr(settings, 'AUTOREPORTS_INITIAL', True) autoreports_subfix = getattr(settings, 'AUTOREPORTS_SUBFIX', True) if not autoreports_initial: field.initial = None if opts: help_text = self.get_help_text_to_opts(opts) display = opts.get('display', None) filters = opts.get('filters', []) label = self.get_label_to_opts(opts) if label: field.label = label if help_text: field.help_text = help_text if display: fields_form_display[self.field_name] = copy(field) for fil in filters: field_copy = copy(field) fil, verbose_fil = self.get_change_filter(fil, opts) field_name_subfix = "%s__%s" % (self.field_name_parsed, fil) if autoreports_subfix: field_label = u"%s (%s)" % (field_copy.label, verbose_fil) field_copy.label = field_label fields_form_filter[field_name_subfix] = self.change_widget(field_copy, opts) else: if default: fil = self.get_filter_default() if fil is None: return (fields_form_filter, fields_form_display) field_name_subfix = "%s__%s" % (self.field_name_parsed, fil) if autoreports_subfix: field_label = u"%s (%s)" % (field.label, dict(self.get_filters())[fil]) field.label = field_label fields_form_filter[field_name_subfix] = self.change_widget(field) else: fields_form_display[self.field_name] = field return (fields_form_filter, fields_form_display)
def render(self, request, place, content, context, *args, **kwargs): if not isinstance(content, Collection): return '' searchers = content.searcher_set.all() forms_search = [] for search in searchers: if not search.options: continue form_search_class = modelform_factory(model=search.content_type.model_class(), form=SearcherForm) data = None if request.GET.get('__searcher'): data = request.GET fields = get_fields(search) if not fields: continue form_search_class.base_fields = get_fields(search) form_search = form_search_class(data=data, is_admin=False, search=search) if data: form_search.is_valid() forms_search.append(form_search) return self.render_block(request, template_name='smartsearch/block_search.html', block_title=_('Searchers'), context={'forms_search': forms_search})
def get_report_form_display(self, data, fields): form_display_class = modelform_factory(model=self.model, form=self.report_form_display) form_display_class.base_fields = fields form_display = form_display_class(data=data, is_admin=self.is_admin) return form_display