def __init__(self, widget_dict, form_view): self.form_view = form_view self.widgets = {} for k, v in widget_dict.items(): try: self.widgets[ load_entry_point('anthrax.widget', k, 'widget') ] = v except ValueError: pass
def _load_frontend(self): if isinstance(self.__frontend__, Frontend): self._frontend = self.__frontend__ elif self._frontend_name_cache != self.__frontend__: self._frontend_name_cache = self.__frontend__ self._frontend = load_entry_point( 'anthrax.frontend', self.__frontend__, 'frontend' ) else: return self._negotiate_widgets()
def __init__(cls, clsname, bases, dict_): subcontainers = [] fields = None for base in bases: if hasattr(base, '__fields__'): if fields is None: fields = base.__fields__.copy() else: raise AttributeError( "Sorry, can't handle this multiple inheritance" ) reflector = dict_.pop('__reflect__', None) if reflector is not None: if fields: raise AttributeError( "Sorry, can't use both inheritance and reflection" ) if isinstance(reflector, tuple): name, source = reflector ReflectorClass = load_entry_point( 'anthrax.reflector', name, 'reflector' ) reflector = ReflectorClass(source) fields = reflector.get_fields(cls) if fields is None: fields = OrderedDict() for itemname, item in dict_.items(): if item is None and itemname in fields: del fields[itemname] if isinstance(item, Field): item.name = itemname if itemname in fields: item.place = (AFTER, itemname) add_child(fields, itemname, item, 'field') if isinstance(item, ContainerMeta): item = ContainerMeta( itemname, (item,), { '__name__': itemname } ) add_child(fields, itemname, item, 'container') subcontainers.append(item) if isinstance(item, Mapping) and not isinstance(item, Container): # This is a configuration for a reflected or inherited field. field = fields[itemname] for k, v in item.items(): setattr(field, k, v) cls.__fields__ = fields cls.__subcontainers__ = subcontainers super(ContainerMeta, cls).__init__(clsname, bases, dict_)
def _load_validators(self): self._validators = [] for validator in self.__validators__: if isinstance(validator, tuple): validator_name = validator[0] if isinstance(validator[-1], Mapping): kwargs = validator[-1] fields = validator[1:-1] else: kwargs = {} fields = validator[1:] validator_callable = load_entry_point( 'anthrax.validator', validator_name, 'validator' ) validator_wrapper = self._get_validator_wrapper( validator_name, validator_callable, fields, kwargs ) self._validators.append(validator_wrapper) else: self._validators.append(validator)