Skip to content

Commit a0f6dda

Browse files
committed
improved documentation and functionality for legacy class Row() in form rules
1 parent b4d40b8 commit a0f6dda

File tree

2 files changed

+32
-3
lines changed

2 files changed

+32
-3
lines changed

examples/forms-files-images/app.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,9 @@ class User(db.Model):
6565
email = db.Column(db.Unicode(128))
6666
phone = db.Column(db.Unicode(32))
6767
city = db.Column(db.Unicode(128))
68+
state = db.Column(db.Unicode(128))
6869
country = db.Column(db.Unicode(128))
70+
continent = db.Column(db.Unicode(128))
6971
notes = db.Column(db.UnicodeText)
7072

7173

@@ -176,7 +178,8 @@ class UserView(sqla.ModelView):
176178
rules.Header('Location'),
177179
rules.Field('city'),
178180
# String is resolved to form field, so there's no need to explicitly use `rules.Field`
179-
'country',
181+
'state',
182+
rules.Row('country', 'continent'),
180183
# Show macro that's included in the templates
181184
rules.Container('rule_demo.wrap', rules.Field('notes')),
182185
# Bootstrap container with embedded row and columns

flask_admin/form/rules.py

Lines changed: 28 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -360,13 +360,39 @@ def __init__(self, rules, header=None, separator=''):
360360

361361

362362
class Row(NestedRule):
363+
"""
364+
Bootstrap grid "row" div with automatic Bootstrap columns
365+
"""
363366
def __init__(self, *columns, **kw):
364-
super(Row, self).__init__()
367+
"""
368+
Constructor
369+
370+
:param columns:
371+
Arguments (args, unlimited number) which each will become Bootstrap columns.
372+
:param kw:
373+
Keyword arguments, which may contain:
374+
"row_classes"
375+
Specify the classes for the Bootstrap row (e.g. "form-row justify-content-center").
376+
Default "form-row"
377+
"col_classes":
378+
Space-separated classes to use for the Bootstrap columns (e.g. "col-md-6").
379+
Default "col"
380+
"""
381+
super(Row, self).__init__(rules=columns, separator="")
365382
self.row_classes = kw.get("row_classes", "form-row")
366383
self.col_classes = kw.get("col_classes", "col")
367-
self.rules = columns
368384

369385
def __call__(self, form, form_opts=None, field_args={}):
386+
"""
387+
Render all children when called in the Jinja template.
388+
389+
:param form:
390+
Form object
391+
:param form_opts:
392+
Form options
393+
:param field_args:
394+
Optional arguments that should be passed to template or the field
395+
"""
370396
cols = []
371397
for col in self.rules:
372398
if col.visible_fields:

0 commit comments

Comments
 (0)