diff options
author | Boulder Sprinters <boulder-sprinters@djangoproject.com> | 2007-06-21 21:36:35 +0000 |
---|---|---|
committer | Boulder Sprinters <boulder-sprinters@djangoproject.com> | 2007-06-21 21:36:35 +0000 |
commit | 829b25833a8e8ee6ce1fecdcd0733ededebe065b (patch) | |
tree | 4dc1829abf27979cabae79f1a970e35b3c9f3e05 | |
parent | 750549569ea8d911db0397bd034406d5ce35d923 (diff) | |
download | django-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-- | AUTHORS | 2 | ||||
-rw-r--r-- | django/contrib/admin/media/js/admin/RelatedObjectLookups.js | 7 | ||||
-rw-r--r-- | django/contrib/auth/forms.py | 42 | ||||
-rw-r--r-- | django/contrib/databrowse/templates/databrowse/object_detail.html | 2 | ||||
-rw-r--r-- | django/contrib/redirects/middleware.py | 2 | ||||
-rw-r--r-- | django/core/servers/basehttp.py | 5 | ||||
-rw-r--r-- | docs/install.txt | 28 | ||||
-rw-r--r-- | docs/model-api.txt | 4 | ||||
-rw-r--r-- | docs/newforms.txt | 2 | ||||
-rw-r--r-- | docs/tutorial01.txt | 2 |
10 files changed, 54 insertions, 42 deletions
@@ -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 |