Fast, easy, and extensible social activity aggregation for Django projects
Project description
Django-activitysync is an easy to use social activity aggregator for Django projects.
It can be used to store and display activity from a range of social networks (such as Twitter, Reddit, Google Reader, etc). Unlike other utilities for accessing and displaying activity, django-activitysync separates rendering from activity updating. All activity information is stored in the project’s database using Django models, providing great performance for page requests. Updating activities happens through a Django management command, which can be automated by using a utility like cron.
Features
Currently supports the following activity providers:
Providers are implemented using a simple, common interface, making it very easy to add support for additional networks
Dependencies
Dependencies that must be meet to use the application:
Twitter support depends on python-twitter
Google Reader and Reddit support depend on feedparser (version 4.1)
Installation
From pypi:
$ pip install django-activitysync
or:
$ easy_install django-activitysync
or clone from Bitbucket:
$ hg clone https://bitbucket.org/dancarroll/django-activitysync
and add activitysync to PYTHONPATH:
$ export PYTHONPATH=$PYTHONPATH:$(pwd)/django-activitysync/
or:
$ cd django-activitysync $ sudo python setup.py install
Configuration
Add activitysync to INSTALLED_APPS in settings.py:
INSTALLED_APPS = ( ... 'activitysync' )
Add desired providers to ACTIVITYSYNC_PROVIDERS setting:
ACTIVITYSYNC_PROVIDERS = ( 'activitysync.providers.googlereader.GoogleReaderProvider', 'activitysync.providers.twitterprovider.TwitterUserProvider', 'activitysync.providers.twitterprovider.TwitterSearchProvider', 'activitysync.providers.redditprovider.RedditProvider', )
Add provider settings to settings.py (dependent on which providers are added). For ease of use and organizational purposes, all settings for providers should be stored in the ACTIVITYSYNC_SETTINGS dictionary. Settings required for built-in providers are:
ACTIVITYSYNC_SETTINGS = { 'TWITTER_USERNAME': '', # Username to use for TwitterUserProvider 'TWITTER_SEARCHTERM': '', # Search term to use for TwitterSearchProvider 'REDDIT_USERNAME': '', # Username to use for RedditProvider 'GOOGLEREADER_SHARED_RSS': '', # URL of Google Reader shared items RSS feed 'GOOGLEREADER_PUBLIC_URL': '', # URL to Google Reader public page }
Sync database to create needed models:
python manage.py syncdb
or (if you have South installed):
python manage.py migrate activitysync
Usage
Fetching and creating activity items
Once configuration is completed, run the included management command to fetch activities for the configured providers:
python manage.py updateactivities
The command will print out all new activities to the command line. All activity items are stored with a unique guid value, so this command can be run as often as needed without worrying about creating duplicate values. In a production site, this command likely would be added to the crontab (or other scheduler) to run fairly often (such as every 30 minutes).
There are a few options available for the management command.
Use the --send-result option to send an email to the site admins (controlled by the Django ADMIN setting) with the newly added activities (no email is sent if there are no new items):
python manage.py updateactivities --send_result
Use the --dry-run option to output the items to the console, but not actually create items in the database:
python manage.py updateactivities --dry-run
Using activity items
Activity items can be accessed like any other model using Django’s ORM. Here is a quick example of getting all published activity items (fetched items default to public, but can be hidden by modifying the item in the Django admin site):
from django.shortcuts import render_to_response from activitysync.models import Activity def index(request): return render_to_response( 'index.html', { 'activities': Activity.objects.published() } )
Django-activitysync also provides a template tag for displaying items:
{% load activitysync_extras %} {% render_activities activities %}
The render_activities template tag will pass the object list and MEDIA_URL values to the template activitysync/activities_tag.html. The project comes with a sample template that will be used by default, or you can use it as a basis for your own. A second template tag, render_activities_with_date_headers renders the activity list along with date headers for each unique day encountered.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Hashes for django-activitysync-0.2.1.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | f5251e5a5a0e975e5fed996170ea815ac7649e301873fca19eb2c61ad615befa |
|
MD5 | 19cfd4fbbb8226a1a5ac40ceede56b8f |
|
BLAKE2b-256 | a8527aca3261a5369ee38ce55c3197ad61ecc043f5c43f0d29d0f9eb136d0471 |