Ejemplo n.º 1
0
    def get(self, *args, **kwargs):
        self.perm_edit = False

        request = self.request.GET
        csv_conf = {
            'name': 'report_devices',
            'url': None,
        }
        # Filtering of the cross
        self.form_choice = DevicesChoiceReportForm(request)
        queries = {Q()}
        headers = ['Name']
        dep = self.request.GET.get('deprecation')
        no_dep = self.request.GET.get('no_deprecation')
        no_mar = self.request.GET.get('no_margin')
        no_sup = self.request.GET.get('no_support')
        no_pur = self.request.GET.get('no_purchase')
        no_ven = self.request.GET.get('no_venture')
        no_rol = self.request.GET.get('no_role')
        no_par = self.request.GET.get('no_parent')
        rows = []
        if dep:
            headers.append('Depreciation date')
            queries.update({Q(deprecation_date__lte=datetime.date.today())})
        if no_dep:
            headers.append('No depreciation date')
            queries.update({Q(deprecation_date=None)})
        if no_mar:
            headers.append('No depreciation kind')
            queries.update({Q(deprecation_kind=None)})
        if no_sup:
            headers.append('No support')
            queries.update({Q(support_expiration_date=None)})
        if no_pur:
            headers.append('No purchase')
            queries.update({Q(purchase_date=None)})
        if no_ven:
            headers.append('No venture')
            queries.update({Q(venture=None)})
        if no_rol:
            headers.append('No venture role')
            queries.update({Q(venture_role=None)})
        if no_par:
            headers.append('No parent')
            queries.update({Q(parent=None) | Q(p_deleted=True)})
        if len(queries) > 1:
            devices = Device.objects.filter(*queries)
            for dev in devices:
                row = []
                row.append(self.get_name(dev.name, dev.id))
                if dep:
                    row.append(dev.deprecation_date)
                if no_dep:
                    row.append(dev.deprecation_date)
                if no_mar:
                    row.append(dev.deprecation_kind)
                if no_sup:
                    row.append(dev.support_expiration_date)
                if no_pur:
                    row.append(dev.purchase_date)
                if no_ven:
                    row.append(dev.venture)
                if no_rol:
                    row.append(dev.venture_role)
                rows.append(row)
        # Filtering of the range
        # Support range
        s_start = self.request.GET.get('s_start', None)
        s_end = self.request.GET.get('s_end', None)
        if s_start and s_end:
            self.form_support_range = SupportRangeReportForm(request)
            if self.form_support_range.is_valid():
                headers = ('Name', 'Support expiration date')
                rows.extend([(
                    self.get_name(dev.name, dev.id),
                    dev.support_expiration_date,
                ) for dev in Device.objects.filter(
                    support_expiration_date__gte=s_start,
                    support_expiration_date__lte=s_end,
                )])
        else:
            self.form_support_range = SupportRangeReportForm(
                initial={
                    's_start': datetime.date.today() -
                    datetime.timedelta(days=30),
                    's_end': datetime.date.today(),
                })
        # Deprecation range
        d_start = self.request.GET.get('d_start', None)
        d_end = self.request.GET.get('d_end', None)
        if d_start and d_end:
            self.form_deprecation_range = DeprecationRangeReportForm(request)
            if self.form_deprecation_range.is_valid():
                headers = ('Name', 'Depreciation date')
                rows.extend([(
                    self.get_name(dev.name, dev.id),
                    dev.deprecation_date,
                ) for dev in Device.objects.filter(
                    deprecation_date__gte=d_start,
                    deprecation_date__lte=d_end,
                )])
        else:
            self.form_deprecation_range = DeprecationRangeReportForm(
                initial={
                    'd_start': datetime.date.today() -
                    datetime.timedelta(days=30),
                    'd_end': datetime.date.today(),
                })
        # Warranty range
        w_start = self.request.GET.get('w_start', None)
        w_end = self.request.GET.get('w_end', None)
        if w_start and w_end:
            self.form_warranty_range = WarrantyRangeReportForm(request)
            if self.form_warranty_range.is_valid():
                headers = ('Name', 'Warranty expiration date')
                rows.extend([(
                    self.get_name(dev.name, dev.id),
                    dev.warranty_expiration_date,
                ) for dev in Device.objects.filter(
                    warranty_expiration_date__gte=w_start,
                    warranty_expiration_date__lte=w_end,
                )])
        else:
            self.form_warranty_range = WarrantyRangeReportForm(
                initial={
                    'w_start': datetime.date.today() -
                    datetime.timedelta(days=30),
                    'w_end': datetime.date.today(),
                })
        # Show devices active or / and deleted
        self.device_list = ReportDeviceListForm(request)
        all_devices = request.get('show_all_devices')
        all_deleted_devices = request.get('show_all_deleted_devices')
        if all_devices or all_deleted_devices:
            show_devices = None
            if all_devices and all_deleted_devices:
                show_devices = Device.admin_objects.all()
                csv_conf = {
                    'title':
                    'All devices (active and deleted)',
                    'name':
                    'report_all_devices',
                    'url':
                    '?show_all_devices=on&show_all_deleted_devices=on&export=csv',
                }
            elif all_devices:
                show_devices = Device.objects.all()
                csv_conf = {
                    'title': 'All active devices',
                    'name': 'report_all_active_devices',
                    'url': '?show_all_devices=on&export=csv',
                }
            elif all_deleted_devices:
                show_devices = Device.admin_objects.filter(deleted=True)
                csv_conf = {
                    'title': 'All deleted devices',
                    'name': 'report_deleted_devices',
                    'url': '?show_all_deleted_devices=on&export=csv',
                }
            headers = [
                'Device',
                'Model',
                'SN',
                'Barcode',
                'Auto price',
                'Venture',
                'Role',
                'Remarks',
                'Verified',
                'Deleted',
            ]
            for dev in show_devices:
                rows.append([
                    dev.name,
                    dev.model,
                    dev.sn,
                    dev.barcode,
                    dev.cached_price,
                    dev.venture,
                    dev.role,
                    dev.remarks,
                    dev.verified,
                    dev.deleted,
                ])
        if request.get('export') == 'csv':
            rows.insert(0, headers)
            return make_csv_response(
                data=rows,
                filename=csv_conf.get('name'),
            )
        self.headers = headers
        self.rows = rows
        self.csv_url = csv_conf.get('url')
        self.title = csv_conf.get('title')
        return super(ReportDevices, self).get(*args, **kwargs)
