ereuse_devicehub/resources/action/models.py
This commit is contained in:
parent
12f28ba76f
commit
d974d3d78f
|
@ -325,16 +325,15 @@ class Device(Thing):
|
||||||
actions = copy.copy(self.actions)
|
actions = copy.copy(self.actions)
|
||||||
actions.sort(key=lambda x: x.created)
|
actions.sort(key=lambda x: x.created)
|
||||||
allocates = []
|
allocates = []
|
||||||
from ereuse_devicehub.resources.action.models import Snapshot, Allocate, Deallocate, Live
|
|
||||||
for act in actions:
|
for act in actions:
|
||||||
if isinstance(act, Snapshot):
|
if act.type == 'Snapshot':
|
||||||
snapshot = act
|
snapshot = act
|
||||||
lifestimes = snapshot.get_last_lifetimes()
|
lifestimes = snapshot.get_last_lifetimes()
|
||||||
lifetime = 0
|
lifetime = 0
|
||||||
if lifestimes:
|
if lifestimes:
|
||||||
lifetime = lifestimes[0]['lifetime']
|
lifetime = lifestimes[0]['lifetime']
|
||||||
|
|
||||||
if isinstance(act, Allocate):
|
if act.type == 'Allocate':
|
||||||
allo = {'type': 'Allocate',
|
allo = {'type': 'Allocate',
|
||||||
'userCode': act.final_user_code,
|
'userCode': act.final_user_code,
|
||||||
'numUsers': act.end_users,
|
'numUsers': act.end_users,
|
||||||
|
@ -345,15 +344,19 @@ class Device(Thing):
|
||||||
'allocateLifetime': lifetime}
|
'allocateLifetime': lifetime}
|
||||||
allocates.append(allo)
|
allocates.append(allo)
|
||||||
|
|
||||||
if isinstance(act, Live):
|
if act.type == 'Live':
|
||||||
allocate = copy.copy(allo)
|
allocate = copy.copy(allo)
|
||||||
lifetime = act.usage_time_hdd
|
lifetime = act.usage_time_hdd.total_seconds()
|
||||||
allocate['type'] = 'Live'
|
allocate['type'] = 'Live'
|
||||||
allocate['liveCreate'] = act.created
|
allocate['liveCreate'] = act.created
|
||||||
|
for hd in lifestimes:
|
||||||
|
if hd['serial_number'] == act.serial_number:
|
||||||
|
lifetime = hd['lifetime']
|
||||||
|
break
|
||||||
allocate['liveLifetime'] = lifetime
|
allocate['liveLifetime'] = lifetime
|
||||||
allocates.append(allocate)
|
allocates.append(allocate)
|
||||||
|
|
||||||
if isinstance(act, Deallocate):
|
if act.type == 'Deallocate':
|
||||||
deallo = {'type': 'Deallocate',
|
deallo = {'type': 'Deallocate',
|
||||||
'userCode': '',
|
'userCode': '',
|
||||||
'numUsers': '',
|
'numUsers': '',
|
||||||
|
@ -364,7 +367,7 @@ class Device(Thing):
|
||||||
'allocateLifetime': 0}
|
'allocateLifetime': 0}
|
||||||
allocates.append(deallo)
|
allocates.append(deallo)
|
||||||
|
|
||||||
return allocates
|
return allocates
|
||||||
|
|
||||||
def __lt__(self, other):
|
def __lt__(self, other):
|
||||||
return self.id < other.id
|
return self.id < other.id
|
||||||
|
|
|
@ -11,7 +11,7 @@ from ereuse_utils.test import ANY
|
||||||
|
|
||||||
from ereuse_devicehub.client import Client, UserClient
|
from ereuse_devicehub.client import Client, UserClient
|
||||||
from ereuse_devicehub.devicehub import Devicehub
|
from ereuse_devicehub.devicehub import Devicehub
|
||||||
from ereuse_devicehub.resources.action.models import Snapshot
|
from ereuse_devicehub.resources.action.models import Snapshot, Allocate, Live
|
||||||
from ereuse_devicehub.resources.documents import documents
|
from ereuse_devicehub.resources.documents import documents
|
||||||
from ereuse_devicehub.resources.device import models as d
|
from ereuse_devicehub.resources.device import models as d
|
||||||
from ereuse_devicehub.resources.lot.models import Lot
|
from ereuse_devicehub.resources.lot.models import Lot
|
||||||
|
@ -110,7 +110,24 @@ def test_export_csv_permitions(user: UserClient, user2: UserClient, client: Clie
|
||||||
@pytest.mark.mvp
|
@pytest.mark.mvp
|
||||||
def test_export_csv_actions(user: UserClient, user2: UserClient, client: Client):
|
def test_export_csv_actions(user: UserClient, user2: UserClient, client: Client):
|
||||||
"""Test export device information in a csv file with others users."""
|
"""Test export device information in a csv file with others users."""
|
||||||
snapshot, _ = user.post(file('basic.snapshot'), res=Snapshot)
|
acer = file('acer.happy.battery.snapshot')
|
||||||
|
snapshot, _ = user.post(acer, res=Snapshot)
|
||||||
|
device_id = snapshot['device']['id']
|
||||||
|
post_request = {"transaction": "ccc", "name": "John", "endUsers": 1,
|
||||||
|
"devices": [device_id], "description": "aaa",
|
||||||
|
"finalUserCode": "abcdefjhi",
|
||||||
|
"startTime": "2020-11-01T02:00:00+00:00",
|
||||||
|
"endTime": "2020-12-01T02:00:00+00:00"
|
||||||
|
}
|
||||||
|
|
||||||
|
user.post(res=Allocate, data=post_request)
|
||||||
|
hdd = [c for c in acer['components'] if c['type'] == 'HardDrive'][0]
|
||||||
|
hdd_action = [a for a in hdd['actions'] if a['type'] == 'TestDataStorage'][0]
|
||||||
|
hdd_action['lifetime'] += 1000
|
||||||
|
acer.pop('elapsed')
|
||||||
|
acer['licence_version'] = '1.0.0'
|
||||||
|
snapshot, _ = client.post(acer, res=Live)
|
||||||
|
|
||||||
csv_user, _ = user.get(res=documents.DocumentDef.t,
|
csv_user, _ = user.get(res=documents.DocumentDef.t,
|
||||||
item='actions/',
|
item='actions/',
|
||||||
accept='text/csv',
|
accept='text/csv',
|
||||||
|
@ -131,7 +148,7 @@ def test_export_csv_actions(user: UserClient, user2: UserClient, client: Client)
|
||||||
assert len(csv_user2) == 0
|
assert len(csv_user2) == 0
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.mvp
|
@pytest.mark.mvp
|
||||||
def test_export_basic_snapshot(user: UserClient):
|
def test_export_basic_snapshot(user: UserClient):
|
||||||
"""Test export device information in a csv file."""
|
"""Test export device information in a csv file."""
|
||||||
snapshot, _ = user.post(file('basic.snapshot'), res=Snapshot)
|
snapshot, _ = user.post(file('basic.snapshot'), res=Snapshot)
|
||||||
|
|
Reference in New Issue