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

542 lines
14 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
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
class Rate(EventWithOneDevice):
2018-06-14 13:14:23 +00:00
rating = ... # type: Column
appearance = ... # type: Column
functionality = ... # type: Column
software = ... # type: Column
version = ... # 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)
self.rating = ... # type: float
2018-07-14 14:41:22 +00:00
self.software = ... # type: RatingSoftware
self.version = ... # type: StrictVersion
2018-06-10 16:47:49 +00:00
self.appearance = ... # type: float
self.functionality = ... # type: float
self.rating_range = ... # type: str
class IndividualRate(Rate):
def __init__(self, **kwargs) -> None:
super().__init__(**kwargs)
self.aggregated_ratings = ... # type: Set[AggregateRate]
class AggregateRate(Rate):
manual_id = ... # type: Column
manual = ... # type: relationship
workbench = ... # type: relationship
workbench_id = ... # type: Column
2018-06-10 16:47:49 +00:00
def __init__(self, **kwargs) -> None:
super().__init__(**kwargs)
self.manual_id = ... # type: UUID
self.manual = ... # type: ManualRate
self.workbench = ... # type: WorkbenchRate
self.workbench_id = ... # type: UUID
2018-07-14 14:41:22 +00:00
self.price = ... # type: Price
2018-06-10 16:47:49 +00:00
@property
def processor(self):
return self.workbench.processor
@property
def ram(self):
return self.workbench.ram
@property
def data_storage(self):
return self.workbench.data_storage
@property
def graphic_card(self):
return self.workbench.graphic_card
@property
def bios(self):
return self.workbench.bios
2018-10-15 12:20:26 +00:00
@property
def functionality_range(self):
return self.workbench.functionality_range
@property
def appearance_range(self):
return self.workbench.appearance_range
@property
def bios_range(self):
return self.workbench.bios_range
@property
def labelling(self):
return self.workbench.labelling
@classmethod
def from_workbench_rate(cls, rate: WorkbenchRate) -> AggregateRate:
pass
2018-06-10 16:47:49 +00:00
2018-06-20 21:18:15 +00:00
class ManualRate(IndividualRate):
2018-10-14 09:37:10 +00:00
labelling = ... # type: Column
appearance_range = ... # type: Column
functionality_range = ... # type: Column
aggregate_rate_manual = ... #type: relationship
2018-06-20 21:18:15 +00:00
def __init__(self, **kwargs) -> None:
super().__init__(**kwargs)
self.labelling = ... # type: bool
self.appearance_range = ... # type: AppearanceRange
self.functionality_range = ... # type: FunctionalityRange
self.aggregate_rate_manual = ... #type: AggregateRate
2018-06-20 21:18:15 +00:00
def ratings(self) -> Set[Rate]:
pass
2018-06-20 21:18:15 +00:00
class WorkbenchRate(ManualRate):
2018-10-14 09:37:10 +00:00
processor = ... # type: Column
ram = ... # type: Column
data_storage = ... # type: Column
graphic_card = ... # type: Column
bios_range = ... # type: Column
bios = ... # type: Column
aggregate_rate_workbench = ... #type: Column
2018-06-10 16:47:49 +00:00
def __init__(self, **kwargs) -> None:
super().__init__(**kwargs)
self.processor = ... # type: float
self.ram = ... # type: float
self.data_storage = ... # type: float
self.graphic_card = ... # type: float
2018-10-14 09:37:10 +00:00
self.bios_range = ... # type: Bios
self.bios = ... # type: float
self.aggregate_rate_workbench = ... #type: AggregateRate
2018-06-20 21:18:15 +00:00
@property
def data_storage_range(self):
pass
@property
def ram_range(self):
pass
@property
def processor_range(self):
pass
@property
def graphic_card_range(self):
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: AggregateRate
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
2018-07-14 14:41:22 +00:00
def __init__(self, rating: AggregateRate, **kwargs) -> None:
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
2018-06-10 16:47:49 +00:00
class Test(EventWithOneDevice):
def __init__(self, **kwargs) -> None:
super().__init__(**kwargs)
self.elapsed = ... # type: timedelta
self.success = ... # type: bool
class TestDataStorage(Test):
def __init__(self, **kwargs) -> None:
super().__init__(**kwargs)
self.id = ... # type: UUID
self.length = ... # type: TestDataStorageLength
2018-06-10 16:47:49 +00:00
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
class StressTest(Test):
pass
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]
2018-07-02 10:52:54 +00:00
self.zeros = ... # type: bool
2018-06-10 16:47:49 +00:00
self.success = ... # type: bool
@property
def standards(self) -> Set[ErasureStandards]:
pass
@property
def certificate(self) -> urlutils.URL:
pass
2018-06-10 16:47:49 +00:00
class EraseSectors(EraseBasic):
def __init__(self, **kwargs) -> None:
super().__init__(**kwargs)
2018-06-14 13:14:23 +00:00
class ErasePhysical(EraseBasic):
method = ... # type: Column
def __init__(self, **kwargs) -> None:
super().__init__(**kwargs)
self.method = ... # type: PhysicalErasureMethod
2018-06-14 13:14:23 +00:00
class Benchmark(EventWithOneDevice):
pass
class BenchmarkDataStorage(Benchmark):
read_speed = ... # type: Column
write_speed = ... # type: Column
def __init__(self, **kwargs) -> None:
super().__init__(**kwargs)
self.read_speed = ... # type: float
self.write_speed = ... # type: float
class BenchmarkWithRate(Benchmark):
rate = ... # type: Column
def __init__(self, **kwargs) -> None:
super().__init__(**kwargs)
self.rate = ... # type: int
class BenchmarkProcessor(BenchmarkWithRate):
pass
class BenchmarkProcessorSysbench(BenchmarkProcessor):
pass
class BenchmarkRamSysbench(BenchmarkWithRate):
pass
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