Ejemplo n.º 2
0
    def get(self, *args, **kwargs):
        self.perm_edit = False

        request = self.request.GET
        csv_conf = {
            'name': 'report_devices',
            'url': None,
        }
        # Filtering of the cross
        self.form_choice = DevicesChoiceReportForm(request)
        queries = {Q()}
        headers = ['Name']
        dep = self.request.GET.get('deprecation')
        no_dep = self.request.GET.get('no_deprecation')
        no_mar = self.request.GET.get('no_margin')
        no_sup = self.request.GET.get('no_support')
        no_pur = self.request.GET.get('no_purchase')
        no_ven = self.request.GET.get('no_venture')
        no_rol = self.request.GET.get('no_role')
        no_par = self.request.GET.get('no_parent')
        rows = []
        if dep:
            headers.append('Depreciation date')
            queries.update({Q(deprecation_date__lte=datetime.date.today())})
        if no_dep:
            headers.append('No depreciation date')
            queries.update({Q(deprecation_date=None)})
        if no_mar:
            headers.append('No depreciation kind')
            queries.update({Q(deprecation_kind=None)})
        if no_sup:
            headers.append('No support')
            queries.update({Q(support_expiration_date=None)})
        if no_pur:
            headers.append('No purchase')
            queries.update({Q(purchase_date=None)})
        if no_ven:
            headers.append('No venture')
            queries.update({Q(venture=None)})
        if no_rol:
            headers.append('No venture role')
            queries.update({Q(venture_role=None)})
        if no_par:
            headers.append('No parent')
            queries.update({Q(parent=None) | Q(p_deleted=True)})
        if len(queries) > 1:
            devices = Device.objects.filter(*queries)
            for dev in devices:
                row = []
                row.append(self.get_name(dev.name, dev.id))
                if dep:
                    row.append(dev.deprecation_date)
                if no_dep:
                    row.append(dev.deprecation_date)
                if no_mar:
                    row.append(dev.deprecation_kind)
                if no_sup:
                    row.append(dev.support_expiration_date)
                if no_pur:
                    row.append(dev.purchase_date)
                if no_ven:
                    row.append(dev.venture)
                if no_rol:
                    row.append(dev.venture_role)
                rows.append(row)
        # Filtering of the range
        # Support range
        s_start = self.request.GET.get('s_start', None)
        s_end = self.request.GET.get('s_end', None)
        if s_start and s_end:
            self.form_support_range = SupportRangeReportForm(request)
            if self.form_support_range.is_valid():
                headers = ('Name', 'Support expiration date')
                rows.extend([
                    (
                        self.get_name(dev.name, dev.id),
                        dev.support_expiration_date,
                    ) for dev in Device.objects.filter(
                        support_expiration_date__gte=s_start,
                        support_expiration_date__lte=s_end,
                    )
                ])
        else:
            self.form_support_range = SupportRangeReportForm(initial={
                's_start': datetime.date.today() - datetime.timedelta(days=30),
                's_end': datetime.date.today(),
            })
        # Deprecation range
        d_start = self.request.GET.get('d_start', None)
        d_end = self.request.GET.get('d_end', None)
        if d_start and d_end:
            self.form_deprecation_range = DeprecationRangeReportForm(request)
            if self.form_deprecation_range.is_valid():
                headers = ('Name', 'Depreciation date')
                rows.extend([
                    (
                        self.get_name(dev.name, dev.id),
                        dev.deprecation_date,
                    ) for dev in Device.objects.filter(
                        deprecation_date__gte=d_start,
                        deprecation_date__lte=d_end,
                    )
                ])
        else:
            self.form_deprecation_range = DeprecationRangeReportForm(initial={
                'd_start': datetime.date.today() - datetime.timedelta(days=30),
                'd_end': datetime.date.today(),
            })
        # Warranty range
        w_start = self.request.GET.get('w_start', None)
        w_end = self.request.GET.get('w_end', None)
        if w_start and w_end:
            self.form_warranty_range = WarrantyRangeReportForm(request)
            if self.form_warranty_range.is_valid():
                headers = ('Name', 'Warranty expiration date')
                rows.extend([
                    (
                        self.get_name(dev.name, dev.id),
                        dev.warranty_expiration_date,
                    ) for dev in Device.objects.filter(
                        warranty_expiration_date__gte=w_start,
                        warranty_expiration_date__lte=w_end,
                    )
                ])
        else:
            self.form_warranty_range = WarrantyRangeReportForm(initial={
                'w_start': datetime.date.today() - datetime.timedelta(days=30),
                'w_end': datetime.date.today(),
            })
        # Show devices active or / and deleted
        self.device_list = ReportDeviceListForm(request)
        all_devices = request.get('show_all_devices')
        all_deleted_devices = request.get('show_all_deleted_devices')
        if all_devices or all_deleted_devices:
            show_devices = None
            if all_devices and all_deleted_devices:
                show_devices = Device.admin_objects.all()
                csv_conf = {
                    'title': 'All devices (active and deleted)',
                    'name': 'report_all_devices',
                    'url': '?show_all_devices=on&show_all_deleted_devices=on&export=csv',
                    }
            elif all_devices:
                show_devices = Device.objects.all()
                csv_conf = {
                    'title': 'All active devices',
                    'name': 'report_all_active_devices',
                    'url': '?show_all_devices=on&export=csv',
                    }
            elif all_deleted_devices:
                show_devices = Device.admin_objects.filter(deleted=True)
                csv_conf = {
                    'title': 'All deleted devices',
                    'name': 'report_deleted_devices',
                    'url': '?show_all_deleted_devices=on&export=csv',
                    }
            headers = [
                'Device', 'Model', 'SN', 'Barcode', 'Auto price', 'Venture',
                'Role', 'Remarks', 'Verified', 'Deleted',
            ]
            for dev in show_devices:
                rows.append([
                    dev.name,
                    dev.model,
                    dev.sn,
                    dev.barcode,
                    dev.cached_price,
                    dev.venture,
                    dev.role,
                    dev.remarks,
                    dev.verified,
                    dev.deleted,
                ])
        if request.get('export') == 'csv':
            rows.insert(0, headers)
            return make_csv_response(
                data=rows,
                filename=csv_conf.get('name'),
            )
        self.headers = headers
        self.rows = rows
        self.csv_url = csv_conf.get('url')
        self.title = csv_conf.get('title')
        return super(ReportDevices, self).get(*args, **kwargs)
