+
+
+
+
+
+
+
+
{{ device_real.type }} - {{ device_real.verbose_name }}
+
+
+
Basic
+
+
+ Type
+
+
+ {{ device_real.type or '- not detected -' }}
+
+
+
+
+ Manufacturer
+
+
+ {{ device_real.manufacturer or '- not detected -' }}
+
+
+
+
+ Model
+
+
+ {{ device_real.model or '- not detected -' }}
+
+
+
+
+ Part Number
+
+
+ {{ device_real.part_number or '- not detected -' }}
+
+
+
+
+ Serial Number
+
+
+ {{ device_abstract.serial_number and device_abstract.serial_number.upper() or '- not detected -' }}
+
+
+
+
+ Usody Identifier (DHID)
+
+
+ {{ device_real.dhid }}
+
+
+
+
+ Inventory Identifier (PHID)
+
+
+ {{ device_real.phid() }}
+
+
+
+
+ Device Identifier (CHID):
+
+
+
+
+
+ Last Digital Passport (Last Dpp):
+
+
+
+
+
+
+
+
Status
+
+
+
Physical
+
{{ device_real.physical_status and device.physical_status.type or '- not status -' }}
+
+
+
+
+
Lifecycle
+
{{ device_real.status and device_real.status.type or '- not status -' }}
+
+
+
+
+
Allocation
+
+ {% if device_real.allocated %}
+ Allocated
+ {% else %}
+ Not allocated
+ {% endif %}
+
+
+
+
+
+
+
Components
+
+ {% if components %}
+
+ {% for component in components|sort(attribute='type') %}
+
+
+
{{ component.type }}
+ {{ component.created.strftime('%H:%M %d-%m-%Y') }}
+
+
+ Manufacturer: {{ component.manufacturer or '- not detected -' }}
+ Model: {{ component.model or '- not detected -' }}
+ Serial: {{ component.serial_number and component.serial_number.upper() or '- not detected -' }}
+
+
+ {% if component.type in ['RamModule', 'HardDrive', 'SolidStateDrive'] %}
+ {{ component.size }}MB
+ {% endif %}
+
+
+ {% endfor %}
+
+ {% else %}
+
+ {% endif %}
+
+
+
+
Repair history
+
+
+ {% for action in placeholder.actions %}
+
+ {{ action.type }} {{ action.severity }}
+ {{ action.created.strftime('%H:%M %d-%m-%Y') }}
+
+ {% endfor %}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+{% if user.is_anonymous and not rols %}
+
+{% else %}
+
+{% endif %}
+
+
+
+{% if not user.is_anonymous and not rol %}
+
+{% endif %}
+
+
diff --git a/ereuse_devicehub/modules/did/templates/verifier.html b/ereuse_devicehub/modules/did/templates/verifier.html
new file mode 100644
index 00000000..bf6348be
--- /dev/null
+++ b/ereuse_devicehub/modules/did/templates/verifier.html
@@ -0,0 +1,320 @@
+
+
+
+
+
+
+
+
Device {{ device_real.dhid }} - Usody
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
{{ device_real.type }} - {{ device_real.verbose_name }}
+
+
+
Details
+
+
+ Type
+
+
+ {{ device_real.type or '- not detected -' }}
+
+
+
+
+ Manufacturer
+
+
+ {{ device_real.manufacturer or '- not detected -' }}
+
+
+
+
+ Model
+
+
+ {{ device_real.model or '- not detected -' }}
+
+
+
+
+ Part Number
+
+
+ {{ device_real.part_number or '- not detected -' }}
+
+
+
+
+ Serial Number
+
+
+ {{ device_abstract.serial_number and device_abstract.serial_number.upper() or '- not detected -' }}
+
+
+
+
+ Usody Identifier (DHID)
+
+
+ {{ device_real.dhid }}
+
+
+
+
+ Inventory Identifier (PHID)
+
+
+ {{ device_real.phid() }}
+
+
+
+
+ Device Identifier (CHID):
+
+
+
+ {% if last_dpp %}
+
+
+ Last Digital Passport (Last Dpp):
+
+
+
+ {% else %}
+
+
+ Last Digital Passport (Last Dpp):
+
+
+ - not detected -
+
+
+ {% endif %}
+ {% if before_dpp %}
+
+
+ Before Digital Passport (Before Dpp):
+
+
+
+ {% else %}
+
+
+ Before Digital Passport (Before Dpp):
+
+
+ - not detected -
+
+
+ {% endif %}
+
+
+
+
+
Components
+
+ {% if components %}
+
+ {% for component in components|sort(attribute='type') %}
+
+
+
{{ component.type }}
+ {{ component.created.strftime('%H:%M %d-%m-%Y') }}
+
+
+ Manufacturer: {{ component.manufacturer or '- not detected -' }}
+ Model: {{ component.model or '- not detected -' }}
+ {% if rol %}
+ Serial: {{ component.serial_number and component.serial_number.upper() or '- not detected -' }}
+ {% endif %}
+ {% if component.type in ['HardDrive', 'SolidStateDrive'] %}
+ Chid:
+
+ {{ component.chid }}
+
+ {% endif %}
+
+
+ {% if component.type in ['RamModule', 'HardDrive', 'SolidStateDrive'] %}
+ {{ component.size }}MB
+ {% endif %}
+
+
+ {% endfor %}
+
+ {% else %}
+
+ {% endif %}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+{% if user.is_anonymous and not rols %}
+
+{% else %}
+
+{% endif %}
+
+
+
+{% if not user.is_anonymous and not rol %}
+
+{% endif %}
+
+
diff --git a/ereuse_devicehub/modules/did/views.py b/ereuse_devicehub/modules/did/views.py
index 99d5c80c..4f7bf757 100644
--- a/ereuse_devicehub/modules/did/views.py
+++ b/ereuse_devicehub/modules/did/views.py
@@ -17,7 +17,7 @@ did = Blueprint('did', __name__, url_prefix='/did', template_folder='templates')
class DidView(View):
methods = ['GET', 'POST']
- template_name = 'did/layout.html'
+ template_name = 'anonymous.html'
def dispatch_request(self, id_dpp):
self.dpp = None
@@ -42,9 +42,21 @@ class DidView(View):
if self.accept_json():
return jsonify(self.get_result())
+ self.get_template()
return render_template(self.template_name, **self.context)
+ def get_template(self):
+ rol = self.context.get('rol')
+ if not rol:
+ return
+
+ tlmp = {
+ "isOperator": "operator.html",
+ "isVerifier": "verifier.html",
+ }
+ self.template_name = tlmp.get(rol, self.template_name)
+
def accept_json(self):
if 'json' in request.headers.get('Accept', []):
return True
diff --git a/ereuse_devicehub/resources/device/models.py b/ereuse_devicehub/resources/device/models.py
index b16fe3a3..6e37f628 100644
--- a/ereuse_devicehub/resources/device/models.py
+++ b/ereuse_devicehub/resources/device/models.py
@@ -16,7 +16,7 @@ from boltons import urlutils
from citext import CIText
from ereuseapi.methods import API
from flask import current_app as app
-from flask import g, request, session
+from flask import g, request, session, url_for
from more_itertools import unique_everseen
from sqlalchemy import BigInteger, Boolean, Column
from sqlalchemy import Enum as DBEnum
@@ -355,6 +355,12 @@ class Device(Thing):
host_url = request.host_url.strip('/')
return "{}{}".format(host_url, self.url.to_text())
+ @property
+ def chid_link(self) -> str:
+ host_url = request.host_url.strip('/')
+ url = url_for('did.did', id_dpp=self.chid)
+ return "{}{}".format(host_url, url)
+
@property
def url(self) -> urlutils.URL:
"""The URL where to GET this device."""
diff --git a/ereuse_devicehub/resources/user/models.py b/ereuse_devicehub/resources/user/models.py
index 272b0943..21efa70f 100644
--- a/ereuse_devicehub/resources/user/models.py
+++ b/ereuse_devicehub/resources/user/models.py
@@ -159,6 +159,12 @@ class User(UserMixin, Thing):
def get_rols_dlt(self):
return json.loads(self.rols_dlt)
+ def set_rols_dlt(self, token_dlt=None):
+ rols = self.get_rols(self, token_dlt=token_dlt)
+ if rols:
+ self.rols_dlt = json.dumps(rols)
+ return rols
+
def get_rols(self, token_dlt=None):
if 'dpp' not in app.blueprints.keys():
diff --git a/ereuse_devicehub/templates/labels/print_labels.html b/ereuse_devicehub/templates/labels/print_labels.html
index e8db7d0c..33190462 100644
--- a/ereuse_devicehub/templates/labels/print_labels.html
+++ b/ereuse_devicehub/templates/labels/print_labels.html
@@ -192,7 +192,7 @@
{% endblock main %}