summaryrefslogtreecommitdiff
path: root/django/views
diff options
context:
space:
mode:
authorRussell Keith-Magee <russell@keith-magee.com>2007-08-17 15:05:54 +0000
committerRussell Keith-Magee <russell@keith-magee.com>2007-08-17 15:05:54 +0000
commitfcec755f01cfaba2a85bfc9511876debbce98631 (patch)
treee990effbcd90e4d405b0f9dcc70cb38e47b6f3dc /django/views
parent0f92ac52cbf81fb2ac01755c558e2e6ad54700e8 (diff)
newforms-admin: Merged from trunk up to [5916]
git-svn-id: http://code.djangoproject.com/svn/django/branches/newforms-admin@5918 bcc190cf-cafb-0310-a4f2-bffc1f526a37
Diffstat (limited to 'django/views')
-rw-r--r--django/views/debug.py17
-rw-r--r--django/views/generic/create_update.py4
-rw-r--r--django/views/generic/date_based.py2
-rw-r--r--django/views/generic/list_detail.py2
-rw-r--r--django/views/i18n.py4
5 files changed, 23 insertions, 6 deletions
diff --git a/django/views/debug.py b/django/views/debug.py
index d2efe76072..cf0b6b5a0b 100644
--- a/django/views/debug.py
+++ b/django/views/debug.py
@@ -123,10 +123,20 @@ def technical_500_response(request, exc_type, exc_value, tb):
'function': '?',
'lineno': '?',
}]
+
+ unicode_hint = ''
+ if issubclass(exc_type, UnicodeError):
+ start = getattr(exc_value, 'start', None)
+ end = getattr(exc_value, 'end', None)
+ if start is not None and end is not None:
+ unicode_str = exc_value.args[1]
+ unicode_hint = smart_unicode(unicode_str[max(start-5, 0):min(end+5, len(unicode_str))], 'ascii', errors='replace')
+
t = Template(TECHNICAL_500_TEMPLATE, name='Technical 500 template')
c = Context({
'exception_type': exc_type.__name__,
'exception_value': smart_unicode(exc_value, errors='replace'),
+ 'unicode_hint': unicode_hint,
'frames': frames,
'lastframe': frames[-1],
'request': request,
@@ -258,6 +268,7 @@ TECHNICAL_500_TEMPLATE = """
#explanation { background:#eee; }
#template, #template-not-exist { background:#f6f6f6; }
#template-not-exist ul { margin: 0 0 0 20px; }
+ #unicode-hint { background:#eee; }
#traceback { background:#eee; }
#requestinfo { background:#f6f6f6; padding-left:120px; }
#summary table { border:none; background:transparent; }
@@ -358,6 +369,12 @@ TECHNICAL_500_TEMPLATE = """
</tr>
</table>
</div>
+{% if unicode_hint %}
+<div id="unicode-hint">
+ <h2>Unicode error hint</h2>
+ <p>The string that could not be encoded/decoded was: <strong>{{ unicode_hint|escape }}</strong></p>
+</div>
+{% endif %}
{% if template_does_not_exist %}
<div id="template-not-exist">
<h2>Template-loader postmortem</h2>
diff --git a/django/views/generic/create_update.py b/django/views/generic/create_update.py
index a4559ad495..46e92fe26e 100644
--- a/django/views/generic/create_update.py
+++ b/django/views/generic/create_update.py
@@ -71,7 +71,7 @@ def create_object(request, model, template_name=None,
return HttpResponse(t.render(c))
def update_object(request, model, object_id=None, slug=None,
- slug_field=None, template_name=None, template_loader=loader,
+ slug_field='slug', template_name=None, template_loader=loader,
extra_context=None, post_save_redirect=None,
login_required=False, follow=None, context_processors=None,
template_object_name='object'):
@@ -146,7 +146,7 @@ def update_object(request, model, object_id=None, slug=None,
return response
def delete_object(request, model, post_delete_redirect,
- object_id=None, slug=None, slug_field=None, template_name=None,
+ object_id=None, slug=None, slug_field='slug', template_name=None,
template_loader=loader, extra_context=None,
login_required=False, context_processors=None, template_object_name='object'):
"""
diff --git a/django/views/generic/date_based.py b/django/views/generic/date_based.py
index d13c0293be..c0f219f280 100644
--- a/django/views/generic/date_based.py
+++ b/django/views/generic/date_based.py
@@ -286,7 +286,7 @@ def archive_today(request, **kwargs):
def object_detail(request, year, month, day, queryset, date_field,
month_format='%b', day_format='%d', object_id=None, slug=None,
- slug_field=None, template_name=None, template_name_field=None,
+ slug_field='slug', template_name=None, template_name_field=None,
template_loader=loader, extra_context=None, context_processors=None,
template_object_name='object', mimetype=None, allow_future=False):
"""
diff --git a/django/views/generic/list_detail.py b/django/views/generic/list_detail.py
index 16d55202da..f5616b9745 100644
--- a/django/views/generic/list_detail.py
+++ b/django/views/generic/list_detail.py
@@ -87,7 +87,7 @@ def object_list(request, queryset, paginate_by=None, page=None,
return HttpResponse(t.render(c), mimetype=mimetype)
def object_detail(request, queryset, object_id=None, slug=None,
- slug_field=None, template_name=None, template_name_field=None,
+ slug_field='slug', template_name=None, template_name_field=None,
template_loader=loader, extra_context=None,
context_processors=None, template_object_name='object',
mimetype=None):
diff --git a/django/views/i18n.py b/django/views/i18n.py
index 0fec6b6c6f..320caf37d7 100644
--- a/django/views/i18n.py
+++ b/django/views/i18n.py
@@ -69,9 +69,9 @@ function pluralidx(count) { return (count == 1) ? 0 : 1; }
InterPolate = r"""
function interpolate(fmt, obj, named) {
if (named) {
- return fmt.replace(/%\(\w+\)s/, function(match){return String(obj[match.slice(2,-2)])});
+ return fmt.replace(/%\(\w+\)s/g, function(match){return String(obj[match.slice(2,-2)])});
} else {
- return fmt.replace(/%s/, function(match){return String(obj.shift())});
+ return fmt.replace(/%s/g, function(match){return String(obj.shift())});
}
}
"""