1 from django import template
2 from django.contrib.admin.views.main import AdminBoundField
3 from django.template import loader
4 from django.utils.text import capfirst
5 from django.utils.encoding import force_unicode
6 from django.utils.safestring import mark_safe
7 from django.utils.html import escape
8 from django.db import models
9 from django.db.models.fields import Field
10 from django.db.models.related import BoundRelatedObject
11 from django.conf import settings
12 import re
13
14 register = template.Library()
15
16 word_re = re.compile('[A-Z][a-z]+')
17 absolute_url_re = re.compile(r'^(?:http(?:s)?:/)?/', re.IGNORECASE)
18
21
23 """
24 Returns an HTML script element for including a script from the admin
25 media url (or other location if an absolute url is given).
26
27 Example usage::
28
29 {% include_admin_script "js/calendar.js" %}
30
31 could return::
32
33 <script type="text/javascript" src="/media/admin/js/calendar.js">
34 """
35 if not absolute_url_re.match(script_path):
36 script_path = '%s%s' % (settings.ADMIN_MEDIA_PREFIX, script_path)
37 return mark_safe(u'<script type="text/javascript" src="%s"></script>'
38 % script_path)
39 include_admin_script = register.simple_tag(include_admin_script)
40
42 opts = context['opts']
43 change = context['change']
44 is_popup = context['is_popup']
45 return {
46 'onclick_attrib': (opts.get_ordered_objects() and change
47 and 'onclick="submitOrderForm();"' or ''),
48 'show_delete_link': (not is_popup and context['has_delete_permission']
49 and (change or context['show_delete'])),
50 'show_save_as_new': not is_popup and change and opts.admin.save_as,
51 'show_save_and_add_another': not is_popup and (not opts.admin.save_as or context['add']),
52 'show_save_and_continue': not is_popup and context['has_change_permission'],
53 'show_save': True
54 }
55 submit_row = register.inclusion_tag('admin/submit_line.html', takes_context=True)(submit_row)
56
58 class_names = []
59 if isinstance(bound_field.field, models.BooleanField):
60 class_names.append("vCheckboxLabel")
61 colon = ""
62 else:
63 if not bound_field.field.blank:
64 class_names.append('required')
65 if not bound_field.first:
66 class_names.append('inline')
67 colon = ":"
68 class_str = class_names and u' class="%s"' % u' '.join(class_names) or u''
69 return mark_safe(u'<label for="%s"%s>%s%s</label> ' %
70 (bound_field.element_id, class_str,
71 escape(force_unicode(capfirst(bound_field.field.verbose_name))),
72 colon))
73 field_label = register.simple_tag(field_label)
74
112
126
134