diff options
author | Malcolm Tredinnick <malcolm.tredinnick@gmail.com> | 2007-07-04 06:02:00 +0000 |
---|---|---|
committer | Malcolm Tredinnick <malcolm.tredinnick@gmail.com> | 2007-07-04 06:02:00 +0000 |
commit | c4b260a4b6303bea20d7f511fa832a1c122c02c0 (patch) | |
tree | 81d837557d0a5617e12bec0958e2bc4e9babb943 | |
parent | 1feda14c8e14eb4d716d725a58add6dbbb04bd5f (diff) | |
download | django-c4b260a4b6303bea20d7f511fa832a1c122c02c0.tar.gz |
unicode: Merged from trunk up to [5600].
git-svn-id: http://code.djangoproject.com/svn/django/branches/unicode@5601 bcc190cf-cafb-0310-a4f2-bffc1f526a37
-rw-r--r-- | AUTHORS | 1 | ||||
-rw-r--r-- | django/contrib/sessions/middleware.py | 1 | ||||
-rw-r--r-- | django/contrib/sessions/tests.py | 16 | ||||
-rw-r--r-- | django/core/management.py | 6 | ||||
-rw-r--r-- | django/views/defaults.py | 5 | ||||
-rw-r--r-- | docs/contributing.txt | 44 | ||||
-rw-r--r-- | docs/templates_python.txt | 5 |
7 files changed, 52 insertions, 26 deletions
@@ -237,6 +237,7 @@ answer newbie questions, and generally made Django that much better: Joe Topjian <http://joe.terrarum.net/geek/code/python/django/> torne-django@wolfpuppy.org.uk Karen Tracey <graybark@bellsouth.net> + tstromberg@google.com Makoto Tsuyuki <mtsuyuki@gmail.com> tt@gurgle.no Amit Upadhyay diff --git a/django/contrib/sessions/middleware.py b/django/contrib/sessions/middleware.py index 434997d616..82b217f829 100644 --- a/django/contrib/sessions/middleware.py +++ b/django/contrib/sessions/middleware.py @@ -37,6 +37,7 @@ class SessionWrapper(object): return self._session.get(key, default) def pop(self, key, *args): + self.modified = self.modified or key in self._session return self._session.pop(key, *args) def set_test_cookie(self): diff --git a/django/contrib/sessions/tests.py b/django/contrib/sessions/tests.py index 5a28effa86..e83442123e 100644 --- a/django/contrib/sessions/tests.py +++ b/django/contrib/sessions/tests.py @@ -5,8 +5,24 @@ Inject data into the session cache. >>> s._session_cache = {} >>> s._session_cache['some key'] = 'exists' +>>> s.accessed +False +>>> s.modified +False + +>>> s.pop('non existant key', 'does not exist') +'does not exist' +>>> s.accessed +True +>>> s.modified +False + >>> s.pop('some key') 'exists' +>>> s.accessed +True +>>> s.modified +True >>> s.pop('some key', 'does not exist') 'does not exist' diff --git a/django/core/management.py b/django/core/management.py index e31c131de6..3713c3d443 100644 --- a/django/core/management.py +++ b/django/core/management.py @@ -832,9 +832,15 @@ def startproject(project_name, directory): sys.stderr.write(style.ERROR("Error: '%r' conflicts with the name of an existing Python module and cannot be used as a project name. Please try another name.\n" % project_name)) sys.exit(1) _start_helper('project', project_name, directory) + # Create a random SECRET_KEY hash, and put it in the main settings. main_settings_file = os.path.join(directory, project_name, 'settings.py') settings_contents = open(main_settings_file, 'r').read() + + # If settings.py was copied from a read-only source, make it writeable. + if not os.access(main_settings_file, os.W_OK): + os.chmod(main_settings_file, 0600) + fp = open(main_settings_file, 'w') secret_key = ''.join([choice('abcdefghijklmnopqrstuvwxyz0123456789!@#$%^&*(-_=+)') for i in range(50)]) settings_contents = re.sub(r"(?<=SECRET_KEY = ')'", secret_key + "'", settings_contents) diff --git a/django/views/defaults.py b/django/views/defaults.py index 701aebabd6..b4dfc1e1eb 100644 --- a/django/views/defaults.py +++ b/django/views/defaults.py @@ -21,7 +21,7 @@ def shortcut(request, content_type_id, object_id): # if necessary. # If the object actually defines a domain, we're done. - if absurl.startswith('http://'): + if absurl.startswith('http://') or absurl.startswith('https://'): return http.HttpResponseRedirect(absurl) object_domain = None @@ -61,7 +61,8 @@ def shortcut(request, content_type_id, object_id): # If all that malarkey found an object domain, use it; otherwise fall back # to whatever get_absolute_url() returned. if object_domain is not None: - return http.HttpResponseRedirect('http://%s%s' % (object_domain, absurl)) + protocol = request.is_secure() and 'https' or 'http' + return http.HttpResponseRedirect('%s://%s%s' % (protocol, object_domain, absurl)) else: return http.HttpResponseRedirect(absurl) diff --git a/docs/contributing.txt b/docs/contributing.txt index fa16f858b6..e58b06881a 100644 --- a/docs/contributing.txt +++ b/docs/contributing.txt @@ -394,11 +394,11 @@ Guidelines for ReST files These guidelines regulate the format of our ReST documentation: - * In section titles, capitalize only initial words and proper nouns. + * In section titles, capitalize only initial words and proper nouns. - * Wrap the documentation at 80 characters wide, unless a code example - is significantly less readable when split over two lines, or for another - good reason. + * Wrap the documentation at 80 characters wide, unless a code example + is significantly less readable when split over two lines, or for another + good reason. Commonly used terms ------------------- @@ -406,41 +406,41 @@ Commonly used terms Here are some style guidelines on commonly used terms throughout the documentation: - * **Django** -- when referring to the framework, capitalize Django. It is - lowercase only in Python code and in the djangoproject.com logo. + * **Django** -- when referring to the framework, capitalize Django. It is + lowercase only in Python code and in the djangoproject.com logo. - * **e-mail** -- it has a hyphen. + * **e-mail** -- it has a hyphen. - * **MySQL** + * **MySQL** - * **PostgreSQL** + * **PostgreSQL** - * **Python** -- when referring to the language, capitalize Python. + * **Python** -- when referring to the language, capitalize Python. - * **realize**, **customize**, **initialize**, etc. -- use the American - "ize" suffix, not "ise." + * **realize**, **customize**, **initialize**, etc. -- use the American + "ize" suffix, not "ise." - * **SQLite** + * **SQLite** - * **subclass** -- it's a single word without a hyphen, both as a verb - ("subclass that model") and as a noun ("create a subclass"). + * **subclass** -- it's a single word without a hyphen, both as a verb + ("subclass that model") and as a noun ("create a subclass"). - * **Web**, **World Wide Web**, **the Web** -- note Web is always - capitalized when referring to the World Wide Web. + * **Web**, **World Wide Web**, **the Web** -- note Web is always + capitalized when referring to the World Wide Web. * **Web site** -- use two words, with Web capitalized. Django-specific terminology --------------------------- - * **model** -- it's not capitalized. + * **model** -- it's not capitalized. - * **template** -- it's not capitalized. + * **template** -- it's not capitalized. - * **URLconf** -- use three capitalized letters, with no space before - "conf." + * **URLconf** -- use three capitalized letters, with no space before + "conf." - * **view** -- it's not capitalized. + * **view** -- it's not capitalized. Committing code =============== diff --git a/docs/templates_python.txt b/docs/templates_python.txt index 7171f32612..821f40fd8d 100644 --- a/docs/templates_python.txt +++ b/docs/templates_python.txt @@ -311,9 +311,10 @@ optional, third positional argument, ``processors``. In this example, the def some_view(request): # ... - return RequestContext(request, { + c = RequestContext(request, { 'foo': 'bar', }, [ip_address_processor]) + return t.render(c) Note:: If you're using Django's ``render_to_response()`` shortcut to populate a @@ -677,7 +678,7 @@ an object to it's string value before being passed to your function:: @template.stringfilter def lower(value): - return value.lower() + return value.lower() Writing custom template tags ---------------------------- |