Merge branch 'develop' into feature/advanced_rest_api

This commit is contained in:
Jakub Trllo 2019-10-31 23:35:28 +01:00
commit 312d3c96ab
3382 changed files with 20916 additions and 302141 deletions

View file

@ -4,6 +4,7 @@ from Qt import QtWidgets
import os
import json
from .widget_login import MusterLogin
from avalon.vendor import requests
class MusterModule:
@ -37,6 +38,10 @@ class MusterModule:
pass
def process_modules(self, modules):
def api_callback():
self.aShowLogin.trigger()
if "RestApiServer" in modules:
def api_show_login():
self.aShowLogin.trigger()
@ -62,7 +67,7 @@ class MusterModule:
self.menu.addAction(self.aShowLogin)
self.aShowLogin.triggered.connect(self.show_login)
return self.menu
parent.addMenu(self.menu)
def load_credentials(self):
"""
@ -78,13 +83,39 @@ class MusterModule:
return credentials
def save_credentials(self, username, password):
def get_auth_token(self, username, password):
"""
Authenticate user with Muster and get authToken from server.
"""
MUSTER_REST_URL = os.environ.get("MUSTER_REST_URL")
if not MUSTER_REST_URL:
raise AttributeError("Muster REST API url not set")
params = {
'username': username,
'password': password
}
api_entry = '/api/login'
response = requests.post(
MUSTER_REST_URL + api_entry, params=params)
if response.status_code != 200:
self.log.error(
'Cannot log into Muster: {}'.format(response.status_code))
raise Exception('Cannot login into Muster.')
try:
token = response.json()['ResponseData']['authToken']
except ValueError as e:
self.log.error('Invalid response from Muster server {}'.format(e))
raise Exception('Invalid response from Muster while logging in.')
self.save_credentials(token)
def save_credentials(self, token):
"""
Save credentials to JSON file
"""
data = {
'username': username,
'password': password
'token': token
}
file = open(self.cred_path, 'w')

View file

@ -88,8 +88,7 @@ class MusterLogin(QtWidgets.QWidget):
self.error_label = QtWidgets.QLabel("")
self.error_label.setFont(self.font)
self.error_label.setTextFormat(QtCore.Qt.RichText)
self.error_label.setObjectName("error_label")
self.error_label.setStyleSheet('color: #FC6000')
self.error_label.setWordWrap(True)
self.error_label.hide()
@ -105,6 +104,9 @@ class MusterLogin(QtWidgets.QWidget):
self.btn_ok.clicked.connect(self.click_ok)
self.btn_cancel = QtWidgets.QPushButton("Cancel")
QtWidgets.QShortcut(
QtGui.QKeySequence(
QtCore.Qt.Key_Escape), self).activated.connect(self.close)
self.btn_cancel.clicked.connect(self.close)
self.btn_group.addWidget(self.btn_ok)
@ -115,7 +117,21 @@ class MusterLogin(QtWidgets.QWidget):
return self.main
def keyPressEvent(self, key_event):
if key_event.key() == QtCore.Qt.Key_Return:
if self.input_username.hasFocus():
self.input_password.setFocus()
elif self.input_password.hasFocus() or self.btn_ok.hasFocus():
self.click_ok()
elif self.btn_cancel.hasFocus():
self.close()
else:
super().keyPressEvent(key_event)
def setError(self, msg):
self.error_label.setText(msg)
self.error_label.show()
@ -130,11 +146,16 @@ class MusterLogin(QtWidgets.QWidget):
if not username:
self.setError("Username cannot be empty")
self.invalid_input(self.input_username)
self.save_credentials(username, password)
self._close_widget()
try:
self.save_credentials(username, password)
except Exception as e:
self.setError(
"<b>Cannot get auth token:</b>\n<code>{}</code>".format(e))
else:
self._close_widget()
def save_credentials(self, username, password):
self.parent_widget.save_credentials(username, password)
self.parent_widget.get_auth_token(username, password)
def closeEvent(self, event):
event.ignore()