https://github.com/richardarpanet/django-simple-activity
Simple, generic, activity streams from the actions on your site.
https://github.com/richardarpanet/django-simple-activity
activity-stream activity-streams django events python python-library python2 python3
Last synced: 3 months ago
JSON representation
Simple, generic, activity streams from the actions on your site.
- Host: GitHub
- URL: https://github.com/richardarpanet/django-simple-activity
- Owner: richardARPANET
- License: other
- Created: 2018-04-03T20:52:12.000Z (almost 8 years ago)
- Default Branch: master
- Last Pushed: 2020-10-12T19:17:14.000Z (over 5 years ago)
- Last Synced: 2025-01-19T05:48:15.410Z (about 1 year ago)
- Topics: activity-stream, activity-streams, django, events, python, python-library, python2, python3
- Language: Python
- Homepage: https://code.richard.do/richardARPANET/django-simple-activity
- Size: 28.3 KB
- Stars: 0
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: HISTORY.rst
- License: LICENSE
Awesome Lists containing this project
README
**NOTICE**: If you're reading this on GitHub.com please be aware this is a mirror of the primary remote located at https://code.richard.do/explore/projects.
Please direct issues and pull requests there.
django-simple-activity
======================
[](https://pypi.python.org/pypi/django-simple-activity)
[](https://travis-ci.org/richardasaurus/django-simple-activity)
Simple, generic, activity streams from the actions on your site.
Supports Django versions 1.10.x, 1.11.x, 2.0 and above.
## Installation
1. Install using `pip`...
```pip install django-simple-activity```
2. Add `'activity'` to your `INSTALLED_APPS` setting.
```python
INSTALLED_APPS = (
...
'activity',
)
```
3. Ensure `django.contrib.contenttypes` is above `django.contrib.auth` in your installed apps ([why? read here](http://stackoverflow.com/questions/25947951/genericforeignkey-violation-only-when-user-model-given-postgres/25949737#25949737)).
## Example Usage
#### Creating Activity Actions
```python
from activity.logic import add_action, get_action_text
user = User.objects.get(username='bob')
# actor and verb example
action = add_action(actor=user, verb='joined the website!')
print(get_action_text(action)) -> 'bob joined the website!'
# actor, verb and action
another_user = User.objects.get(username='jessica')
action = add_action(
actor=user,
verb='made friends with',
action=another_user,
timestamp=timezone.now() - timedelta(days=2)
)
print(get_action_text(action)) -> 'bob made friends with jessica 2 days ago'
```
Further examples are in the [tests](https://github.com/richardasaurus/django-simple-activity/blob/master/src/tests/test_activity.py).
#### Retrieving Activity Actions
Get **all** Activity Action records:
```python
Action.objects.all()
```
Get all **public** Activity Action records:
```python
Action.objects.public()
```
Get all **private** Activity Action records, where the actor is a given user
```python
Action.objects.private(actor=user) # user being a Django User model instance
```
Here's an example use of `django-simple-activity` which uses [django signals](https://docs.djangoproject.com/en/dev/topics/signals/)
to trigger off the creation of an activity action when a new user registers on the site.
```python
from django.db.models.signals import pre_save
from django.dispatch import receiver
from activity.logic import add_action
from . models import UserProfile
@receiver(pre_save, sender=UserProfile)
def new_user_activity(sender, **kwargs):
profile = kwargs.get('instance')
# if no profile.id yet, then this is a new user registering
if not profile.id:
add_action(actor=profile.user, verb='joined the website!')
```
## Running the unit tests
To test dependency installation and run the tests:
```
pip install tox
tox
```