'Send the request to login the user.
:return: True if the login was successful otherwise raise a
BaseFrameworkException'

def do_user_login(self):

    data = self._get_data_from_format()
    functor = getattr(self._uri_opener, self.method)
    response = functor(self.auth_url, data)
    redirect_count = 0
    while (self.follow_redirects and (redirect_count < self.MAX_REDIRECTS)):
        if (response.get_code() not in GET_HEAD_CODES):
            break
        redirect_count += 1
        response_headers = response.get_headers()
        (location_header_value, _) = response_headers.iget('location')
        (uri_header_value, _) = response_headers.iget('uri')
        redirect_url = (location_header_value or uri_header_value)
        redirect_url = response.get_url().url_join(redirect_url)
        msg = 'auth.detailed    was    redirected    to    URL:    "%s"'
        om.out.debug((msg % redirect_url))
        response = self._uri_opener.GET(redirect_url)
    if (redirect_count == self.MAX_REDIRECTS):
        msg = 'auth.detailed    seems    to    have    entered    an    endless    HTTP    redirect    loop    with    %s    redirects,    the    last    URL    was    %s'
        raise BaseFrameworkException((msg % (redirect_count, redirect_url)))
    if (not self.is_logged()):
        msg = "Can't    login    into    web    application    as    %s/%s"
        raise BaseFrameworkException((msg % (self.username, self.password)))
    else:
        om.out.debug(('Login    success    for    %s/%s' % (self.username, self.password)))
        return True
