Сеанс передается в другой файл с помощью Zeep и колбу - PullRequest
0 голосов
/ 13 ноября 2018

У меня проблема с передачей сеанса с одной из моих страниц фляги на другую.

Начиная с auth.py У меня есть следующий код:

@bp.route('/login', methods=('GET','POST'))
def login():

if request.method == 'POST':
    username = request.form['username']
    password = request.form['password']
    soap_client = SOAPClient()
    error = None
    try:
        client_session = soap_client.client.service.login(username, password, 3600)
    except zeep.exceptions.Fault as login_error:
        error = str(login_error)

    if error is None:
        session.clear()
        session['user_name'] = username
        session['client_session'] = client_session
        return redirect(url_for('index'))

    flash(error)

return render_template('auth/login.html')

Который, насколько я понимаю, должен хранить информацию о том, что пользователь вошел в переменную session ['client_session'].

Далее я хотел бы напечатать некоторые данные пользователю, если он вошел в систему, поэтому я написалчто-то вроде этого в index.py :

@bp.route('/', methods=('GET','POST'))
def index():

if session:
    soap_client = SOAPClient()
    reseller_details = soap_client.client.service.getClients([])
return render_template('index.html', reseller_details=reseller_details)

Теперь не имеет значения, что я передаю пустой список в качестве параметров, который работает для этого метода.Вместо этих данных я получаю zeep.exceptions.Fault ошибку, которая говорит:

zeep.exceptions.Fault: Требуется авторизация!

Мой SOAPClient реализован следующим образом:

class SOAPClient:

def __init__(self):
    session = Session()
    session.verify = False
    transport = Transport(session=session)
    settings = Settings(strict=True, xml_huge_tree=True)
    self.client = Client(MY_SERVER_ADDRESS, settings = settings, 
    transport = transport )

В области действия / login все работает нормально, поэтому я предполагаю, что это как-то связано с передачей переменной soap_client или client_session вокруг приложения фляги.Передача soap_client вызывает ошибку TypeError, хотя:

TypeError: <flaskr.SOAPClient.SOAPClient object at 0x7f8bef5be828> is not JSON serializable

Может кто-нибудь указать мне, что мне здесь не хватает?

Заранее большое спасибо.

...