diff --git a/ereuse_devicehub/inventory/views.py b/ereuse_devicehub/inventory/views.py index 7e4d8ef8..fe1c37e7 100644 --- a/ereuse_devicehub/inventory/views.py +++ b/ereuse_devicehub/inventory/views.py @@ -64,9 +64,17 @@ class DeviceListMixin(GenericMixin): def get_context(self, lot_id=None, all_devices=False): super().get_context() + page = int(request.args.get('page', 1)) + per_page = int(request.args.get('per_page', PER_PAGE)) + filter = request.args.get('filter', "All+Computers") + # import pdb; pdb.set_trace() + lots = self.context['lots'] form_filter = FilterForm(lots, lot_id, all_devices=all_devices) - devices = form_filter.search() + devices = form_filter.search().paginate(page=page, per_page=per_page) + devices.first = per_page * devices.page - per_page + 1 + devices.last = len(devices.items) + devices.first - 1 + lot = None form_transfer = '' form_delivery = '' @@ -95,6 +103,7 @@ class DeviceListMixin(GenericMixin): 'tags': self.get_user_tags(), 'list_devices': self.get_selected_devices(form_new_action), 'all_devices': all_devices, + 'filter': filter, } ) @@ -161,17 +170,8 @@ class DeviceListView(DeviceListMixin): class AllDeviceListView(DeviceListMixin): - template_name = 'inventory/all_device_list.html' - def dispatch_request(self): self.get_context(all_devices=True) - # import pdb; pdb.set_trace() - page = int(request.args.get('page', 1)) - per_page = int(request.args.get('per_page', PER_PAGE)) - devices = self.context['devices'].paginate(page=page, per_page=per_page) - devices.first = per_page * devices.page - per_page + 1 - devices.last = len(devices.items) + devices.first - 1 - self.context['devices'] = devices return flask.render_template(self.template_name, **self.context) @@ -1210,43 +1210,17 @@ class SnapshotListView(GenericMixin): return flask.render_template(self.template_name, **self.context) def get_snapshots_log(self): + page = int(request.args.get('page', 1)) + per_page = int(request.args.get('per_page', PER_PAGE)) + snapshots_log = SnapshotsLog.query.filter( SnapshotsLog.owner == g.user ).order_by(SnapshotsLog.created.desc()) - logs = {} - for snap in snapshots_log: - try: - system_uuid = snap.snapshot.device.system_uuid or '' - except AttributeError: - system_uuid = '' - if snap.snapshot_uuid not in logs: - logs[snap.snapshot_uuid] = { - 'sid': snap.sid, - 'snapshot_uuid': snap.snapshot_uuid, - 'version': snap.version, - 'device': snap.get_device(), - 'system_uuid': system_uuid, - 'status': snap.get_status(), - 'severity': snap.severity, - 'created': snap.created, - 'type_device': snap.get_type_device(), - 'original_dhid': snap.get_original_dhid(), - 'new_device': snap.get_new_device(), - } - continue - - if snap.created > logs[snap.snapshot_uuid]['created']: - logs[snap.snapshot_uuid]['created'] = snap.created - - if snap.severity > logs[snap.snapshot_uuid]['severity']: - logs[snap.snapshot_uuid]['severity'] = snap.severity - logs[snap.snapshot_uuid]['status'] = snap.get_status() - - result = sorted(logs.values(), key=lambda d: d['created']) - result.reverse() - - return result + snapshots_log = snapshots_log.paginate(page=page, per_page=per_page) + snapshots_log.first = per_page * snapshots_log.page - per_page + 1 + snapshots_log.last = len(snapshots_log.items) + snapshots_log.first - 1 + return snapshots_log class SnapshotDetailView(GenericMixin): @@ -1376,10 +1350,17 @@ class PlaceholderLogListView(GenericMixin): return flask.render_template(self.template_name, **self.context) def get_placeholders_log(self): + page = int(request.args.get('page', 1)) + per_page = int(request.args.get('per_page', PER_PAGE)) + placeholder_log = PlaceholdersLog.query.filter( PlaceholdersLog.owner == g.user ).order_by(PlaceholdersLog.created.desc()) + placeholder_log = placeholder_log.paginate(page=page, per_page=per_page) + placeholder_log.first = per_page * placeholder_log.page - per_page + 1 + placeholder_log.last = len(placeholder_log.items) + placeholder_log.first - 1 + return placeholder_log diff --git a/ereuse_devicehub/parser/models.py b/ereuse_devicehub/parser/models.py index 4d298af0..bdd13f73 100644 --- a/ereuse_devicehub/parser/models.py +++ b/ereuse_devicehub/parser/models.py @@ -78,6 +78,12 @@ class SnapshotsLog(Thing): snapshots.append(s) return snapshots and 'Update' or 'New Device' + def get_system_uuid(self): + try: + return self.snapshot.device.system_uuid or '' + except AttributeError: + return '' + class PlaceholdersLog(Thing): """A Placeholder log.""" diff --git a/ereuse_devicehub/templates/inventory/all_device_list.html b/ereuse_devicehub/templates/inventory/all_device_list.html deleted file mode 100644 index 79ff81cd..00000000 --- a/ereuse_devicehub/templates/inventory/all_device_list.html +++ /dev/null @@ -1,671 +0,0 @@ -{% extends "ereuse_devicehub/base_site.html" %} -{% block main %} - -
-

Inventory

- -
- -
-
- -
- -
- {% if lot %} -
- - -
-
-

