def forgot_password(request):
    """
    http://localhost/forgot_password
    """
    params = {'SETTINGS': settings}
    
    if request.method == HTTP_METHOD_POST:
        email = request.POST.get('account_id')
        
        api = IndivoClient(settings.CONSUMER_KEY, settings.CONSUMER_SECRET, settings.INDIVO_SERVER_LOCATION)
        # get account id from email (which we are assuming is contact email)
        res = api.account_forgot_password(account_id=email).response
        status = res.get('response_status', 0)
        
        # password was reset, show secondary secret
        if 200 == status:
            e = ET.fromstring(res.get('response_data', '<root/>'))
            params['SECONDARY_SECRET'] = e.text
        
        # error resetting, try to find out why
        else:
            if 404 == status:
                params['ERROR'] = ErrorStr('Unknown account')
            else:
                params['ERROR'] = ErrorStr(res.get('response_data') or 'Password reset failed')
            params['ACCOUNT_ID'] = email
            if 'Account has not been initialized' == res.get('response_data'):
                params['UNINITIALIZED'] = True
            
    return utils.render_template('ui/forgot_password', params)
def forgot_password(request):
  if request.method == HTTP_METHOD_GET:
    return utils.render_template('ui/forgot_password', {})
  
  if request.method == HTTP_METHOD_POST:
    email = request.POST['email']
    errors = {'generic': 'There was a problem resetting your password. Please try again. If you are unable to set up your account please contact support.',
              'multiple_accounts': 'There was a problem resetting your password. Please contact support.'}
    api = IndivoClient(settings.CONSUMER_KEY, settings.CONSUMER_SECRET, settings.INDIVO_SERVER_LOCATION)
    # get account id from email (which we are assuming is contact email)
    ret = api.account_forgot_password(parameters={'contact_email':email})
    
    if ret.response['response_status'] == 200:
      e = ET.fromstring(ret.response['response_data'])
      SECONDARY_SECRET = e.text
      SECONDARY_SECRET_1 = SECONDARY_SECRET[0:3]
      SECONDARY_SECRET_2 = SECONDARY_SECRET[3:6]
      return utils.render_template('ui/forgot_password_2',
                                  {'SECONDARY_SECRET_1': SECONDARY_SECRET_1,
                                   'SECONDARY_SECRET_2': SECONDARY_SECRET_2})
    else:
      return utils.render_template('ui/forgot_password', {'ERROR': errors['generic']})