From 83ba0a9d4b078fd177ac5c06699486d708d62bff Mon Sep 17 00:00:00 2001 From: Aymeric Augustin Date: Sat, 27 Oct 2012 11:49:46 +0200 Subject: [PATCH] Fixed #18978 -- Moved cleanup command to sessions. This removes a dependency of 'core' on 'contrib'. --- django/bin/daily_cleanup.py | 8 +++++++- django/contrib/sessions/management/__init__.py | 0 .../sessions/management/commands/__init__.py | 0 .../management/commands/clearsessions.py | 11 +++++++++++ django/core/management/commands/cleanup.py | 16 ++++++++-------- docs/internals/deprecation.txt | 5 +++++ docs/ref/django-admin.txt | 15 +++++++++++++++ docs/releases/1.5.txt | 13 ++++++++++++- docs/topics/http/sessions.txt | 2 +- 9 files changed, 59 insertions(+), 11 deletions(-) create mode 100644 django/contrib/sessions/management/__init__.py create mode 100644 django/contrib/sessions/management/commands/__init__.py create mode 100644 django/contrib/sessions/management/commands/clearsessions.py diff --git a/django/bin/daily_cleanup.py b/django/bin/daily_cleanup.py index c9f4cb905c..ac3de00f2c 100755 --- a/django/bin/daily_cleanup.py +++ b/django/bin/daily_cleanup.py @@ -7,7 +7,13 @@ Can be run as a cronjob to clean out old data from the database (only expired sessions at the moment). """ +import warnings + from django.core import management if __name__ == "__main__": - management.call_command('cleanup') + warnings.warn( + "The `daily_cleanup` script has been deprecated " + "in favor of `django-admin.py clearsessions`.", + PendingDeprecationWarning) + management.call_command('clearsessions') diff --git a/django/contrib/sessions/management/__init__.py b/django/contrib/sessions/management/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/django/contrib/sessions/management/commands/__init__.py b/django/contrib/sessions/management/commands/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/django/contrib/sessions/management/commands/clearsessions.py b/django/contrib/sessions/management/commands/clearsessions.py new file mode 100644 index 0000000000..fb7666f85a --- /dev/null +++ b/django/contrib/sessions/management/commands/clearsessions.py @@ -0,0 +1,11 @@ +from django.core.management.base import NoArgsCommand +from django.utils import timezone + +class Command(NoArgsCommand): + help = "Can be run as a cronjob or directly to clean out expired sessions (only with the database backend at the moment)." + + def handle_noargs(self, **options): + from django.db import transaction + from django.contrib.sessions.models import Session + Session.objects.filter(expire_date__lt=timezone.now()).delete() + transaction.commit_unless_managed() diff --git a/django/core/management/commands/cleanup.py b/django/core/management/commands/cleanup.py index e19d1649be..f83c64be8f 100644 --- a/django/core/management/commands/cleanup.py +++ b/django/core/management/commands/cleanup.py @@ -1,11 +1,11 @@ -from django.core.management.base import NoArgsCommand -from django.utils import timezone +import warnings -class Command(NoArgsCommand): - help = "Can be run as a cronjob or directly to clean out old data from the database (only expired sessions at the moment)." +from django.contrib.sessions.management.commands import clearsessions + +class Command(clearsessions.Command): def handle_noargs(self, **options): - from django.db import transaction - from django.contrib.sessions.models import Session - Session.objects.filter(expire_date__lt=timezone.now()).delete() - transaction.commit_unless_managed() + warnings.warn( + "The `cleanup` command has been deprecated in favor of `clearsessions`.", + PendingDeprecationWarning) + super(Command, self).handle_noargs(**options) diff --git a/docs/internals/deprecation.txt b/docs/internals/deprecation.txt index 10bbfe1a91..77371c8608 100644 --- a/docs/internals/deprecation.txt +++ b/docs/internals/deprecation.txt @@ -293,6 +293,11 @@ these changes. * The ``AUTH_PROFILE_MODULE`` setting, and the ``get_profile()`` method on the User model, will be removed. +* The ``cleanup`` management command will be removed. It's replaced by + ``clearsessions``. + +* The ``daily_cleanup.py`` script will be removed. + 2.0 --- diff --git a/docs/ref/django-admin.txt b/docs/ref/django-admin.txt index 7fa7539985..833db0839c 100644 --- a/docs/ref/django-admin.txt +++ b/docs/ref/django-admin.txt @@ -96,6 +96,9 @@ cleanup Can be run as a cronjob or directly to clean out old data from the database (only expired sessions at the moment). +.. versionchanged:: 1.5 + :djadmin:`cleanup` is deprecated. Use :djadmin:`clearsessions` instead. + compilemessages --------------- @@ -1187,6 +1190,18 @@ This command is only available if :doc:`GeoDjango ` Please refer to its :djadmin:`description ` in the GeoDjango documentation. +``django.contrib.sessions`` +--------------------------- + +clearsessions +~~~~~~~~~~~~~~~ + +.. django-admin:: clearsessions + +Can be run as a cron job or directly to clean out expired sessions. + +This is only supported by the database backend at the moment. + ``django.contrib.sitemaps`` --------------------------- diff --git a/docs/releases/1.5.txt b/docs/releases/1.5.txt index a0ce3cc7a4..ebf88e83b9 100644 --- a/docs/releases/1.5.txt +++ b/docs/releases/1.5.txt @@ -613,7 +613,6 @@ Define a ``__str__`` method and apply the The :func:`~django.utils.itercompat.product` function has been deprecated. Use the built-in :func:`itertools.product` instead. - ``django.utils.markup`` ~~~~~~~~~~~~~~~~~~~~~~~ @@ -621,3 +620,15 @@ The markup contrib module has been deprecated and will follow an accelerated deprecation schedule. Direct use of python markup libraries or 3rd party tag libraries is preferred to Django maintaining this functionality in the framework. + +``cleanup`` management command +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +The :djadmin:`cleanup` management command has been deprecated and replaced by +:djadmin:`clearsessions`. + +``daily_cleanup.py`` script +~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +The undocumented ``daily_cleanup.py`` script has been deprecated. Use the +:djadmin:`clearsessions` management command instead. diff --git a/docs/topics/http/sessions.txt b/docs/topics/http/sessions.txt index 15f9f7feba..0082b75db1 100644 --- a/docs/topics/http/sessions.txt +++ b/docs/topics/http/sessions.txt @@ -460,7 +460,7 @@ table. Django updates this row each time the session data changes. If the user logs out manually, Django deletes the row. But if the user does *not* log out, the row never gets deleted. -Django provides a sample clean-up script: ``django-admin.py cleanup``. +Django provides a sample clean-up script: ``django-admin.py clearsessions``. That script deletes any session in the session table whose ``expire_date`` is in the past -- but your application may have different requirements.