- {{ lot.name }} -

-
- -
- {% if lot.is_temporary or not lot.transfer.closed %} - - {% if lot and lot.is_temporary %} - - Create Outgoing Lot - - - Create Incoming Lot - - {% endif %} - - Delete Lot - - - {% endif %} -
-
-
- {% endif %} -
- - {% if lot %} - - {% endif %} -
-
- - - - - - - - - - - - - - -
-
-
- {% for f in form_filter %} - {{ f }} - {% endfor %} - -
-
- -

- Displaying devices of type - {{ form_filter.filter.data or "Computer" }} -

- -
-
- -
- -
-
- - - - - - - - - - - - - - - - - - - {% for dev in devices.items %} - {% if dev.placeholder and (not dev.parent_id or dev.parent.placeholder.kangaroo) %} - - - - - - - - - - - - - - - {% endif %} - {% endfor %} - -
SelectTitleDHIDPHIDTypeUnique IdentifiersLifecycle StatusAllocated StatusPhysical StatusUpdated inRegistered in
- - - - {% if dev.get_type_logo() %} - - {% endif %} - {{ dev.verbose_name }} - - {% if dev.lots | length > 0 %} -
- {% for lot in dev.get_lots_for_template() %} - {{ lot }} - {% endfor %} -
- {% endif %} -
- - {{ dev.devicehub_id }} - - - {{ dev.binding and dev.binding.phid or dev.placeholder and dev.placeholder.phid or '' }} - - {{ dev.is_abstract() }} - - {% for t in dev.tags | sort(attribute="id") %} - {{ t.id }} - {% if not loop.last %},{% endif %} - {% endfor %} - {% if dev.status %}{{ dev.status.type }}{% endif %}{% if dev.allocated_status %}{{ dev.allocated_status.type }}{% endif %}{% if dev.physical_status %}{{ dev.physical_status.type }}{% endif %}{{ dev.get_updated.strftime('%Y-%m-%d %H:%M:%S')}}{{ dev.created.strftime('%Y-%m-%d %H:%M:%S')}} - - - -
-
-
- Showing {{ devices.first }} to {{ devices.last }} of {{ devices.total }} entries -
- -
-
- -
-
- {% if lot and not lot.is_temporary %} -
- - -
Documents
- - - - - - - - - {% for doc in lot.documents %} - - - - - {% endfor %} - {% for doc in lot.trade.documents %} - - - - - {% endfor %} - -
FileUploaded on
- {% if doc.get_url() %} - {{ doc.file_name}} - {% else %} - {{ doc.file_name}} - {% endif %} - - {{ doc.created.strftime('%Y-%m-%d %H:%M')}} -
- {% if doc.get_url() %} - {{ doc.file_name}} - {% else %} - {{ doc.file_name}} - {% endif %} - - {{ doc.created.strftime('%Y-%m-%d %H:%M')}} -
-
-
-
Transfer
-
- {{ form_transfer.csrf_token }} - - {% for field in form_transfer %} - {% if field != form_transfer.csrf_token %} -
- {% if field != form_transfer.type %} - {{ field.label(class_="form-label") }} - {% if field == form_transfer.code %} - * - {% endif %} - {{ field }} - {{ field.description }} - {% if field.errors %} -

- {% for error in field.errors %} - {{ error }}
- {% endfor %} -

- {% endif %} - {% endif %} -
- {% endif %} - {% endfor %} - -
- Cancel - -
-
-
-
-
Delivery Note
-
- {{ form_delivery.csrf_token }} - - {% for field in form_delivery %} - {% if field != form_delivery.csrf_token %} -
- {% if field != form_delivery.type %} - {{ field.label(class_="form-label") }} - {{ field }} - {{ field.description }} - {% if field.errors %} -

- {% for error in field.errors %} - {{ error }}
- {% endfor %} -

- {% endif %} - {% endif %} -
- {% endif %} - {% endfor %} - - {% if lot.transfer and form_receiver.is_editable() %} -
- Cancel - -
- {% endif %} -
-
-
-
Receiver Note
-
- {{ form_receiver.csrf_token }} - - {% for field in form_receiver %} - {% if field != form_receiver.csrf_token %} -
- {% if field != form_receiver.type %} - {{ field.label(class_="form-label") }} - {{ field }} - {{ field.description }} - {% if field.errors %} -

- {% for error in field.errors %} - {{ error }}
- {% endfor %} -

- {% endif %} - {% endif %} -
- {% endif %} - {% endfor %} - - {% if lot.transfer and form_receiver.is_editable() %} -
- Cancel - -
- {% endif %} -
-
- {% endif %} - -
-
-
-
- -
- -
- -
-{% include "inventory/lot_delete_modal.html" %} -{% include "inventory/actions.html" %} -{% include "inventory/allocate.html" %} -{% include "inventory/data_wipe.html" %} -{% include "inventory/trade.html" %} -{% include "inventory/alert_export_error.html" %} -{% include "inventory/alert_lots_changes.html" %} - - - - -{% if config['DEBUG'] %} - -{% else %} - -{% endif %} - - -{% endblock main %} diff --git a/ereuse_devicehub/templates/inventory/device_list.html b/ereuse_devicehub/templates/inventory/device_list.html index 98894fe5..78c3e39d 100644 --- a/ereuse_devicehub/templates/inventory/device_list.html +++ b/ereuse_devicehub/templates/inventory/device_list.html @@ -7,7 +7,11 @@