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/device/models.pyi

427 lines
9.5 KiB
Python
Raw Normal View History

from datetime import datetime
from operator import attrgetter
from typing import Dict, Generator, Iterable, List, Optional, Set, Type
2018-06-10 16:47:49 +00:00
from boltons import urlutils
2018-09-30 17:40:28 +00:00
from boltons.urlutils import URL
2018-06-10 16:47:49 +00:00
from colour import Color
2018-06-20 21:18:15 +00:00
from sqlalchemy import Column, Integer
from sqlalchemy.orm import relationship
2018-09-30 17:40:28 +00:00
from teal.db import Model
from teal.enums import Layouts
2018-06-10 16:47:49 +00:00
from ereuse_devicehub.resources.agent.models import Agent
from ereuse_devicehub.resources.device import states
from ereuse_devicehub.resources.enums import ComputerChassis, DataStorageInterface, DisplayTech, \
PrinterTechnology, RamFormat, RamInterface
from ereuse_devicehub.resources.event import models as e
2018-06-10 16:47:49 +00:00
from ereuse_devicehub.resources.image.models import ImageList
from ereuse_devicehub.resources.lot.models import Lot
2018-06-10 16:47:49 +00:00
from ereuse_devicehub.resources.models import Thing
from ereuse_devicehub.resources.tag import Tag
from ereuse_devicehub.resources.tag.model import Tags
2018-06-10 16:47:49 +00:00
class Device(Thing):
EVENT_SORT_KEY = attrgetter('created')
2018-06-10 16:47:49 +00:00
id = ... # type: Column
type = ... # type: Column
hid = ... # type: Column
model = ... # type: Column
manufacturer = ... # type: Column
serial_number = ... # type: Column
weight = ... # type: Column
width = ... # type: Column
height = ... # type: Column
depth = ... # type: Column
color = ... # type: Column
lots = ... # type: relationship
production_date = ... # type: Column
2018-06-10 16:47:49 +00:00
def __init__(self, **kwargs) -> None:
super().__init__(**kwargs)
self.id = ... # type: int
self.type = ... # type: str
self.hid = ... # type: str
self.model = ... # type: str
self.manufacturer = ... # type: str
self.serial_number = ... # type: str
self.weight = ... # type: float
self.width = ... # type:float
self.height = ... # type: float
self.depth = ... # type: float
self.color = ... # type: Color
self.physical_properties = ... # type: Dict[str, object or None]
self.events_multiple = ... # type: Set[e.EventWithMultipleDevices]
self.events_one = ... # type: Set[e.EventWithOneDevice]
2018-06-10 16:47:49 +00:00
self.images = ... # type: ImageList
self.tags = ... # type: Tags[Tag]
self.lots = ... # type: Set[Lot]
self.production_date = ... # type: datetime
2018-06-10 16:47:49 +00:00
@property
def events(self) -> List[e.Event]:
pass
@property
def problems(self) -> List[e.Event]:
pass
@property
def url(self) -> urlutils.URL:
pass
2018-06-10 16:47:49 +00:00
@property
def rate(self) -> Optional[e.Rate]:
pass
@property
def price(self) -> Optional[e.Price]:
pass
@property
def trading(self) -> Optional[states.Trading]:
pass
@property
def physical(self) -> Optional[states.Physical]:
pass
@property
def physical_possessor(self) -> Optional[Agent]:
pass
@property
def working(self) -> List[e.Test]:
pass
def last_event_of(self, *types: Type[e.Event]) -> e.Event:
pass
def _warning_events(self, events: Iterable[e.Event]) -> Generator[e.Event]:
pass
2018-06-26 13:35:13 +00:00
class DisplayMixin:
technology = ... # type: Column
size = ... # type: Column
resolution_width = ... # type: Column
resolution_height = ... # type: Column
refresh_rate = ... # type: Column
contrast_ratio = ... # type: Column
touchable = ... # type: Column
2018-06-26 13:35:13 +00:00
def __init__(self) -> None:
super().__init__()
self.technology = ... # type: DisplayTech
self.size = ... # type: Integer
self.resolution_width = ... # type: int
self.resolution_height = ... # type: int
self.refresh_rate = ... # type: int
self.contrast_ratio = ... # type: int
self.touchable = ... # type: bool
2018-06-26 13:35:13 +00:00
class Computer(DisplayMixin, Device):
components = ... # type: Column
chassis = ... # type: Column
2018-06-10 16:47:49 +00:00
def __init__(self, **kwargs) -> None:
super().__init__(**kwargs)
self.components = ... # type: Set[Component]
self.events_parent = ... # type: Set[e.Event]
2018-06-26 13:36:21 +00:00
self.chassis = ... # type: ComputerChassis
2018-10-03 12:51:22 +00:00
@property
def events(self) -> List:
pass
@property
def ram_size(self) -> int:
pass
@property
def data_storage_size(self) -> int:
pass
@property
def processor_model(self) -> str:
pass
@property
def graphic_card_model(self) -> str:
pass
@property
def network_speeds(self) -> List[int]:
pass
2018-06-10 16:47:49 +00:00
@property
def privacy(self) -> Set[e.EraseBasic]:
pass
2018-06-10 16:47:49 +00:00
class Desktop(Computer):
pass
2018-06-26 13:36:21 +00:00
class Laptop(Computer):
layout = ... # type: Column
def __init__(self, **kwargs) -> None:
super().__init__(**kwargs)
self.layout = ... # type: Layouts
2018-06-26 13:35:13 +00:00
2018-06-26 13:36:21 +00:00
class Server(Computer):
2018-06-10 16:47:49 +00:00
pass
2018-06-26 13:36:21 +00:00
class Monitor(DisplayMixin, Device):
2018-06-10 16:47:49 +00:00
pass
2018-06-26 13:36:21 +00:00
class ComputerMonitor(Monitor):
2018-06-10 16:47:49 +00:00
pass
2018-06-26 13:36:21 +00:00
class TelevisionSet(Monitor):
2018-06-10 16:47:49 +00:00
pass
2018-06-26 13:36:21 +00:00
class Mobile(Device):
imei = ... # type: Column
meid = ... # type: Column
2018-06-20 21:18:15 +00:00
def __init__(self, **kwargs) -> None:
super().__init__(**kwargs)
2018-06-26 13:36:21 +00:00
self.imei = ... # type: int
self.meid = ... # type: str
class Smartphone(Mobile):
pass
class Tablet(Mobile):
pass
class Cellphone(Mobile):
pass
2018-06-20 21:18:15 +00:00
2018-06-10 16:47:49 +00:00
class Component(Device):
def __init__(self, **kwargs) -> None:
super().__init__(**kwargs)
self.parent_id = ... # type: int
self.parent = ... # type: Computer
self.events_components = ... # type: Set[e.Event]
2018-06-10 16:47:49 +00:00
def similar_one(self, parent: Computer, blacklist: Set[int]) -> 'Component':
pass
class GraphicCard(Component):
memory = ... # type: Column
def __init__(self, **kwargs) -> None:
super().__init__(**kwargs)
self.memory = ... # type: int
class DataStorage(Component):
size = ... # type: Column
interface = ... # type: Column
2018-06-10 16:47:49 +00:00
def __init__(self, **kwargs) -> None:
super().__init__(**kwargs)
self.size = ... # type: int
self.interface = ... # type: DataStorageInterface
2018-06-10 16:47:49 +00:00
@property
def privacy(self) -> Optional[e.EraseBasic]:
pass
2018-06-10 16:47:49 +00:00
class HardDrive(DataStorage):
pass
class SolidStateDrive(DataStorage):
pass
class Motherboard(Component):
slots = ... # type: Column
usb = ... # type: Column
firewire = ... # type: Column
serial = ... # type: Column
pcmcia = ... # type: Column
def __init__(self, **kwargs) -> None:
super().__init__(**kwargs)
self.slots = ... # type: int
self.usb = ... # type: int
self.firewire = ... # type: int
self.serial = ... # type: int
self.pcmcia = ... # type: int
class NetworkMixin:
2018-06-10 16:47:49 +00:00
speed = ... # type: Column
wireless = ... # type: Column
2018-06-10 16:47:49 +00:00
def __init__(self, **kwargs) -> None:
super().__init__(**kwargs)
self.speed = ... # type: int
self.wireless = ... # type: bool
class NetworkAdapter(NetworkMixin, Component):
pass
2018-06-10 16:47:49 +00:00
class Processor(Component):
speed = ... # type: Column
cores = ... # type: Column
address = ... # type: Column
threads = ... # type: Column
2018-06-10 16:47:49 +00:00
def __init__(self, **kwargs) -> None:
super().__init__(**kwargs)
self.speed = ... # type: float
self.cores = ... # type: int
self.threads = ... # type: int
2018-06-10 16:47:49 +00:00
self.address = ... # type: int
class RamModule(Component):
size = ... # type: Column
speed = ... # type: Column
interface = ... # type: Column
format = ... # type: Column
2018-06-10 16:47:49 +00:00
def __init__(self, **kwargs) -> None:
super().__init__(**kwargs)
self.size = ... # type: int
self.speed = ... # type: float
self.interface = ... # type: RamInterface
self.format = ... # type: RamFormat
2018-06-26 13:36:21 +00:00
2018-11-21 15:09:56 +00:00
class SoundCard(Component):
pass
2018-06-26 13:36:21 +00:00
class Display(DisplayMixin, Component):
pass
2018-09-30 17:40:28 +00:00
class ComputerAccessory(Device):
pass
class SAI(ComputerAccessory):
pass
class Keyboard(ComputerAccessory):
layout = ... # type: Column
def __init__(self, layout: Layouts, **kwargs):
super().__init__(**kwargs)
self.layout = ... # type: Layouts
class Mouse(ComputerAccessory):
pass
class MemoryCardReader(ComputerAccessory):
pass
class Networking(NetworkMixin, Device):
pass
class Router(Networking):
pass
class Switch(Networking):
pass
class Hub(Networking):
pass
class WirelessAccessPoint(Networking):
pass
class Printer(Device):
wireless = ... # type: Column
scanning = ... # type: Column
technology = ... # type: Column
monochrome = ... # type: Column
def __init__(self, **kwargs) -> None:
super().__init__(**kwargs)
self.wireless = ... # type: bool
self.scanning = ... # type: bool
self.technology = ... # type: PrinterTechnology
self.monochrome = ... # type: bool
class LabelPrinter(Printer):
pass
class Sound(Device):
pass
class Microphone(Sound):
pass
class Video(Device):
pass
class VideoScaler(Video):
pass
class Videoconference(Video):
pass
2018-11-12 10:59:49 +00:00
class Cooking(Device):
pass
class Mixer(Cooking):
pass
2018-09-30 17:40:28 +00:00
class Manufacturer(Model):
CUSTOM_MANUFACTURERS = ... # type: set
name = ... # type: Column
url = ... # type: Column
logo = ... # type: Column
def __init__(self, **kwargs) -> None:
super().__init__()
self.name = ... # type: str
self.url = ... # type: URL
self.logo = ... # type: URL
@classmethod
def add_all_to_session(cls, session):
pass