from crispy_forms_foundation.layout import (HTML, Column, Div, Fieldset, Layout, Row, Submit) from django.utils.translation import ugettext as _ def to_column(name_span): fieldname, span = name_span return Column(fieldname, css_class='large-%d' % span) def to_row(names_spans): return Row(*list(map(to_column, names_spans))) def to_fieldsets(fields): for field in fields: if isinstance(field, list): legend, *row_specs = field rows = [to_row(name_span_list) for name_span_list in row_specs] yield Fieldset(legend, *rows) else: yield field class SaplFormLayout(Layout): def __init__(self, *fields): buttons = Div( HTML('%s' % _('Cancelar')), Submit('submit', _('Enviar'), css_class='button radius success right'), css_class='radius clearfix' ) _fields = list(to_fieldsets(fields)) + \ [Row(Column(buttons, css_class='clearfix'))] super(SaplFormLayout, self).__init__(*_fields)