示例#1
0
 def __init__(self, request, model, prefix_url, report, *args, **kwargs):
     self.request = pre_procession_request(request, model)
     self.request_lite = pre_procession_request(request, model, lite=True)
     self.prefix_url = prefix_url
     self.report = report
     super(AutoReportChangeList, self).__init__(self.request_lite, model,
                                                *args, **kwargs)
示例#2
0
 def _get_items(self, collection, context):
     request = context.get('request', None)
     section = self._get_section(request, context)
     items = collection.get_items(section)
     ignore_filters = request and request.GET.get('__ignore_filters', None)
     if not ignore_filters:
         # This a code to smarsearch plugin
         searcher_id = request.GET.get('__searcher', None)
         searcher = None
         if searcher_id and 'plugins.smartsearch' in settings.INSTALLED_APPS:
             try:
                 from plugins.smartsearch.models import Searcher
                 searcher = Searcher.objects.get(pk=searcher_id)
             except (ImportError, ObjectDoesNotExist):
                 pass
             if searcher:
                 from autoreports.utils import pre_procession_request, filtering_from_request
                 model = collection.get_first_parents_of_content_types()
                 request_processing = pre_procession_request(request, model)
                 filters, items = filtering_from_request(
                     request_processing, items, searcher)
         # Here end the code to smartsearch plugin
         if not searcher and request:
             items = self._filter_by_request(request, items)
         if context:
             items = self._filter_by_context(context, items)
         result = items
     elif isinstance(items, list):
         result = Collection.objects.none()
         for queryset in items:
             result |= queryset
     else:
         result = items
     return items
 def _get_items(self, collection, context):
     request = context.get('request', None)
     section = self._get_section(request, context)
     items = collection.get_items(section)
     ignore_filters = request and request.GET.get('__ignore_filters', None)
     if not ignore_filters:
         # This a code to smarsearch plugin
         searcher_id = request.GET.get('__searcher', None)
         searcher = None
         if searcher_id and 'plugins.smartsearch' in settings.INSTALLED_APPS:
             try:
                 from plugins.smartsearch.models import Searcher
                 searcher = Searcher.objects.get(pk=searcher_id)
             except (ImportError, ObjectDoesNotExist):
                 pass
             if searcher:
                 from autoreports.utils import pre_procession_request, filtering_from_request
                 model = collection.get_first_parents_of_content_types()
                 request_processing = pre_procession_request(request, model)
                 filters, items = filtering_from_request(request_processing, items, searcher)
         # Here end the code to smartsearch plugin
         if not searcher and request:
             items = self._filter_by_request(request, items)
         if context:
             items = self._filter_by_context(context, items)
         result = items
     elif isinstance(items, list):
         result = Collection.objects.none()
         for queryset in items:
             result |= queryset
     else:
         result = items
     return items
示例#4
0
def reports_view(request,
                 app_name,
                 model_name,
                 fields=None,
                 list_headers=None,
                 ordering=None,
                 filters=Q(),
                 api=None,
                 queryset=None,
                 report_to='csv',
                 report=None,
                 separated_field=SEPARATED_FIELD,
                 pre_procession_lite=False):
    class_model = models.get_model(app_name, model_name)
    request = pre_procession_request(request, class_model, pre_procession_lite)
    list_fields = fields
    formats = get_available_formats()

    if not list_fields:
        api = api or site._registry.get(class_model, None)
        if api:
            list_fields = api.list_display
            set_fields = set(list_fields) - set(EXCLUDE_FIELDS)
            list_fields = list(set_fields)
        else:
            list_fields = ['__unicode__']
            list_headers = [_('Object')]

    list_headers = list_headers
    if not list_headers:
        list_headers = translate_fields(list_fields, class_model)
    name = "%s-%s.%s" % (app_name, model_name,
                         formats[report_to]['file_extension'])

    object_list = queryset and queryset.filter(
        filters) or class_model.objects.filter(filters)

    filters, object_list = filtering_from_request(request,
                                                  object_list,
                                                  report=report)

    if ordering:
        object_list = object_list.order_by(*ordering)

    response = csv_head(name, list_headers)
    csv_body(response,
             class_model,
             object_list,
             list_fields,
             separated_field=separated_field,
             api=api)
    if report_to == 'excel':
        convert_to_excel(response)
    return response
示例#5
0
def reports_view(request, app_name, model_name, fields=None,
                 list_headers=None, ordering=None, filters=Q(),
                 api=None, queryset=None,
                 report_to='csv',
                 report=None,
                 separated_field=SEPARATED_FIELD,
                 pre_procession_lite=False):
    class_model = models.get_model(app_name, model_name)
    request = pre_procession_request(request, class_model, pre_procession_lite)
    list_fields = fields
    formats = get_available_formats()

    if not list_fields:
        api = api or site._registry.get(class_model, None)
        if api:
            list_fields = api.list_display
            set_fields = set(list_fields) - set(EXCLUDE_FIELDS)
            list_fields = list(set_fields)
        else:
            list_fields = ['__unicode__']
            list_headers = [_('Object')]

    list_headers = list_headers
    if not list_headers:
        list_headers = translate_fields(list_fields, class_model)
    name = "%s-%s.%s" % (app_name, model_name, formats[report_to]['file_extension'])

    object_list = queryset and queryset.filter(filters) or class_model.objects.filter(filters)

    filters, object_list = filtering_from_request(request, object_list, report=report)

    if ordering:
        object_list = object_list.order_by(*ordering)

    response = csv_head(name, list_headers)
    csv_body(response, class_model, object_list, list_fields,
             separated_field=separated_field, api=api)
    if report_to == 'excel':
        convert_to_excel(response)
    return response
示例#6
0
 def __init__(self, request, model, prefix_url, report, *args, **kwargs):
     self.request = pre_procession_request(request, model)
     self.request_lite = pre_procession_request(request, model, lite=True)
     self.prefix_url = prefix_url
     self.report = report
     super(AutoReportChangeList, self).__init__(self.request_lite, model, *args, **kwargs)