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(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)
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
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