Ejemplo n.º 3
0
class ReportDevices(SidebarReports, Base):
    template_name = 'ui/report_devices.html'
    subsection = 'devices'
    perms = [
        {
            'perm': Perm.read_device_info_reports,
            'msg': _("You don't have permission to see reports."),
        },
    ]

    def get_name(self, name, id):
        id = escape(id)
        name = escape(name)
        html = '<a href="/ui/search/info/%s">%s</a> (%s)' % (id, name, id)
        return mark_safe(html)

    @ralph_permission(perms)
    def get(self, *args, **kwargs):
        self.perm_edit = False

        request = self.request.GET
        csv_conf = {
            'name': 'report_devices',
            'url': None,
        }
        # Filtering of the cross
        self.form_choice = DevicesChoiceReportForm(request)
        queries = {Q()}
        headers = ['Name']
        dep = self.request.GET.get('deprecation')
        no_dep = self.request.GET.get('no_deprecation')
        no_mar = self.request.GET.get('no_margin')
        no_sup = self.request.GET.get('no_support')
        no_pur = self.request.GET.get('no_purchase')
        no_ven = self.request.GET.get('no_venture')
        no_rol = self.request.GET.get('no_role')
        no_par = self.request.GET.get('no_parent')
        rows = []
        if dep:
            headers.append('Depreciation date')
            queries.update({Q(deprecation_date__lte=datetime.date.today())})
        if no_dep:
            headers.append('No depreciation date')
            queries.update({Q(deprecation_date=None)})
        if no_mar:
            headers.append('No depreciation kind')
            queries.update({Q(deprecation_kind=None)})
        if no_sup:
            headers.append('No support')
            queries.update({Q(support_expiration_date=None)})
        if no_pur:
            headers.append('No purchase')
            queries.update({Q(purchase_date=None)})
        if no_ven:
            headers.append('No venture')
            queries.update({Q(venture=None)})
        if no_rol:
            headers.append('No venture role')
            queries.update({Q(venture_role=None)})
        if no_par:
            headers.append('No parent')
            queries.update({Q(parent=None) | Q(p_deleted=True)})
        if len(queries) > 1:
            devices = Device.objects.filter(*queries)
            for dev in devices:
                row = []
                row.append(self.get_name(dev.name, dev.id))
                if dep:
                    row.append(dev.deprecation_date)
                if no_dep:
                    row.append(dev.deprecation_date)
                if no_mar:
                    row.append(dev.deprecation_kind)
                if no_sup:
                    row.append(dev.support_expiration_date)
                if no_pur:
                    row.append(dev.purchase_date)
                if no_ven:
                    row.append(dev.venture)
                if no_rol:
                    row.append(dev.venture_role)
                rows.append(row)
        # Filtering of the range
        # Support range
        s_start = self.request.GET.get('s_start', None)
        s_end = self.request.GET.get('s_end', None)
        if s_start and s_end:
            self.form_support_range = SupportRangeReportForm(request)
            if self.form_support_range.is_valid():
                headers = ('Name', 'Support expiration date')
                rows.extend([(
                    self.get_name(dev.name, dev.id),
                    dev.support_expiration_date,
                ) for dev in Device.objects.filter(
                    support_expiration_date__gte=s_start,
                    support_expiration_date__lte=s_end,
                )])
        else:
            self.form_support_range = SupportRangeReportForm(
                initial={
                    's_start': datetime.date.today() -
                    datetime.timedelta(days=30),
                    's_end': datetime.date.today(),
                })
        # Deprecation range
        d_start = self.request.GET.get('d_start', None)
        d_end = self.request.GET.get('d_end', None)
        if d_start and d_end:
            self.form_deprecation_range = DeprecationRangeReportForm(request)
            if self.form_deprecation_range.is_valid():
                headers = ('Name', 'Depreciation date')
                rows.extend([(
                    self.get_name(dev.name, dev.id),
                    dev.deprecation_date,
                ) for dev in Device.objects.filter(
                    deprecation_date__gte=d_start,
                    deprecation_date__lte=d_end,
                )])
        else:
            self.form_deprecation_range = DeprecationRangeReportForm(
                initial={
                    'd_start': datetime.date.today() -
                    datetime.timedelta(days=30),
                    'd_end': datetime.date.today(),
                })
        # Warranty range
        w_start = self.request.GET.get('w_start', None)
        w_end = self.request.GET.get('w_end', None)
        if w_start and w_end:
            self.form_warranty_range = WarrantyRangeReportForm(request)
            if self.form_warranty_range.is_valid():
                headers = ('Name', 'Warranty expiration date')
                rows.extend([(
                    self.get_name(dev.name, dev.id),
                    dev.warranty_expiration_date,
                ) for dev in Device.objects.filter(
                    warranty_expiration_date__gte=w_start,
                    warranty_expiration_date__lte=w_end,
                )])
        else:
            self.form_warranty_range = WarrantyRangeReportForm(
                initial={
                    'w_start': datetime.date.today() -
                    datetime.timedelta(days=30),
                    'w_end': datetime.date.today(),
                })
        # Show devices active or / and deleted
        self.device_list = ReportDeviceListForm(request)
        all_devices = request.get('show_all_devices')
        all_deleted_devices = request.get('show_all_deleted_devices')
        if all_devices or all_deleted_devices:
            show_devices = None
            if all_devices and all_deleted_devices:
                show_devices = Device.admin_objects.all()
                csv_conf = {
                    'title':
                    'All devices (active and deleted)',
                    'name':
                    'report_all_devices',
                    'url':
                    '?show_all_devices=on&show_all_deleted_devices=on&export=csv',
                }
            elif all_devices:
                show_devices = Device.objects.all()
                csv_conf = {
                    'title': 'All active devices',
                    'name': 'report_all_active_devices',
                    'url': '?show_all_devices=on&export=csv',
                }
            elif all_deleted_devices:
                show_devices = Device.admin_objects.filter(deleted=True)
                csv_conf = {
                    'title': 'All deleted devices',
                    'name': 'report_deleted_devices',
                    'url': '?show_all_deleted_devices=on&export=csv',
                }
            headers = [
                'Device',
                'Model',
                'SN',
                'Barcode',
                'Auto price',
                'Venture',
                'Role',
                'Remarks',
                'Verified',
                'Deleted',
            ]
            for dev in show_devices:
                rows.append([
                    dev.name,
                    dev.model,
                    dev.sn,
                    dev.barcode,
                    dev.cached_price,
                    dev.venture,
                    dev.role,
                    dev.remarks,
                    dev.verified,
                    dev.deleted,
                ])
        if request.get('export') == 'csv':
            rows.insert(0, headers)
            return make_csv_response(
                data=rows,
                filename=csv_conf.get('name'),
            )
        self.headers = headers
        self.rows = rows
        self.csv_url = csv_conf.get('url')
        self.title = csv_conf.get('title')
        return super(ReportDevices, self).get(*args, **kwargs)

    def get_context_data(self, **kwargs):
        context = super(ReportDevices, self).get_context_data(**kwargs)
        context.update({
            'title': self.title,
            'form_choice': self.form_choice,
            'form_support_range': self.form_support_range,
            'form_deprecation_range': self.form_deprecation_range,
            'form_warranty_range': self.form_warranty_range,
            'form_device_list': self.device_list,
            'csv_url': self.csv_url,
            'tabele_header': self.headers,
            'rows': self.rows,
            'perm_to_edit': self.perm_edit,
        })
        return context
