def extra_wizard_fields(self): prefix, field_name = parsed_field_name(self.field_name) prefix = SEPARATED_FIELD.join(prefix) fields = get_fields_from_model(self.model, adaptors=(TextFieldReportField, )) current_field_name = self.field_name.split(SEPARATED_FIELD)[-1] choices = [(f['name'], f['verbose_name']) for f in fields[0] if f['name'] != current_field_name] if not choices: return {} initial = None if self.instance: field_options = self.instance.options.get(self.field_name, None) if field_options: initial = field_options.get('other_fields', None) return { 'other_fields': forms.MultipleChoiceField( label=_('Other fields to filter'), required=False, choices=choices, widget=forms.CheckboxSelectMultiple, initial=initial, help_text= _('Choose other fields, when you filter with this field, you will search in these also' )) }
def report_api_wizard(self, request, report=None, template_name='autoreports/autoreports_wizard.html', extra_context=None, model=Report, form_top_class=ReportNameForm, model_to_export=None, content_type=None): model_to_export = model_to_export or self.model content_type = content_type or ContentType.objects.get_for_model(model_to_export) data = None adaptors = [] form_top_initial = {} if request.method == 'POST': data = request.POST elif report: adaptors = get_adaptors_from_report(report) form_top_initial['prefixes'] = ", ".join([unicode(adaptor.get_form().prefix) for adaptor in adaptors]) form_top = form_top_class(instance=report, data=data, initial=form_top_initial) options = {} if form_top.is_valid(): for prefix in form_top.cleaned_data.get('prefixes', []): model_field_form = ModelFieldForm(data=data, prefix=prefix) if model_field_form.is_valid(): field_name = model_field_form.cleaned_data.get('field_name') adaptor = model_field_form.get_adaptor() wizardfield = WizardField(data=data, autoreport_field=adaptor, prefix=prefix) if wizardfield.is_valid(): options[field_name] = wizardfield.cleaned_data name = form_top.cleaned_data.get('name', None) or 'report of %s' % unicode(model_to_export._meta.verbose_name) report_created = self._create_report(model, content_type, name, options, form_top.instance) redirect = report_created.get_redirect_wizard(report) return HttpResponseRedirect(redirect) fields, funcs = get_fields_from_model(content_type.model_class()) context = {'add': report is None, 'report': report, 'fields': fields, 'funcs': funcs, 'ADMIN_MEDIA_PREFIX': settings.ADMIN_MEDIA_PREFIX, 'template_base': getattr(settings, 'AUTOREPORTS_BASE_TEMPLATE', 'base.html'), 'form_top': form_top, 'module_name': content_type.model, 'app_label': content_type.app_label, 'adaptors': adaptors, 'is_admin': False, } extra_context = extra_context or {} context.update(extra_context) return render_to_response(template_name, context, context_instance=RequestContext(request))
def reports_ajax_fields(request): module_name = request.GET.get('module_name') app_label = request.GET.get('app_label') ct = ContentType.objects.get(model=module_name, app_label=app_label) ignore_module_name = request.GET.get('ignore_module_name') ignore_app_label = request.GET.get('ignore_app_label') ignore_models = _get_ignore_models(ignore_app_label, ignore_module_name) field = request.GET.get('field') model = ct.model_class() fields, funcs = get_fields_from_model(model, field, ignore_models=ignore_models) context = {'fields': fields, 'funcs': funcs, 'app_label': app_label, 'module_name': module_name} return HttpResponse(render_to_string('autoreports/inc.render_model.html', context), mimetype='text/html')
def extra_wizard_fields(self): prefix, field_name = parsed_field_name(self.field_name) prefix = SEPARATED_FIELD.join(prefix) fields = get_fields_from_model(self.model, adaptors=(TextFieldReportField,)) current_field_name = self.field_name.split(SEPARATED_FIELD)[-1] choices = [(f['name'], f['verbose_name']) for f in fields[0] if f['name'] != current_field_name] if not choices: return {} initial = None if self.instance: field_options = self.instance.options.get(self.field_name, None) if field_options: initial = field_options.get('other_fields', None) return {'other_fields': forms.MultipleChoiceField(label=_('Other fields to filter'), required=False, choices=choices, widget=forms.CheckboxSelectMultiple, initial=initial, help_text=_('Choose other fields, when you filter with this field, you will search in these also'))}
def reports_ajax_fields(request): module_name = request.GET.get('module_name') app_label = request.GET.get('app_label') ct = ContentType.objects.get(model=module_name, app_label=app_label) ignore_module_name = request.GET.get('ignore_module_name') ignore_app_label = request.GET.get('ignore_app_label') ignore_models = _get_ignore_models(ignore_app_label, ignore_module_name) field = request.GET.get('field') model = ct.model_class() fields, funcs = get_fields_from_model(model, field, ignore_models=ignore_models) context = { 'fields': fields, 'funcs': funcs, 'app_label': app_label, 'module_name': module_name } return HttpResponse(render_to_string('autoreports/inc.render_model.html', context), mimetype='text/html')
def report_api_wizard(self, request, report=None, template_name='autoreports/autoreports_wizard.html', extra_context=None, model=Report, form_top_class=ReportNameForm, model_to_export=None, content_type=None): model_to_export = model_to_export or self.model content_type = content_type or ContentType.objects.get_for_model( model_to_export) data = None adaptors = [] form_top_initial = {} if request.method == 'POST': data = request.POST elif report: adaptors = get_adaptors_from_report(report) form_top_initial['prefixes'] = ", ".join( [unicode(adaptor.get_form().prefix) for adaptor in adaptors]) form_top = form_top_class(instance=report, data=data, initial=form_top_initial) options = {} if form_top.is_valid(): for prefix in form_top.cleaned_data.get('prefixes', []): model_field_form = ModelFieldForm(data=data, prefix=prefix) if model_field_form.is_valid(): field_name = model_field_form.cleaned_data.get( 'field_name') adaptor = model_field_form.get_adaptor() wizardfield = WizardField(data=data, autoreport_field=adaptor, prefix=prefix) if wizardfield.is_valid(): options[field_name] = wizardfield.cleaned_data name = form_top.cleaned_data.get( 'name', None) or 'report of %s' % unicode( model_to_export._meta.verbose_name) report_created = self._create_report(model, content_type, name, options, form_top.instance) redirect = report_created.get_redirect_wizard(report) return HttpResponseRedirect(redirect) fields, funcs = get_fields_from_model(content_type.model_class()) context = { 'add': report is None, 'report': report, 'fields': fields, 'funcs': funcs, 'ADMIN_MEDIA_PREFIX': settings.ADMIN_MEDIA_PREFIX, 'template_base': getattr(settings, 'AUTOREPORTS_BASE_TEMPLATE', 'base.html'), 'form_top': form_top, 'module_name': content_type.model, 'app_label': content_type.app_label, 'adaptors': adaptors, 'is_admin': False, } extra_context = extra_context or {} context.update(extra_context) return render_to_response(template_name, context, context_instance=RequestContext(request))