Commit graph

3283 commits

Author SHA1 Message Date
b7cf1a42de
Use a proxy value in the variable component for the textbox.
Otherwise the value may keep being overwritten while the user is typing
a new one.
2023-05-01 01:22:20 +02:00
a3839e637d
Set a max-width: 600px for group containers. 2023-05-01 01:22:02 +02:00
1e43866978
Moved more entity common CSS out of the Vue component. 2023-05-01 01:21:18 +02:00
de84a65a22
Show prettified entity type when hover the entity icon. 2023-05-01 01:20:31 +02:00
7906ee2c49
Entity components style improvements.
Multiple style improvements for the entity components. Among these:

- A more consistent style for entity values and toggler buttons.
- Fixed overflowing/underflowing entities on smaller/larger screen
  sizes.
- Simplified the stylesheets for many entities as many component classes
  have now been moved to `common.scss`.
2023-04-30 22:32:50 +02:00
d1066ba624
Use Math.round instead of parseInt when parsing durations. 2023-04-30 16:22:37 +02:00
5d4bffa119
Fixed retrieval of entities plugin. 2023-04-30 10:42:05 +02:00
94a493580c
Updated dist files 2023-04-30 01:36:13 +02:00
0b853e0a54
Apply word-break: break-all to entities' names and values.
The entity name and value in the component header may be arbitrarily
long and rendered on small screens.

