equal
deleted
inserted
replaced
176 if not field.name: |
176 if not field.name: |
177 field.set_name(fieldname) |
177 field.set_name(fieldname) |
178 allfields.append(field) |
178 allfields.append(field) |
179 classdict['_fields_'] = allfields |
179 classdict['_fields_'] = allfields |
180 return super(metafieldsform, mcs).__new__(mcs, name, bases, classdict) |
180 return super(metafieldsform, mcs).__new__(mcs, name, bases, classdict) |
181 |
181 |
182 |
182 |
|
183 class FieldNotFound(Exception): |
|
184 """raised by field_by_name when a field with the given name has not been |
|
185 found |
|
186 """ |
|
187 |
183 class FieldsForm(FormMixIn, AppRsetObject): |
188 class FieldsForm(FormMixIn, AppRsetObject): |
184 __metaclass__ = metafieldsform |
189 __metaclass__ = metafieldsform |
185 __registry__ = 'forms' |
190 __registry__ = 'forms' |
186 __select__ = yes() |
191 __select__ = yes() |
187 |
192 |
219 self.form_add_hidden(param, initial=value) |
224 self.form_add_hidden(param, initial=value) |
220 self.context = None |
225 self.context = None |
221 |
226 |
222 @iclassmethod |
227 @iclassmethod |
223 def field_by_name(cls_or_self, name, role='subject'): |
228 def field_by_name(cls_or_self, name, role='subject'): |
|
229 """return field with the given name and role""" |
224 if isinstance(cls_or_self, type): |
230 if isinstance(cls_or_self, type): |
225 fields = cls_or_self._fields_ |
231 fields = cls_or_self._fields_ |
226 else: |
232 else: |
227 fields = cls_or_self.fields |
233 fields = cls_or_self.fields |
228 for field in fields: |
234 for field in fields: |
229 if field.name == name and field.role == role: |
235 if field.name == name and field.role == role: |
230 return field |
236 return field |
231 raise Exception('field %s not found' % name) |
237 raise FieldNotFound(name) |
232 |
238 |
233 @iclassmethod |
239 @iclassmethod |
234 def remove_field(cls_or_self, field): |
240 def remove_field(cls_or_self, field): |
235 if isinstance(cls_or_self, type): |
241 if isinstance(cls_or_self, type): |
236 fields = cls_or_self._fields_ |
242 fields = cls_or_self._fields_ |