Fix UUID in events
This commit is contained in:
parent
e3a887d9fa
commit
5538e5ac69
|
@ -68,15 +68,12 @@ class Client(TealClient):
|
||||||
|
|
||||||
def get_many(self,
|
def get_many(self,
|
||||||
res: Union[Type[Union[models.Thing, schemas.Thing]], str],
|
res: Union[Type[Union[models.Thing, schemas.Thing]], str],
|
||||||
resources: Iterable[dict],
|
resources: Iterable[Union[dict, int]],
|
||||||
key: str = None,
|
key: str = None,
|
||||||
headers: dict = None,
|
|
||||||
token: str = None,
|
|
||||||
accept: str = JSON,
|
|
||||||
**kw) -> Iterable[Union[Dict[str, Any], str]]:
|
**kw) -> Iterable[Union[Dict[str, Any], str]]:
|
||||||
"""Like :meth:`.get` but with many resources."""
|
"""Like :meth:`.get` but with many resources."""
|
||||||
return (
|
return (
|
||||||
self.get(res=res, item=r['key'] if key else r, headers=headers, token=token, **kw)[0]
|
self.get(res=res, item=r[key] if key else r, **kw)[0]
|
||||||
for r in resources
|
for r in resources
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
@ -37,10 +37,10 @@ class Device(Thing):
|
||||||
"""
|
"""
|
||||||
return sorted(chain(self.events_multiple, self.events_one), key=attrgetter('created'))
|
return sorted(chain(self.events_multiple, self.events_one), key=attrgetter('created'))
|
||||||
|
|
||||||
def __init__(self, *args, **kw) -> None:
|
def __init__(self, **kw) -> None:
|
||||||
super().__init__(*args, **kw)
|
super().__init__(**kw)
|
||||||
with suppress(TypeError):
|
with suppress(TypeError):
|
||||||
self.hid = Naming.hid(self.manufacturer, self.serial_number, self.model) # type: str
|
self.hid = Naming.hid(self.manufacturer, self.serial_number, self.model)
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def physical_properties(self) -> Dict[str, object or None]:
|
def physical_properties(self) -> Dict[str, object or None]:
|
||||||
|
@ -114,7 +114,7 @@ class Component(Device):
|
||||||
cascade=CASCADE,
|
cascade=CASCADE,
|
||||||
order_by=lambda: Component.id,
|
order_by=lambda: Component.id,
|
||||||
collection_class=OrderedSet),
|
collection_class=OrderedSet),
|
||||||
primaryjoin=parent_id == Computer.id) # type: Device
|
primaryjoin=parent_id == Computer.id)
|
||||||
|
|
||||||
def similar_one(self, parent: Computer, blacklist: Set[int]) -> 'Component':
|
def similar_one(self, parent: Computer, blacklist: Set[int]) -> 'Component':
|
||||||
"""
|
"""
|
||||||
|
@ -137,7 +137,7 @@ class Component(Device):
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def events(self) -> list:
|
def events(self) -> list:
|
||||||
return sorted(chain(super().events, self.events_components), key=attrgetter('id'))
|
return sorted(chain(super().events, self.events_components), key=attrgetter('created'))
|
||||||
|
|
||||||
|
|
||||||
class JoinedComponentTableMixin:
|
class JoinedComponentTableMixin:
|
||||||
|
|
|
@ -12,7 +12,7 @@ class EventDef(Resource):
|
||||||
SCHEMA = Event
|
SCHEMA = Event
|
||||||
VIEW = EventView
|
VIEW = EventView
|
||||||
AUTH = True
|
AUTH = True
|
||||||
ID_CONVERTER = Converters.int
|
ID_CONVERTER = Converters.uuid
|
||||||
|
|
||||||
|
|
||||||
class AddDef(EventDef):
|
class AddDef(EventDef):
|
||||||
|
|
|
@ -17,7 +17,7 @@ from teal.resource import Schema
|
||||||
|
|
||||||
|
|
||||||
class Event(Thing):
|
class Event(Thing):
|
||||||
id = Integer(dump_only=True)
|
id = UUID(dump_only=True)
|
||||||
name = String(default='', validate=Length(STR_BIG_SIZE), description=m.Event.name.comment)
|
name = String(default='', validate=Length(STR_BIG_SIZE), description=m.Event.name.comment)
|
||||||
date = DateTime('iso', description=m.Event.date.comment)
|
date = DateTime('iso', description=m.Event.date.comment)
|
||||||
error = Boolean(default=False, description=m.Event.error.comment)
|
error = Boolean(default=False, description=m.Event.error.comment)
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
from distutils.version import StrictVersion
|
from distutils.version import StrictVersion
|
||||||
|
from uuid import UUID
|
||||||
|
|
||||||
from flask import request
|
from flask import request
|
||||||
from sqlalchemy.util import OrderedSet
|
from sqlalchemy.util import OrderedSet
|
||||||
|
@ -11,7 +12,7 @@ from teal.resource import View
|
||||||
|
|
||||||
|
|
||||||
class EventView(View):
|
class EventView(View):
|
||||||
def one(self, id: int):
|
def one(self, id: UUID):
|
||||||
"""Gets one event."""
|
"""Gets one event."""
|
||||||
event = Event.query.filter_by(id=id).one()
|
event = Event.query.filter_by(id=id).one()
|
||||||
return self.schema.jsonify(event)
|
return self.schema.jsonify(event)
|
||||||
|
|
|
@ -13,7 +13,7 @@ from teal.resource import Converters, Resource
|
||||||
class UserDef(Resource):
|
class UserDef(Resource):
|
||||||
SCHEMA = UserS
|
SCHEMA = UserS
|
||||||
VIEW = UserView
|
VIEW = UserView
|
||||||
ID_CONVERTER = Converters.uid
|
ID_CONVERTER = Converters.uuid
|
||||||
AUTH = True
|
AUTH = True
|
||||||
|
|
||||||
def __init__(self, app: 'devicehub.Devicehub', import_name=__package__, static_folder=None,
|
def __init__(self, app: 'devicehub.Devicehub', import_name=__package__, static_folder=None,
|
||||||
|
@ -40,7 +40,7 @@ class UserDef(Resource):
|
||||||
|
|
||||||
class OrganizationDef(Resource):
|
class OrganizationDef(Resource):
|
||||||
__type__ = 'Organization'
|
__type__ = 'Organization'
|
||||||
ID_CONVERTER = Converters.uid
|
ID_CONVERTER = Converters.uuid
|
||||||
AUTH = True
|
AUTH = True
|
||||||
|
|
||||||
def __init__(self, app, import_name=__package__, static_folder=None, static_url_path=None,
|
def __init__(self, app, import_name=__package__, static_folder=None, static_url_path=None,
|
||||||
|
|
|
@ -149,10 +149,8 @@ def test_snapshot_component_add_remove(user: UserClient):
|
||||||
def get_events_info(events: List[dict]) -> tuple:
|
def get_events_info(events: List[dict]) -> tuple:
|
||||||
return tuple(
|
return tuple(
|
||||||
(
|
(
|
||||||
e['id'],
|
|
||||||
e['type'],
|
e['type'],
|
||||||
[c['serialNumber'] for c in e['components']],
|
[c['serialNumber'] for c in e['components']]
|
||||||
e.get('snapshot', {}).get('id', None)
|
|
||||||
)
|
)
|
||||||
for e in user.get_many(res=Event, resources=events, key='id')
|
for e in user.get_many(res=Event, resources=events, key='id')
|
||||||
)
|
)
|
||||||
|
@ -209,11 +207,11 @@ def test_snapshot_component_add_remove(user: UserClient):
|
||||||
# PC1
|
# PC1
|
||||||
assert {c['serialNumber'] for c in pc1['components']} == {'p1c2s', 'p1c3s'}
|
assert {c['serialNumber'] for c in pc1['components']} == {'p1c2s', 'p1c3s'}
|
||||||
assert all(c['parent'] == pc1_id for c in pc1['components'])
|
assert all(c['parent'] == pc1_id for c in pc1['components'])
|
||||||
assert get_events_info(pc1['events']) == (
|
assert tuple(get_events_info(pc1['events'])) == (
|
||||||
# id, type, components, snapshot
|
# id, type, components, snapshot
|
||||||
(1, 'Snapshot', ['p1c1s', 'p1c2s', 'p1c3s'], None), # first Snapshot1
|
('Snapshot', ['p1c1s', 'p1c2s', 'p1c3s']), # first Snapshot1
|
||||||
(3, 'Remove', ['p1c2s'], 2), # Remove Processor in Snapshot2
|
('Remove', ['p1c2s']), # Remove Processor in Snapshot2
|
||||||
(4, 'Snapshot', ['p1c2s', 'p1c3s'], None) # This Snapshot3
|
('Snapshot', ['p1c2s', 'p1c3s']) # This Snapshot3
|
||||||
)
|
)
|
||||||
# PC2
|
# PC2
|
||||||
assert tuple(c['serialNumber'] for c in pc2['components']) == ('p2c1s',)
|
assert tuple(c['serialNumber'] for c in pc2['components']) == ('p2c1s',)
|
||||||
|
@ -224,12 +222,12 @@ def test_snapshot_component_add_remove(user: UserClient):
|
||||||
)
|
)
|
||||||
# p1c2s has Snapshot, Remove and Add
|
# p1c2s has Snapshot, Remove and Add
|
||||||
p1c2s, _ = user.get(res=Device, item=pc1['components'][0]['id'])
|
p1c2s, _ = user.get(res=Device, item=pc1['components'][0]['id'])
|
||||||
assert get_events_info(p1c2s['events']) == (
|
assert tuple(get_events_info(p1c2s['events'])) == (
|
||||||
(1, 'Snapshot', ['p1c1s', 'p1c2s', 'p1c3s'], None), # First Snapshot to PC1
|
('Snapshot', ['p1c1s', 'p1c2s', 'p1c3s']), # First Snapshot to PC1
|
||||||
(2, 'Snapshot', ['p1c2s', 'p2c1s'], None), # Second Snapshot to PC2
|
('Snapshot', ['p1c2s', 'p2c1s']), # Second Snapshot to PC2
|
||||||
(3, 'Remove', ['p1c2s'], 2), # ...which caused p1c2s to be removed form PC1
|
('Remove', ['p1c2s']), # ...which caused p1c2s to be removed form PC1
|
||||||
(4, 'Snapshot', ['p1c2s', 'p1c3s'], None), # The third Snapshot to PC1
|
('Snapshot', ['p1c2s', 'p1c3s']), # The third Snapshot to PC1
|
||||||
(5, 'Remove', ['p1c2s'], 4) # ...which caused p1c2 to be removed from PC2
|
('Remove', ['p1c2s']) # ...which caused p1c2 to be removed from PC2
|
||||||
)
|
)
|
||||||
|
|
||||||
# We register the first device but without the processor,
|
# We register the first device but without the processor,
|
||||||
|
@ -242,7 +240,7 @@ def test_snapshot_component_add_remove(user: UserClient):
|
||||||
assert {c['serialNumber'] for c in pc1['components']} == {'p1c3s', 'p1c4s'}
|
assert {c['serialNumber'] for c in pc1['components']} == {'p1c3s', 'p1c4s'}
|
||||||
assert all(c['parent'] == pc1_id for c in pc1['components'])
|
assert all(c['parent'] == pc1_id for c in pc1['components'])
|
||||||
# This last Snapshot only
|
# This last Snapshot only
|
||||||
assert get_events_info(pc1['events'])[-1] == (6, 'Snapshot', ['p1c3s', 'p1c4s'], None)
|
assert get_events_info(pc1['events'])[-1] == ('Snapshot', ['p1c3s', 'p1c4s'])
|
||||||
# PC2
|
# PC2
|
||||||
# We haven't changed PC2
|
# We haven't changed PC2
|
||||||
assert tuple(c['serialNumber'] for c in pc2['components']) == ('p2c1s',)
|
assert tuple(c['serialNumber'] for c in pc2['components']) == ('p2c1s',)
|
||||||
|
|
Reference in New Issue