We therefore need to ensure that the text won't overflow the screen
width.
2023-04-30 01:17:54 +02:00
3d7755159f
Improved compatibility for traceback.format_exception.
The new syntax, that only requires an `Exception` instance to be passed
to the function, is only compatible with Python >= 3.10.
2023-04-30 00:38:17 +02:00
12cca4991a
Fixed paths for Alembic's package_data. 2023-04-29 23:48:06 +02:00
6b28d16ccf
Exclude more noisy Bluetooth beacons.
Exclude any beacons from devices with no name, no children other than
services, and with none of those services being public/known.
2023-04-29 23:34:24 +02:00
f764d1b4fb
Noisy Bluetooth beacons notices should be logged on info level. 2023-04-29 23:18:12 +02:00
52f036dc1d
Updated dist files 2023-04-29 22:49:35 +02:00
cbf0ea8a19
Style fixes for mobile screens. 2023-04-29 22:45:10 +02:00
9ebdaf620e Merge pull request '[#255] Model variables as entities' (#256) from 255-model-variables-as-entities into master
Reviewed-on: platypush/platypush#256
Closes: #255
2023-04-29 18:24:24 +02:00
e96885a805
Delete the entity on variable.unset instead of setting it to null. 2023-04-29 18:21:57 +02:00
b4048002b9
Updated dist files 2023-04-29 18:21:32 +02:00
6d9c34f06f
Added VariableModal to set variables from the dashboard. 2023-04-29 18:20:41 +02:00
a3888be216
The robustness check in case of missing fields should also apply to other system entities. 2023-04-29 16:08:38 +02:00
8c9768b05e
Robustness check for system disk entities.
When the system information is still loading it may happen that the
device associated to the disk hasn't been loaded yet.
2023-04-29 16:04:57 +02:00
a20065c649
Exposed _entities utility property in Plugin.
It can be used by other plugins to easily access the `entities` plugin,
along the lines of `db` and `redis`.
2023-04-29 15:50:31 +02:00
68d8befa34
Removed some vestigial commented code. 2023-04-29 15:28:44 +02:00
23b851e9d7
variable.status robustness fix.
`entities.transform_entities` will pass back an empty list instead of an
empty dict if no entities were found, and the function should be able to
handle it.
2023-04-29 15:24:58 +02:00
e919bf95ad
Print the full stack trace if a plugin failed in entities.scan 2023-04-29 15:14:13 +02:00
38c87ef39f
Added frontend component for the Variable entity. 2023-04-29 11:37:21 +02:00
f40f956507
Migrated variable table to the new entities framework. 2023-04-29 11:36:55 +02:00
8fe61217ce
Added _db and _redis properties to the Plugin class.
Plugins can now access the database and Redis APIs directly without
having to run their own `get_plugin` validation logic.
2023-04-29 11:35:57 +02:00
a8d2261f32
Added core_plugins to the configuration.
These plugins (only including `variable` for now) are a core part of the
application and should always be explicitly enabled.
2023-04-29 11:34:34 +02:00
78cee5d9b0
Added support for automatic database migrations.
Added Alembic environment and `run_db_migrations` logic to the entities
engine so database schema changes can be processed as soon as the
application is started.
2023-04-29 11:32:31 +02:00
ff9b76477d
Fixed arguments naming. 2023-04-28 11:04:33 +02:00
38262e245e Merge pull request '[#253] Support for relational filters on event hooks' (#254) from 253-support-for-relational-filters-on-event-hooks into master
Reviewed-on: platypush/platypush#254
Closes: #253
2023-04-27 22:08:37 +02:00
162904f281
[#253] Added support for relational filters on event hooks. 2023-04-27 22:07:02 +02:00
87db5ca5f3 Exclude all iBeacon devices by default (it's not only Apple, it's everyone) 2023-04-26 14:17:59 +02:00
7685521e2b
Always use the default configuration values for MQTT listeners if not specified 2023-04-26 03:30:05 +02:00
10d587efd0
FIX: Possible assert evaluation error.
Some versions/configurations of Python may throw `Boolean value of this
clause is not defined` here.
2023-04-26 02:25:28 +02:00
339786b123 Merge pull request 'Support for nested/partial event hook filters' (#252) from 251-nested-filters-on-event-hooks into master
Reviewed-on: platypush/platypush#252
Closes: #251
2023-04-26 01:55:27 +02:00
245472a4c5
Better event hooks filters.
- Support for nested attributes on event hook conditions. Things like
  these are now possible:

```
from platypush.event.hook import hook
from platypush.message.event.entities import EntityUpdateEvent

@hook(EntityUpdateEvent, entity={"external_id": "system:cpu"})
def on_cpu_update_event(event: EntityUpdateEvent, **_):
    print(event.args["entity"]["percent"])
```

- The scoring/regex extraction/partial string match logic in
  `_matches_argument` is actually only needed for
  `SpeechRecognizedEvent`. Other events don't need these features, and
  event hooks may be actually triggered unexpectedly in case of partial
  matches. Therefore, the "complex" `_matches_argument` has been moved
  as an override only for `SpeechRecognizedEvent`, and all the other
  events will perform simple key-value matching.
2023-04-26 01:45:58 +02:00
ee54e0edbf
Use a font-awesome spinner instead of an animated gif when loading entities 2023-04-25 16:42:01 +02:00
cb288deb71
Exclude more noisy BLE beacons.
Excluding Apple iBeacons and devices with no name and no services.
2023-04-25 16:19:11 +02:00
99382e4505 Merge pull request 'Fixed compatibility with SQLAlchemy >= 2.0' (#250) from 239-sqlalchemy-2-compatibility into master
Reviewed-on: platypush/platypush#250
Closes: #239
2023-04-25 10:47:27 +02:00
9c93b793e3
Merge branch 'master' into 239-sqlalchemy-2-compatibility 2023-04-25 10:44:31 +02:00
dd60b8924d
Wrap the PRAGMA statement in sqlalchemy.text.
SQLAlchemy 2 no longer supports raw strings passed to `.execute()`
methods.
2023-04-25 10:41:37 +02:00
440d70d9cf
LINT/format fixes. 2023-04-25 10:36:27 +02:00
4cc88fcf5f
Rewritten the variable plugin to use SQLAlchemy's ORM.
This removes the need for raw SQL statements and CREATE TABLE statements
that may be engine-specific.
2023-04-25 10:35:12 +02:00
e1cd22121a
Removed connection.begin() pattern from the db plugin.
SQLAlchemy should automatically begin a transaction on
connection/session creation. Plus, `.begin()` messes up things with
SQLAlchemy 2, which has `autobegin` enabled with no easy way of
disabling it.
2023-04-25 10:31:49 +02:00
f4e13d0cb0
No need for session.begin in db.create_all. 2023-04-24 23:57:47 +02:00
37722d12cd
No need for session.begin in db.create_all. 2023-04-24 23:55:50 +02:00
6fa179e769
LINT fixes 2023-04-24 23:49:31 +02:00
d33d760361
Better way to import declarative_base from SQLAlchemy.
Import `declarative_base` in a way that is compatible with any
SQLAlchemy version between 1.3 and 2.x.
2023-04-24 23:23:55 +02:00