'Determine whether field is required
@param field: the Field or a Storage with field information
@return: True if field is required, else False'

@staticmethod
def _required(field):

    required = False
    validators = field.requires
    if isinstance(validators, IS_EMPTY_OR):
        required = False
    else:
        required = (field.required or field.notnull)
    if ((not required) and validators):
        if (not isinstance(validators, (list, tuple))):
            validators = [validators]
        for v in validators:
            if hasattr(v, 'options'):
                if (hasattr(v, 'zero') and (v.zero is None)):
                    continue
            if hasattr(v, 'mark_required'):
                if v.mark_required:
                    required = True
                    break
                else:
                    continue
            try:
                (val, error) = v('')
            except TypeError:
                pass
            else:
                if error:
                    required = True
                    break
    return required
