Author: russellm
Date: 2010-08-27 21:40:57 -0500 (Fri, 27 Aug 2010)
New Revision: 13648

Modified:
   django/trunk/django/core/handlers/modpython.py
   django/trunk/docs/faq/admin.txt
   django/trunk/docs/howto/apache-auth.txt
   django/trunk/docs/howto/deployment/fastcgi.txt
   django/trunk/docs/howto/deployment/index.txt
   django/trunk/docs/howto/deployment/modpython.txt
   django/trunk/docs/howto/deployment/modwsgi.txt
   django/trunk/docs/howto/static-files.txt
   django/trunk/docs/internals/deprecation.txt
   django/trunk/docs/ref/contrib/gis/deployment.txt
   django/trunk/docs/ref/signals.txt
   django/trunk/docs/releases/1.3.txt
   django/trunk/docs/topics/install.txt
   django/trunk/docs/topics/settings.txt
Log:
Fixed #13820 -- Started the deprecation process for mod_python. Thanks to 
Robert Coup for the patch.

Modified: django/trunk/django/core/handlers/modpython.py
===================================================================
--- django/trunk/django/core/handlers/modpython.py      2010-08-28 02:40:17 UTC 
(rev 13647)
+++ django/trunk/django/core/handlers/modpython.py      2010-08-28 02:40:57 UTC 
(rev 13648)
@@ -1,5 +1,6 @@
 import os
 from pprint import pformat
+from warnings import warn
 
 from django import http
 from django.core import signals
@@ -179,6 +180,9 @@
     request_class = ModPythonRequest
 
     def __call__(self, req):
