From c90fa4e84eb346183460b692092000af38f98656 Mon Sep 17 00:00:00 2001 From: nad Date: Mon, 27 Jul 2020 13:56:56 +0200 Subject: [PATCH] Adding stock row class for new document endpoint --- .../resources/documents/device_row.py | 50 +++++++++++++++++-- .../resources/documents/documents.py | 7 +-- 2 files changed, 50 insertions(+), 7 deletions(-) diff --git a/ereuse_devicehub/resources/documents/device_row.py b/ereuse_devicehub/resources/documents/device_row.py index dea1e698..6ba3b4c3 100644 --- a/ereuse_devicehub/resources/documents/device_row.py +++ b/ereuse_devicehub/resources/documents/device_row.py @@ -51,10 +51,6 @@ class DeviceRow(OrderedDict): self['Processor'] = device.processor_model self['RAM (MB)'] = device.ram_size self['Data Storage Size (MB)'] = device.data_storage_size - if isinstance(device, d.Mobile): - self['Display Size'] = device.display_size - self['RAM (MB)'] = device.ram_size - self['Data Storage Size (MB)'] = device.data_storage_size rate = device.rate if rate: self['Rate'] = rate.rating @@ -135,3 +131,49 @@ class DeviceRow(OrderedDict): self['{} {} Speed (MHz)'.format(type, i)] = component.speed # todo add Display, NetworkAdapter, etc... + + +class StockRow(OrderedDict): + def __init__(self, device: d.Device) -> None: + super().__init__() + self.device = device + self['Type'] = device.t + if isinstance(device, d.Computer): + self['Chassis'] = device.chassis + else: + self['Chassis'] = '' + self['Serial Number'] = device.serial_number + self['Model'] = device.model + self['Manufacturer'] = device.manufacturer + self['Registered in'] = format(device.created, '%c') + try: + self['Physical state'] = device.last_action_of(*states.Physical.actions()).t + except: + self['Physical state'] = '' + try: + self['Trading state'] = device.last_action_of(*states.Trading.actions()).t + except: + self['Trading state'] = '' + try: + self['Price'] = device.price + except: + self['Price'] = '' + try: + self['Processor'] = device.processor_model + self['RAM (MB)'] = device.ram_size + self['Data Storage Size (MB)'] = device.data_storage_size + except: + self['Processor'] = '' + self['RAM (MB)'] = '' + self['Data Storage Size (MB)'] = '' + rate = device.rate + if rate: + self['Rate'] = rate.rating + self['Range'] = rate.rating_range + assert isinstance(rate, RateComputer) + self['Processor Rate'] = rate.processor + self['Processor Range'] = rate.processor_range + self['RAM Rate'] = rate.ram + self['RAM Range'] = rate.ram_range + self['Data Storage Rate'] = rate.data_storage + self['Data Storage Range'] = rate.data_storage_range diff --git a/ereuse_devicehub/resources/documents/documents.py b/ereuse_devicehub/resources/documents/documents.py index 3b148362..641532ab 100644 --- a/ereuse_devicehub/resources/documents/documents.py +++ b/ereuse_devicehub/resources/documents/documents.py @@ -18,7 +18,8 @@ from ereuse_devicehub.db import db from ereuse_devicehub.resources.action import models as evs from ereuse_devicehub.resources.device import models as devs from ereuse_devicehub.resources.device.views import DeviceView -from ereuse_devicehub.resources.documents.device_row import DeviceRow + +from ereuse_devicehub.resources.documents.device_row import DeviceRow, StockRow class Format(enum.Enum): @@ -138,13 +139,13 @@ class StockDocumentView(DeviceView): cw = csv.writer(data) first = True for device in query: - d = DeviceRow(device) + d = StockRow(device) if first: cw.writerow(d.keys()) first = False cw.writerow(d.values()) output = make_response(data.getvalue()) - output.headers['Content-Disposition'] = 'attachment; filename=export.csv' + output.headers['Content-Disposition'] = 'attachment; filename=stock.csv' output.headers['Content-type'] = 'text/csv' return output