From fcec755f01cfaba2a85bfc9511876debbce98631 Mon Sep 17 00:00:00 2001 From: Russell Keith-Magee Date: Fri, 17 Aug 2007 15:05:54 +0000 Subject: 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 --- django/views/debug.py | 17 +++++++++++++++++ django/views/generic/create_update.py | 4 ++-- django/views/generic/date_based.py | 2 +- django/views/generic/list_detail.py | 2 +- django/views/i18n.py | 4 ++-- 5 files changed, 23 insertions(+), 6 deletions(-) (limited to 'django/views') 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 = """ +{% if unicode_hint %} +
+

Unicode error hint

+

The string that could not be encoded/decoded was: {{ unicode_hint|escape }}

+
+{% endif %} {% if template_does_not_exist %}

Template-loader postmortem

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())}); } } """ -- cgit v1.3