Update docs
This commit is contained in:
parent
c5da07ef9c
commit
e47748563e
|
@ -1,15 +1,14 @@
|
||||||
Actions and states
|
|
||||||
##################
|
|
||||||
|
|
||||||
Actions
|
Actions
|
||||||
*******
|
#######
|
||||||
|
|
||||||
Actions are events performed to devices, changing their **state**.
|
Actions are events performed to devices, changing their **state**.
|
||||||
Actions can have attributes defining
|
Actions can have attributes defining
|
||||||
**where** it happened, **who** performed them, **when**, etc.
|
**where** it happened, **who** performed them, **when**, etc.
|
||||||
Actions are stored in a log for each device. An exemplifying action
|
Actions are stored in a log for each device. An exemplifying action
|
||||||
can be ``Repair``, which dictates that a device has been repaired,
|
can be ``Repair``, which dictates that a device has been repaired,
|
||||||
after this action, the device is in the ``repaired`` state.
|
after this action, the device is in the ``repaired`` state. Another
|
||||||
|
example is performing a ``Sell`` to agent 1 (now this agent *owns*
|
||||||
|
the device), and then performing another ``Sell`` to agent 2 (now
|
||||||
|
agent 2 is the owner).
|
||||||
|
|
||||||
Devicehub actions inherit from `schema actions
|
Devicehub actions inherit from `schema actions
|
||||||
<http://schema.org/Action>`_, are written in Pascal case and using
|
<http://schema.org/Action>`_, are written in Pascal case and using
|
||||||
|
@ -19,14 +18,14 @@ is going to be / must be repaired, whereas ``Repair`` states
|
||||||
that the reparation happened. The former actions have the preposition
|
that the reparation happened. The former actions have the preposition
|
||||||
*To* prefixing the verb.
|
*To* prefixing the verb.
|
||||||
|
|
||||||
Actions and states affect devices in different ways or **dimensions**.
|
:ref:`actions:Actions` and :ref:`states:States` affect devices in
|
||||||
|
different ways or **dimensions**.
|
||||||
For example, ``Repair`` affects the **physical** dimension of a device,
|
For example, ``Repair`` affects the **physical** dimension of a device,
|
||||||
and ``Sell`` the **political** dimension of a device. A device
|
and ``Sell`` the **political** dimension of a device. A device
|
||||||
can be in several states at the same time, one per dimension; ie. a
|
can be in several states at the same time, one per dimension; ie. a
|
||||||
device can be ``repaired`` (physical) and ``reserved`` (political),
|
device can be ``repaired`` (physical) and ``reserved`` (political),
|
||||||
but not ``repaired`` and ``disposed`` at the same time:
|
but not ``repaired`` and ``disposed`` at the same time:
|
||||||
|
|
||||||
|
|
||||||
- Physical actions: The following actions describe and react on the
|
- Physical actions: The following actions describe and react on the
|
||||||
Physical condition of the devices.
|
Physical condition of the devices.
|
||||||
|
|
||||||
|
@ -37,7 +36,7 @@ but not ``repaired`` and ``disposed`` at the same time:
|
||||||
- DisposeWaste, Recover
|
- DisposeWaste, Recover
|
||||||
|
|
||||||
- Association actions: Actions that change the associations users have with devices;
|
- Association actions: Actions that change the associations users have with devices;
|
||||||
ie. the **owners**, **usufructuarees**, **reservees**,
|
ie. the **owners**, **usufructuarees** (*from usufruct*), **reservees** (*from reserve*),
|
||||||
and **physical possessors**.
|
and **physical possessors**.
|
||||||
|
|
||||||
- Trade
|
- Trade
|
||||||
|
@ -60,15 +59,8 @@ but not ``repaired`` and ``disposed`` at the same time:
|
||||||
The following index has all the actions (please note we are moving from calling them
|
The following index has all the actions (please note we are moving from calling them
|
||||||
``Event`` to call them ``Action``):
|
``Event`` to call them ``Action``):
|
||||||
|
|
||||||
|
Schema
|
||||||
|
******
|
||||||
|
|
||||||
.. dhlist::
|
.. dhlist::
|
||||||
:module: ereuse_devicehub.resources.event.schemas
|
:module: ereuse_devicehub.resources.event.schemas
|
||||||
|
|
||||||
|
|
||||||
States
|
|
||||||
******
|
|
||||||
.. autoclass:: ereuse_devicehub.resources.device.states.State
|
|
||||||
|
|
||||||
.. uml:: states.puml
|
|
||||||
|
|
||||||
.. autoclass:: ereuse_devicehub.resources.device.states.Trading
|
|
||||||
.. autoclass:: ereuse_devicehub.resources.device.states.Physical
|
|
||||||
|
|
|
@ -1,6 +1,19 @@
|
||||||
Devices
|
Devices
|
||||||
#########
|
#######
|
||||||
|
Devices are objects that can be identified, and they are the
|
||||||
|
main entity in a Devicehub. Refer to :ref:`devices:Device` for more
|
||||||
|
info.
|
||||||
|
|
||||||
|
Schema
|
||||||
|
******
|
||||||
|
The following schema represents all the device types and their
|
||||||
|
properties.
|
||||||
|
|
||||||
|
.. dhlist::
|
||||||
|
:module: ereuse_devicehub.resources.device.schemas
|
||||||
|
|
||||||
|
API
|
||||||
|
***
|
||||||
You can retrieve devices using ``GET /devices/``, or a specific
|
You can retrieve devices using ``GET /devices/``, or a specific
|
||||||
device by ``GET /devices/24``.
|
device by ``GET /devices/24``.
|
||||||
|
|
||||||
|
@ -46,5 +59,4 @@ The result is a JSON object with the following fields:
|
||||||
- **next**: The number of the next page, if any.
|
- **next**: The number of the next page, if any.
|
||||||
- **last**: The number of the last page, if any.
|
- **last**: The number of the last page, if any.
|
||||||
|
|
||||||
.. dhlist::
|
|
||||||
:module: ereuse_devicehub.resources.device.schemas
|
|
||||||
|
|
|
@ -14,19 +14,36 @@ reusing devices, created under the project
|
||||||
|
|
||||||
Our main objectives are:
|
Our main objectives are:
|
||||||
|
|
||||||
- To offer a common IT Asset Management for donors, receivers and IT
|
- To offer a common IT Asset Management for distributors, refurbishers,
|
||||||
professionals so they can manage devices and exchange them.
|
receivers and other IT professionals so they can manage devices and exchange them.
|
||||||
This is, reusing –and ultimately recycling.
|
This is, reusing —and ultimately recycling.
|
||||||
- To automatically recollect, analyse, process and share
|
- To automatically recollect, analyse, process and share
|
||||||
(controlling privacy) metadata about devices with other tools of the
|
(controlling privacy) metadata about devices with other tools of the
|
||||||
eReuse ecosystem to guarantee traceability, and to provide inputs for
|
eReuse ecosystem to guarantee traceability, and to provide inputs for
|
||||||
the indicators which measure circularity.
|
the indicators which measure circularity.
|
||||||
- To highly integrate with existing IT Asset Management Systems.
|
|
||||||
- To be decentralized.
|
|
||||||
|
|
||||||
Devicehub is built with `Teal <https://github.com/bustawin/teal>`_ and
|
The main entity of a Devicehub are :ref:`devices:Devices`, which is any object that
|
||||||
`Flask <http://flask.pocoo.org>`_.
|
can be identified. Devices are divided in *types* (like ``Computer``),
|
||||||
|
and each one defines *properties*, like serial number, weight,
|
||||||
|
quality rating, pricing, or a list of owners.
|
||||||
|
|
||||||
|
We perform :ref:`actions:Actions` on devices, which are events that
|
||||||
|
change their *state* and *properties*. Examples are sales, reparations,
|
||||||
|
quality diagnostics, data wiping, and location.
|
||||||
|
Actions are stored in the traceability log of the device.
|
||||||
|
|
||||||
|
Devicehub is decentralized, and each instance is an inventory. We can
|
||||||
|
share and exchange devices between inventories —like in real live between
|
||||||
|
organizations.
|
||||||
|
|
||||||
|
:ref:`tags:Tags` identify devices through those organizations and their
|
||||||
|
internal systems. With Devicehub we can manage and print smart tags with
|
||||||
|
QR and NFC capabilities, operating devices by literally scanning them.
|
||||||
|
|
||||||
|
Devicehub is a REST API built with `Teal <https://github.com/ereuse/teal>`_ and
|
||||||
|
`Flask <http://flask.pocoo.org>`_ using `PostgreSQL <https://www.postgresql.org>`_.
|
||||||
|
`DevicehubClient <https://github.com/ereuse/devicehubclient>`_ is the
|
||||||
|
front–end that consumes this API.
|
||||||
|
|
||||||
.. toctree::
|
.. toctree::
|
||||||
:maxdepth: 2
|
:maxdepth: 2
|
||||||
|
@ -34,6 +51,7 @@ Devicehub is built with `Teal <https://github.com/bustawin/teal>`_ and
|
||||||
api
|
api
|
||||||
devices
|
devices
|
||||||
actions
|
actions
|
||||||
|
states
|
||||||
tags
|
tags
|
||||||
lots
|
lots
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,48 @@
|
||||||
|
States
|
||||||
|
######
|
||||||
|
.. note:: In construction.
|
||||||
|
|
||||||
|
A mutable property of a device result of applying an
|
||||||
|
:ref:`actions:Action` to it.
|
||||||
|
|
||||||
|
States are represented as properties in :ref:`devices:Device` and
|
||||||
|
sub–types. They can be steps in a workflow
|
||||||
|
(like ``sold`` and ``payed``, part of a trading), or properties
|
||||||
|
describing computed values from applying events (like a list of owners,
|
||||||
|
or a quality rating).
|
||||||
|
|
||||||
|
There are three types of states:
|
||||||
|
|
||||||
|
* **Trading**: a workflow of states resulting from applying the action
|
||||||
|
:ref:`actions:Trade`.
|
||||||
|
* **Physical**: a workflow of states resulting from applying
|
||||||
|
physical actions (ref. :ref:`actions:Actions`).
|
||||||
|
* **Attributes**: miscellaneous device properties that are not part of
|
||||||
|
a workflow.
|
||||||
|
|
||||||
|
.. uml:: states.puml
|
||||||
|
|
||||||
|
Trading
|
||||||
|
*******
|
||||||
|
Trading states.
|
||||||
|
|
||||||
|
:cvar Reserved: The device has been reserved.
|
||||||
|
:cvar Cancelled: The device has been cancelled.
|
||||||
|
:cvar Sold: The device has been sold.
|
||||||
|
:cvar Donated: The device is donated.
|
||||||
|
:cvar Renting: The device is in renting
|
||||||
|
:cvar ToBeDisposed: The device is disposed.
|
||||||
|
This is the end of life of a device.
|
||||||
|
:cvar ProductDisposed: The device has been removed
|
||||||
|
from the facility. It does not mean end-of-life.
|
||||||
|
|
||||||
|
Physical
|
||||||
|
********
|
||||||
|
Physical states.
|
||||||
|
|
||||||
|
:cvar ToBeRepaired: The device has been selected for reparation.
|
||||||
|
:cvar Repaired: The device has been repaired.
|
||||||
|
:cvar Preparing: The device is going to be or being prepared.
|
||||||
|
:cvar Prepared: The device has been prepared.
|
||||||
|
:cvar ReadyToBeUsed: The device is in working conditions.
|
||||||
|
:cvar InUse: The device is being reported to be in active use.
|
|
@ -6,6 +6,10 @@ from ereuse_devicehub.resources.event import models as e
|
||||||
|
|
||||||
|
|
||||||
class State(Enum):
|
class State(Enum):
|
||||||
|
"""A mutable property of a device result of applying an
|
||||||
|
:ref:`actions:Action` to it.
|
||||||
|
"""
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def events(cls):
|
def events(cls):
|
||||||
"""Events participating in this state."""
|
"""Events participating in this state."""
|
||||||
|
|
Reference in New Issue