Warning:
Can't synchronize with repository "(default)" (Unsupported version control system "svn": No module named svn). Look in the Trac log for more information.
| File formmaker.patch,
4.9 KB
(added by wavy, 5 years ago) |
|
|
-
|
|
|
|
| 39 | 39 | |
| 40 | 40 | def column_widget_generic_col(column): |
| 41 | 41 | parms = column_parms(column) |
| | 42 | if column.notNone: |
| | 43 | parms['validator'] = validators.NotEmpty() |
| 42 | 44 | return widgets.TextField(**parms) |
| 43 | 45 | column_widget_generic_col = column_widget.when( |
| 44 | 46 | "isinstance(column, col.SOCol)")(column_widget_generic_col) |
| 45 | 47 | |
| 46 | 48 | def column_widget_int_col(column): |
| 47 | 49 | parms = column_parms(column) |
| 48 | | return widgets.TextField(validator=validators.Int(), **parms) |
| | 50 | parms['validator'] = validators.Int(not_empty=column.notNone) |
| | 51 | return widgets.TextField(**parms) |
| 49 | 52 | column_widget_int_col = column_widget.when( |
| 50 | 53 | "isinstance(column, col.SOIntCol)")(column_widget_int_col) |
| 51 | 54 | |
| 52 | 55 | def column_widget_float_col(column): |
| 53 | 56 | parms = column_parms(column) |
| 54 | | return widgets.TextField(validator=validators.Number(), **parms) |
| | 57 | parms['validator'] = validators.Number(not_empty=column.notNone) |
| | 58 | return widgets.TextField(**parms) |
| 55 | 59 | column_widget_int_col = column_widget.when( |
| 56 | 60 | "isinstance(column, (col.SOFloatCol))")(column_widget_float_col) |
| 57 | | |
| | 61 | |
| 58 | 62 | def column_widget_string_col(column): |
| 59 | 63 | parms = column_parms(column) |
| | 64 | parms['validator'] = validators.String(not_empty=column.notNone) |
| 60 | 65 | if column.length: |
| 61 | 66 | return widgets.TextField(**parms) |
| 62 | 67 | else: |
| … |
… |
|
| 67 | 72 | def column_widget_enum_col(column): |
| 68 | 73 | params = column_parms(column) |
| 69 | 74 | params['options'] = [(value, value) for value in column.enumValues ] |
| | 75 | # currently EnumCols cannot be null |
| 70 | 76 | params['validator'] = validators.OneOf(column.enumValues) |
| 71 | 77 | return widgets.SingleSelectField(**params) |
| 72 | 78 | column_widget_enum_col = column_widget.when( |
| 73 | 79 | "isinstance(column,col.SOEnumCol)")(column_widget_enum_col) |
| 74 | | |
| | 80 | |
| 75 | 81 | def column_widget_date_col(column): |
| 76 | 82 | parms = column_parms(column) |
| | 83 | # overide DatePicker validator as may be notNone |
| | 84 | parms['validator'] = validators.DateConverter(not_empty=column.notNone) |
| 77 | 85 | return widgets.CalendarDatePicker(**parms) |
| 78 | 86 | column_widget_date_col = column_widget.when( |
| 79 | 87 | "isinstance(column,col.SODateCol)")(column_widget_date_col) |
| 80 | 88 | |
| 81 | 89 | def column_widget_datetime_col(column): |
| 82 | 90 | parms = column_parms(column) |
| | 91 | # overide DateTimePicker validator as may be notNone |
| | 92 | parms['validator'] = validators.DateTimeConverter(not_empty=column.notNone) |
| 83 | 93 | return widgets.CalendarDateTimePicker(**parms) |
| 84 | 94 | column_widget_date_col = column_widget.when( |
| 85 | 95 | "isinstance(column,col.SODateTimeCol)")(column_widget_datetime_col) |
| 86 | 96 | |
| 87 | 97 | def column_boolean(column): |
| 88 | 98 | parms = column_parms(column) |
| | 99 | # overide CheckBox validator as may be notNone |
| | 100 | parms['validator'] = validators.Bool(not_empty=column.notNone) |
| 89 | 101 | return widgets.CheckBox(**parms) |
| 90 | 102 | column_boolean = column_widget.when("isinstance(column, col.SOBoolCol)")(column_boolean) |
| 91 | 103 | |
| … |
… |
|
| 96 | 108 | items = fkey_class.select() |
| 97 | 109 | # make options a callable to retrieve fresh data |
| 98 | 110 | # every time the widget is rendered |
| 99 | | parms['options'] = lambda: [(None, '')] + [(item.id, unicode(item)) for item in items] |
| | 111 | if column.notNone: |
| | 112 | parms['options'] = lambda: [(item.id, unicode(item)) for item in items] |
| | 113 | else: |
| | 114 | parms['options'] = lambda: [(None, '')] + [(item.id, unicode(item)) for item in items] |
| 100 | 115 | return DataSelectField(**parms) |
| 101 | 116 | column_widget_fkey_col = column_widget.when( |
| 102 | 117 | "isinstance(column,col.SOKeyCol)")(column_widget_fkey_col) |
| | 118 | |
| 103 | 119 | def join_widget(join): |
| 104 | 120 | pass |
| 105 | 121 | join_widget = dispatch.generic()(join_widget) |
| … |
… |
|
| 123 | 139 | join_widget_related_col = join_widget.when( |
| 124 | 140 | "isinstance(join,joins.SORelatedJoin)")(join_widget_related_join) |
| 125 | 141 | |
| 126 | | |
| 127 | 142 | def fields_for(sqlclass, fields=None): |
| 128 | 143 | sqlclass_columns = so_columns(sqlclass) |
| 129 | | sqlclass_joins = so_joins(sqlclass) |
| | 144 | sqlclass_joins = dict((j.joinMethodName, j) for j in so_joins(sqlclass)) |
| | 145 | |
| 130 | 146 | if fields: |
| 131 | 147 | columnlist = fields |
| 132 | 148 | elif hasattr(sqlclass, "form_order"): |
| … |
… |
|
| 136 | 152 | widgetlist = [] |
| 137 | 153 | for column in columnlist: |
| 138 | 154 | widget = None |
| 139 | | if sqlclass_columns.has_key(column): |
| | 155 | if column in sqlclass_columns: |
| 140 | 156 | widget = column_widget(sqlclass_columns[column]) |
| 141 | | elif sqlclass_columns.has_key(column + 'ID'): #key column |
| | 157 | elif column + 'ID' in sqlclass_columns: #key column |
| 142 | 158 | widget = column_widget(sqlclass_columns[column + 'ID']) |
| 143 | | else: |
| 144 | | for join in sqlclass_joins: |
| 145 | | if join.joinMethodName == column: |
| 146 | | widget = join_widget(join) |
| 147 | | break |
| | 159 | elif column in sqlclass_joins: |
| | 160 | widget = join_widget(sqlclass_joins[column]) |
| | 161 | |
| 148 | 162 | if not widget: |
| 149 | 163 | raise Exception, "Join or column %r not found in class %r" % (column, sqlclass.__name__) |
| 150 | 164 | widgetlist.append(widget) |
Download in other formats: