mirror of
https://github.com/django/django.git
synced 2025-06-05 03:29:12 +00:00
magic-removal: Merged to [1967], a fantastic year in pop music
git-svn-id: http://code.djangoproject.com/svn/django/branches/magic-removal@1968 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
parent
08f032f6b5
commit
2cfb709ac2
@ -800,6 +800,8 @@ def get_validation_errors(outfile):
|
|||||||
for c in f.choices:
|
for c in f.choices:
|
||||||
if not type(c) in (tuple, list) or len(c) != 2:
|
if not type(c) in (tuple, list) or len(c) != 2:
|
||||||
e.add(opts, '"%s" field: "choices" should be a sequence of two-tuples.' % f.name)
|
e.add(opts, '"%s" field: "choices" should be a sequence of two-tuples.' % f.name)
|
||||||
|
if f.db_index not in (None, True, False):
|
||||||
|
e.add(opts, '"%s" field: "db_index" should be either None, True or False.' % f.name)
|
||||||
|
|
||||||
# Check for multiple ManyToManyFields to the same object, and
|
# Check for multiple ManyToManyFields to the same object, and
|
||||||
# verify "singular" is set in that case.
|
# verify "singular" is set in that case.
|
||||||
|
@ -249,6 +249,14 @@ class NowNode(Node):
|
|||||||
df = DateFormat(datetime.now())
|
df = DateFormat(datetime.now())
|
||||||
return df.format(self.format_string)
|
return df.format(self.format_string)
|
||||||
|
|
||||||
|
class SpacelessNode(Node):
|
||||||
|
def __init__(self, nodelist):
|
||||||
|
self.nodelist = nodelist
|
||||||
|
|
||||||
|
def render(self, context):
|
||||||
|
from django.utils.html import strip_spaces_between_tags
|
||||||
|
return strip_spaces_between_tags(self.nodelist.render(context).strip())
|
||||||
|
|
||||||
class TemplateTagNode(Node):
|
class TemplateTagNode(Node):
|
||||||
mapping = {'openblock': BLOCK_TAG_START,
|
mapping = {'openblock': BLOCK_TAG_START,
|
||||||
'closeblock': BLOCK_TAG_END,
|
'closeblock': BLOCK_TAG_END,
|
||||||
@ -726,6 +734,12 @@ def regroup(parser, token):
|
|||||||
return RegroupNode(target, expression, var_name)
|
return RegroupNode(target, expression, var_name)
|
||||||
regroup = register.tag(regroup)
|
regroup = register.tag(regroup)
|
||||||
|
|
||||||
|
def spaceless(parser, token):
|
||||||
|
nodelist = parser.parse(('endspaceless',))
|
||||||
|
parser.delete_first_token()
|
||||||
|
return SpacelessNode(nodelist)
|
||||||
|
spaceless = register.tag(spaceless)
|
||||||
|
|
||||||
#@register.tag
|
#@register.tag
|
||||||
def templatetag(parser, token):
|
def templatetag(parser, token):
|
||||||
"""
|
"""
|
||||||
|
@ -37,6 +37,10 @@ def strip_tags(value):
|
|||||||
"Returns the given HTML with all tags stripped"
|
"Returns the given HTML with all tags stripped"
|
||||||
return re.sub(r'<[^>]*?>', '', value)
|
return re.sub(r'<[^>]*?>', '', value)
|
||||||
|
|
||||||
|
def strip_spaces_between_tags(value):
|
||||||
|
"Returns the given HTML with spaces between tags stripped"
|
||||||
|
return re.sub(r'>\s+<', '><', value)
|
||||||
|
|
||||||
def strip_entities(value):
|
def strip_entities(value):
|
||||||
"Returns the given HTML with all entities (&something;) stripped"
|
"Returns the given HTML with all entities (&something;) stripped"
|
||||||
return re.sub(r'&(?:\w+|#\d);', '', value)
|
return re.sub(r'&(?:\w+|#\d);', '', value)
|
||||||
|
@ -663,6 +663,34 @@ i.e.::
|
|||||||
|
|
||||||
{% regroup people|dictsort:"gender" by gender as grouped %}
|
{% regroup people|dictsort:"gender" by gender as grouped %}
|
||||||
|
|
||||||
|
spaceless
|
||||||
|
~~~~~~~~~
|
||||||
|
|
||||||
|
**New in Django development version.**
|
||||||
|
|
||||||
|
Strips whitespace between HTML tags. This includes tab characters and newlines.
|
||||||
|
|
||||||
|
Example usage::
|
||||||
|
|
||||||
|
{% spaceless %}
|
||||||
|
<p>
|
||||||
|
<a href="foo/">Foo</a>
|
||||||
|
</p>
|
||||||
|
{% spaceless %}
|
||||||
|
|
||||||
|
This example would return this HTML::
|
||||||
|
|
||||||
|
<p><a href="foo/">Foo</a></p>
|
||||||
|
|
||||||
|
Only space between *tags* is stripped -- not space between tags and text. In
|
||||||
|
this example, the space around ``Hello`` won't be stripped::
|
||||||
|
|
||||||
|
{% spaceless %}
|
||||||
|
<strong>
|
||||||
|
Hello
|
||||||
|
</strong>
|
||||||
|
{% spaceless %}
|
||||||
|
|
||||||
ssi
|
ssi
|
||||||
~~~
|
~~~
|
||||||
|
|
||||||
|
@ -316,6 +316,11 @@ TEMPLATE_TESTS = {
|
|||||||
|
|
||||||
### I18N ##################################################################
|
### I18N ##################################################################
|
||||||
|
|
||||||
|
# {% spaceless %} tag
|
||||||
|
'spaceless01': ("{% spaceless %} <b> <i> text </i> </b> {% endspaceless %}", {}, "<b><i> text </i></b>"),
|
||||||
|
'spaceless02': ("{% spaceless %} <b> \n <i> text </i> \n </b> {% endspaceless %}", {}, "<b><i> text </i></b>"),
|
||||||
|
'spaceless03': ("{% spaceless %}<b><i>text</i></b>{% endspaceless %}", {}, "<b><i>text</i></b>"),
|
||||||
|
|
||||||
# simple translation of a string delimited by '
|
# simple translation of a string delimited by '
|
||||||
'i18n01': ("{% load i18n %}{% trans 'xxxyyyxxx' %}", {}, "xxxyyyxxx"),
|
'i18n01': ("{% load i18n %}{% trans 'xxxyyyxxx' %}", {}, "xxxyyyxxx"),
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user