DJ StreamIO
Framework for making it easy to post stream updates to (stream.io)[https://getstream.io]
Installation
pip install dj-streamio
Configuration
1. Add streamio to INSTALLED_APPS
2. Configure your models for tracking:
e.g.:
from streamio.mixins import StreamModelMixin
class Todo(models.Model, StreamModelMixin):
collection = 'todos'
feed_name = 'todo'
feed_actor_field = 'owner_id'
feed_once_off_actions = ["create"]
feed_related_mapping = [
# feed_slug, model_field
('user', 'owner_id'),
('todo', 'id'),
]
# a list of object_id prefixes to look for in the `object_ids` field
# e.g.: todo.object_ids = ["foo:1", "bar:2"]
feed_object_ids_mapping = ["foo", "bar"]
enrichment_serializer = 'example_app.models.TodoSerializer'
Notes:
- We add
StreamModelMixinto our model - Add the various meta fields
- Profit
Track actions:
todo = Todo.objects.first()
todo.track_action('create')
todo.track_action('start')
todo.track_action('complete')
Add reaction:
You can add a reaction (e.g.: like, comment, upvote etc) to an activity
Example
todo.add_reaction(
activity_kind, # e.g.: like, comment, status
activity_id,
data,
by=user_id,
target_feeds=["notification:thierry"]
)
notes:
datais the reaction data. e.g.:{"text": "@thierry great post!"}by(optional) will default to the modelsactor_idif none is provided.target_feeds(optional) will default to the modelsfeed_related_mapping.
Stream docs on Reactions: https://getstream.io/docs/python/#reactions_introduction
Add notifications:
todo = Todo.objects.first()
# note: you'll need to setup a webhook to actually handle forwarding!
# https://getstream.io/docs/#realtime-webhooks
# a combination of ways to propagate this notification (all are optional)
forward = {
"sms": ['+27...', '+27...'],
"inapp": ['user:1', 'user:2'], # inapp notification channels
"email: ['jane@soap.com', 'joe@soap.com']
}
todo.add_notification(
verb="..",
notify=[user1.id, user2.id],
message='hello!',
forward = forward
)
Get Feed
todo = Todo.objects.first()
# get feed with all the defaults
todo.get_feed()
# you can set any extra args with kwargs:
# available parameters: https://getstream.io/docs/python/#retrieve
todo.get_feed({"limit": 5, "offset": 5, "enrich": False})
Feed mixin
dj-streamioprovides a mixin that can be used to expose a/stream/endpoint on a DjangoRestFrameworkModelViewSet. This endpoint proxiess the group feed for the underlying model. It also provides an analytics endpoint which gives a breakdown of the last 100 activities at/streamactivity/
Example:
from streamio.viewsets import StreamViewSetMixin
# for older versions of DRF (prior to the @action update) use this mixin
# from streamio.viewsets_legacy import StreamViewSetMixin
...
# then simply mix it into your ViewSet:
class TodoViewSet(StreamViewSetMixin, viewsets.ModelViewSet):
queryset = Todo.objects.all()
serializer_class = TodoSerializer
# /todos/:pk/stream/
# /todos/:pk/streamactivity/
Low level usage
from streamio.streamio import get_client
stream = get_client() # returns a standard logged-in stream.io client
...
Note:
- See also:
StreamObjectandStreamUser
TODOS:
- Provide alternative backends (later)
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
dj-streamio-0.2.5.tar.gz
(6.6 kB
view details)
File details
Details for the file dj-streamio-0.2.5.tar.gz.
File metadata
- Download URL: dj-streamio-0.2.5.tar.gz
- Upload date:
- Size: 6.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.0.1 requests-toolbelt/0.9.1 tqdm/4.32.2 CPython/3.7.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b4e452b7e7fe018139974909ef3722b4d95d5c7c11afa7b56179c021cd909390
|
|
| MD5 |
8b6b9900bb36bd5d188f793f9cc5c325
|
|
| BLAKE2b-256 |
ac1e6b15d73ef145fa512c19f691158818474f71b9172f51a9608f0be05135b9
|