diff --git a/django/contrib/admin/media/js/admin/RelatedObjectLookups.js b/django/contrib/admin/media/js/admin/RelatedObjectLookups.js index e43d3a0985..35b949b30d 100644 --- a/django/contrib/admin/media/js/admin/RelatedObjectLookups.js +++ b/django/contrib/admin/media/js/admin/RelatedObjectLookups.js @@ -3,7 +3,13 @@ function showRelatedObjectLookupPopup(triggeringLink) { var name = triggeringLink.id.replace(/^lookup_/, ''); - var win = window.open(triggeringLink.href + '?pop=1', name, 'height=500,width=740,resizable=yes,scrollbars=yes'); + var href + if (triggeringLink.href.search(/\?/) >= 0) { + href = triggeringLink.href + '&pop=1'; + } else { + href = triggeringLink.href + '?pop=1' + } + var win = window.open(href, name, 'height=500,width=740,resizable=yes,scrollbars=yes'); win.focus(); return false; } @@ -29,12 +35,20 @@ function showAddAnotherPopup(triggeringLink) { function dismissAddAnotherPopup(win, newId, newRepr) { var name = win.name.replace(/___/g, '.') var elem = document.getElementById(name); - if (elem.nodeName == 'SELECT') { + if (elem) { + if (elem.nodeName == 'SELECT') { + var o = new Option(newRepr, newId); + elem.options[elem.options.length] = o + elem.selectedIndex = elem.length - 1; + } else if (elem.nodeName == 'INPUT') { + elem.value = newId; + } + } else { + var toId = name + "_to"; + elem = document.getElementById(toId); var o = new Option(newRepr, newId); - elem.options[elem.options.length] = o - elem.selectedIndex = elem.length - 1; - } else if (elem.nodeName == 'INPUT') { - elem.value = newId; + SelectBox.add_to_cache(toId, o); + SelectBox.redisplay(toId); } win.close(); } diff --git a/django/contrib/admin/templates/admin_doc/model_detail.html b/django/contrib/admin/templates/admin_doc/model_detail.html index 3902d8f21d..2aad437ac4 100644 --- a/django/contrib/admin/templates/admin_doc/model_detail.html +++ b/django/contrib/admin/templates/admin_doc/model_detail.html @@ -16,6 +16,10 @@

{{ summary }}

+{% if description %} +

{% filter escape|linebreaksbr %}{% trans description %}{% endfilter %}

+{% endif %} +
diff --git a/django/contrib/admin/templates/widget/foreign.html b/django/contrib/admin/templates/widget/foreign.html index 446ae39647..a3fbc2a061 100644 --- a/django/contrib/admin/templates/widget/foreign.html +++ b/django/contrib/admin/templates/widget/foreign.html @@ -1,7 +1,11 @@ {% load admin_modify adminmedia %} {% output_all bound_field.form_fields %} {% if bound_field.raw_id_admin %} - Lookup + {% if bound_field.field.rel.limit_choices_to %} + Lookup + {% else %} + Lookup + {% endif %} {% else %} {% if bound_field.needs_add_label %} Add Another diff --git a/django/contrib/admin/views/doc.py b/django/contrib/admin/views/doc.py index ddda5b270d..bc8c0a65f0 100644 --- a/django/contrib/admin/views/doc.py +++ b/django/contrib/admin/views/doc.py @@ -191,6 +191,7 @@ def model_detail(request, app_label, model_name): return render_to_response('admin_doc/model_detail', { 'name': '%s.%s' % (opts.app_label, opts.object_name), 'summary': "Fields on %s objects" % opts.object_name, + 'description': model.__doc__, 'fields': fields, }, context_instance=RequestContext(request)) model_detail = staff_member_required(model_detail) diff --git a/django/contrib/admin/views/main.py b/django/contrib/admin/views/main.py index 1eb95617c6..c00c65ad16 100644 --- a/django/contrib/admin/views/main.py +++ b/django/contrib/admin/views/main.py @@ -255,7 +255,7 @@ def add_stage(request, app_label, model_name, show_delete=False, form_url='', po return HttpResponseRedirect(post_url_continue % pk_value) if request.POST.has_key("_popup"): return HttpResponse('' % \ - (pk_value, repr(new_object).replace('"', '\\"'))) + (pk_value, str(new_object).replace('"', '\\"'))) elif request.POST.has_key("_addanother"): request.user.message_set.add(message=msg + ' ' + (_("You may add another %s below.") % opts.verbose_name)) return HttpResponseRedirect(request.path) diff --git a/django/views/debug.py b/django/views/debug.py index d2e6f06b3b..afb5733206 100644 --- a/django/views/debug.py +++ b/django/views/debug.py @@ -349,11 +349,11 @@ TECHNICAL_500_TEMPLATE = """ {% if frame.context_line %}
{% if frame.pre_context %} -
    {% for line in frame.pre_context %}
  1. {{ line|escape }}
  2. {% endfor %}
+
    {% for line in frame.pre_context %}
  1. {{ line|escape }}
  2. {% endfor %}
{% endif %} -
  1. {{ frame.context_line|escape }} ...
+
  1. {{ frame.context_line|escape }} ...
{% if frame.post_context %} -
    {% for line in frame.post_context %}
  1. {{ line|escape }}
  2. {% endfor %}
+
    {% for line in frame.post_context %}
  1. {{ line|escape }}
  2. {% endfor %}
{% endif %}
{% endif %}