summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBoulder Sprinters <boulder-sprinters@djangoproject.com>2007-06-21 21:36:35 +0000
committerBoulder Sprinters <boulder-sprinters@djangoproject.com>2007-06-21 21:36:35 +0000
commit829b25833a8e8ee6ce1fecdcd0733ededebe065b (patch)
tree4dc1829abf27979cabae79f1a970e35b3c9f3e05
parent750549569ea8d911db0397bd034406d5ce35d923 (diff)
downloaddjango-829b25833a8e8ee6ce1fecdcd0733ededebe065b.tar.gz
boulder-oracle-sprint: Merged to [5508]
git-svn-id: http://code.djangoproject.com/svn/django/branches/boulder-oracle-sprint@5509 bcc190cf-cafb-0310-a4f2-bffc1f526a37
-rw-r--r--AUTHORS2
-rw-r--r--django/contrib/admin/media/js/admin/RelatedObjectLookups.js7
-rw-r--r--django/contrib/auth/forms.py42
-rw-r--r--django/contrib/databrowse/templates/databrowse/object_detail.html2
-rw-r--r--django/contrib/redirects/middleware.py2
-rw-r--r--django/core/servers/basehttp.py5
-rw-r--r--docs/install.txt28
-rw-r--r--docs/model-api.txt4
-rw-r--r--docs/newforms.txt2
-rw-r--r--docs/tutorial01.txt2
10 files changed, 54 insertions, 42 deletions
diff --git a/AUTHORS b/AUTHORS
index cd136fe06c..260fe511c7 100644
--- a/AUTHORS
+++ b/AUTHORS
@@ -100,11 +100,13 @@ answer newbie questions, and generally made Django that much better:
Marc Fargas <telenieko@telenieko.com>
favo@exoweb.net
Bill Fenner <fenner@gmail.com>
+ Stefane Fermgier <sf@fermigier.com>
Matthew Flanagan <http://wadofstuff.blogspot.com>
Eric Floehr <eric@intellovations.com>
Jorge Gajon <gajon@gajon.org>
gandalf@owca.info
Baishampayan Ghose
+ glin@seznam.cz
martin.glueck@gmail.com
GomoX <gomo@datafull.com>
Simon Greenhill <dev@simon.net.nz>
diff --git a/django/contrib/admin/media/js/admin/RelatedObjectLookups.js b/django/contrib/admin/media/js/admin/RelatedObjectLookups.js
index db4ed1a9d1..e5e05a7e32 100644
--- a/django/contrib/admin/media/js/admin/RelatedObjectLookups.js
+++ b/django/contrib/admin/media/js/admin/RelatedObjectLookups.js
@@ -30,7 +30,12 @@ function dismissRelatedLookupPopup(win, chosenId) {
function showAddAnotherPopup(triggeringLink) {
var name = triggeringLink.id.replace(/^add_/, '');
name = name.replace(/\./g, '___');
- var win = window.open(triggeringLink.href + '?_popup=1', name, 'height=500,width=800,resizable=yes,scrollbars=yes');
+ href = triggeringLink.href
+ if (href.indexOf('?') == -1)
+ href += '?_popup=1';
+ else
+ href += '&_popup=1';
+ var win = window.open(href, name, 'height=500,width=800,resizable=yes,scrollbars=yes');
win.focus();
return false;
}
diff --git a/django/contrib/auth/forms.py b/django/contrib/auth/forms.py
index 023f9b43be..9d5a48c2f1 100644
--- a/django/contrib/auth/forms.py
+++ b/django/contrib/auth/forms.py
@@ -79,32 +79,32 @@ class PasswordResetForm(oldforms.Manipulator):
def isValidUserEmail(self, new_data, all_data):
"Validates that a user exists with the given e-mail address"
- try:
- self.user_cache = User.objects.get(email__iexact=new_data)
- except User.DoesNotExist:
+ self.users_cache = list(User.objects.filter(email__iexact=new_data))
+ if len(self.users_cache) == 0:
raise validators.ValidationError, _("That e-mail address doesn't have an associated user account. Are you sure you've registered?")
def save(self, domain_override=None, email_template_name='registration/password_reset_email.html'):
"Calculates a new password randomly and sends it to the user"
from django.core.mail import send_mail
- new_pass = User.objects.make_random_password()
- self.user_cache.set_password(new_pass)
- self.user_cache.save()
- if not domain_override:
- current_site = Site.objects.get_current()
- site_name = current_site.name
- domain = current_site.domain
- else:
- site_name = domain = domain_override
- t = loader.get_template(email_template_name)
- c = {
- 'new_password': new_pass,
- 'email': self.user_cache.email,
- 'domain': domain,
- 'site_name': site_name,
- 'user': self.user_cache,
- }
- send_mail('Password reset on %s' % site_name, t.render(Context(c)), None, [self.user_cache.email])
+ for user in self.users_cache:
+ new_pass = User.objects.make_random_password()
+ user.set_password(new_pass)
+ user.save()
+ if not domain_override:
+ current_site = Site.objects.get_current()
+ site_name = current_site.name
+ domain = current_site.domain
+ else:
+ site_name = domain = domain_override
+ t = loader.get_template(email_template_name)
+ c = {
+ 'new_password': new_pass,
+ 'email': user.email,
+ 'domain': domain,
+ 'site_name': site_name,
+ 'user': user,
+ }
+ send_mail('Password reset on %s' % site_name, t.render(Context(c)), None, [user.email])
class PasswordChangeForm(oldforms.Manipulator):
"A form that lets a user change his password."
diff --git a/django/contrib/databrowse/templates/databrowse/object_detail.html b/django/contrib/databrowse/templates/databrowse/object_detail.html
index 0096178cd2..2195ad3080 100644
--- a/django/contrib/databrowse/templates/databrowse/object_detail.html
+++ b/django/contrib/databrowse/templates/databrowse/object_detail.html
@@ -32,10 +32,10 @@
<li class="{% cycle odd,even %}"><a href="{{ object.url }}">{{ object }}</a></li>
{% endfor %}
</ul>
- </div>
{% else %}
<p class="quiet">(None)</p>
{% endif %}
+ </div>
{% endfor %}
{% endblock %}
diff --git a/django/contrib/redirects/middleware.py b/django/contrib/redirects/middleware.py
index 32f2760c45..8998c2ce3e 100644
--- a/django/contrib/redirects/middleware.py
+++ b/django/contrib/redirects/middleware.py
@@ -19,7 +19,7 @@ class RedirectFallbackMiddleware(object):
except Redirect.DoesNotExist:
pass
if r is not None:
- if r == '':
+ if r.new_path == '':
return http.HttpResponseGone()
return http.HttpResponsePermanentRedirect(r.new_path)
diff --git a/django/core/servers/basehttp.py b/django/core/servers/basehttp.py
index 9e603b42d4..f3dc6915d2 100644
--- a/django/core/servers/basehttp.py
+++ b/django/core/servers/basehttp.py
@@ -9,7 +9,7 @@ been reviewed for security issues. Don't use it for production use.
from BaseHTTPServer import BaseHTTPRequestHandler, HTTPServer
from types import ListType, StringType
-import os, re, sys, time, urllib
+import os, re, sys, time, urllib, mimetypes
__version__ = "0.1"
__all__ = ['WSGIServer','WSGIRequestHandler','demo_app']
@@ -629,6 +629,9 @@ class AdminMediaHandler(object):
else:
status = '200 OK'
headers = {}
+ mime_type = mimetypes.guess_type(file_path)[0]
+ if mime_type:
+ headers['Content-Type'] = mime_type
output = [fp.read()]
fp.close()
start_response(status, headers.items())
diff --git a/docs/install.txt b/docs/install.txt
index 7761a64e13..99aad4e52d 100644
--- a/docs/install.txt
+++ b/docs/install.txt
@@ -17,8 +17,10 @@ probably already have it installed.
Install Apache and mod_python
=============================
-If you just want to experiment with Django, skip this step. Django comes with
-its own Web server for development purposes.
+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_python`_.
mod_python is similar to mod_perl -- it embeds Python within Apache and loads
@@ -86,23 +88,20 @@ If you installed Django using ``setup.py install``, uninstalling
is as simple as deleting the ``django`` directory from your Python
``site-packages``.
-If you installed Django from a Python Egg, remove the Django ``.egg`` file,
+If you installed Django from a Python egg, remove the Django ``.egg`` file,
and remove the reference to the egg in the file named ``easy-install.pth``.
This file should also be located in your ``site-packages`` directory.
.. admonition:: Where are my ``site-packages`` stored?
The location of the ``site-packages`` directory depends on the operating
- system, and the location in which Python was installed. However, the
- following locations are common:
+ system, and the location in which Python was installed. To find out your
+ system's ``site-packages`` location, execute the following::
- * If you're using Linux: ``/usr/lib/python2.X/site-packages``
+ python -c "from distutils.sysconfig import get_python_lib; print get_python_lib()"
- * If you're using Windows: ``C:\Python2.X\lib\site-packages``
-
- * If you're using MacOSX: ``/Library/Python2.X/site-packages`` or
- ``/Library/Frameworks/Python.framework/Versions/2.X/lib/python2.X/site-packages/``
- (in later releases).
+ (Note that this should be run from a shell prompt, not a Python interactive
+ prompt.)
Install the Django code
=======================
@@ -141,12 +140,15 @@ latest bug fixes and improvements, follow these instructions:
1. Make sure you have Subversion_ installed.
2. Check out the Django code into your Python ``site-packages`` directory.
+
On Linux / Mac OSX / Unix, do this::
svn co http://code.djangoproject.com/svn/django/trunk/ django_src
- ln -s `pwd`/django_src/django /usr/lib/python2.3/site-packages/django
+ ln -s `pwd`/django_src/django SITE-PACKAGES-DIR/django
- (In the above line, change ``python2.3`` to match your current Python version.)
+ (In the above line, change ``SITE-PACKAGES-DIR`` to match the location of
+ your system's ``site-packages`` directory, as explained in the
+ "Where are my ``site-packages`` stored?" section above.)
On Windows, do this::
diff --git a/docs/model-api.txt b/docs/model-api.txt
index 2794046ebd..c19ee83bb1 100644
--- a/docs/model-api.txt
+++ b/docs/model-api.txt
@@ -1893,11 +1893,11 @@ used by the SQLite Python bindings. This is for the sake of consistency and
sanity.)
A final note: If all you want to do is a custom ``WHERE`` clause, you can just
-just the ``where``, ``tables`` and ``params`` arguments to the standard lookup
+use the ``where``, ``tables`` and ``params`` arguments to the standard lookup
API. See `Other lookup options`_.
.. _Python DB-API: http://www.python.org/peps/pep-0249.html
-.. _Other lookup options: ../db-api/#extra-params-select-where-tables
+.. _Other lookup options: ../db-api/#extra-select-none-where-none-params-none-tables-none
.. _transaction handling: ../transactions/
Overriding default model methods
diff --git a/docs/newforms.txt b/docs/newforms.txt
index 1511791a7d..41db04a7dd 100644
--- a/docs/newforms.txt
+++ b/docs/newforms.txt
@@ -110,7 +110,7 @@ shortly.
Creating ``Form`` instances
---------------------------
-A ``Form`` instance is either **bound** or **unbound** to a set of data.
+A ``Form`` instance is either **bound** to a set of data, or **unbound**.
* If it's **bound** to a set of data, it's capable of validating that data
and rendering the form as HTML with the data displayed in the HTML.
diff --git a/docs/tutorial01.txt b/docs/tutorial01.txt
index c40b051b19..d26f654f87 100644
--- a/docs/tutorial01.txt
+++ b/docs/tutorial01.txt
@@ -10,7 +10,7 @@ poll application.
It'll consist of two parts:
* A public site that lets people view polls and vote in them.
- * An admin site that lets you add, change and delete poll.
+ * An admin site that lets you add, change and delete polls.
We'll assume you have `Django installed`_ already. You can tell Django is
installed by running the Python interactive interpreter and typing