Ejemplo n.º 4
0
class ReportDevices(SidebarReports, Base):
    template_name = 'ui/report_devices.html'
    subsection = 'devices'
    perms = [
        {
            'perm': Perm.read_device_info_reports,
            'msg': _("You don't have permission to see reports."),
        },
    ]

    def get_name(self, name, id):
        id = escape(id)
        name = escape(name)
        html = '<a href="/ui/search/info/%s">%s</a> (%s)' % (id, name, id)
        return mark_safe(html)

    @ralph_permission(perms)
    def get(self, *args, **kwargs):
        self.perm_edit = False

        request = self.request.GET
        csv_conf = {
            'name': 'report_devices',
            'url': None,
        }
        # Filtering of the cross
        self.form_choice = DevicesChoiceReportForm(request)
        queries = {Q()}
        headers = ['Name']
        dep = self.request.GET.get('deprecation')
        no_dep = self.request.GET.get('no_deprecation')
        no_mar = self.request.GET.get('no_margin')
        no_sup = self.request.GET.get('no_support')
        no_pur = self.request.GET.get('no_purchase')
        no_ven = self.request.GET.get('no_venture')
        no_rol = self.request.GET.get('no_role')
        no_par = self.request.GET.get('no_parent')
        rows = []
        if dep:
            headers.append('Depreciation date')
            queries.update({Q(deprecation_date__lte=datetime.date.today())})
        if no_dep:
            headers.append('No depreciation date')
            queries.update({Q(deprecation_date=None)})
        if no_mar:
            headers.append('No depreciation kind')
            queries.update({Q(deprecation_kind=None)})
        if no_sup:
            headers.append('No support')
            queries.update({Q(support_expiration_date=None)})
        if no_pur:
            headers.append('No purchase')
            queries.update({Q(purchase_date=None)})
        if no_ven:
            headers.append('No venture')
            queries.update({Q(venture=None)})
        if no_rol:
            headers.append('No venture role')
            queries.update({Q(venture_role=None)})
        if no_par:
            headers.append('No parent')
            queries.update({Q(parent=None) | Q(p_deleted=True)})
        if len(queries) > 1:
            devices = Device.objects.filter(*queries)
            for dev in devices:
                row = []
                row.append(self.get_name(dev.name, dev.id))
                if dep:
                    row.append(dev.deprecation_date)
                if no_dep:
                    row.append(dev.deprecation_date)
                if no_mar:
                    row.append(dev.deprecation_kind)
                if no_sup:
                    row.append(dev.support_expiration_date)
                if no_pur:
                    row.append(dev.purchase_date)
                if no_ven:
                    row.append(dev.venture)
                if no_rol:
                    row.append(dev.venture_role)
                rows.append(row)
        # Filtering of the range
        # Support range
        s_start = self.request.GET.get('s_start', None)
        s_end = self.request.GET.get('s_end', None)
        if s_start and s_end:
            self.form_support_range = SupportRangeReportForm(request)
            if self.form_support_range.is_valid():
                headers = ('Name', 'Support expiration date')
                rows.extend([
                    (
                        self.get_name(dev.name, dev.id),
                        dev.support_expiration_date,
                    ) for dev in Device.objects.filter(
                        support_expiration_date__gte=s_start,
                        support_expiration_date__lte=s_end,
                    )
                ])
        else:
            self.form_support_range = SupportRangeReportForm(initial={
                's_start': datetime.date.today() - datetime.timedelta(days=30),
                's_end': datetime.date.today(),
            })
        # Deprecation range
        d_start = self.request.GET.get('d_start', None)
        d_end = self.request.GET.get('d_end', None)
        if d_start and d_end:
            self.form_deprecation_range = DeprecationRangeReportForm(request)
            if self.form_deprecation_range.is_valid():
                headers = ('Name', 'Depreciation date')
                rows.extend([
                    (
                        self.get_name(dev.name, dev.id),
                        dev.deprecation_date,
                    ) for dev in Device.objects.filter(
                        deprecation_date__gte=d_start,
                        deprecation_date__lte=d_end,
                    )
                ])
        else:
            self.form_deprecation_range = DeprecationRangeReportForm(initial={
                'd_start': datetime.date.today() - datetime.timedelta(days=30),
                'd_end': datetime.date.today(),
            })
        # Warranty range
        w_start = self.request.GET.get('w_start', None)
        w_end = self.request.GET.get('w_end', None)
        if w_start and w_end:
            self.form_warranty_range = WarrantyRangeReportForm(request)
            if self.form_warranty_range.is_valid():
                headers = ('Name', 'Warranty expiration date')
                rows.extend([
                    (
                        self.get_name(dev.name, dev.id),
                        dev.warranty_expiration_date,
                    ) for dev in Device.objects.filter(
                        warranty_expiration_date__gte=w_start,
                        warranty_expiration_date__lte=w_end,
                    )
                ])
        else:
            self.form_warranty_range = WarrantyRangeReportForm(initial={
                'w_start': datetime.date.today() - datetime.timedelta(days=30),
                'w_end': datetime.date.today(),
            })
        # Show devices active or / and deleted
        self.device_list = ReportDeviceListForm(request)
        all_devices = request.get('show_all_devices')
        all_deleted_devices = request.get('show_all_deleted_devices')
        if all_devices or all_deleted_devices:
            show_devices = None
            if all_devices and all_deleted_devices:
                show_devices = Device.admin_objects.all()
                csv_conf = {
                    'title': 'All devices (active and deleted)',
                    'name': 'report_all_devices',
                    'url': '?show_all_devices=on&show_all_deleted_devices=on&export=csv',
                    }
            elif all_devices:
                show_devices = Device.objects.all()
                csv_conf = {
                    'title': 'All active devices',
                    'name': 'report_all_active_devices',
                    'url': '?show_all_devices=on&export=csv',
                    }
            elif all_deleted_devices:
                show_devices = Device.admin_objects.filter(deleted=True)
                csv_conf = {
                    'title': 'All deleted devices',
                    'name': 'report_deleted_devices',
                    'url': '?show_all_deleted_devices=on&export=csv',
                    }
            headers = [
                'Device', 'Model', 'SN', 'Barcode', 'Auto price', 'Venture',
                'Role', 'Remarks', 'Verified', 'Deleted',
            ]
            for dev in show_devices:
                rows.append([
                    dev.name,
                    dev.model,
                    dev.sn,
                    dev.barcode,
                    dev.cached_price,
                    dev.venture,
                    dev.role,
                    dev.remarks,
                    dev.verified,
                    dev.deleted,
                ])
        if request.get('export') == 'csv':
            rows.insert(0, headers)
            return make_csv_response(
                data=rows,
                filename=csv_conf.get('name'),
            )
        self.headers = headers
        self.rows = rows
        self.csv_url = csv_conf.get('url')
        self.title = csv_conf.get('title')
        return super(ReportDevices, self).get(*args, **kwargs)

    def get_context_data(self, **kwargs):
        context = super(ReportDevices, self).get_context_data(**kwargs)
        context.update(
            {
                'title': self.title,
                'form_choice': self.form_choice,
                'form_support_range': self.form_support_range,
                'form_deprecation_range': self.form_deprecation_range,
                'form_warranty_range': self.form_warranty_range,
                'form_device_list': self.device_list,
                'csv_url': self.csv_url,
                'tabele_header': self.headers,
                'rows': self.rows,
                'perm_to_edit': self.perm_edit,
            }
        )
        return context