add proof
This commit is contained in:
parent
599f15d5ae
commit
ef8825568f
|
@ -487,6 +487,46 @@ class EraseBasic(JoinedWithOneDeviceMixin, ActionWithOneDevice):
|
||||||
return self.snapshot.device.phid()
|
return self.snapshot.device.phid()
|
||||||
return ''
|
return ''
|
||||||
|
|
||||||
|
def register_proof(self):
|
||||||
|
"""This method is used for register a proof of erasure en dlt"""
|
||||||
|
|
||||||
|
if 'trublo' not in app.blueprints.keys() or not self.snapshot:
|
||||||
|
return
|
||||||
|
|
||||||
|
if not session.get('token_dlt'):
|
||||||
|
return
|
||||||
|
|
||||||
|
token_dlt = session.get('token_dlt')
|
||||||
|
api_dlt = app.config.get('API_DLT')
|
||||||
|
if not token_dlt or not api_dlt:
|
||||||
|
return
|
||||||
|
|
||||||
|
api = API(api_dlt, token_dlt, "ethereum")
|
||||||
|
|
||||||
|
from ereuse_devicehub.resources.did.models import PROOF_ENUM, Proof
|
||||||
|
|
||||||
|
deviceCHID = self.device.chid
|
||||||
|
docSig = hashlib.sha3_256(self.snapshot.json_wb.encode('utf-8')).hexdigest()
|
||||||
|
docID = "{}".format(self.snapshot.uuid or '')
|
||||||
|
issuerID = "dh1:{user}".format(user=g.user.id)
|
||||||
|
proof_type = PROOF_ENUM['Erase']
|
||||||
|
result = api.generate_proof(deviceCHID, docID, docSig, issuerID, proof_type)
|
||||||
|
from ereuse_devicehub.resources.enums import StatusCode
|
||||||
|
|
||||||
|
if result['Status'] == StatusCode.Success:
|
||||||
|
timestamp = (
|
||||||
|
result.get('Data', {}).get('data', {}).get('timestamp', time.time())
|
||||||
|
)
|
||||||
|
d = {
|
||||||
|
"type": PROOF_ENUM['Register'],
|
||||||
|
"device": self.device,
|
||||||
|
"snapshot": self.snapshot,
|
||||||
|
"timestamp": timestamp,
|
||||||
|
"issuer_id": g.user.id,
|
||||||
|
}
|
||||||
|
proof = Proof(**d)
|
||||||
|
db.session.add(proof)
|
||||||
|
|
||||||
def __str__(self) -> str:
|
def __str__(self) -> str:
|
||||||
return '{} on {}.'.format(self.severity, self.date_str)
|
return '{} on {}.'.format(self.severity, self.date_str)
|
||||||
|
|
||||||
|
@ -780,7 +820,6 @@ class Snapshot(JoinedWithOneDeviceMixin, ActionWithOneDevice):
|
||||||
docID = "{}".format(self.uuid or '')
|
docID = "{}".format(self.uuid or '')
|
||||||
issuerID = "dh1:{user}".format(user=g.user.id)
|
issuerID = "dh1:{user}".format(user=g.user.id)
|
||||||
result = api.issue_passport(dpp, docID, docSig, issuerID)
|
result = api.issue_passport(dpp, docID, docSig, issuerID)
|
||||||
# import pdb;pdb.set_trace()
|
|
||||||
if result['Status'] is not StatusCode.Success:
|
if result['Status'] is not StatusCode.Success:
|
||||||
return
|
return
|
||||||
timestamp = result['Data'].get('timestamp', time.time())
|
timestamp = result['Data'].get('timestamp', time.time())
|
||||||
|
|
|
@ -12,7 +12,7 @@ from flask import g
|
||||||
from sqlalchemy.util import OrderedSet
|
from sqlalchemy.util import OrderedSet
|
||||||
|
|
||||||
from ereuse_devicehub.db import db
|
from ereuse_devicehub.db import db
|
||||||
from ereuse_devicehub.resources.action.models import Snapshot
|
from ereuse_devicehub.resources.action.models import EraseBasic, Snapshot
|
||||||
from ereuse_devicehub.resources.device.models import Computer
|
from ereuse_devicehub.resources.device.models import Computer
|
||||||
from ereuse_devicehub.resources.device.sync import Sync
|
from ereuse_devicehub.resources.device.sync import Sync
|
||||||
from ereuse_devicehub.resources.enums import Severity, SnapshotSoftware
|
from ereuse_devicehub.resources.enums import Severity, SnapshotSoftware
|
||||||
|
@ -126,6 +126,11 @@ class SnapshotMixin:
|
||||||
snapshot.device.register_dlt()
|
snapshot.device.register_dlt()
|
||||||
snapshot.register_passport_dlt()
|
snapshot.register_passport_dlt()
|
||||||
|
|
||||||
|
for ac in snapshot.actions:
|
||||||
|
if not isinstance(ac, EraseBasic):
|
||||||
|
continue
|
||||||
|
ac.register_proof()
|
||||||
|
|
||||||
return snapshot
|
return snapshot
|
||||||
|
|
||||||
def is_server_erase(self, snapshot):
|
def is_server_erase(self, snapshot):
|
||||||
|
|
|
@ -915,6 +915,13 @@ class Device(Thing):
|
||||||
proof = Proof(**d)
|
proof = Proof(**d)
|
||||||
db.session.add(proof)
|
db.session.add(proof)
|
||||||
|
|
||||||
|
if not hasattr(self, 'components'):
|
||||||
|
return
|
||||||
|
|
||||||
|
for c in self.components:
|
||||||
|
if isinstance(c, DataStorage):
|
||||||
|
c.register_dlt()
|
||||||
|
|
||||||
def unreliable(self):
|
def unreliable(self):
|
||||||
self.user_trusts = False
|
self.user_trusts = False
|
||||||
i = 0
|
i = 0
|
||||||
|
|
|
@ -15,6 +15,7 @@ PROOF_ENUM = {
|
||||||
'Register': 'Register',
|
'Register': 'Register',
|
||||||
'IssueDPP': 'IssueDPP',
|
'IssueDPP': 'IssueDPP',
|
||||||
'proof_of_recycling': 'proof_of_recycling',
|
'proof_of_recycling': 'proof_of_recycling',
|
||||||
|
'Erase': 'Erase',
|
||||||
}
|
}
|
||||||
|
|
||||||
_sorted_proofs = {'order_by': lambda: Proof.created, 'collection_class': SortedSet}
|
_sorted_proofs = {'order_by': lambda: Proof.created, 'collection_class': SortedSet}
|
||||||
|
|
Reference in New Issue