Skip to content

Commit

Permalink
newforms-admin: Merged from trunk up to [6782].
Browse files Browse the repository at this point in the history
git-svn-id: http://code.djangoproject.com/svn/django/branches/newforms-admin@6783 bcc190cf-cafb-0310-a4f2-bffc1f526a37
  • Loading branch information
jkocherhans committed Nov 30, 2007
1 parent fcb30a1 commit d0c49bf
Show file tree
Hide file tree
Showing 4 changed files with 15 additions and 12 deletions.
Expand Up @@ -10,7 +10,7 @@
{% else %} {% else %}
{{ field.label_tag }}{{ field.field }} {{ field.label_tag }}{{ field.field }}
{% endif %} {% endif %}
{% if field.field.field.help_text %}<p class="help">{{ field.field.field.help_text }}</p>{% endif %} {% if field.field.field.help_text %}<p class="help">{{ field.field.field.help_text|safe }}</p>{% endif %}
{% endfor %} {% endfor %}
</div> </div>
{% endfor %} {% endfor %}
Expand Down
13 changes: 6 additions & 7 deletions django/core/servers/basehttp.py
Expand Up @@ -8,7 +8,6 @@
""" """


from BaseHTTPServer import BaseHTTPRequestHandler, HTTPServer from BaseHTTPServer import BaseHTTPRequestHandler, HTTPServer
from types import ListType, StringType
import mimetypes import mimetypes
import os import os
import re import re
Expand Down Expand Up @@ -72,7 +71,7 @@ def _formatparam(param, value=None, quote=1):
class Headers(object): class Headers(object):
"""Manage a collection of HTTP response headers""" """Manage a collection of HTTP response headers"""
def __init__(self,headers): def __init__(self,headers):
if type(headers) is not ListType: if not isinstance(headers, list):
raise TypeError("Headers must be a list of name/value tuples") raise TypeError("Headers must be a list of name/value tuples")
self._headers = headers self._headers = headers


Expand Down Expand Up @@ -327,7 +326,7 @@ def set_content_length(self):
"""Compute Content-Length or switch to chunked encoding if possible""" """Compute Content-Length or switch to chunked encoding if possible"""
try: try:
blocks = len(self.result) blocks = len(self.result)
except (TypeError,AttributeError,NotImplementedError): except (TypeError, AttributeError, NotImplementedError):
pass pass
else: else:
if blocks==1: if blocks==1:
Expand Down Expand Up @@ -356,14 +355,14 @@ def start_response(self, status, headers,exc_info=None):
elif self.headers is not None: elif self.headers is not None:
raise AssertionError("Headers already set!") raise AssertionError("Headers already set!")


assert type(status) is StringType,"Status must be a string" assert isinstance(status, str),"Status must be a string"
assert len(status)>=4,"Status must be at least 4 characters" assert len(status)>=4,"Status must be at least 4 characters"
assert int(status[:3]),"Status message must begin w/3-digit code" assert int(status[:3]),"Status message must begin w/3-digit code"
assert status[3]==" ", "Status message must have a space after code" assert status[3]==" ", "Status message must have a space after code"
if __debug__: if __debug__:
for name,val in headers: for name,val in headers:
assert type(name) is StringType,"Header names must be strings" assert isinstance(name, str),"Header names must be strings"
assert type(val) is StringType,"Header values must be strings" assert isinstance(val, str),"Header values must be strings"
assert not is_hop_by_hop(name),"Hop-by-hop headers not allowed" assert not is_hop_by_hop(name),"Hop-by-hop headers not allowed"
self.status = status self.status = status
self.headers = self.headers_class(headers) self.headers = self.headers_class(headers)
Expand All @@ -386,7 +385,7 @@ def send_preamble(self):
def write(self, data): def write(self, data):
"""'write()' callable as specified by PEP 333""" """'write()' callable as specified by PEP 333"""


assert type(data) is StringType,"write() argument must be string" assert isinstance(data, str), "write() argument must be string"


if not self.status: if not self.status:
raise AssertionError("write() before start_response()") raise AssertionError("write() before start_response()")
Expand Down
2 changes: 1 addition & 1 deletion django/template/__init__.py
Expand Up @@ -804,7 +804,7 @@ def render(self, context):
bits.append(self.render_node(node, context)) bits.append(self.render_node(node, context))
else: else:
bits.append(node) bits.append(node)
return ''.join([force_unicode(b) for b in bits]) return mark_safe(''.join([force_unicode(b) for b in bits]))


def get_nodes_by_type(self, nodetype): def get_nodes_by_type(self, nodetype):
"Return a list of all nodes of the given type" "Return a list of all nodes of the given type"
Expand Down
10 changes: 7 additions & 3 deletions tests/regressiontests/templates/unicode.py
Expand Up @@ -3,6 +3,7 @@
unicode_tests = ur""" unicode_tests = ur"""
Templates can be created from unicode strings. Templates can be created from unicode strings.
>>> from django.template import * >>> from django.template import *
>>> from django.utils.safestring import SafeData
>>> t1 = Template(u'ŠĐĆŽćžšđ {{ var }}') >>> t1 = Template(u'ŠĐĆŽćžšđ {{ var }}')
Templates can also be created from bytestrings. These are assumed by encoded Templates can also be created from bytestrings. These are assumed by encoded
Expand All @@ -24,10 +25,13 @@
>>> c4 = Context({u'var': '\xc4\x90\xc4\x91'}) >>> c4 = Context({u'var': '\xc4\x90\xc4\x91'})
Since both templates and all four contexts represent the same thing, they all Since both templates and all four contexts represent the same thing, they all
render the same (and are returned as unicode objects). render the same (and are returned as unicode objects and "safe" objects as
well, for auto-escaping purposes).
>>> t1.render(c3) == t2.render(c3) >>> t1.render(c3) == t2.render(c3)
True True
>>> type(t1.render(c3)) >>> isinstance(t1.render(c3), unicode)
<type 'unicode'> True
>>> isinstance(t1.render(c3), SafeData)
True
""" """

0 comments on commit d0c49bf

Please sign in to comment.