| 29 | | |
|---|
| 30 | | if not errors: |
|---|
| 31 | | value = args.get(key) or {} |
|---|
| 32 | | else: |
|---|
| 33 | | value = None |
|---|
| 34 | | |
|---|
| 35 | | for name, type in self.composite.composition: |
|---|
| 36 | | childKey = '.'.join([key, name]) |
|---|
| 37 | | if value is not None: |
|---|
| 38 | | args = {childKey: value.get(name)} |
|---|
| 39 | | yield T.div(class_=('composite-component', ' ', name))[ |
|---|
| 40 | | T.label(for_=formal.util.render_cssid(childKey))[ |
|---|
| 41 | | formal.util.titleFromName(name) |
|---|
| 42 | | ], |
|---|
| 43 | | formal.iformal.IWidget(type).render(ctx, childKey, args, errors) |
|---|
| 44 | | ] |
|---|
| | 29 | return self._render(ctx, key, args, errors, False) |
|---|
| 48 | | for name, type in self.composite.composition: |
|---|
| 49 | | childKey = '.'.join([key, name]) |
|---|
| 50 | | yield T.div(class_=name)[ |
|---|
| 51 | | T.label[formal.util.titleFromName(name)], |
|---|
| 52 | | formal.iformal.IWidget(type).renderImmutable(ctx, childKey, |
|---|
| 53 | | args, errors) |
|---|
| 54 | | ] |
|---|
| | 33 | return self._render(ctx, key, args, errors, True) |
|---|
| | 43 | |
|---|
| | 44 | |
|---|
| | 45 | def _render(self, ctx, key, args, errors, immutable): |
|---|
| | 46 | |
|---|
| | 47 | if not errors: |
|---|
| | 48 | value = args.get(key) or {} |
|---|
| | 49 | else: |
|---|
| | 50 | value = None |
|---|
| | 51 | |
|---|
| | 52 | for name, type in self.composite.composition: |
|---|
| | 53 | |
|---|
| | 54 | childKey = '.'.join([key, name]) |
|---|
| | 55 | if value is not None: |
|---|
| | 56 | args = {childKey: value.get(name)} |
|---|
| | 57 | |
|---|
| | 58 | widget = formal.iformal.IWidget(type) |
|---|
| | 59 | if immutable: |
|---|
| | 60 | widgetRenderer = widget.renderImmutable |
|---|
| | 61 | else: |
|---|
| | 62 | widgetRenderer = widget.render |
|---|
| | 63 | |
|---|
| | 64 | yield T.div(class_=('composite-component', ' ', name))[ |
|---|
| | 65 | T.label(for_=formal.util.render_cssid(childKey))[ |
|---|
| | 66 | formal.util.titleFromName(name) |
|---|
| | 67 | ], |
|---|
| | 68 | widgetRenderer(ctx, childKey, args, errors) |
|---|
| | 69 | ] |
|---|