diff --git a/django/contrib/admin/media/js/admin/RelatedObjectLookups.js b/django/contrib/admin/media/js/admin/RelatedObjectLookups.js
index 35b949b30d..72c4e95eca 100644
--- a/django/contrib/admin/media/js/admin/RelatedObjectLookups.js
+++ b/django/contrib/admin/media/js/admin/RelatedObjectLookups.js
@@ -3,11 +3,11 @@
function showRelatedObjectLookupPopup(triggeringLink) {
var name = triggeringLink.id.replace(/^lookup_/, '');
- var href
+ var href;
if (triggeringLink.href.search(/\?/) >= 0) {
href = triggeringLink.href + '&pop=1';
} else {
- href = triggeringLink.href + '?pop=1'
+ href = triggeringLink.href + '?pop=1';
}
var win = window.open(href, name, 'height=500,width=740,resizable=yes,scrollbars=yes');
win.focus();
@@ -33,12 +33,12 @@ function showAddAnotherPopup(triggeringLink) {
}
function dismissAddAnotherPopup(win, newId, newRepr) {
- var name = win.name.replace(/___/g, '.')
+ var name = win.name.replace(/___/g, '.');
var elem = document.getElementById(name);
if (elem) {
if (elem.nodeName == 'SELECT') {
var o = new Option(newRepr, newId);
- elem.options[elem.options.length] = o
+ elem.options[elem.options.length] = o;
elem.selectedIndex = elem.length - 1;
} else if (elem.nodeName == 'INPUT') {
elem.value = newId;
diff --git a/django/contrib/admin/media/js/calendar.js b/django/contrib/admin/media/js/calendar.js
index 56a1a82d0d..90351763a7 100644
--- a/django/contrib/admin/media/js/calendar.js
+++ b/django/contrib/admin/media/js/calendar.js
@@ -102,15 +102,17 @@ function Calendar(div_id, callback) {
this.today = new Date();
this.currentMonth = this.today.getMonth() + 1;
this.currentYear = this.today.getFullYear();
- this.drawCurrent = function() {
+}
+Calendar.prototype = {
+ drawCurrent: function() {
CalendarNamespace.draw(this.currentMonth, this.currentYear, this.div_id, this.callback);
- }
- this.drawDate = function(month, year) {
+ },
+ drawDate: function(month, year) {
this.currentMonth = month;
this.currentYear = year;
this.drawCurrent();
- }
- this.drawPreviousMonth = function() {
+ },
+ drawPreviousMonth: function() {
if (this.currentMonth == 1) {
this.currentMonth = 12;
this.currentYear--;
@@ -119,8 +121,8 @@ function Calendar(div_id, callback) {
this.currentMonth--;
}
this.drawCurrent();
- }
- this.drawNextMonth = function() {
+ },
+ drawNextMonth: function() {
if (this.currentMonth == 12) {
this.currentMonth = 1;
this.currentYear++;
@@ -129,12 +131,12 @@ function Calendar(div_id, callback) {
this.currentMonth++;
}
this.drawCurrent();
- }
- this.drawPreviousYear = function() {
+ },
+ drawPreviousYear: function() {
this.currentYear--;
this.drawCurrent();
- }
- this.drawNextYear = function() {
+ },
+ drawNextYear: function() {
this.currentYear++;
this.drawCurrent();
}
diff --git a/django/contrib/admin/media/js/core.js b/django/contrib/admin/media/js/core.js
index 62d74211de..1c8f678773 100644
--- a/django/contrib/admin/media/js/core.js
+++ b/django/contrib/admin/media/js/core.js
@@ -70,7 +70,7 @@ function findPosX(obj) {
var curleft = 0;
if (obj.offsetParent) {
while (obj.offsetParent) {
- curleft += obj.offsetLeft
+ curleft += obj.offsetLeft;
obj = obj.offsetParent;
}
} else if (obj.x) {
@@ -83,7 +83,7 @@ function findPosY(obj) {
var curtop = 0;
if (obj.offsetParent) {
while (obj.offsetParent) {
- curtop += obj.offsetTop
+ curtop += obj.offsetTop;
obj = obj.offsetParent;
}
} else if (obj.y) {
@@ -130,7 +130,7 @@ Date.prototype.getHourMinute = function() {
// String object extensions
// ----------------------------------------------------------------------------
String.prototype.pad_left = function(pad_length, pad_string) {
- new_string = this;
+ var new_string = this;
for (var i = 0; new_string.length < pad_length; i++) {
new_string = pad_string + new_string;
}
diff --git a/django/contrib/admin/media/js/dateparse.js b/django/contrib/admin/media/js/dateparse.js
index 785e9fd8ff..51821c78e5 100644
--- a/django/contrib/admin/media/js/dateparse.js
+++ b/django/contrib/admin/media/js/dateparse.js
@@ -4,24 +4,30 @@
*/
/* Finds the index of the first occurence of item in the array, or -1 if not found */
-Array.prototype.indexOf = function(item) {
- for (var i = 0; i < this.length; i++) {
- if (this[i] == item) {
- return i;
+if (typeof Array.prototype.indexOf == 'undefined') {
+ Array.prototype.indexOf = function(item) {
+ var len = this.length;
+ for (var i = 0; i < len; i++) {
+ if (this[i] == item) {
+ return i;
+ }
}
- }
- return -1;
-};
+ return -1;
+ };
+}
/* Returns an array of items judged 'true' by the passed in test function */
-Array.prototype.filter = function(test) {
- var matches = [];
- for (var i = 0; i < this.length; i++) {
- if (test(this[i])) {
- matches[matches.length] = this[i];
+if (typeof Array.prototype.filter == 'undefined') {
+ Array.prototype.filter = function(test) {
+ var matches = [];
+ var len = this.length;
+ for (var i = 0; i < len; i++) {
+ if (test(this[i])) {
+ matches[matches.length] = this[i];
+ }
}
- }
- return matches;
-};
+ return matches;
+ };
+}
var monthNames = gettext("January February March April May June July August September October November December").split(" ");
var weekdayNames = gettext("Sunday Monday Tuesday Wednesday Thursday Friday Saturday").split(" ");
diff --git a/django/db/backends/mysql/base.py b/django/db/backends/mysql/base.py
index 04d027e148..86ea1e5548 100644
--- a/django/db/backends/mysql/base.py
+++ b/django/db/backends/mysql/base.py
@@ -111,6 +111,9 @@ def get_date_trunc_sql(lookup_type, field_name):
# http://dev.mysql.com/doc/mysql/en/date-and-time-functions.html
# MySQL doesn't support DATE_TRUNC, so we fake it by subtracting intervals.
# If you know of a better way to do this, please file a Django ticket.
+ # Note that we can't use DATE_FORMAT directly because that causes the output
+ # to be a string rather than a datetime object, and we need MySQL to return
+ # a date so that it's typecasted properly into a Python datetime object.
subtractions = ["interval (DATE_FORMAT(%s, '%%%%s')) second - interval (DATE_FORMAT(%s, '%%%%i')) minute - interval (DATE_FORMAT(%s, '%%%%H')) hour" % (field_name, field_name, field_name)]
if lookup_type in ('year', 'month'):
subtractions.append(" - interval (DATE_FORMAT(%s, '%%%%e')-1) day" % field_name)
diff --git a/django/views/debug.py b/django/views/debug.py
index afb5733206..3854b76f75 100644
--- a/django/views/debug.py
+++ b/django/views/debug.py
@@ -255,6 +255,7 @@ TECHNICAL_500_TEMPLATE = """
hideAll(getElementsByClassName(document, 'table', 'vars'));
hideAll(getElementsByClassName(document, 'ol', 'pre-context'));
hideAll(getElementsByClassName(document, 'ol', 'post-context'));
+ hideAll(getElementsByClassName(document, 'div', 'pastebin'));
}
function toggle() {
for (var i = 0; i < arguments.length; i++) {
@@ -273,6 +274,13 @@ TECHNICAL_500_TEMPLATE = """
s.innerHTML = s.innerHTML == uarr ? darr : uarr;
return false;
}
+ function switchPastebinFriendly(link) {
+ s1 = "Switch to copy-and-paste view";
+ s2 = "Switch back to interactive view";
+ link.innerHTML = link.innerHTML == s1 ? s2 : s1;
+ toggle('browserTraceback', 'pastebinTraceback');
+ return false;
+ }
//-->
@@ -341,47 +349,71 @@ TECHNICAL_500_TEMPLATE = """
{% endif %}
Traceback (innermost last)
-
- {% for frame in frames %}
- -
-
{{ frame.filename }}
in {{ frame.function }}
+
+
+
+
+ {% for frame in frames %}
+ -
+
{{ frame.filename }}
in {{ frame.function }}
- {% if frame.context_line %}
-
- {% if frame.pre_context %}
-
{% for line in frame.pre_context %}- {{ line|escape }}
{% endfor %}
- {% endif %}
-
- {{ frame.context_line|escape }} ...
- {% if frame.post_context %}
-
{% for line in frame.post_context %}- {{ line|escape }}
{% endfor %}
- {% endif %}
-
- {% endif %}
+ {% if frame.context_line %}
+
+ {% if frame.pre_context %}
+
{% for line in frame.pre_context %}- {{ line|escape }}
{% endfor %}
+ {% endif %}
+
- {{ frame.context_line|escape }} ...
+ {% if frame.post_context %}
+
{% for line in frame.post_context %}- {{ line|escape }}
{% endfor %}
+ {% endif %}
+
+ {% endif %}
- {% if frame.vars %}
-
-
-
-
- Variable |
- Value |
-
-
-
- {% for var in frame.vars|dictsort:"0" %}
+ {% if frame.vars %}
+
+
+
- {{ var.0 }} |
- {{ var.1|pprint|escape }} |
+ Variable |
+ Value |
- {% endfor %}
-
-
- {% endif %}
-
- {% endfor %}
-
+
+
+ {% for var in frame.vars|dictsort:"0" %}
+
+ {{ var.0 }} |
+ {{ var.1|pprint|escape }} |
+
+ {% endfor %}
+
+
+ {% endif %}
+
+ {% endfor %}
+
+
+
+
+
+
+
+
+Traceback (most recent call last):
+{% for frame in frames %}
+ File "{{ frame.filename }}" in {{ frame.function }}
+ {% if frame.context_line %}
+ {{ frame.lineno|add:"1" }}. {{ frame.context_line|escape }}
+ {% endif %}
+{% endfor %}
+ {{ exception_type }} at {{ request.path }}
+ {{ exception_value|escape }}
+ |
+
+
+
+
diff --git a/ez_setup.py b/ez_setup.py
index 4789e37ae2..fe3983fef0 100644
--- a/ez_setup.py
+++ b/ez_setup.py
@@ -14,7 +14,7 @@ the appropriate options to ``use_setuptools()``.
This file can also be run as a script to install or upgrade setuptools.
"""
import sys
-DEFAULT_VERSION = "0.6a9"
+DEFAULT_VERSION = "0.6a10"
DEFAULT_URL = "http://cheeseshop.python.org/packages/%s/s/setuptools/" % sys.version[:3]
md5_data = {
@@ -22,6 +22,10 @@ md5_data = {
'setuptools-0.5a13-py2.4.egg': 'ede4be600e3890e06d4ee5e0148e092a',
'setuptools-0.6a1-py2.3.egg': 'ee819a13b924d9696b0d6ca6d1c5833d',
'setuptools-0.6a1-py2.4.egg': '8256b5f1cd9e348ea6877b5ddd56257d',
+ 'setuptools-0.6a10-py2.3.egg': '162d8357f1aff2b0349c6c247ee62987',
+ 'setuptools-0.6a10-py2.4.egg': '803a2d8db501c1ac3b5b6fb4e907f788',
+ 'setuptools-0.6a10dev_r42346-py2.3.egg': 'a7899272cfceb6aa60094ae8928b8077',
+ 'setuptools-0.6a10dev_r42346-py2.4.egg': '5d42a64adca9aedb409f83ecf22156a5',
'setuptools-0.6a2-py2.3.egg': 'b98da449da411267c37a738f0ab625ba',
'setuptools-0.6a2-py2.4.egg': 'be5b88bc30aed63fdefd2683be135c3b',
'setuptools-0.6a3-py2.3.egg': 'ee0e325de78f23aab79d33106dc2a8c8',
@@ -123,8 +127,14 @@ help). I will attempt to download it for you (from
%s), but
you may need to enable firewall access for this script first.
I will start the download in %d seconds.
+
+(Note: if this machine does not have network access, please obtain the file
+
+ %s
+
+and place it in this directory before rerunning this script.)
---------------------------------------------------------------------------""",
- version, download_base, delay
+ version, download_base, delay, url
); from time import sleep; sleep(delay)
log.warn("Downloading %s", url)
src = urllib2.urlopen(url)