+        warn(('The mod_python handler is deprecated; use a WSGI or FastCGI 
server instead.'),
+             PendingDeprecationWarning)
+
         # mod_python fakes the environ, and thus doesn't process SetEnv.  This 
fixes that
         os.environ.update(req.subprocess_env)
 

Modified: django/trunk/docs/faq/admin.txt
===================================================================
--- django/trunk/docs/faq/admin.txt     2010-08-28 02:40:17 UTC (rev 13647)
+++ django/trunk/docs/faq/admin.txt     2010-08-28 02:40:57 UTC (rev 13648)
@@ -52,11 +52,11 @@
 :meth:`~django.contrib.admin.ModelAdmin.has_change_permission` can be used to
 control the visibility and editability of objects in the admin.
 
-My admin-site CSS and images showed up fine using the development server, but 
they're not displaying when using mod_python.
+My admin-site CSS and images showed up fine using the development server, but 
they're not displaying when using mod_wsgi.
 
---------------------------------------------------------------------------------------------------------------------------
 
-See :ref:`serving the admin files 
<howto-deployment-modpython-serving-the-admin-files>`
-in the "How to use Django with mod_python" documentation.
+See :ref:`serving the admin files <serving-the-admin-files>`
+in the "How to use Django with mod_wsgi" documentation.
 
 My "list_filter" contains a ManyToManyField, but the filter doesn't display.
 ----------------------------------------------------------------------------

Modified: django/trunk/docs/howto/apache-auth.txt
===================================================================
--- django/trunk/docs/howto/apache-auth.txt     2010-08-28 02:40:17 UTC (rev 
13647)
+++ django/trunk/docs/howto/apache-auth.txt     2010-08-28 02:40:57 UTC (rev 
13648)
@@ -2,6 +2,13 @@
 Authenticating against Django's user database from Apache
 =========================================================
 
+.. warning::
+
+    Support for mod_python has been deprecated within Django. At that
+    time, this method of authentication will no longer be provided by
+    Django. The community is welcome to offer its own alternate
+    solutions using WSGI middleware or other approaches.
+
 Since keeping multiple authentication databases in sync is a common problem 
when
 dealing with Apache, you can configuring Apache to authenticate against 
Django's
 :doc:`authentication system </topics/auth>` directly. For example, you

Modified: django/trunk/docs/howto/deployment/fastcgi.txt
===================================================================
--- django/trunk/docs/howto/deployment/fastcgi.txt      2010-08-28 02:40:17 UTC 
(rev 13647)
+++ django/trunk/docs/howto/deployment/fastcgi.txt      2010-08-28 02:40:57 UTC 
(rev 13648)
@@ -20,14 +20,14 @@
 (via a socket) to FastCGI, which executes the code and passes the response back
 to the Web server, which, in turn, passes it back to the client's Web browser.
 
-Like mod_python, FastCGI allows code to stay in memory, allowing requests to be
-served with no startup time. Unlike mod_python_ (or `mod_perl`_), a FastCGI
-process doesn't run inside the Web server process, but in a separate,
+Like mod_wsgi, FastCGI allows code to stay in memory, allowing requests to be
+served with no startup time. While mod_wsgi can either be configured embedded
+in the Apache webserver process or as a separate daemon process, a FastCGI
+process never runs inside the Web server process, always in a separate,
 persistent process.
 
 .. _mod_wsgi: http://code.google.com/p/modwsgi/
 .. _mod_perl: http://perl.apache.org/
-.. _mod_python: http://www.modpython.org/
 
 .. admonition:: Why run code in a separate process?
 
@@ -35,8 +35,7 @@
     languages (most notably PHP, Python and Perl) inside the process space of
     your Web server. Although this lowers startup time -- because code doesn't
     have to be read off disk for every request -- it comes at the cost of
-    memory use. For mod_python, for example, every Apache process gets its own
-    Python interpreter, which uses up a considerable amount of RAM.
+    memory use.
 
     Due to the nature of FastCGI, it's even possible to have processes that run
     under a different user account than the Web server process. That's a nice
@@ -361,7 +360,7 @@
 
 Regardless of the server and configuration you eventually decide to use, you
 will also need to give some thought to how to serve the admin media files. The
-advice given in the :ref:`modpython <serving-the-admin-files>` documentation
+advice given in the :ref:`mod_wsgi <serving-the-admin-files>` documentation
 is also applicable in the setups detailed above.
 
 Forcing the URL prefix to a particular value

Modified: django/trunk/docs/howto/deployment/index.txt
===================================================================
--- django/trunk/docs/howto/deployment/index.txt        2010-08-28 02:40:17 UTC 
(rev 13647)
+++ django/trunk/docs/howto/deployment/index.txt        2010-08-28 02:40:57 UTC 
(rev 13648)
@@ -10,8 +10,8 @@
    :maxdepth: 1
 
    modwsgi
-   modpython
    fastcgi
+   mod_python (deprecated) <modpython>
 
 If you're new to deploying Django and/or Python, we'd recommend you try
 :doc:`mod_wsgi </howto/deployment/modwsgi>` first. In most cases it'll be the 
easiest,

Modified: django/trunk/docs/howto/deployment/modpython.txt
===================================================================
--- django/trunk/docs/howto/deployment/modpython.txt    2010-08-28 02:40:17 UTC 
(rev 13647)
+++ django/trunk/docs/howto/deployment/modpython.txt    2010-08-28 02:40:57 UTC 
(rev 13648)
@@ -2,6 +2,13 @@
 How to use Django with Apache and mod_python
 ============================================
 
+.. warning::
+
+    Support for mod_python will be deprecated in a future release of Django. If
+    you are configuring a new deployment, you are strongly encouraged to
+    consider using :doc:`mod_wsgi </howto/deployment/modwsgi>` or any of the
+    other :doc:`supported backends </howto/deployment/index>`.
+
 .. highlight:: apache
 
 The `mod_python`_ module for Apache_ can be used to deploy Django to a
@@ -214,8 +221,6 @@
 
 .. _mod_python documentation: 
http://modpython.org/live/current/doc-html/directives.html
 
-.. _serving-media-files:
-
 Serving media files
 ===================
 
@@ -267,10 +272,6 @@
 .. _Apache: http://httpd.apache.org/
 .. _Cherokee: http://www.cherokee-project.com/
 
-.. _howto-deployment-modpython-serving-the-admin-files:
-
-.. _serving-the-admin-files:
-
 Serving the admin files
 =======================
 

Modified: django/trunk/docs/howto/deployment/modwsgi.txt
===================================================================
--- django/trunk/docs/howto/deployment/modwsgi.txt      2010-08-28 02:40:17 UTC 
(rev 13647)
+++ django/trunk/docs/howto/deployment/modwsgi.txt      2010-08-28 02:40:57 UTC 
(rev 13648)
@@ -53,6 +53,8 @@
 replace 'mysite.settings' with your correct settings file, and 
'/usr/local/django'
 with your own project's location.
 
+.. _serving-media-files:
+
 Serving media files
 ===================
 
@@ -106,6 +108,29 @@
 
 .. _hosting static files: 
http://code.google.com/p/modwsgi/wiki/ConfigurationGuidelines#Hosting_Of_Static_Files
 
+.. _serving-the-admin-files:
+
+Serving the admin files
+=======================
+
+Note that the Django development server automagically serves admin media files,
+but this is not the case when you use any other server arrangement. You're
+responsible for setting up Apache, or whichever media server you're using, to
+serve the admin files.
+
+The admin files live in (:file:`django/contrib/admin/media`) of the Django
+distribution.
+
+Here are two recommended approaches:
+
+    1. Create a symbolic link to the admin media files from within your
+       document root. This way, all of your Django-related files -- code 
**and**
+       templates -- stay in one place, and you'll still be able to ``svn
+       update`` your code to get the latest admin templates, if they change.
+
+    2. Or, copy the admin media files so that they live within your Apache
+       document root.
+
 Details
 =======
 

Modified: django/trunk/docs/howto/static-files.txt
===================================================================
--- django/trunk/docs/howto/static-files.txt    2010-08-28 02:40:17 UTC (rev 
13647)
+++ django/trunk/docs/howto/static-files.txt    2010-08-28 02:40:57 UTC (rev 
13648)
@@ -31,7 +31,7 @@
 production setting. Use this only for development.
 
 For information on serving static files in an Apache production environment,
-see the :ref:`Django mod_python documentation <serving-media-files>`.
+see the :ref:`Django mod_wsgi documentation <serving-media-files>`.
 
 How to do it
 ============

Modified: django/trunk/docs/internals/deprecation.txt
===================================================================
--- django/trunk/docs/internals/deprecation.txt 2010-08-28 02:40:17 UTC (rev 
13647)
+++ django/trunk/docs/internals/deprecation.txt 2010-08-28 02:40:57 UTC (rev 
13648)
@@ -98,6 +98,10 @@
         * The ``no`` language code has been deprecated in favor of the ``nb``
           language code.
 
+    * 1.5
+        * The ``mod_python`` request handler has been deprecated since the 1.3
+          release. The ``mod_wsgi`` handler should be used instead.
+
     * 2.0
         * ``django.views.defaults.shortcut()``. This function has been moved
           to ``django.contrib.contenttypes.views.shortcut()`` as part of the

Modified: django/trunk/docs/ref/contrib/gis/deployment.txt
===================================================================
--- django/trunk/docs/ref/contrib/gis/deployment.txt    2010-08-28 02:40:17 UTC 
(rev 13647)
+++ django/trunk/docs/ref/contrib/gis/deployment.txt    2010-08-28 02:40:57 UTC 
(rev 13648)
@@ -6,15 +6,15 @@
 
     GeoDjango uses the GDAL geospatial library which is
     not thread safe at this time.  Thus, it is *highly* recommended
-    to not use threading when deploying -- in other words, use a 
+    to not use threading when deploying -- in other words, use a
     an appropriate configuration of Apache or the prefork method
     when using FastCGI through another web server.
 
 Apache
 ======
-In this section there are some example ``VirtualHost`` directives for 
+In this section there are some example ``VirtualHost`` directives for
 when deploying using either ``mod_python`` or ``mod_wsgi``.  At this
-time, we recommend ``mod_wsgi``, as it is now officially recommended 
+time, we recommend ``mod_wsgi``, as it is now officially recommended
 way to deploy Django applications with Apache.  Moreover, if
 ``mod_python`` is used, then a prefork version of Apache must also be
 used.  As long as ``mod_wsgi`` is configured correctly, it does not
@@ -23,7 +23,7 @@
 .. note::
 
     The ``Alias`` and ``Directory`` configurations in the the examples
-    below use an example path to a system-wide installation folder of Django.  
+    below use an example path to a system-wide installation folder of Django.
     Substitute in an appropriate location, if necessary, as it may be
     different than the path on your system.
 
@@ -36,7 +36,7 @@
       WSGIDaemonProcess geodjango user=geo group=geo processes=5 threads=1
       WSGIProcessGroup geodjango
       WSGIScriptAlias / /home/geo/geodjango/world.wsgi
-  
+
       Alias /media/ 
"/usr/lib/python2.5/site-packages/django/contrib/admin/media/"
       <Directory 
"/usr/lib/python2.5/site-packages/django/contrib/admin/media/">
         Order allow,deny
@@ -44,13 +44,13 @@
         Allow from all
         IndexOptions FancyIndexing
       </Directory>
-    
+
     </VirtualHost>
 
 .. warning::
 
     If the ``WSGIDaemonProcess`` attribute ``threads`` is not set to ``1``, 
then
-    Apache may crash when running your GeoDjango application.  Increase the 
+    Apache may crash when running your GeoDjango application.  Increase the
     number of ``processes`` instead.
 
 For more information, please consult Django's
@@ -59,10 +59,16 @@
 ``mod_python``
 --------------
 
+.. warning::
+    Support for mod_python will be deprecated in a future release of Django. If
+    you are configuring a new deployment, you are strongly encouraged to
+    consider using :doc:`mod_wsgi </howto/deployment/modwsgi>` or any of the
+    other :doc:`supported backends </howto/deployment/index>`.
+
 Example::
 
     <VirtualHost *:80>
-    
+
       <Location "/">
         SetHandler mod_python
         PythonHandler django.core.handlers.modpython
@@ -70,12 +76,12 @@
         PythonDebug On
         PythonPath "['/var/www/apps'] + sys.path"
       </Location>
-    
+
       Alias /media/ 
"/usr/lib/python2.5/site-packages/django/contrib/admin/media/"
       <Location "/media">
         SetHandler None
       </Location>
-    
+
     </VirtualHost>
 
 .. warning::

Modified: django/trunk/docs/ref/signals.txt
===================================================================
--- django/trunk/docs/ref/signals.txt   2010-08-28 02:40:17 UTC (rev 13647)
+++ django/trunk/docs/ref/signals.txt   2010-08-28 02:40:57 UTC (rev 13648)
@@ -393,8 +393,7 @@
 Arguments sent with this signal:
 
     ``sender``
-        The handler class -- i.e.
-        :class:`django.core.handlers.modpython.ModPythonHandler` or
+        The handler class -- e.g.
         :class:`django.core.handlers.wsgi.WsgiHandler` -- that handled
         the request.
 

Modified: django/trunk/docs/releases/1.3.txt
===================================================================
--- django/trunk/docs/releases/1.3.txt  2010-08-28 02:40:17 UTC (rev 13647)
+++ django/trunk/docs/releases/1.3.txt  2010-08-28 02:40:57 UTC (rev 13648)
@@ -42,13 +42,45 @@
         username = forms.CharField(max_length=100)
         password = 
forms.PasswordField(widget=forms.PasswordInput(render_value=True))
 
+.. _deprecated-features-1.3:
 
 Features deprecated in 1.3
 ==========================
 
+Django 1.3 deprecates some features from earlier releases.
+These features are still supported, but will be gradually phased out
+over the next few release cycles.
 
+Code taking advantage of any of the features below will raise a
+``PendingDeprecationWarning`` in Django 1.3. This warning will be
+silent by default, but may be turned on using Python's `warnings
+module`_, or by running Python with a ``-Wd`` or `-Wall` flag.
 
+.. _warnings module: http://docs.python.org/library/warnings.html
+
+In Django 1.4, these warnings will become a ``DeprecationWarning``,
+which is *not* silent. In Django 1.5 support for these features will
+be removed entirely.
+
+.. seealso::
+
+    For more details, see the documentation :doc:`Django's release process
+    </internals/release-process>` and our :doc:`deprecation timeline
+    </internals/deprecation>`.`
+
+``mod_python`` support
+~~~~~~~~~~~~~~~~~~~~~~
+
+The ``mod_python`` library has not had a release since 2007 or a commit since
+2008. The Apache Foundation board voted to remove ``mod_python`` from the set
+of active projects in its version control repositories, and its lead developer
+has shifted all of his efforts toward the lighter, slimmer, more stable, and
+more flexible ``mod_wsgi`` backend.
+
+If you are currently using the ``mod_python`` request handler, it is strongly
+encouraged you redeploy your Django instances using :doc:`mod_wsgi
+</howto/deployment/modwsgi>`.
+
 What's new in Django 1.3
 ========================
 
-

Modified: django/trunk/docs/topics/install.txt
===================================================================
--- django/trunk/docs/topics/install.txt        2010-08-28 02:40:17 UTC (rev 
13647)
+++ django/trunk/docs/topics/install.txt        2010-08-28 02:40:57 UTC (rev 
13648)
@@ -27,27 +27,38 @@
 Install Apache and mod_wsgi
 =============================
 
-If you just want to experiment with Django, skip ahead to the next section;
-Django includes a lightweight web server you can use for testing, so you won't
-need to set up Apache until you're ready to deploy Django in production.
+If you just want to experiment with Django, skip ahead to the next
+section; Django includes a lightweight web server you can use for
+testing, so you won't need to set up Apache until you're ready to
+deploy Django in production.
 
-If you want to use Django on a production site, use Apache with `mod_wsgi`_.
-mod_wsgi is similar to mod_perl -- it embeds Python within Apache and loads
-Python code into memory when the server starts. Code stays in memory throughout
-the life of an Apache process, which leads to significant performance gains 
over
-other server arrangements. Make sure you have Apache installed, with the
-mod_wsgi module activated. Django will work with any version of Apache that
-supports mod_wsgi.
+If you want to use Django on a production site, use Apache with
+`mod_wsgi`_. mod_wsgi can operate in one of two modes: an embedded
+mode and a daemon mode. In embedded mode, mod_wsgi is similar to
+mod_perl -- it embeds Python within Apache and loads Python code into
+memory when the server starts. Code stays in memory throughout the
+life of an Apache process, which leads to significant performance
+gains over other server arrangements. In daemon mode, mod_wsgi spawns
+an independent daemon process that handles requests. The daemon
+process can run as a different user than the webserver, possibly
+leading to improved security, and the daemon process can be restarted
+without restarting the entire Apache webserver, possibly making
+refreshing your codebase more seamless. Consult the mod_wsgi
+documentation to determine which mode is right for your setup. Make
+sure you have Apache installed, with the mod_wsgi module activated.
+Django will work with any version of Apache that supports mod_wsgi.
 
-See :doc:`How to use Django with mod_wsgi </howto/deployment/modwsgi>` for
-information on how to configure mod_wsgi once you have it installed.
+See :doc:`How to use Django with mod_wsgi </howto/deployment/modwsgi>`
+for information on how to configure mod_wsgi once you have it
+installed.
 
-If you can't use mod_wsgi for some reason, fear not: Django supports many other
-deployment options. A great second choice is :doc:`mod_python
-</howto/deployment/modpython>`, the predecessor to mod_wsgi. Additionally, 
Django
-follows the WSGI_ spec, which allows it to run on a variety of server 
platforms.
-See the `server-arrangements wiki page`_ for specific installation instructions
-for each platform.
+If you can't use mod_wsgi for some reason, fear not: Django supports
+many other deployment options. Another option is :doc:`FastCGI
+</howto/deployment/fastcgi>`, perfect for using Django with servers
+other than Apache. Additionally, Django follows the WSGI_ spec, which
+allows it to run on a variety of server platforms. See the
+`server-arrangements wiki page`_ for specific installation
+instructions for each platform.
 
 .. _Apache: http://httpd.apache.org/
 .. _mod_wsgi: http://code.google.com/p/modwsgi/
@@ -255,15 +266,15 @@
    links. (Environment variables can be defined on Windows systems `from the
    Control Panel`_.)
 
-   .. admonition:: What about Apache and mod_python?
+   .. admonition:: What about Apache and mod_wsgi?
 
-      If you take the approach of setting ``PYTHONPATH``, you'll need to
-      remember to do the same thing in your Apache configuration once you
-      deploy your production site. Do this by setting ``PythonPath`` in your
-      Apache configuration file.
+      If you take the approach of setting ``PYTHONPATH``, you'll need
+      to remember to do the same thing in your WSGI application once
+      you deploy your production site. Do this by appending to
+      ``sys.path`` in your WSGI application.
 
       More information about deployment is available, of course, in our
-      :doc:`How to use Django with mod_python </howto/deployment/modpython>`
+      :doc:`How to use Django with mod_wsgi </howto/deployment/modwsgi>`
       documentation.
 
 4. On Unix-like systems, create a symbolic link to the file

Modified: django/trunk/docs/topics/settings.txt
===================================================================
--- django/trunk/docs/topics/settings.txt       2010-08-28 02:40:17 UTC (rev 
13647)
+++ django/trunk/docs/topics/settings.txt       2010-08-28 02:40:57 UTC (rev 
13648)
@@ -64,21 +64,20 @@
 
 .. _django-admin.py: ../django-admin/
 
-On the server (mod_python)
+On the server (mod_wsgi)
 --------------------------
 
-In your live server environment, you'll need to tell Apache/mod_python which
-settings file to use. Do that with ``SetEnv``::
+In your live server environment, you'll need to tell your WSGI
+application what settings file to use. Do that with ``os.environ``::
 
-    <Location "/mysite/">
-        SetHandler python-program
-        PythonHandler django.core.handlers.modpython
-        SetEnv DJANGO_SETTINGS_MODULE mysite.settings
-    </Location>
+    import os
 
-Read the :doc:`Django mod_python documentation </howto/deployment/modpython>` 
for
-more information.
+    os.environ['DJANGO_SETTINGS_MODULE'] = 'mysite.settings'
 
+Read the :doc:`Django mod_wsgi documentation
+</howto/deployment/modwsgi>` for more information and other common
+elements to a Django WSGI application.
+
 Default settings
 ================
 

-- 
You received this message because you are subscribed to the Google Groups 
"Django updates" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/django-updates?hl=en.

Reply via email to