This repository has been archived on 2024-05-31. You can view files and clone it, but cannot push or open issues or pull requests.
devicehub-teal/ereuse_devicehub/resources/event/models.pyi

486 lines
13 KiB
Python
Raw Normal View History

import ipaddress
2018-06-10 16:47:49 +00:00
from datetime import datetime, timedelta
from decimal import Decimal
2018-06-10 16:47:49 +00:00
from distutils.version import StrictVersion
from typing import Dict, List, Optional, Set, Union
2018-06-10 16:47:49 +00:00
from uuid import UUID
from boltons import urlutils
from boltons.urlutils import URL
2018-06-10 16:47:49 +00:00
from sqlalchemy import Column
from sqlalchemy.orm import relationship
2018-07-14 14:41:22 +00:00
from sqlalchemy_utils import Currency
2018-09-07 10:38:02 +00:00
from teal import enums
from teal.db import Model
from teal.enums import Country
2018-06-10 16:47:49 +00:00
from ereuse_devicehub.resources.agent.models import Agent
2018-06-10 16:47:49 +00:00
from ereuse_devicehub.resources.device.models import Component, Computer, Device
from ereuse_devicehub.resources.enums import AppearanceRange, Bios, ErasureStandards, \
FunctionalityRange, PhysicalErasureMethod, PriceSoftware, RatingSoftware, ReceiverRole, \
Severity, SnapshotExpectedEvents, SnapshotSoftware, TestDataStorageLength
2018-06-10 16:47:49 +00:00
from ereuse_devicehub.resources.models import Thing
from ereuse_devicehub.resources.user.models import User
2018-06-10 16:47:49 +00:00
class Event(Thing):
id = ... # type: Column
2018-06-12 14:50:05 +00:00
name = ... # type: Column
2018-06-10 16:47:49 +00:00
type = ... # type: Column
description = ... # type: Column
snapshot_id = ... # type: Column
snapshot = ... # type: relationship
author_id = ... # type: Column
agent = ... # type: relationship
2018-06-10 16:47:49 +00:00
components = ... # type: relationship
parent_id = ... # type: Column
parent = ... # type: relationship
2018-07-14 14:41:22 +00:00
closed = ... # type: Column
start_time = ... # type: Column
end_time = ... # type: Column
agent_id = ... # type: Column
severity = ... # type: Column
def __init__(self, **kwargs) -> None:
super().__init__(created, updated)
2018-06-10 16:47:49 +00:00
self.id = ... # type: UUID
2018-06-12 14:50:05 +00:00
self.name = ... # type: str
2018-06-10 16:47:49 +00:00
self.type = ... # type: str
self.closed = ... # type: bool
self.description = ... # type: str
self.start_time = ... # type: datetime
self.end_time = ... # type: datetime
2018-06-10 16:47:49 +00:00
self.snapshot = ... # type: Snapshot
self.components = ... # type: Set[Component]
self.parent = ... # type: Computer
self.agent = ... # type: Agent
self.author = ... # type: User
self.severity = ... # type: Severity
2018-06-10 16:47:49 +00:00
@property
def url(self) -> urlutils.URL:
pass
2018-06-10 16:47:49 +00:00
2019-01-29 15:29:08 +00:00
@property
def elapsed(self) -> timedelta:
pass
@property
def certificate(self) -> Optional[urlutils.URL]:
return None
@property
def date_str(self):
return '{:%c}'.format(self.end_time or self.created)
2018-06-10 16:47:49 +00:00
class EventWithOneDevice(Event):
def __init__(self, **kwargs) -> None:
super().__init__(**kwargs)
2018-06-10 16:47:49 +00:00
self.device = ... # type: Device
class EventWithMultipleDevices(Event):
devices = ... # type: relationship
def __init__(self, **kwargs) -> None:
super().__init__(**kwargs)
2018-06-10 16:47:49 +00:00
self.devices = ... # type: Set[Device]
2018-06-26 13:35:13 +00:00
class Add(EventWithOneDevice):
pass
class Remove(EventWithOneDevice):
pass
2018-06-10 16:47:49 +00:00
class Step(Model):
type = ... # type: Column
num = ... # type: Column
start_time = ... # type: Column
end_time = ... # type: Column
erasure = ... # type: relationship
severity = ... # type: Column
def __init__(self, num=None, success=None, start_time=None, end_time=None,
erasure=None, severity=None) -> None:
2018-06-10 16:47:49 +00:00
self.type = ... # type: str
self.num = ... # type: int
self.start_time = ... # type: datetime
self.end_time = ... # type: datetime
self.erasure = ... # type: EraseBasic
self.severity = ... # type: Severity
2018-06-10 16:47:49 +00:00
class StepZero(Step):
pass
class StepRandom(Step):
pass
2019-04-11 16:29:51 +00:00
class EraseBasic(EventWithOneDevice):
def __init__(self, **kwargs) -> None:
super().__init__(**kwargs)
self.start_time = ... # type: datetime
self.end_time = ... # type: datetime
self.steps = ... # type: List[Step]
self.zeros = ... # type: bool
self.success = ... # type: bool
@property
def standards(self) -> Set[ErasureStandards]:
pass
@property
def certificate(self) -> urlutils.URL:
pass
class EraseSectors(EraseBasic):
def __init__(self, **kwargs) -> None:
super().__init__(**kwargs)
class ErasePhysical(EraseBasic):
method = ... # type: Column
def __init__(self, **kwargs) -> None:
super().__init__(**kwargs)
self.method = ... # type: PhysicalErasureMethod
2018-06-10 16:47:49 +00:00
class Snapshot(EventWithOneDevice):
def __init__(self, **kwargs) -> None:
super().__init__(**kwargs)
self.uuid = ... # type: UUID
self.version = ... # type: StrictVersion
self.software = ... # type: SnapshotSoftware
self.elapsed = ... # type: timedelta
self.device = ... # type: Computer
self.events = ... # type: Set[Event]
2018-06-14 13:14:23 +00:00
self.expected_events = ... # type: List[SnapshotExpectedEvents]
2018-06-10 16:47:49 +00:00
class Install(EventWithOneDevice):
2018-11-26 12:11:07 +00:00
name = ... # type: Column
elapsed = ... # type: Column
address = ... # type: Column
2018-06-10 16:47:49 +00:00
def __init__(self, **kwargs) -> None:
super().__init__(**kwargs)
self.name = ... # type: str
self.elapsed = ... # type: timedelta
2018-11-26 12:11:07 +00:00
self.address = ... # type: Optional[int]
2018-06-10 16:47:49 +00:00
class SnapshotRequest(Model):
def __init__(self, **kwargs) -> None:
self.id = ... # type: UUID
self.request = ... # type: dict
self.snapshot = ... # type: Snapshot
2019-04-11 16:29:51 +00:00
class Benchmark(EventWithOneDevice):
pass
class BenchmarkDataStorage(Benchmark):
read_speed = ... # type: Column
write_speed = ... # type: Column
2018-06-14 13:14:23 +00:00
2018-06-10 16:47:49 +00:00
def __init__(self, **kwargs) -> None:
super().__init__(**kwargs)
2019-04-11 16:29:51 +00:00
self.read_speed = ... # type: float
self.write_speed = ... # type: float
2018-06-10 16:47:49 +00:00
2019-04-11 16:29:51 +00:00
class BenchmarkWithRate(Benchmark):
rate = ... # type: Column
2018-06-10 16:47:49 +00:00
def __init__(self, **kwargs) -> None:
super().__init__(**kwargs)
2019-04-11 16:29:51 +00:00
self.rate = ... # type: int
2018-06-10 16:47:49 +00:00
2019-04-11 16:29:51 +00:00
class BenchmarkProcessor(BenchmarkWithRate):
pass
2019-04-11 16:29:51 +00:00
class BenchmarkProcessorSysbench(BenchmarkProcessor):
pass
class BenchmarkRamSysbench(BenchmarkWithRate):
pass
class BenchmarkGraphicCard(BenchmarkWithRate):
pass
class Test(EventWithOneDevice):
elapsed = ... # type: Column
2018-06-10 16:47:49 +00:00
def __init__(self, **kwargs) -> None:
super().__init__(**kwargs)
self.elapsed = ... # type: Optional[timedelta]
2019-04-11 16:29:51 +00:00
self.success = ... # type: bool
2018-06-10 16:47:49 +00:00
2019-04-11 16:29:51 +00:00
class TestDataStorage(Test):
def __init__(self, **kwargs) -> None:
super().__init__(**kwargs)
self.id = ... # type: UUID
self.length = ... # type: TestDataStorageLength
self.status = ... # type: str
self.lifetime = ... # type: timedelta
self.first_error = ... # type: int
self.passed_lifetime = ... # type: timedelta
self.assessment = ... # type: int
self.reallocated_sector_count = ... # type: int
self.power_cycle_count = ... # type: int
self.reported_uncorrectable_errors = ... # type: int
self.command_timeout = ... # type: int
self.current_pending_sector_count = ... # type: int
self.offline_uncorrectable = ... # type: int
self.remaining_lifetime_percentage = ... # type: int
2019-04-11 16:29:51 +00:00
class StressTest(Test):
pass
2019-04-11 16:29:51 +00:00
class TestAudio(Test):
"""
Test to check all this aspects related with audio functions, Manual Tests??
"""
loudspeaker = ... # type: Column
microphone = ... # type: Column
2018-10-15 12:20:26 +00:00
2019-04-11 16:29:51 +00:00
class TestConnectivity(Test):
cellular_network = ... # type: Column
wifi = ... # type: Column
bluetooth = ... # type: Column
usb_port = ... # type: Column
locked = ... # type: Column
2018-10-15 12:20:26 +00:00
2019-04-11 16:29:51 +00:00
class TestBattery(Test):
battery_stat = ... # type: Column
battery_health = ... # type: Column
2018-06-10 16:47:49 +00:00
2019-04-11 16:29:51 +00:00
class TestCamera(Test):
camera = ... # type: Column
2018-10-14 09:37:10 +00:00
2018-06-20 21:18:15 +00:00
2019-04-11 16:29:51 +00:00
class TestKeyboard(Test):
keyboard = ... # type: Column
2018-06-20 21:18:15 +00:00
2019-04-11 16:29:51 +00:00
class TestTrackpad(Test):
trackpad = ... # type: Column
2018-10-14 09:37:10 +00:00
2018-06-20 21:18:15 +00:00
2019-04-11 16:29:51 +00:00
class TestBios(Test):
bios_power_on = ... # type: Column
bios_access_range = ... # type: BiosAccessRange
2019-04-11 16:29:51 +00:00
class TestVisual(ManualRate):
appearance_range = ... # type: AppearanceRange
functionality_range = ... # type: FunctionalityRange
class Rate(EventWithOneDevice):
rating = ... # type: Column
appearance = ... # type: Column
functionality = ... # type: Column
version = ... # type: Column
def __init__(self, **kwargs) -> None:
super().__init__(**kwargs)
self.rating = ... # type: float
self.software = ... # type: RatingSoftware
self.version = ... # type: StrictVersion
self.appearance = ... # type: float
self.functionality = ... # type: float
self.rating_range = ... # type: str
class RateComputer(Rate):
id = ...
processor = ...
ram = ...
data_storage = ...
@classmethod
def compute(cls, device) -> 'RateComputer':
pass
2018-06-10 16:47:49 +00:00
2018-07-14 14:41:22 +00:00
class Price(EventWithOneDevice):
2018-10-15 09:21:21 +00:00
SCALE = ...
ROUND = ...
2018-07-14 14:41:22 +00:00
currency = ... # type: Column
price = ... # type: Column
software = ... # type: Column
version = ... # type: Column
rating_id = ... # type: Column
rating = ... # type: relationship
def __init__(self, **kwargs) -> None:
super().__init__(**kwargs)
self.price = ... # type: Decimal
2018-07-14 14:41:22 +00:00
self.currency = ... # type: Currency
self.software = ... # type: PriceSoftware
self.version = ... # type: StrictVersion
self.rating = ... # type: Rate
2018-07-14 14:41:22 +00:00
2018-10-15 09:21:21 +00:00
@classmethod
def to_price(cls, value: Union[Decimal, float], rounding=ROUND) -> Decimal:
pass
2018-07-14 14:41:22 +00:00
class EreusePrice(Price):
MULTIPLIER = ... # type: Dict
class Type:
2018-10-14 21:56:54 +00:00
def __init__(self, percentage, price) -> None:
super().__init__()
self.amount = ... # type: float
self.percentage = ... # type: float
class Service:
def __init__(self) -> None:
super().__init__()
self.standard = ... # type: EreusePrice.Type
self.warranty2 = ... # type: EreusePrice.Type
def __init__(self, rating: Rate, **kwargs) -> None:
2018-07-14 14:41:22 +00:00
super().__init__(**kwargs)
self.retailer = ... # type: EreusePrice.Service
self.platform = ... # type: EreusePrice.Service
self.refurbisher = ... # type: EreusePrice.Service
self.warranty2 = ... # type: float
2018-07-14 14:41:22 +00:00
class ToRepair(EventWithMultipleDevices):
pass
class Repair(EventWithMultipleDevices):
pass
class ReadyToUse(EventWithMultipleDevices):
pass
class ToPrepare(EventWithMultipleDevices):
pass
class Prepare(EventWithMultipleDevices):
pass
class Live(EventWithOneDevice):
ip = ... # type: Column
subdivision_confidence = ... # type: Column
subdivision = ... # type: Column
city = ... # type: Column
city_confidence = ... # type: Column
isp = ... # type: Column
organization = ... # type: Column
organization_type = ... # type: Column
def __init__(self, **kwargs) -> None:
super().__init__(**kwargs)
self.ip = ... # type: Union[ipaddress.IPv4Address, ipaddress.IPv6Address]
self.subdivision_confidence = ... # type: int
self.subdivision = ... # type: enums.Subdivision
self.city = ... # type: str
self.city_confidence = ... # type: int
self.isp = ... # type: str
self.organization = ... # type: str
self.organization_type = ... # type: str
self.country = ... # type: Country
class Organize(EventWithMultipleDevices):
pass
class Reserve(Organize):
pass
class Trade(EventWithMultipleDevices):
shipping_date = ... # type: Column
invoice_number = ... # type: Column
price = ... # type: relationship
to = ... # type: relationship
confirms = ... # type: relationship
def __init__(self, **kwargs) -> None:
super().__init__(**kwargs)
self.shipping_date = ... # type: datetime
self.invoice_number = ... # type: str
self.price = ... # type: Price
self.to = ... # type: Agent
self.confirms = ... # type: Organize
class Sell(Trade):
pass
class Donate(Trade):
pass
class Rent(Trade):
pass
class CancelTrade(Trade):
pass
class ToDisposeProduct(Trade):
pass
class DisposeProduct(Trade):
pass
class Receive(EventWithMultipleDevices):
role = ... # type:Column
def __init__(self, **kwargs) -> None:
super().__init__(**kwargs)
self.role = ... # type: ReceiverRole
class Migrate(EventWithMultipleDevices):
other = ... # type: Column
def __init__(self, **kwargs) -> None:
super().__init__(**kwargs)
self.other = ... # type: URL
class MigrateTo(Migrate):
pass
class MigrateFrom(Migrate):
pass