示例#1
0
 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'
               ))
     }
示例#2
0
文件: api.py 项目: Alotor/intranet
 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))
示例#3
0
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')
示例#4
0
文件: fields.py 项目: Alotor/intranet
 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'))}
示例#5
0
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')
示例#6
0
 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))