Esempio n. 1
0
    def __init__(self, form, field, is_first, model_admin=None):
        # Make self.field look a little bit like a field. This means that
        # {{ field.name }} must be a useful class name to identify the field.
        # For convenience, store other field-related data here too.
        if callable(field):
            class_name = field.__name__ if field.__name__ != '<lambda>' else ''
        else:
            class_name = field

        if form._meta.labels and class_name in form._meta.labels:
            label = form._meta.labels[class_name]
        else:
            label = label_for_field(field, form._meta.model, model_admin)

        if form._meta.help_texts and class_name in form._meta.help_texts:
            help_text = form._meta.help_texts[class_name]
        else:
            help_text = help_text_for_field(class_name, form._meta.model)

        self.field = {
            'name': class_name,
            'label': label,
            'help_text': help_text,
            'field': field,
        }
        self.form = form
        self.model_admin = model_admin
        self.is_first = is_first
        self.is_checkbox = False
        self.is_readonly = True
        self.empty_value_display = model_admin.get_empty_value_display()
Esempio n. 2
0
 def fields(self):
     fk = getattr(self.formset, "fk", None)
     for i, field_name in enumerate(flatten_fieldsets(self.fieldsets)):
         if fk and fk.name == field_name:
             continue
         if field_name in self.readonly_fields:
             yield {
                 'label':
                 label_for_field(field_name, self.opts.model, self.opts),
                 'widget': {
                     'is_hidden': False
                 },
                 'required':
                 False,
                 'help_text':
                 help_text_for_field(field_name, self.opts.model),
             }
         else:
             form_field = self.formset.form.base_fields[field_name]
             label = form_field.label
             if label is None:
                 label = label_for_field(field_name, self.opts.model,
                                         self.opts)
             yield {
                 'label': label,
                 'widget': form_field.widget,
                 'required': form_field.required,
                 'help_text': form_field.help_text,
             }
Esempio n. 3
0
    def __init__(self, form, field, is_first, model_admin=None):
        # Make self.field look a little bit like a field. This means that
        # {{ field.name }} must be a useful class name to identify the field.
        # For convenience, store other field-related data here too.
        if callable(field):
            class_name = field.__name__ if field.__name__ != '<lambda>' else ''
        else:
            class_name = field

        if form._meta.labels and class_name in form._meta.labels:
            label = form._meta.labels[class_name]
        else:
            label = label_for_field(field, form._meta.model, model_admin)

        if form._meta.help_texts and class_name in form._meta.help_texts:
            help_text = form._meta.help_texts[class_name]
        else:
            help_text = help_text_for_field(class_name, form._meta.model)

        self.field = {
            'name': class_name,
            'label': label,
            'help_text': help_text,
            'field': field,
        }
        self.form = form
        self.model_admin = model_admin
        self.is_first = is_first
        self.is_checkbox = False
        self.is_readonly = True
        self.empty_value_display = model_admin.get_empty_value_display()
Esempio n. 4
0
 def fields(self):
     fk = getattr(self.formset, "fk", None)
     for i, field_name in enumerate(flatten_fieldsets(self.fieldsets)):
         if fk and fk.name == field_name:
             continue
         if field_name in self.readonly_fields:
             yield {
                 'label': label_for_field(field_name, self.opts.model, self.opts),
                 'widget': {
                     'is_hidden': False
                 },
                 'required': False,
                 'help_text': help_text_for_field(field_name, self.opts.model),
             }
         else:
             form_field = self.formset.form.base_fields[field_name]
             label = form_field.label
             if label is None:
                 label = label_for_field(field_name, self.opts.model, self.opts)
             yield {
                 'label': label,
                 'widget': form_field.widget,
                 'required': form_field.required,
                 'help_text': form_field.help_text,
             }
Esempio n. 5
0
 def fields(self):
     fk = getattr(self.formset, "fk", None)
     empty_form = self.formset.empty_form
     meta_labels = empty_form._meta.labels or {}
     meta_help_texts = empty_form._meta.help_texts or {}
     for i, field_name in enumerate(flatten_fieldsets(self.fieldsets)):
         if fk and fk.name == field_name:
             continue
         if not self.has_change_permission or field_name in self.readonly_fields:
             yield {
                 'label':
                 meta_labels.get(field_name)
                 or label_for_field(field_name, self.opts.model, self.opts),
                 'widget': {
                     'is_hidden': False
                 },
                 'required':
                 False,
                 'help_text':
                 meta_help_texts.get(field_name)
                 or help_text_for_field(field_name, self.opts.model),
             }
         else:
             form_field = empty_form.fields[field_name]
             label = form_field.label
             if label is None:
                 label = label_for_field(field_name, self.opts.model,
                                         self.opts)
             yield {
                 'label': label,
                 'widget': form_field.widget,
                 'required': form_field.required,
                 'help_text': form_field.help_text,
             }
Esempio n. 6
0
 def fields(self):
     fk = getattr(self.formset, "fk", None)
     empty_form = self.formset.empty_form
     meta_labels = empty_form._meta.labels or {}
     meta_help_texts = empty_form._meta.help_texts or {}
     for i, field_name in enumerate(flatten_fieldsets(self.fieldsets)):
         if fk and fk.name == field_name:
             continue
         if not self.has_change_permission or field_name in self.readonly_fields:
             yield {
                 'label': meta_labels.get(field_name) or label_for_field(field_name, self.opts.model, self.opts),
                 'widget': {'is_hidden': False},
                 'required': False,
                 'help_text': meta_help_texts.get(field_name) or help_text_for_field(field_name, self.opts.model),
             }
         else:
             form_field = empty_form.fields[field_name]
             label = form_field.label
             if label is None:
                 label = label_for_field(field_name, self.opts.model, self.opts)
             yield {
                 'label': label,
                 'widget': form_field.widget,
                 'required': form_field.required,
                 'help_text': form_field.help_text,
             }
