Django

Code

Changeset 6776

Show
Ignore:
Timestamp:
11/29/07 23:50:44 (9 months ago)
Author:
jkocherhans
Message:

newforms-admin: Merged trunk revision [6671].

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • django/branches/newforms-admin

    • Property svnmerge-integrated changed from /django/trunk:1-4345,4350-4357,4359-4365,4371-4372,4374-4377,4380-4386,4388,4390-4391,4400-4402,4404-4408,4410,4412-4419,4426-4427,4430-4432,4434,4441,4443-4444,4446-4447,4450,4452-4453,4455-4458,4476,4503,4546,4564-4569,4580-4586,4617,4630,4641-6390,6392-6655,6658-6670 to /django/trunk:1-4345,4350-4357,4359-4365,4371-4372,4374-4377,4380-4386,4388,4390-4391,4400-4402,4404-4408,4410,4412-4419,4426-4427,4430-4432,4434,4441,4443-4444,4446-4447,4450,4452-4453,4455-4458,4476,4503,4546,4564-4569,4580-4586,4617,4630,4641-6390,6392-6655,6658-6671
  • django/branches/newforms-admin/django/contrib/admindocs/utils.py

    r5570 r6776  
    44from email.Parser import HeaderParser 
    55from email.Errors import HeaderParseError 
     6from django.utils.safestring import mark_safe 
    67try: 
    78    import docutils.core 
     
    6768                destination_path=None, writer_name='html', 
    6869                settings_overrides=overrides) 
    69     return parts['fragment'] 
     70    return mark_safe(parts['fragment']) 
    7071 
    7172# 
  • django/branches/newforms-admin/django/contrib/admindocs/views.py

    r6319 r6776  
    1111from django.contrib.sites.models import Site 
    1212from django.utils.translation import ugettext as _ 
     13from django.utils.safestring import mark_safe 
    1314import inspect, os, re 
    1415 
     
    3031    admin_root = request.path[:-len('doc/bookmarklets/')] 
    3132    return render_to_response('admin_doc/bookmarklets.html', { 
    32         'admin_url': "%s://%s%s" % (request.is_secure() and 'https' or 'http', get_host(request), admin_root), 
     33        'admin_url': mark_safe("%s://%s%s" % (request.is_secure() and 'https' or 'http', request.get_host(), admin_root)), 
    3334    }, context_instance=RequestContext(request)) 
    3435bookmarklets = staff_member_required(bookmarklets) 
  • django/branches/newforms-admin/django/contrib/admin/filterspecs.py

    r6216 r6776  
    1010from django.utils.encoding import smart_unicode, iri_to_uri 
    1111from django.utils.translation import ugettext as _ 
     12from django.utils.html import escape 
     13from django.utils.safestring import mark_safe 
    1214import datetime 
    1315 
     
    4042        t = [] 
    4143        if self.has_output(): 
    42             t.append(_(u'<h3>By %s:</h3>\n<ul>\n') % self.title()) 
     44            t.append(_(u'<h3>By %s:</h3>\n<ul>\n') % escape(self.title())) 
    4345 
    4446            for choice in self.choices(cl): 
     
    4850                     choice['display'])) 
    4951            t.append('</ul>\n\n') 
    50         return "".join(t
     52        return mark_safe("".join(t)
    5153 
    5254class RelatedFilterSpec(FilterSpec): 
  • django/branches/newforms-admin/django/contrib/admin/models.py

    r5828 r6776  
    44from django.utils.translation import ugettext_lazy as _ 
    55from django.utils.encoding import smart_unicode 
     6from django.utils.safestring import mark_safe 
    67 
    78ADDITION = 1 
     
    5051        This is relative to the Django admin index page. 
    5152        """ 
    52         return u"%s/%s/%s/" % (self.content_type.app_label, self.content_type.model, self.object_id
     53        return mark_safe(u"%s/%s/%s/" % (self.content_type.app_label, self.content_type.model, self.object_id)
  • django/branches/newforms-admin/django/contrib/admin/options.py

    r6657 r6776  
    1010from django.shortcuts import get_object_or_404, render_to_response 
    1111from django.utils.html import escape 
     12from django.utils.safestring import mark_safe 
    1213from django.utils.text import capfirst, get_text_list 
    1314from django.utils.translation import ugettext as _ 
     
    463464            'has_absolute_url': hasattr(model, 'get_absolute_url'), 
    464465            'ordered_objects': ordered_objects, 
    465             'form_url': form_url
     466            'form_url': mark_safe(form_url)
    466467            'opts': opts, 
    467468            'content_type_id': ContentType.objects.get_for_model(model).id, 
     
    653654        # Populate deleted_objects, a data structure of all related objects that 
    654655        # will also be deleted. 
    655         deleted_objects = [u'%s: <a href="../../%s/">%s</a>' % (force_unicode(capfirst(opts.verbose_name)), object_id, escape(str(obj))), []] 
     656        deleted_objects = [mark_safe(u'%s: <a href="../../%s/">%s</a>' % (escape(force_unicode(capfirst(opts.verbose_name))), force_unicode(object_id), escape(obj))), []] 
    656657        perms_needed = sets.Set() 
    657658        get_deleted_objects(deleted_objects, perms_needed, request.user, obj, opts, 1, self.admin_site) 
  • django/branches/newforms-admin/django/contrib/admin/sites.py

    r6207 r6776  
    44from django.db.models.base import ModelBase 
    55from django.shortcuts import render_to_response 
     6from django.utils.safestring import mark_safe 
    67from django.utils.text import capfirst 
    78from django.utils.translation import ugettext_lazy, ugettext as _ 
     
    273274                    model_dict = { 
    274275                        'name': capfirst(model._meta.verbose_name_plural), 
    275                         'admin_url': '%s/%s/' % (app_label, model.__name__.lower()), 
     276                        'admin_url': mark_safe('%s/%s/' % (app_label, model.__name__.lower())), 
    276277                        'perms': perms, 
    277278                    } 
  • django/branches/newforms-admin/django/contrib/admin/templates/admin/base_site.html

    r3349 r6776  
    22{% load i18n %} 
    33 
    4 {% block title %}{{ title|escape }} | {% trans 'Django site admin' %}{% endblock %} 
     4{% block title %}{{ title }} | {% trans 'Django site admin' %}{% endblock %} 
    55 
    66{% block branding %} 
  • django/branches/newforms-admin/django/contrib/admin/templates/admin/change_form.html

    r6122 r6776  
    1818<div class="breadcrumbs"> 
    1919     <a href="../../../">{% trans "Home" %}</a> &rsaquo; 
    20      <a href="../">{{ opts.verbose_name_plural|capfirst|escape }}</a> &rsaquo; 
    21      {% if add %}{% trans "Add" %} {{ opts.verbose_name|escape }}{% else %}{{ original|truncatewords:"18"|escape }}{% endif %} 
     20     <a href="../">{{ opts.verbose_name_plural|capfirst }}</a> &rsaquo; 
     21     {% if add %}{% trans "Add" %} {{ opts.verbose_name }}{% else %}{{ original|truncatewords:"18" }}{% endif %} 
    2222</div> 
    2323{% endif %}{% endblock %} 
  • django/branches/newforms-admin/django/contrib/admin/templates/admin/date_hierarchy.html

    r3349 r6776  
    22<div class="xfull"> 
    33<ul class="toplinks"> 
    4 {% if back %}<li class="date-back"><a href="{{ back.link }}">&lsaquo; {{ back.title|escape }}</a></li>{% endif %} 
     4{% if back %}<li class="date-back"><a href="{{ back.link }}">&lsaquo; {{ back.title }}</a></li>{% endif %} 
    55{% for choice in choices %} 
    6 <li> {% if choice.link %}<a href="{{ choice.link }}">{% endif %}{{ choice.title|escape }}{% if choice.link %}</a>{% endif %}</li> 
     6<li> {% if choice.link %}<a href="{{ choice.link }}">{% endif %}{{ choice.title }}{% if choice.link %}</a>{% endif %}</li> 
    77{% endfor %} 
    88</ul><br class="clear" /> 
  • django/branches/newforms-admin/django/contrib/admin/templates/admin/delete_confirmation.html

    r4351 r6776  
    77<div class="breadcrumbs"> 
    88     <a href="../../../../">{% trans "Home" %}</a> &rsaquo; 
    9      <a href="../../">{{ opts.verbose_name_plural|capfirst|escape }}</a> &rsaquo; 
     9     <a href="../../">{{ opts.verbose_name_plural|capfirst }}</a> &rsaquo; 
    1010     <a href="../">{{ object|escape|truncatewords:"18" }}</a> &rsaquo; 
    1111     {% trans 'Delete' %} 
     
    1818    <ul> 
    1919    {% for obj in perms_lacking %} 
    20         <li>{{ obj|escape }}</li> 
     20        <li>{{ obj }}</li> 
    2121    {% endfor %} 
    2222    </ul> 
  • django/branches/newforms-admin/django/contrib/admin/templates/admin_doc/model_detail.html

    r3642 r6776  
    1010{% endblock %} 
    1111 
    12 {% block breadcrumbs %}<div class="breadcrumbs"><a href="../../../">Home</a> &rsaquo; <a href="../../">Documentation</a> &rsaquo; <a href="../">Models</a> &rsaquo; {{ name|escape }}</div>{% endblock %} 
     12{% block breadcrumbs %}<div class="breadcrumbs"><a href="../../../">Home</a> &rsaquo; <a href="../../">Documentation</a> &rsaquo; <a href="../">Models</a> &rsaquo; {{ name }}</div>{% endblock %} 
    1313 
    14 {% block title %}Model: {{ name|escape }}{% endblock %} 
     14{% block title %}Model: {{ name }}{% endblock %} 
    1515 
    1616{% block content %} 
    1717<div id="content-main"> 
    18 <h1>{{ summary|escape }}</h1> 
     18<h1>{{ summary }}</h1> 
    1919 
    2020{% if description %} 
    21   <p>{% filter escape|linebreaksbr %}{% trans description %}{% endfilter %}</p> 
     21  <p>{% filter linebreaksbr %}{% trans description %}{% endfilter %}</p> 
    2222{% endif %} 
    2323 
  • django/branches/newforms-admin/django/contrib/admin/templates/admin/index.html

    r5984 r6776  
    2121            <tr> 
    2222            {% if model.perms.change %} 
    23                 <th scope="row"><a href="{{ model.admin_url }}">{{ model.name|escape }}</a></th> 
     23                <th scope="row"><a href="{{ model.admin_url }}">{{ model.name }}</a></th> 
    2424            {% else %} 
    25                 <th scope="row">{{ model.name|escape }}</th> 
     25                <th scope="row">{{ model.name }}</th> 
    2626            {% endif %} 
    2727 
     
    6060            <ul class="actionlist"> 
    6161            {% for entry in admin_log %} 
    62             <li class="{% if entry.is_addition %}addlink{% endif %}{% if entry.is_change %}changelink{% endif %}{% if entry.is_deletion %}deletelink{% endif %}">{% if not entry.is_deletion %}<a href="{{ entry.get_admin_url }}">{% endif %}{{ entry.object_repr|escape }}{% if not entry.is_deletion %}</a>{% endif %}<br /><span class="mini quiet">{% filter capfirst|escape %}{% trans entry.content_type.name %}{% endfilter %}</span></li> 
     62            <li class="{% if entry.is_addition %}addlink{% endif %}{% if entry.is_change %}changelink{% endif %}{% if entry.is_deletion %}deletelink{% endif %}">{% if not entry.is_deletion %}<a href="{{ entry.get_admin_url }}">{% endif %}{{ entry.object_repr|escape }}{% if not entry.is_deletion %}</a>{% endif %}<br /><span class="mini quiet">{% filter capfirst %}{% trans entry.content_type.name %}{% endfilter %}</span></li> 
    6363            {% endfor %} 
    6464            </ul> 
  • django/branches/newforms-admin/django/contrib/admin/templates/admin/invalid_setup.html

    r4351 r6776  
    22{% load i18n %} 
    33 
    4 {% block breadcrumbs %}<div class="breadcrumbs"><a href="../../">{% trans 'Home' %}</a> &rsaquo; {{ title|escape }}</div>{% endblock %} 
     4{% block breadcrumbs %}<div class="breadcrumbs"><a href="../../">{% trans 'Home' %}</a> &rsaquo; {{ title }}</div>{% endblock %} 
    55 
    66{% block content %} 
  • django/branches/newforms-admin/django/contrib/admin/templates/admin/object_history.html

    r4351 r6776  
    55 
    66{% block breadcrumbs %} 
    7 <div class="breadcrumbs"><a href="../../../../">{% trans 'Home' %}</a> &rsaquo; <a href="../../">{{ module_name|escape }}</a> &rsaquo; <a href="../">{{ object|escape|truncatewords:"18" }}</a> &rsaquo; {% trans 'History' %}</div> 
     7<div class="breadcrumbs"><a href="../../../../">{% trans 'Home' %}</a> &rsaquo; <a href="../../">{{ module_name }}</a> &rsaquo; <a href="../">{{ object|truncatewords:"18" }}</a> &rsaquo; {% trans 'History' %}</div> 
    88{% endblock %} 
    99 
     
    2525        <tr> 
    2626            <th scope="row">{{ action.action_time|date:_("DATE_WITH_TIME_FULL") }}</th> 
    27             <td>{{ action.user.username }}{% if action.user.first_name %} ({{ action.user.first_name|escape }} {{ action.user.last_name|escape }}){% endif %}</td> 
    28             <td>{{ action.change_message|escape }}</td> 
     27            <td>{{ action.user.username }}{% if action.user.first_name %} ({{ action.user.first_name }} {{ action.user.last_name }}){% endif %}</td> 
     28            <td>{{ action.change_message }}</td> 
    2929        </tr> 
    3030        {% endfor %} 
  • django/branches/newforms-admin/django/contrib/admin/templates/admin/pagination.html

    r3349 r6776  
    77{% endfor %} 
    88{% endif %} 
    9 {{ cl.result_count }} {% ifequal cl.result_count 1 %}{{ cl.opts.verbose_name|escape }}{% else %}{{ cl.opts.verbose_name_plural|escape }}{% endifequal %} 
     9{{ cl.result_count }} {% ifequal cl.result_count 1 %}{{ cl.opts.verbose_name|escape }}{% else %}{{ cl.opts.verbose_name_plural }}{% endifequal %} 
    1010{% if show_all_url %}&nbsp;&nbsp;<a href="{{ show_all_url }}" class="showall">{% trans 'Show all' %}</a>{% endif %} 
    1111</p> 
  • django/branches/newforms-admin/django/contrib/admin/templatetags/admin_list.py

    r6158 r6776  
    55from django.db import models 
    66from django.utils import dateformat 
    7 from django.utils.html import escape 
     7from django.utils.html import escape, conditional_escape 
    88from django.utils.text import capfirst 
     9from django.utils.safestring import mark_safe 
    910from django.utils.translation import get_date_formats, get_partial_date_formats, ugettext as _ 
    1011from django.utils.encoding import smart_unicode, smart_str, force_unicode 
     
    2021        return u'... ' 
    2122    elif i == cl.page_num: 
    22         return u'<span class="this-page">%d</span> ' % (i+1
     23        return mark_safe(u'<span class="this-page">%d</span> ' % (i+1)
    2324    else: 
    24         return u'<a href="%s"%s>%d</a> ' % (cl.get_query_string({PAGE_VAR: i}), (i == cl.paginator.pages-1 and ' class="end"' or ''), i+1
     25        return mark_safe(u'<a href="%s"%s>%d</a> ' % (cl.get_query_string({PAGE_VAR: i}), (i == cl.paginator.pages-1 and ' class="end"' or ''), i+1)
    2526paginator_number = register.simple_tag(paginator_number) 
    2627 
     
    118119def _boolean_icon(field_val): 
    119120    BOOLEAN_MAPPING = {True: 'yes', False: 'no', None: 'unknown'} 
    120     return u'<img src="%simg/admin/icon-%s.gif" alt="%s" />' % (settings.ADMIN_MEDIA_PREFIX, BOOLEAN_MAPPING[field_val], field_val
     121    return mark_safe(u'<img src="%simg/admin/icon-%s.gif" alt="%s" />' % (settings.ADMIN_MEDIA_PREFIX, BOOLEAN_MAPPING[field_val], field_val)
    121122 
    122123def items_for_result(cl, result): 
     
    194195            # Problem cases are long ints (23L) and non-ASCII strings. 
    195196            result_id = repr(force_unicode(getattr(result, pk)))[1:] 
    196             yield (u'<%s%s><a href="%s"%s>%s</a></%s>' % \ 
    197                 (table_tag, row_class, url, (cl.is_popup and ' onclick="opener.dismissRelatedLookupPopup(window, %s); return false;"' % result_id or ''), result_repr, table_tag)) 
    198         else: 
    199             yield (u'<td%s>%s</td>' % (row_class, result_repr)) 
     197            yield mark_safe(u'<%s%s><a href="%s"%s>%s</a></%s>' % \ 
     198                (table_tag, row_class, url, (cl.is_popup and ' onclick="opener.dismissRelatedLookupPopup(window, %s); return false;"' % result_id or ''), conditional_escape(result_repr), table_tag)) 
     199        else: 
     200            yield mark_safe(u'<td%s>%s</td>' % (row_class, conditional_escape(result_repr))) 
    200201 
    201202def results(cl): 
     
    221222        year_month_format, month_day_format = get_partial_date_formats() 
    222223 
    223         link = lambda d: cl.get_query_string(d, [field_generic]
     224        link = lambda d: mark_safe(cl.get_query_string(d, [field_generic])
    224225 
    225226        if year_lookup and month_lookup and day_lookup: 
  • django/branches/newforms-admin/django/contrib/admin/util.py

    r6325 r6776  
    22from django.db import models 
    33from django.utils.html import escape 
     4from django.utils.safestring import mark_safe 
    45from django.utils.text import capfirst 
    56from django.utils.encoding import force_unicode 
     
    3839                    # Don't display link to edit, because it either has no 
    3940                    # admin or is edited inline. 
    40                     nh(deleted_objects, current_depth, [u'%s: %s' % (force_unicode(capfirst(related.opts.verbose_name)), sub_obj), []]) 
     41                    nh(deleted_objects, current_depth, [mark_safe(u'%s: %s' % (force_unicode(capfirst(related.opts.verbose_name)), sub_obj)), []]) 
    4142                else: 
    4243                    # Display a link to the admin page. 
    43                     nh(deleted_objects, current_depth, [u'%s: <a href="../../../../%s/%s/%s/">%s</a>' % \ 
    44                         (force_unicode(capfirst(related.opts.verbose_name)), related.opts.app_label, related.opts.object_name.lower(), 
    45                         sub_obj._get_pk_val(), sub_obj), []]) 
     44                    nh(deleted_objects, current_depth, [mark_safe(u'%s: <a href="../../../../%s/%s/%s/">%s</a>' % 
     45                        (escape(force_unicode(capfirst(related.opts.verbose_name))), 
     46                            related.opts.app_label, 
     47                            related.opts.object_name.lower(), 
     48                            sub_obj._get_pk_val(), sub_obj)), []]) 
    4649                get_deleted_objects(deleted_objects, perms_needed, user, sub_obj, related.opts, current_depth+2, admin_site) 
    4750        else: 
     
    5558                else: 
    5659                    # Display a link to the admin page. 
    57                     nh(deleted_objects, current_depth, [u'%s: <a href="../../../../%s/%s/%s/">%s</a>' % \ 
    58                         (force_unicode(capfirst(related.opts.verbose_name)), related.opts.app_label, related.opts.object_name.lower(), sub_obj._get_pk_val(), escape(sub_obj)), []]) 
     60                    nh(deleted_objects, current_depth, [mark_safe(u'%s: <a href="../../../../%s/%s/%s/">%s</a>' % \ 
     61                        (escape(force_unicode(capfirst(related.opts.verbose_name))), related.opts.app_label, related.opts.object_name.lower(), sub_obj._get_pk_val(), escape(sub_obj))), []]) 
    5962                get_deleted_objects(deleted_objects, perms_needed, user, sub_obj, related.opts, current_depth+2, admin_site) 
    6063            # If there were related objects, and the user doesn't have 
     
    8891                    # Display a link to the admin page. 
    8992                    nh(deleted_objects, current_depth, [ 
    90                         (_('One or more %(fieldname)s in %(name)s:') % {'fieldname': force_unicode(related.field.verbose_name), 'name': force_unicode(related.opts.verbose_name)}) + \ 
     93                        mark_safe((_('One or more %(fieldname)s in %(name)s:') % {'fieldname': escape(force_unicode(related.field.verbose_name)), 'name': escape(force_unicode(related.opts.verbose_name))}) + \ 
    9194                        (u' <a href="../../../../%s/%s/%s/">%s</a>' % \ 
    92                             (related.opts.app_label, related.opts.module_name, sub_obj._get_pk_val(), escape(sub_obj))), []]) 
     95                            (related.opts.app_label, related.opts.module_name, sub_obj._get_pk_val(), escape(sub_obj)))), []]) 
    9396        # If there were related objects, and the user doesn't have 
    9497        # permission to change them, add the missing perm to perms_needed. 
  • django/branches/newforms-admin/django/contrib/admin/views/decorators.py

    r5627 r6776  
    55from django.shortcuts import render_to_response 
    66from django.utils.translation import ugettext_lazy, ugettext as _ 
     7from django.utils.safestring import mark_safe 
    78import base64, datetime, md5 
    89import cPickle as pickle 
     
    2324    return render_to_response('admin/login.html', { 
    2425        'title': _('Log in'), 
    25         'app_path': request.path
     26        'app_path': mark_safe(request.path)
    2627        'post_data': post_data, 
    2728        'error_message': error_message 
  • django/branches/newforms-admin/django/contrib/admin/views/main.py

    r6470 r6776  
    174174            elif v is not None: 
    175175                p[k] = v 
    176         return '?' + '&amp;'.join([u'%s=%s' % (k, v) for k, v in p.items()]).replace(' ', '%20'
     176        return mark_safe('?' + '&amp;'.join([u'%s=%s' % (k, v) for k, v in p.items()]).replace(' ', '%20')
    177177 
    178178    def get_results(self, request): 
  • django/branches/newforms-admin/django/contrib/csrf/middleware.py

    r6051 r6776  
    88from django.conf import settings 
    99from django.http import HttpResponseForbidden 
     10from django.utils.safestring import mark_safe 
    1011import md5 
    1112import re 
    1213import itertools 
    1314 
    14 _ERROR_MSG = '<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"><body><h1>403 Forbidden</h1><p>Cross Site Request Forgery detected. Request aborted.</p></body></html>' 
     15_ERROR_MSG = mark_safe('<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"><body><h1>403 Forbidden</h1><p>Cross Site Request Forgery detected. Request aborted.</p></body></html>') 
    1516 
    1617_POST_FORM_RE = \ 
     
    8384            def add_csrf_field(match): 
    8485                """Returns the matched <form> tag plus the added <input> element""" 
    85                 return match.group() + "<div style='display:none;'>" + \ 
     86                return mark_safe(match.group() + "<div style='display:none;'>" + \ 
    8687                "<input type='hidden' " + idattributes.next() + \ 
    8788                " name='csrfmiddlewaretoken' value='" + csrf_token + \ 
    88                 "' /></div>" 
     89                "' /></div>") 
    8990 
    9091            # Modify any POST forms 
  • django/branches/newforms-admin/django/contrib/databrowse/datastructures.py

    r5984 r6776  
    99from django.utils.translation import get_date_formats 
    1010from django.utils.encoding import smart_unicode, smart_str, iri_to_uri 
     11from django.utils.safestring import mark_safe 
    1112from django.db.models.query import QuerySet 
    1213 
     
    2930 
    3031    def url(self): 
    31         return '%s%s/%s/' % (self.site.root_url, self.model._meta.app_label, self.model._meta.module_name
     32        return mark_safe('%s%s/%s/' % (self.site.root_url, self.model._meta.app_label, self.model._meta.module_name)
    3233 
    3334    def objects(self, **kwargs): 
     
    6970    def url(self): 
    7071        if self.field.choices: 
    71             return '%s%s/%s/%s/' % (self.model.site.root_url, self.model.model._meta.app_label, self.model.model._meta.module_name, self.field.name
     72            return mark_safe('%s%s/%s/%s/' % (self.model.site.root_url, self.model.model._meta.app_label, self.model.model._meta.module_name, self.field.name)
    7273        elif self.field.rel: 
    73             return '%s%s/%s/' % (self.model.site.root_url, self.model.model._meta.app_label, self.model.model._meta.module_name
     74            return mark_safe('%s%s/%s/' % (self.model.site.root_url, self.model.model._meta.app_label, self.model.model._meta.module_name)
    7475 
    7576class EasyChoice(object): 
     
    8283 
    8384    def url(self): 
    84         return '%s%s/%s/%s/%s/' % (self.model.site.root_url, self.model.model._meta.app_label, self.model.model._meta.module_name, self.field.field.name, iri_to_uri(self.value)) 
     85        return mark_safe('%s%s/%s/%s/%s/' % (self.model.site.root_url, self.model.model._meta.app_label, self.model.model._meta.module_name, self.field.field.name, iri_to_uri(self.value))) 
    8586 
    8687class EasyInstance(object): 
     
    185186                lst = [] 
    186187                for value in self.values(): 
    187                     url = '%s%s/%s/objects/%s/' % (self.model.site.root_url, m.model._meta.app_label, m.model._meta.module_name, iri_to_uri(value._get_pk_val())) 
     188                    url = mark_safe('%s%s/%s/objects/%s/' % (self.model.site.root_url, m.model._meta.app_label, m.model._meta.module_name, iri_to_uri(value._get_pk_val()))) 
    188189                    lst.append((smart_unicode(value), url)) 
    189190            else: 
     
    192193            lst = [] 
    193194            for value in self.values(): 
    194                 url = '%s%s/%s/fields/%s/%s/' % (self.model.site.root_url, self.model.model._meta.app_label, self.model.model._meta.module_name, self.field.name, iri_to_uri(self.raw_value)) 
     195                url = mark_safe('%s%s/%s/fields/%s/%s/' % (self.model.site.root_url, self.model.model._meta.app_label, self.model.model._meta.module_name, self.field.name, iri_to_uri(self.raw_value))) 
    195196                lst.append((value, url)) 
    196197        elif isinstance(self.field, models.URLField): 
  • django/branches/newforms-admin/django/contrib/databrowse/plugins/calendars.py

    r5984 r6776  
    66from django.utils.text import capfirst 
    77from django.utils.translation import get_date_formats 
     8from django.utils.encoding import force_unicode 
     9from django.utils.safestring import mark_safe 
    810from django.views.generic import date_based 
    9 from django.utils.encoding import force_unicode 
    1011import datetime 
    1112import time 
     
    3031        if not fields: 
    3132            return u'' 
    32         return u'<p class="filter"><strong>View calendar by:</strong> %s</p>' % \ 
    33             u', '.join(['<a href="calendars/%s/">%s</a>' % (f.name, force_unicode(capfirst(f.verbose_name))) for f in fields.values()]) 
     33        return mark_safe(u'<p class="filter"><strong>View calendar by:</strong> %s</p>' % \ 
     34            u', '.join(['<a href="calendars/%s/">%s</a>' % (f.name, force_unicode(capfirst(f.verbose_name))) for f in fields.values()])) 
    3435 
    3536    def urls(self, plugin_name, easy_instance_field): 
    3637        if isinstance(easy_instance_field.field, models.DateField): 
    37             return [u'%s%s/%s/%s/%s/%s/' % (easy_instance_field.model.url(), 
     38            return [mark_safe(u'%s%s/%s/%s/%s/%s/' % ( 
     39                easy_instance_field.model.url(), 
    3840                plugin_name, easy_instance_field.field.name, 
    3941                easy_instance_field.raw_value.year, 
    4042                easy_instance_field.raw_value.strftime('%b').lower(), 
    41                 easy_instance_field.raw_value.day)
     43                easy_instance_field.raw_value.day))
    4244 
    4345    def model_view(self, request, model_databrowse, url): 
  • django/branches/newforms-admin/django/contrib/databrowse/plugins/fieldchoices.py

    r5918 r6776  
    66from django.utils.text import capfirst 
    77from django.utils.encoding import smart_str, force_unicode 
     8from django.utils.safestring import mark_safe 
    89from django.views.generic import date_based 
    910import datetime 
     
    3334        if not fields: 
    3435            return u'' 
    35         return u'<p class="filter"><strong>View by:</strong> %s</p>' % \ 
    36             u', '.join(['<a href="fields/%s/">%s</a>' % (f.name, force_unicode(capfirst(f.verbose_name))) for f in fields.values()]) 
     36        return mark_safe(u'<p class="filter"><strong>View by:</strong> %s</p>' % \ 
     37            u', '.join(['<a href="fields/%s/">%s</a>' % (f.name, force_unicode(capfirst(f.verbose_name))) for f in fields.values()])) 
    3738 
    3839    def urls(self, plugin_name, easy_instance_field): 
    3940        if easy_instance_field.field in self.field_dict(easy_instance_field.model.model).values(): 
    4041            field_value = smart_str(easy_instance_field.raw_value) 
    41             return [u'%s%s/%s/%s/' % (easy_instance_field.model.url(), 
     42            return [mark_safe(u'%s%s/%s/%s/' % ( 
     43                easy_instance_field.model.url(), 
    4244                plugin_name, easy_instance_field.field.name, 
    43                 urllib.quote(field_value, safe=''))
     45                urllib.quote(field_value, safe='')))
    4446 
    4547    def model_view(self, request, model_databrowse, url): 
  • django/branches/newforms-admin/django/contrib/databrowse/sites.py

    r5918 r6776  
    33from django.contrib.databrowse.datastructures import EasyModel, EasyChoice 
    44from django.shortcuts import render_to_response 
     5from django.utils.safestring import mark_safe 
    56 
    67class AlreadyRegistered(Exception): 
     
    6162    def main_view(self, request): 
    6263        easy_model = EasyModel(self.site, self.model) 
    63         html_snippets = u'\n'.join([p.model_index_html(request, self.model, self.site) for p in self.plugins.values()]
     64        html_snippets = mark_safe(u'\n'.join([p.model_index_html(request, self.model, self.site) for p in self.plugins.values()])
    6465        return render_to_response('databrowse/model_detail.html', { 
    6566            'model': easy_model, 
  • django/branches/newforms-admin/django/contrib/flatpages/views.py

    r4265 r6776  
    55from django.conf import settings 
    66from django.core.xheaders import populate_xheaders 
     7from django.utils.safestring import mark_safe 
    78 
    89DEFAULT_TEMPLATE = 'flatpages/default.html' 
     
    3132    else: 
    3233        t = loader.get_template(DEFAULT_TEMPLATE) 
     34 
     35    # To avoid having to always use the "|safe" filter in flatpage templates, 
     36    # mark the title and content as already safe (since they are raw HTML 
     37    # content in the first place). 
     38    f.title = mark_safe(f.title) 
     39    f.content = mark_safe(f.content) 
     40 
    3341    c = RequestContext(request, { 
    3442        'flatpage': f, 
  • django/branches/newforms-admin/django/contrib/humanize/templatetags/humanize.py

    r6014 r6776  
    2222        return u"%d%s" % (value, t[0]) 
    2323    return u'%d%s' % (value, t[value % 10]) 
     24ordinal.is_safe = True 
    2425register.filter(ordinal) 
    2526 
     
    3536    else: 
    3637        return intcomma(new) 
     38intcomma.is_safe = True 
    3739register.filter(intcomma) 
    3840 
     
    5658        return ungettext('%(value).1f trillion', '%(value).1f trillion', new_value) % {'value': new_value} 
    5759    return value 
     60intword.is_safe = False 
    5861register.filter(intword) 
    5962 
     
    7073        return value 
    7174    return (_('one'), _('two'), _('three'), _('four'), _('five'), _('six'), _('seven'), _('eight'), _('nine'))[value-1] 
     75apnumber.is_safe = True 
    7276register.filter(apnumber) 
    7377 
  • django/branches/newforms-admin/django/contrib/markup/templatetags/markup.py

    r5627 r6776  
    1818from django.conf import settings 
    1919from django.utils.encoding import smart_str, force_unicode 
     20from django.utils.safestring import mark_safe 
    2021 
    2122register = template.Library() 
     
    2930        return force_unicode(value) 
    3031    else: 
    31         return force_unicode(textile.textile(smart_str(value), encoding='utf-8', output='utf-8')) 
     32        return mark_safe(force_unicode(textile.textile(smart_str(value), encoding='utf-8', output='utf-8'))) 
     33textile.is_safe = True 
    3234 
    3335def markdown(value): 
     
    3941        return force_unicode(value) 
    4042    else: 
    41         return force_unicode(markdown.markdown(smart_str(value))) 
     43        return mark_safe(force_unicode(markdown.markdown(smart_str(value)))) 
     44markdown.is_safe = True 
    4245 
    4346def restructuredtext(value): 
     
    5154        docutils_settings = getattr(settings, "RESTRUCTUREDTEXT_FILTER_SETTINGS", {}) 
    5255        parts = publish_parts(source=smart_str(value), writer_name="html4css1", settings_overrides=docutils_settings)&nb