Statistics
| Branch: | Revision:

root / env / lib / python2.7 / site-packages / django / contrib / admin / templatetags / admin_modify.py @ 1a305335

History | View | Annotate | Download (2.24 KB)

1
from django import template
2

    
3
register = template.Library()
4

    
5
@register.inclusion_tag('admin/prepopulated_fields_js.html', takes_context=True)
6
def prepopulated_fields_js(context):
7
    """
8
    Creates a list of prepopulated_fields that should render Javascript for
9
    the prepopulated fields for both the admin form and inlines.
10
    """
11
    prepopulated_fields = []
12
    if context['add'] and 'adminform' in context:
13
        prepopulated_fields.extend(context['adminform'].prepopulated_fields)
14
    if 'inline_admin_formsets' in context:
15
        for inline_admin_formset in context['inline_admin_formsets']:
16
            for inline_admin_form in inline_admin_formset:
17
                if inline_admin_form.original is None:
18
                    prepopulated_fields.extend(inline_admin_form.prepopulated_fields)
19
    context.update({'prepopulated_fields': prepopulated_fields})
20
    return context
21

    
22
@register.inclusion_tag('admin/submit_line.html', takes_context=True)
23
def submit_row(context):
24
    """
25
    Displays the row of buttons for delete and save.
26
    """
27
    opts = context['opts']
28
    change = context['change']
29
    is_popup = context['is_popup']
30
    save_as = context['save_as']
31
    return {
32
        'onclick_attrib': (opts.get_ordered_objects() and change
33
                            and 'onclick="submitOrderForm();"' or ''),
34
        'show_delete_link': (not is_popup and context['has_delete_permission']
35
                              and (change or context['show_delete'])),
36
        'show_save_as_new': not is_popup and change and save_as,
37
        'show_save_and_add_another': context['has_add_permission'] and
38
                            not is_popup and (not save_as or context['add']),
39
        'show_save_and_continue': not is_popup and context['has_change_permission'],
40
        'is_popup': is_popup,
41
        'show_save': True
42
    }
43

    
44
@register.filter
45
def cell_count(inline_admin_form):
46
    """Returns the number of cells used in a tabular inline"""
47
    count = 1 # Hidden cell with hidden 'id' field
48
    for fieldset in inline_admin_form:
49
        # Loop through all the fields (one per cell)
50
        for line in fieldset:
51
            for field in line:
52
                count += 1
53
    if inline_admin_form.formset.can_delete:
54
        # Delete checkbox
55
        count += 1
56
    return count