Esempio n. 7
0
 def test_help_text_for_field(self):
     tests = [
         ('article', ''),
         ('unknown', ''),
         ('hist', 'History help text'),
     ]
     for name, help_text in tests:
         with self.subTest(name=name):
             self.assertEqual(help_text_for_field(name, Article), help_text)
Esempio n. 8
0
 def test_help_text_for_field(self):
     tests = [
         ("article", ""),
         ("unknown", ""),
         ("hist", "History help text"),
     ]
     for name, help_text in tests:
         with self.subTest(name=name):
             self.assertEqual(help_text_for_field(name, Article), help_text)
Esempio n. 9
0
 def fields(self):
     fk = getattr(self.formset, "fk", None)
     empty_form = self.formset.empty_form
     meta_labels = empty_form._meta.labels or {}
     meta_help_texts = empty_form._meta.help_texts or {}
     for i, field_name in enumerate(flatten_fieldsets(self.fieldsets)):
         if fk and fk.name == field_name:
             continue
         if not self.has_change_permission or field_name in self.readonly_fields:
             form_field = empty_form.fields.get(field_name)
             widget_is_hidden = False
             if form_field is not None:
                 widget_is_hidden = form_field.widget.is_hidden
             yield {
                 "name":
                 field_name,
                 "label":
                 meta_labels.get(field_name) or label_for_field(
                     field_name,
                     self.opts.model,
                     self.opts,
                     form=empty_form,
                 ),
                 "widget": {
                     "is_hidden": widget_is_hidden
                 },
                 "required":
                 False,
                 "help_text":
                 meta_help_texts.get(field_name)
                 or help_text_for_field(field_name, self.opts.model),
             }
         else:
             form_field = empty_form.fields[field_name]
             label = form_field.label
             if label is None:
                 label = label_for_field(field_name,
                                         self.opts.model,
                                         self.opts,
                                         form=empty_form)
             yield {
                 "name": field_name,
                 "label": label,
                 "widget": form_field.widget,
                 "required": form_field.required,
                 "help_text": form_field.help_text,
             }
Esempio n. 10
0
    def _calculate_help_text(self):
        if not self._help_text:
            if self.attribute:
                try:
                    attribute = resolve_attribute(obj=self.source,
                                                  attribute=self.attribute)
                    self._help_text = getattr(attribute, 'help_text')
                except AttributeError:
                    try:
                        name, model = SourceColumn.get_attribute_recursive(
                            attribute=self.attribute,
                            model=self.source._meta.model)
                        self._help_text = help_text_for_field(name=name,
                                                              model=model)
                    except AttributeError:
                        self._help_text = None

        self.help_text = self._help_text
Esempio n. 11
0
    def __init__(self, form, field, is_first, model_admin=None):
        # Make self.field look a little bit like a field. This means that
        # {{ field.name }} must be a useful class name to identify the field.
        # For convenience, store other field-related data here too.
        if callable(field):
            class_name = field.__name__ if field.__name__ != "<lambda>" else ""
        else:
            class_name = field

        if form._meta.labels and class_name in form._meta.labels:
            label = form._meta.labels[class_name]
        else:
            label = label_for_field(field,
                                    form._meta.model,
                                    model_admin,
                                    form=form)

        if form._meta.help_texts and class_name in form._meta.help_texts:
            help_text = form._meta.help_texts[class_name]
        else:
            help_text = help_text_for_field(class_name, form._meta.model)

        if field in form.fields:
            is_hidden = form.fields[field].widget.is_hidden
        else:
            is_hidden = False

        self.field = {
            "name": class_name,
            "label": label,
            "help_text": help_text,
            "field": field,
            "is_hidden": is_hidden,
        }
        self.form = form
        self.model_admin = model_admin
        self.is_first = is_first
        self.is_checkbox = False
        self.is_readonly = True
        self.empty_value_display = model_admin.get_empty_value_display()
Esempio n. 12
0
 def fields(self):
     fk = getattr(self.formset, "fk", None)
     for i, field_name in enumerate(flatten_fieldsets(self.fieldsets)):
         if fk and fk.name == field_name:
             continue
         if field_name in self.readonly_fields:
             yield {
                 "label": label_for_field(field_name, self.opts.model, self.opts),
                 "widget": {"is_hidden": False},
                 "required": False,
                 "help_text": help_text_for_field(field_name, self.opts.model),
             }
         else:
             form_field = self.formset.form.base_fields[field_name]
             label = form_field.label
             if label is None:
                 label = label_for_field(field_name, self.opts.model, self.opts)
             yield {
                 "label": label,
                 "widget": form_field.widget,
                 "required": form_field.required,
                 "help_text": form_field.help_text,
             }
Esempio n. 13
0
 def fields(self):
     fk = getattr(self.formset, "fk", None)
     for i, field_name in enumerate(flatten_fieldsets(self.fieldsets)):
         if fk and fk.name == field_name:
             continue
         if field_name in self.readonly_fields:
             yield {
                 "label": label_for_field(field_name, self.opts.model, self.opts),
                 "widget": {"is_hidden": False},
                 "required": False,
                 "help_text": help_text_for_field(field_name, self.opts.model),
             }
         else:
             form_field = self.formset.empty_form.fields[field_name]
             label = form_field.label
             if label is None:
                 label = label_for_field(field_name, self.opts.model, self.opts)
             yield {
                 "label": label,
                 "widget": form_field.widget,
                 "required": form_field.required,
                 "help_text": form_field.help_text,
             }
Esempio n. 14
0
from __future__ import unicode_literals