code: def validate(self, value):
          
          if not isinstance(value, (str, unicode)):
              raise orb.errors.ColumnValidationError(self, 'Invalid password.')
  
          elif not self.__allowUnicode and value != projex.text.toAscii(value):
              raise orb.errors.ColumnValidationError(self, 'Only ASCII characters are allowed for your password.')
  
          elif len(value) < self.__minlength or \
                  (self.__requireUppercase and not re.search('[A-Z]', value)) or \
                  (self.__requireLowercase and not re.search('[a-z]', value)) or \
                  (self.__requireNumber and not re.search('[0-9]', value)) or \
                  (self.__requireWildcard and not re.search('[^a-zA-Z0-9]', value)):
              raise orb.errors.ColumnValidationError(self, self.rules())
  
          # check for invalid characters
          elif self.__invalidCharacters and re.search(self.__invalidCharacters, value):
              raise orb.errors.ColumnValidationError(self, self.__invalidCharactersRule)
  
          else:
              return super(PasswordColumn, self).validate(value)
docs: Ensures that the password follows the following criteria:
  
          :param value: <str>
  
          :return: True