Source

django-activitysync /

Filename Size Date modified Message
activitysync
examples
72 B
87 B
1.6 KB
1.5 KB
152 B
5.3 KB
1.4 KB

Django Activity Sync

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:

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.

Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.