Metadata-Version: 2.0
Name: django-datapurge
Version: 0.0.2
Summary: A simple Django app to easily handle cleanup of old data (sessions, nonces, etc.)
Home-page: https://github.com/swistakm/django-datapurge
Author: Michał Jaworski
Author-email: swistakm@gmail.com
License: BSD License
Platform: UNKNOWN
Classifier: Environment :: Web Environment
Classifier: Framework :: Django
Classifier: Framework :: Django :: 1.4
Classifier: Framework :: Django :: 1.5
Classifier: Framework :: Django :: 1.6
Classifier: Framework :: Django :: 1.7
Classifier: Framework :: Django :: 1.8
Classifier: Framework :: Django :: 1.9
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: BSD License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 2
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 2.6
Classifier: Programming Language :: Python :: 2.7
Classifier: Programming Language :: Python :: 3.4
Classifier: Programming Language :: Python :: 3.5
Classifier: Topic :: Internet :: WWW/HTTP
Classifier: Topic :: Internet :: WWW/HTTP :: Dynamic Content

[![Build Status](https://travis-ci.org/swistakm/django-datapurge.png)](https://travis-ci.org/swistakm/django-datapurge)


# Django Datapurge

Simple app to help purging old data like sesions, nonces, logs etc.. It's
like `django-admin.py clearsessions` command but gives you possibility to
purge anything. Simpliest way to use `datapurge` is to run management
command (manually or via cron):

    python manage.py purge

It's easy to integrate datapurge with `celery` or `kronos`. Just wrap
`datapurge.actions.purge` function with code corresponding to your task
backend and run it the way you want.

# Requirements

* Python (2.6, 2.7, 3.4, 3.5)
* Django>=1.3.7

# Installation

Install from PyPI using pip:

    pip install django-datapurge

Or clone this repo:

    git clone git@github.com:swistakm/django-datapurge.git

Add `'datapurge'` to your `INSTALLED_APPS` setting.

    INSTALLED_APPS = (
        ...
        'datapurge',
    )

# Configuration

Add `DATAPURGE_MODELS` to your settings file and specify which models should be purged:

    DATAPURGE_MODELS = {
        'app_name.ModelName1': {
            # policy settings
            ...
            },
        'app_name.ModelName2': {
            ...
            },
    }

# Available purge policies

There are a few available policies for your use. Use what you find most convienient. Policy is
guessed from set parameters provided.


## ExpireFieldPolicy

Deletes all objects which `expire_field` datetime is older than `timezone.now()`.

Parameters:

* `'expire_field'` - name of datetime field holding expiration date

Example:

    DATAPURGE_MODELS = {
        "sessions.Session": {
            "expire_field": "expire_date",
        }
    }

## LifetimePolicy

Deletes all objects which are older than specified `lifetime`

Parameters:

* `'lifetime'` - timedelta object specifying maximum lifetime of object
* `'created_field'` - name of datetime field holding object creation time

Example:

    from timezone import timedelta

    DATAPURGE_MODELS = {
        "oauth_provider.Nonce": {
            "lifetime": timedelta(seconds=300),
            "created_field": "timestamp",
        }

## CallablePolicy

Deletes all objects from query returned by provided callable

Parameters:

* `'callable'` - function accepting model class and returning QuerySet

Example:

    DATAPURGE_MODELS = {
        "some_app.Log": {
            "callable": lambda model: model.objects.all(),
        }



