code clean up

Py3
idziubenko 3 years ago
parent dd347399a2
commit 33ee1003ca

@ -47,7 +47,7 @@ def debug(level, *args):
class MainWgt(qt.QMainWindow):
def __init__(self, ClientObj):
qt.QMainWindow.__init__(self)
super().__init__()
self.ClientObj = ClientObj
self.initUI()

@ -28,7 +28,8 @@ import os
class CertClass (qt.QWidget):
def __init__(self, parent, ClientObj, window):
self.ClientObj = ClientObj
qt.QWidget.__init__(self)
# qt.QWidget.__init__(self)
super().__init__()
# get_cert_path
self.default_cert_path = ClientObj.path_to_cert

@ -43,7 +43,8 @@ import gettext
_ = gettext.gettext
class SelectedMethodWgt(qt.QWidget):
def __init__(self, app, args):
qt.QWidget.__init__(self)
super().__init__()
# qt.QWidget.__init__(self)
self.args = args
self.user_changed_flag = False
self.lang = args.lang
@ -265,7 +266,8 @@ def parse():
class MyTabBar(qt.QTabBar):
def __init__(self, _parent):
qt.QTabBar.__init__(self)
# qt.QTabBar.__init__(self)
super().__init__()
self._parent = _parent
def wheelEvent(self, event):
@ -280,7 +282,8 @@ class MyTabBar(qt.QTabBar):
class ToolTabWidget(qt.QTabWidget):
def __init__(self, app, args = None, host = None, port = None):
qt.QTabWidget.__init__(self)
# qt.QTabWidget.__init__(self)
super().__init__()
self.app = app
if args:
if args.lang:

@ -31,7 +31,8 @@ def debug(level, *args):
class MethodNameWgt(qt.QWidget):
def __init__(self, parent, ClientObj):
qt.QWidget.__init__(self, parent)
# qt.QWidget.__init__(self, parent)
super().__init__(parent)
self._parent = parent
self.ClientObj = ClientObj
@ -444,17 +445,17 @@ class ControlButtonWgt(qt.QWidget):
self.ClientObj.app.processEvents()
def button_enabled(self):
if self.next_button:
self.next_button.setEnabled(True)
if self.prev_button:
self.prev_button.setEnabled(True)
if self.cancel_button:
self.cancel_button.setEnabled(True)
if self.clear_proc_cache_button:
self.clear_proc_cache_button.setEnabled(True)
if self.customs:
for but in self.customs:
but.setEnabled(True)
# if self.next_button:
# self.next_button.setEnabled(True)
# if self.prev_button:
# self.prev_button.setEnabled(True)
# if self.cancel_button:
# self.cancel_button.setEnabled(True)
# if self.clear_proc_cache_button:
# self.clear_proc_cache_button.setEnabled(True)
# if self.customs:
# for but in self.customs:
# but.setEnabled(True)
self.ClientObj.app.processEvents()
def keyPressEvent(self, e):

@ -23,7 +23,8 @@ from .more import ButtonMenu, FlowLayout, get_sid, ClientServiceThread, \
class DisplayMethod(qt.QWidget):
def __init__(self, parent, ClientObj):
super(DisplayMethod, self).__init__(parent)
# super(DisplayMethod, self).__init__(parent)
super().__init__(parent)
self.ClientObj = ClientObj
self._parent = parent
self.setAttribute(qt.Qt.WA_DeleteOnClose)
@ -353,7 +354,8 @@ class StartWidget(qt.QWidget):
class ConnectLostLabel (qt.QWidget):
def __init__(self, text, parent, reconnect = False):
qt.QWidget.__init__(self, parent.layout_wgt)
# qt.QWidget.__init__(self, parent.layout_wgt)
super().__init__(parent.layout_wgt)
self._parent = parent
if parent.main_frame.isEnabled():
parent.left_frame.setDisabled(True)

@ -24,7 +24,8 @@ from .more import ButtonMenu, icon_visible, LabelWordWrap, get_sid, show_msg, \
class StepLabel(qt.QLabel):
clicked = qt.Signal()
def __init__(self, text, parent):
qt.QLabel.__init__(self, parent)
# qt.QLabel.__init__(self, parent)
super().__init__(parent)
self.setWordWrap(True)
self.setText(text)
self.updateGeometry()
@ -48,7 +49,8 @@ class StepLabel(qt.QLabel):
class LeftMenu(qt.QScrollArea):
def __init__(self, parent, ClientObj):
qt.QScrollArea.__init__(self, parent)
# qt.QScrollArea.__init__(self, parent)
super().__init__(parent)
self._parent = parent
self.ClientObj = ClientObj

@ -50,7 +50,8 @@ class LabelWordWrap(Label):
class PlusButton(qt.QPushButton):
def __init__(self, parent, ClientObj, method, disable_method=None):
qt.QPushButton.__init__(self, parent)
# qt.QPushButton.__init__(self, parent)
super().__init__(parent)
icon = get_icon('list-add')
if not icon.isNull():
self.setIcon(icon)
@ -91,7 +92,8 @@ class MainFrameRes(qt.QWidget):
def __init__(self, parent, ClientObj, method_name, meth_result,
change_offset=False):
# super(MainFrameRes, self).__init__(self, parent)
qt.QWidget.__init__(self, parent)
# qt.QWidget.__init__(self, parent)
super().__init__(parent)
self._parent = parent
self.ClientObj = ClientObj
self.method_name = method_name
@ -1032,7 +1034,8 @@ class MainFrameRes(qt.QWidget):
class MessageDialog(qt.QWidget):
# answer to the server question
def __init__(self, parent, item, sid, pid, isPassword = False):
super(MessageDialog, self).__init__()
# super(MessageDialog, self).__init__()
super().__init__()
self._parent = parent
# self.item = item
self.sid = sid
@ -1111,7 +1114,8 @@ class ButtonDialog(qt.QWidget):
button_size = 144
def __init__(self, parent, item, sid, pid):
super(ButtonDialog, self).__init__()
# super(ButtonDialog, self).__init__()
super().__init__()
self._parent = parent
self.sid = sid
self.pid = pid

@ -21,7 +21,8 @@ from .more import get_system_rgb, ParameterWindow
class Delegate(qt.QStyledItemDelegate):
def __init__(self, parent = None):
qt.QStyledItemDelegate.__init__(self, parent)
# qt.QStyledItemDelegate.__init__(self, parent)
super().__init__(parent)
def setView(self, view):
self.view = view
@ -37,7 +38,8 @@ class Delegate(qt.QStyledItemDelegate):
class SelectedTableWidget(qt.QTableWidget):
def __init__(self, rows, columns, parent, readonly = False, brief = False):
qt.QTableWidget.__init__(self, rows, columns, parent)
# qt.QTableWidget.__init__(self, rows, columns, parent)
super().__init__(rows, columns, parent)
self.currHovered = -1
self.brief = brief
self.bFixedHeight = True

@ -39,7 +39,8 @@ class TrayUpdateSystem(qt.QThread):
started_sig = qt.Signal(str)
def __init__(self, target, parent=None):
qt.QThread.__init__(self, parent)
# qt.QThread.__init__(self, parent)
super().__init__(parent)
self._parent = target
def run(self):
@ -153,7 +154,8 @@ class TrayIcon(qt.QSystemTrayIcon):
default_theme_name = 'Tango'
def __init__(self, parent):
super(TrayIcon, self).__init__(parent)
# super(TrayIcon, self).__init__(parent)
super().__init__(parent)
self._parent = parent
self.actions = []

@ -20,10 +20,10 @@ from calculate.consolegui import qt
from .pid_information import client_list_pid, client_pid_info
from .more import LabelWordWrap, show_msg, get_sid, ClientServiceThread
class ViewProc(qt.QWidget):
def __init__(self, parent, ClientObj):
# super(ViewProc, self).__init__(parent)
qt.QWidget.__init__(self, parent)
# qt.QWidget.__init__(self, parent)
super().__init__(parent)
# self._parent = parent
self.ClientObj = ClientObj
self.client = ClientObj.client
@ -134,16 +134,16 @@ class ViewProc(qt.QWidget):
for i in self.ClientObj.process_dict:
if i == pid:
# set new window title
n = method_name
try:
# name = n.decode('utf-8')
name = n
except (UnicodeEncodeError, UnicodeDecodeError):
pass
name = method_name
# n = method_name
# try:
# # name = n.decode('utf-8')
# name = n
# except (UnicodeEncodeError, UnicodeDecodeError):
# pass
self.ClientObj._parent.setWindowTitle \
(self.ClientObj._parent.windowTitle() +
' - ' + name)
# try:
# self.ClientObj.process_dict[i]['result']
# except:

@ -27,13 +27,6 @@ from suds.transport.http import HttpTransport
# try:
from .pyopenssl_wrapper import PyOpenSSLSocket
# except ImportError:
# PYOPENSSL_AVAILABLE = False
# else:
# TODO get rid of this
PYOPENSSL_AVAILABLE = True
import http.client as httplib
from suds.transport import Transport
from suds.properties import Unskin
@ -54,7 +47,8 @@ log = getLogger(__name__)
class AddServerCert (qt.QDialog):
def __init__(self, parent, ClientObj, cert):
super(AddServerCert, self).__init__()
# super(AddServerCert, self).__init__()
super().__init__()
self.ClientObj = ClientObj
self.parent = parent
self.cert = cert
@ -522,16 +516,11 @@ class CheckingClientHTTPSConnection(httplib.HTTPSConnection):
else:
add = {}
add['cert_reqs'] = ssl.CERT_REQUIRED
# try to use PyOpenSSL by default
if PYOPENSSL_AVAILABLE:
wrap_class = PyOpenSSLSocket
add['keyobj'] = self.keyobj
add['certobj'] = self.certobj
add['keyfile'] = self.key_file
add['certfile'] = self.cert_file
else:
wrap_class = ssl.SSLSocket
self.sock = wrap_class(sock, ca_certs=self.ca_certs, **add)
add['keyobj'] = self.keyobj
add['certobj'] = self.certobj
add['keyfile'] = self.key_file
add['certfile'] = self.cert_file
self.sock = PyOpenSSLSocket(sock, ca_certs=self.ca_certs, **add)
return 0
except Exception as e:
# print("DEBUG except in connect trusted root")
@ -558,17 +547,11 @@ class CheckingClientHTTPSConnection(httplib.HTTPSConnection):
else:
add = {}
add['cert_reqs'] = ssl.CERT_NONE
# try to use PyOpenSSL by default
if PYOPENSSL_AVAILABLE:
wrap_class = PyOpenSSLSocket
add['keyobj'] = self.keyobj
add['certobj'] = self.certobj
add['keyfile'] = self.key_file
add['certfile'] = self.cert_file
else:
wrap_class = ssl.SSLSocket
self.sock = wrap_class(sock, ca_certs=self.ca_certs, **add)
add['keyobj'] = self.keyobj
add['certobj'] = self.certobj
add['keyfile'] = self.key_file
add['certfile'] = self.cert_file
self.sock = PyOpenSSLSocket(sock, ca_certs=self.ca_certs, **add)
return 0
except OpenSSL.SSL.Error as e:
@ -587,7 +570,7 @@ class CheckingClientHTTPSConnection(httplib.HTTPSConnection):
return 1
except Exception as e:
print("DEBUG except in connect trusted server")
# print("DEBUG except in connect trusted server")
_print (e)
HTTPSClientCertTransport.filename = None
return 1

@ -33,7 +33,8 @@ from .more import post_connect_action, show_msg, uniq, LabelWordWrap, get_icon,
class LocalhostPasswd(qt.QDialog):
def __init__(self, parent):
qt.QDialog.__init__(self)
# qt.QDialog.__init__(self)
super().__init__()
grid = qt.QGridLayout(self)
grid.setContentsMargins(10, 10, 10, 10)
grid.setSpacing(4)
@ -76,7 +77,8 @@ class LocalhostPasswd(qt.QDialog):
class FrameConnection(qt.QWidget):
def __init__(self, parent, ClientObj):
qt.QWidget.__init__(self)
super().__init__()
# qt.QWidget.__init__(self)
self.ClientObj = ClientObj
def initUI(self, parent, window):

@ -37,7 +37,8 @@ def makePKey(key):
class RequestCreate (qt.QWidget):
def __init__(self, parent, ClientObj, key, cert_path, server_host_name):
qt.QWidget.__init__(self)
# qt.QWidget.__init__(self)
super().__init__()
self.ClientObj = ClientObj
self._parent = parent

@ -23,7 +23,8 @@ from calculate.lib.datavars import DataVars
# _('The user should not be root')
class HelpWgt(qt.QWidget):
def __init__(self, parent):
qt.QWidget.__init__(self)
# qt.QWidget.__init__(self)
super().__init__()
clVars = DataVars()
clVars.flIniFile()
@ -118,8 +119,8 @@ from email.mime.text import MIMEText
class BugWgt(qt.QWidget):
def __init__(self, parent):
qt.QWidget.__init__(self)
# qt.QWidget.__init__(self)
super().__init__()
name_lbl = qt.QLabel(_('Your name:'), self)
self.name_edit = qt.QLineEdit(self)

@ -57,7 +57,8 @@ class CallMethod(qt.QThread):
call_meth_sig = qt.Signal()
def __init__(self, parent):
qt.QThread.__init__(self, parent)
# qt.QThread.__init__(self, parent)
super().__init__(parent)
def run(self):
self.collect_sig.emit()
@ -79,8 +80,8 @@ class Table():
class RadioButton(qt.QRadioButton):
def __init__(self, text=None, parent=None):
super(qt.QRadioButton,self).__init__(text, parent)
# super(qt.QRadioButton,self).__init__(text, parent)
super().__init__(text, parent)
def set_data(self, data):
self.data = data
@ -91,7 +92,8 @@ class RadioButton(qt.QRadioButton):
class MainFrame(qt.QWidget):
def __init__(self, parent, ClientObj, view, method_name, \
error_output=True, skip_options=False):
super(MainFrame, self).__init__(parent)
# super(MainFrame, self).__init__(parent)
super().__init__(parent)
self.ClientObj = ClientObj
self._parent = parent
self.view = view

@ -21,7 +21,8 @@ from .more import TopMenu, HelpMenu#, FlowLayout
class MainMenu(qt.QWidget):
def __init__(self, parent):
qt.QWidget.__init__(self, parent)
# qt.QWidget.__init__(self, parent)
super().__init__(parent)
# self.hlayout = FlowLayout(self)
self.hlayout = qt.QHBoxLayout(self)
self.hlayout.setAlignment(qt.Qt.AlignLeft)

@ -90,7 +90,8 @@ def get_pixmap(*images, **kw):
# _('The user must not be root')
class TopMenu(qt.QPushButton):
def __init__(self, label, images, parent = None):
qt.QPushButton.__init__(self, parent)
# qt.QPushButton.__init__(self, parent)
super().__init__(parent)
self.setStyleSheet("QPushButton{border: none; margin: 0px;}"
"QPushButton:hover{border: 1px solid #73D1FF;"
"border-radius: 3px; margin: 0px;}")
@ -211,7 +212,8 @@ class HelpMenu(TopMenu):
class ButtonMenu(qt.QPushButton):
def __init__(self, name, label, images, parent):
qt.QPushButton.__init__(self, parent)
# qt.QPushButton.__init__(self, parent)
super().__init__(parent)
self.layout = qt.QVBoxLayout(self)
self.layout.setAlignment(qt.Qt.AlignHCenter | qt.Qt.AlignTop)
@ -290,7 +292,8 @@ class ButtonMenu(qt.QPushButton):
class ErrorLabel (qt.QWidget):
def __init__(self, parent, text = None):
qt.QWidget.__init__(self, parent)
# qt.QWidget.__init__(self, parent)
super().__init__(parent)
self._parent = parent
layout = qt.QHBoxLayout(self)
@ -360,7 +363,8 @@ ERROR_ICON_SIZE = 16
class ErrorWgt(qt.QWidget):
def __init__(self, text='', parent=None):
qt.QWidget.__init__(self)
# qt.QWidget.__init__(self)
super().__init__()
self._parent = parent
layout = qt.QHBoxLayout(self)
@ -425,7 +429,8 @@ class LabelWordWrap(qt.QLabel):
name = name[leftMargin:]
except (UnicodeDecodeError, UnicodeEncodeError):
pass
qt.QLabel.__init__(self, name, parent)
# qt.QLabel.__init__(self, name, parent)
super().__init__(name, parent)
WorkPalette.defaultBackground = get_system_rgb(
self, qt.QPalette.Window)
WorkPalette.defaultColor[0] = get_system_rgb(
@ -452,7 +457,8 @@ class LabelWordWrap(qt.QLabel):
class ClearLineEdit(qt.QLineEdit):
def __init__(self, text = None, parent=None):
qt.QLineEdit.__init__(self, text, parent)
# qt.QLineEdit.__init__(self, text, parent)
super().__init__(text, parent)
self.def_text = text
self.button=qt.QToolButton(self)
self.button.setCursor(qt.Qt.ArrowCursor)
@ -489,7 +495,8 @@ class ClearLineEdit(qt.QLineEdit):
class FileOpenWgt(qt.QWidget):
textChanged = qt.Signal()
def __init__(self, parent, type, caption=None, directory=None):
qt.QWidget.__init__(self,parent)
# qt.QWidget.__init__(self,parent)
super().__init__(parent)
self.type = type
self.caption = caption
self.dir = directory
@ -555,7 +562,8 @@ class ComboFileWgt(qt.QLabel):
# textChanged = qt.Signal()
def __init__(self, parent, type, choice = None, caption=None, \
value=None, comments = None):
qt.QLabel.__init__(self,parent)
# qt.QLabel.__init__(self,parent)
super().__init__(parent)
self.type = type
self.caption = caption
self.value = value
@ -674,7 +682,8 @@ class ComboFileWgt(qt.QLabel):
class ReadonlyCheckBox(qt.QCheckBox):
def __init__(self, parent):
qt.QCheckBox.__init__(self, parent)
# qt.QCheckBox.__init__(self, parent)
super().__init__(parent)
self.setFocusPolicy(qt.Qt.NoFocus)
self.disabled = False
@ -687,7 +696,8 @@ class ReadonlyCheckBox(qt.QCheckBox):
class CentralCheckBox (qt.QWidget):
def __init__(self, parent, tristate, text = None, ind_col = False):
super(CentralCheckBox, self).__init__(parent)
# super(CentralCheckBox, self).__init__(parent)
super().__init__(parent)
self.lay = qt.QHBoxLayout(self)
self.pCheckB = ReadonlyCheckBox(self)
self.lay.addWidget(self.pCheckB)
@ -762,7 +772,8 @@ class CentralCheckBox (qt.QWidget):
class QComboWgt(qt.QLabel):
currentIndexChanged = qt.Signal(int)
def __init__(self, parent = None):
qt.QLabel.__init__(self, parent)
# qt.QLabel.__init__(self, parent)
super().__init__(parent)
self.layout = qt.QVBoxLayout(self)
self.layout.setContentsMargins(0,0,0,0)
self.ComboBox = qt.QComboBox()
@ -805,7 +816,8 @@ class QComboWgt(qt.QLabel):
class ListWidget (qt.QListWidget):
def __init__(self, parent):
qt.QListWidget.__init__(self, parent)
# qt.QListWidget.__init__(self, parent)
super().__init__(parent)
self.setDragEnabled(True)
self.setAcceptDrops(True)
self.setDropIndicatorShown(True)
@ -819,7 +831,8 @@ class MultipleChoiceDialog (qt.QWidget):
""" Widget opens a dialog multiple select """
def __init__(self, parent, Available_dict, Available_list, Selected_list, \
add_ability):
super(MultipleChoiceDialog, self).__init__()
# super(MultipleChoiceDialog, self).__init__()
super().__init__()
self._parent = parent
self.layout = qt.QGridLayout(self)
self.layout.setColumnStretch(0,5)
@ -1017,7 +1030,8 @@ class MultipleChoiceDialog (qt.QWidget):
class MultipleButton(qt.QPushButton):
def __init__(self, text, parent):
qt.QPushButton.__init__(self, text, parent)
# qt.QPushButton.__init__(self, text, parent)
super().__init__(text, parent)
self.setStyleSheet("text-align: left; padding: 3px;")
self.setFocusPolicy(qt.Qt.NoFocus)
@ -1029,7 +1043,8 @@ class MultipleChoice (qt.QWidget):
# multiple-choice widget displayed in the table
def __init__(self, parent, Available_list, Selected, comments, \
add_ability = False, expert = False):
super(MultipleChoice, self).__init__(parent)
# super(MultipleChoice, self).__init__(parent)
super().__init__(parent)
''' Available_list is string list, Selected_list is string,
add_ability is boolean'''
self.avail = Available_list
@ -1130,7 +1145,8 @@ class MultipleChoice (qt.QWidget):
class AddLineWidget (qt.QWidget):
def __init__(self, parent, text):
qt.QWidget.__init__(self)
# qt.QWidget.__init__(self)
super().__init__()
layout = qt.QHBoxLayout(self)
self.add_line = qt.QLineEdit(self)
self.add_line.setFixedWidth(100)
@ -1149,14 +1165,16 @@ class AddLineWidget (qt.QWidget):
class MultipleCheckBox(qt.QCheckBox):
def __init__(self, parent):
qt.QCheckBox.__init__(self, parent)
# qt.QCheckBox.__init__(self, parent)
super().__init__(parent)
class SelectTable(qt.QWidget):
Changed = qt.Signal()
# multiple-choice table
def __init__(self, parent, Available_list, Selected, comments, \
add_ability = False, expert = False, default = None):
qt.QWidget.__init__(self, parent)
# qt.QWidget.__init__(self, parent)
super().__init__(parent)
self._parent = parent
self.Available_list = Available_list
@ -1364,7 +1382,8 @@ class SelectList(qt.QGroupBox):
Changed = qt.Signal()
def __init__(self, parent, label, Available_list, Selected, comments, \
add_ability = False, expert = False, default = None):
qt.QGroupBox.__init__(self, label, parent)
# qt.QGroupBox.__init__(self, label, parent)
super().__init__(label, parent)
self._parent = parent
self.Available_list = Available_list
self.Selected = Selected
@ -1568,7 +1587,8 @@ class SelectList(qt.QGroupBox):
class ExpertWidget (qt.QPushButton):
# multiple-choice widget displayed in the table
def __init__(self, label, parent):
qt.QPushButton.__init__(self)
# qt.QPushButton.__init__(self)
super().__init__()
self.setStyleSheet('''QPushButton:pressed {border: none;}
QPushButton::hover {border: none;}''')
layout = qt.QHBoxLayout(self)
@ -1615,8 +1635,8 @@ class ExpertWidget (qt.QPushButton):
class FlowLayout(qt.QLayout):
def __init__(self, parent=None, margin=0, spacing=-1):
super(FlowLayout, self).__init__(parent)
# super(FlowLayout, self).__init__(parent)
super().__init__(parent)
self.setSpacing(spacing)
self.itemList = []
@ -1695,8 +1715,8 @@ class FlowLayout(qt.QLayout):
class PlusRow (qt.QWidget):
""" Widget opens a dialog multiple select """
def __init__(self, parent, table, field, changed = False, num_row = None):
qt.QWidget.__init__(self)
# qt.QWidget.__init__(self)
super().__init__()
self.grid = qt.QGridLayout(self)
self.grid.setContentsMargins(24,8,24,8)
self.grid.setSpacing(6)
@ -2081,7 +2101,8 @@ class PlusRow (qt.QWidget):
class PasswordWgt(qt.QWidget):
# answer to the server question
def __init__(self, parent, text):
super(PasswordWgt, self).__init__()
# super(PasswordWgt, self).__init__()
super().__init__()
self._parent = parent
self.text = text
if parent.label:
@ -2139,8 +2160,8 @@ class PasswordWgt(qt.QWidget):
class PasswordWidget(qt.QLineEdit):
def __init__(self, parent, text = '', label = ''):
qt.QLineEdit.__init__(self)
# qt.QLineEdit.__init__(self)
super().__init__()
self.text = text
self.label = label
self.setEchoMode(self.Password)
@ -2167,7 +2188,8 @@ class PasswordWidget(qt.QLineEdit):
class SimplePasswordWidget(qt.QWidget):
def __init__(self, parent, lbl1, lbl2):
qt.QWidget.__init__(self)
# qt.QWidget.__init__(self)
super().__init__()
self.layout = qt.QVBoxLayout(self)
self.layout.setContentsMargins(0,0,0,0)
self.layout.setSpacing(4)
@ -2219,7 +2241,8 @@ class ResultLayout(qt.QVBoxLayout):
Слой с результатами работы задачи
"""
def __init__(self, parent):
qt.QVBoxLayout.__init__(self, parent)
# qt.QVBoxLayout.__init__(self, parent)
super().__init__(parent)
self.setAlignment(qt.Qt.AlignTop)
self.setContentsMargins(28, 28, 28, 10)
self.setSpacing(2)
@ -2252,7 +2275,8 @@ class ResultLayout(qt.QVBoxLayout):
class LabelTaskWgt(qt.QLabel):
def __init__(self, name, parent=None):
qt.QLabel.__init__(self, name, parent)
# qt.QLabel.__init__(self, name, parent)
super().__init__(name, parent)
self.setStyleSheet("color: #B3ABA7;")
def sizeHint(self):
@ -2275,7 +2299,8 @@ class TaskWidget(qt.QWidget):
console_skip = "object-select-symbolic"
def __init__(self, text='', parent=None, clean_text=None):
qt.QWidget.__init__(self, parent)
# qt.QWidget.__init__(self, parent)
super().__init__(parent)
self._layout = qt.QHBoxLayout(self)
if clean_text is None:
@ -2320,7 +2345,8 @@ class TaskWidget(qt.QWidget):
class ButtonsWidget(qt.QWidget):
def __init__(self, parent = None):
qt.QWidget.__init__(self, parent)
# qt.QWidget.__init__(self, parent)
super().__init__(parent)
self.layout = qt.QHBoxLayout(self)
self.layout.setContentsMargins(0,0,0,0)
@ -2419,7 +2445,8 @@ class ClientSignal(qt.QThread):
sid_sig = qt.Signal(int, int)
connect_count = qt.Signal(str, int, int)
def __init__(self, ClientObj):
qt.QThread.__init__(self)
# qt.QThread.__init__(self)
super().__init__()
self.ClientObj = ClientObj
self.connect_count.connect(ClientObj._parent.connect_count_changed)
@ -2588,7 +2615,8 @@ class ClientServiceThread(qt.QThread):
signal = qt.Signal(object)
signal_extended = qt.Signal(object, object)
def __init__(self, ClientObj, method_name, *args, **kwargs):
qt.QThread.__init__(self)
# qt.QThread.__init__(self)
super().__init__()
self.ClientObj = ClientObj
self.method_name = method_name
self.args = args
@ -2640,7 +2668,8 @@ class ClientServiceThread(qt.QThread):
class ImageLabel(qt.QLabel):
def __init__(self, image, height_image, parent):
qt.QLabel.__init__(self)
# qt.QLabel.__init__(self)
super().__init__()
# self._parent = parent
save_path = os.path.join('/tmp', 'calculate-' + \
pwd.getpwuid(os.getuid()).pw_name)

@ -0,0 +1,161 @@
#-*- coding: utf-8 -*-
# Copyright 2012-2016 Mir Calculate. http://www.calculate-linux.org
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# import _ssl
# from _ssl import SSLError
from _ssl import CERT_NONE, CERT_OPTIONAL, CERT_REQUIRED
from _ssl import PROTOCOL_SSLv23, PROTOCOL_TLSv1, PROTOCOL_TLSv1_2
# from _ssl import RAND_status, RAND_add
# from _ssl import \
# SSL_ERROR_ZERO_RETURN, \
# SSL_ERROR_WANT_READ, \
# SSL_ERROR_WANT_WRITE, \
# SSL_ERROR_WANT_X509_LOOKUP, \
# SSL_ERROR_SYSCALL, \
# SSL_ERROR_SSL, \
# SSL_ERROR_WANT_CONNECT, \
# SSL_ERROR_EOF, \
# SSL_ERROR_INVALID_ERROR_CODE
# from socket import socket
from socket import SocketIO
import io
# the OpenSSL stuff
import OpenSSL
_ssl_to_openssl_cert_op_remap = {
CERT_NONE: OpenSSL.SSL.VERIFY_NONE,
CERT_OPTIONAL: OpenSSL.SSL.VERIFY_PEER,
CERT_REQUIRED: OpenSSL.SSL.VERIFY_PEER|OpenSSL.SSL.VERIFY_FAIL_IF_NO_PEER_CERT
}
_ssl_to_openssl_version_remap = {
PROTOCOL_SSLv23: OpenSSL.SSL.SSLv23_METHOD,
PROTOCOL_TLSv1: OpenSSL.SSL.TLSv1_METHOD,
PROTOCOL_TLSv1_2 : OpenSSL.SSL.TLSv1_2_METHOD
}
class PyOpenSSLSocket(OpenSSL.SSL.Connection):
def __init__(self, sock, keyfile=None, certfile=None,
server_side=False, cert_reqs=CERT_NONE,
ssl_version=PROTOCOL_TLSv1_2, ca_certs=None,
do_handshake_on_connect=True,
keyobj=None, certobj=None):
context = PyOpenSSLSocket.make_context(
keyfile = keyfile,
certfile = certfile,
cert_reqs = cert_reqs,
ssl_version = ssl_version,
ca_certs = ca_certs,
keyobj = keyobj,
certobj = certobj)
super().__init__(context, sock)
self.setblocking(True)
self.set_connect_state()
if do_handshake_on_connect:
timeout = self.gettimeout()
try:
self.settimeout(None)
self.do_handshake()
finally:
self.settimeout(timeout)
self._io_refs = 0
self.do_handshake_on_connect = do_handshake_on_connect
def connect(self, addr):
print("PYOPENSSL CONNECT")
super().connect(addr)
if self.do_handshake_on_connect:
self.do_handshake()
def close (self):
if self._io_refs < 1:
self._socket.close()
else:
self._io_refs -= 1
def makefile(self, mode="r", buffering=None, *,
encoding=None, errors=None, newline=None):
"""makefile(...) -> an I/O stream connected to the socket
The arguments are as for io.open() after the filename, except the only
supported mode values are 'r' (default), 'w' and 'b'.
"""
if not set(mode) <= {"r", "w", "b"}:
raise ValueError("invalid mode %r (only r, w, b allowed)" % (mode,))
writing = "w" in mode
reading = "r" in mode or not writing
assert reading or writing
binary = "b" in mode
rawmode = ""
if reading:
rawmode += "r"
if writing:
rawmode += "w"
raw = SocketIO(self, rawmode)
self._io_refs += 1
if buffering is None:
buffering = -1
if buffering < 0:
buffering = io.DEFAULT_BUFFER_SIZE
if buffering == 0:
if not binary:
raise ValueError("unbuffered streams must be binary")
return raw
if reading and writing:
buffer = io.BufferedRWPair(raw, raw, buffering)
elif reading:
buffer = io.BufferedReader(raw, buffering)
else:
assert writing
buffer = io.BufferedWriter(raw, buffering)
if binary:
return buffer
text = io.TextIOWrapper(buffer, encoding, errors, newline)
text.mode = mode
return text
@staticmethod
def make_context(keyfile=None, certfile=None,
cert_reqs=CERT_NONE, ssl_version=PROTOCOL_TLSv1_2,
ca_certs=None, keyobj=None, certobj=None):
ctx = OpenSSL.SSL.Context(_ssl_to_openssl_version_remap[ssl_version])
if ca_certs:
ctx.load_verify_locations(ca_certs)
ctx.set_verify(_ssl_to_openssl_cert_op_remap[cert_reqs], verify_connection)
if keyobj:
ctx.use_privatekey(keyobj)
elif keyfile:
ctx.use_privatekey_file(keyfile)
if certobj:
ctx.use_certificate(certobj)
elif certfile:
ctx.use_certificate_file(certfile)
ctx.set_options(0x4000) # THIS IS THE KEY TO SUCCESS OF DS
return ctx
def verify_connection(conn, x509, error_code, depth, ret_code):
# no extra validation - just return whatever OpenSSL already
# decided during its check
return bool(ret_code)

@ -1,34 +1,40 @@
"""
This is just a simple copy of the ssl.py module contained in the Python
standard library. It was modified to work with PyOpenSSL and only to the
extent that it works with the DS server. It might not work for any other
purpose.
"""
import textwrap
import _ssl # if we can't import it, let the error propagate
from _ssl import SSLError
#-*- coding: utf-8 -*-
# Copyright 2012-2016 Mir Calculate. http://www.calculate-linux.org
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# import _ssl
# from _ssl import SSLError
from _ssl import CERT_NONE, CERT_OPTIONAL, CERT_REQUIRED
from _ssl import PROTOCOL_SSLv23, PROTOCOL_TLSv1, PROTOCOL_TLSv1_2
from _ssl import RAND_status, RAND_add
from _ssl import \
SSL_ERROR_ZERO_RETURN, \
SSL_ERROR_WANT_READ, \
SSL_ERROR_WANT_WRITE, \
SSL_ERROR_WANT_X509_LOOKUP, \
SSL_ERROR_SYSCALL, \
SSL_ERROR_SSL, \
SSL_ERROR_WANT_CONNECT, \
SSL_ERROR_EOF, \
SSL_ERROR_INVALID_ERROR_CODE
from socket import socket
# from _ssl import RAND_status, RAND_add
# from _ssl import \
# SSL_ERROR_ZERO_RETURN, \
# SSL_ERROR_WANT_READ, \
# SSL_ERROR_WANT_WRITE, \
# SSL_ERROR_WANT_X509_LOOKUP, \
# SSL_ERROR_SYSCALL, \
# SSL_ERROR_SSL, \
# SSL_ERROR_WANT_CONNECT, \
# SSL_ERROR_EOF, \
# SSL_ERROR_INVALID_ERROR_CODE
# from socket import socket
from socket import SocketIO
import io
from socket import getnameinfo as _getnameinfo
import base64 # for DER-to-PEM translation
# the OpenSSL stuff
@ -46,317 +52,6 @@ _ssl_to_openssl_version_remap = {
PROTOCOL_TLSv1_2 : OpenSSL.SSL.TLSv1_2_METHOD
}
class PyOpenSSLSocket2(socket):
"""This class implements a subtype of socket.socket that wraps
the underlying OS socket in an SSL context when necessary, and
provides read and write methods over that channel."""
def __init__(self, sock, keyfile=None, certfile=None,
server_side=False, cert_reqs=CERT_NONE,
ssl_version=PROTOCOL_TLSv1_2, ca_certs=None,
do_handshake_on_connect=True,
suppress_ragged_eofs=True,
keyobj=None, certobj=None):
socket.__init__(self, _sock=sock._sock)
# the initializer for socket trashes the methods (tsk, tsk), so...
self.send = lambda data, flags=0: PyOpenSSLSocket.send(self, data, flags)
self.sendto = lambda data, addr, flags=0: PyOpenSSLSocket.sendto(self, data, addr, flags)
self.recv = lambda buflen=1024, flags=0: PyOpenSSLSocket.recv(self, buflen, flags)
self.recvfrom = lambda addr, buflen=1024, flags=0: PyOpenSSLSocket.recvfrom(self, addr, buflen, flags)
self.recv_into = lambda buffer, nbytes=None, flags=0: PyOpenSSLSocket.recv_into(self, buffer, nbytes, flags)
self.recvfrom_into = lambda buffer, nbytes=None, flags=0: PyOpenSSLSocket.recvfrom_into(self, buffer, nbytes, flags)
if certfile and not keyfile:
keyfile = certfile
# see if it's connected
try:
socket.getpeername(self)
except:
# no, no connection yet
self._sslobj = None
else:
# yes, create the SSL object
self._sslobj = sslwrap(self._sock, server_side,
keyfile, certfile,
cert_reqs, ssl_version, ca_certs,
keyobj=keyobj, certobj=certobj)
if do_handshake_on_connect:
timeout = self.gettimeout()
try:
self.settimeout(None)
self.do_handshake()
finally:
self.settimeout(timeout)
self.keyfile = keyfile
self.certfile = certfile
self.cert_reqs = cert_reqs
self.ssl_version = ssl_version
self.ca_certs = ca_certs
self.do_handshake_on_connect = do_handshake_on_connect
self.suppress_ragged_eofs = suppress_ragged_eofs
self._makefile_refs = 0
self.keyobj = keyobj
self.certobj = certobj
def read(self, len=1024):
"""Read up to LEN bytes and return them.
Return zero-length string on EOF."""
try:
return self._sslobj.read(len)
except SSLError as x:
if x.args[0] == SSL_ERROR_EOF and self.suppress_ragged_eofs:
return ''
else:
raise
def write(self, data):
"""Write DATA to the underlying SSL channel. Returns
number of bytes of DATA actually transmitted."""
return self._sslobj.write(data)
def getpeercert(self, binary_form=False):
"""Returns a formatted version of the data in the
certificate provided by the other end of the SSL channel.
Return None if no certificate was provided, {} if a
certificate was provided, but not validated."""
return self._sslobj.get_peer_certificate()
def cipher (self):
if not self._sslobj:
return None
else:
return self._sslobj.cipher()
def send (self, data, flags=0):
if self._sslobj:
if flags != 0:
raise ValueError(
"non-zero flags not allowed in calls to send() on %s" %
self.__class__)
while True:
try:
v = self._sslobj.write(data)
except SSLError as x:
if x.args[0] == SSL_ERROR_WANT_READ:
return 0
elif x.args[0] == SSL_ERROR_WANT_WRITE:
return 0
else:
raise
else:
return v
else:
return socket.send(self, data, flags)
def sendto (self, data, addr, flags=0):
if self._sslobj:
raise ValueError("sendto not allowed on instances of %s" %
self.__class__)
else:
return socket.sendto(self, data, addr, flags)
def sendall (self, data, flags=0):
if self._sslobj:
if flags != 0:
raise ValueError(
"non-zero flags not allowed in calls to sendall() on %s" %
self.__class__)
amount = len(data)
count = 0
while (count < amount):
v = self.send(data[count:])
count += v
return amount
else:
return socket.sendall(self, data, flags)
def recv (self, buflen=1024, flags=0):
if self._sslobj:
if flags != 0:
raise ValueError(
"non-zero flags not allowed in calls to sendall() on %s" %
self.__class__)
while True:
try:
return self.read(buflen)
except SSLError as x:
if x.args[0] == SSL_ERROR_WANT_READ:
continue
else:
raise x
else:
return socket.recv(self, buflen, flags)
def recv_into (self, buffer, nbytes=None, flags=0):
if buffer and (nbytes is None):
nbytes = len(buffer)
elif nbytes is None:
nbytes = 1024
if self._sslobj:
if flags != 0:
raise ValueError(
"non-zero flags not allowed in calls to recv_into() on %s" %
self.__class__)
while True:
try:
tmp_buffer = self.read(nbytes)
v = len(tmp_buffer)
buffer[:v] = tmp_buffer
return v
except SSLError as x:
if x.args[0] == SSL_ERROR_WANT_READ:
continue
else:
raise x
else:
return socket.recv_into(self, buffer, nbytes, flags)
def recvfrom (self, addr, buflen=1024, flags=0):
if self._sslobj:
raise ValueError("recvfrom not allowed on instances of %s" %
self.__class__)
else:
return socket.recvfrom(self, addr, buflen, flags)
def recvfrom_into (self, buffer, nbytes=None, flags=0):
if self._sslobj:
raise ValueError("recvfrom_into not allowed on instances of %s" %
self.__class__)
else:
return socket.recvfrom_into(self, buffer, nbytes, flags)
def pending (self):
if self._sslobj:
return self._sslobj.pending()
else:
return 0
def unwrap (self):
if self._sslobj:
s = self._sslobj.shutdown()
self._sslobj = None
return s
else:
raise ValueError("No SSL wrapper around " + str(self))
def shutdown (self, how):
self._sslobj = None
socket.shutdown(self, how)
def close (self):
if self._makefile_refs < 1:
self._sslobj = None
socket.close(self)
else:
self._makefile_refs -= 1
def do_handshake (self):
"""Perform a TLS/SSL handshake."""
self._sslobj.do_handshake()
def connect(self, addr):
"""Connects to remote ADDR, and then wraps the connection in
an SSL channel."""
# Here we assume that the socket is client-side, and not
# connected at the time of the call. We connect it, then wrap it.
if self._sslobj:
raise ValueError("attempt to connect already-connected PyOpenSSLSocket!")
socket.connect(self, addr)
self._sslobj = sslwrap(self._sock, False, self.keyfile, self.certfile,
self.cert_reqs, self.ssl_version,
self.ca_certs,
keyobj=self.keyobj, certobj=self.certobj)
if self.do_handshake_on_connect:
self.do_handshake()
def accept(self):
"""Accepts a new connection from a remote client, and returns
a tuple containing that new connection wrapped with a server-side
SSL channel, and the address of the remote client."""
newsock, addr = socket.accept(self)
return (PyOpenSSLSocket(newsock,
keyfile=self.keyfile,
certfile=self.certfile,
server_side=True,
cert_reqs=self.cert_reqs,
ssl_version=self.ssl_version,
ca_certs=self.ca_certs,
do_handshake_on_connect=self.do_handshake_on_connect,
suppress_ragged_eofs=self.suppress_ragged_eofs),
addr)
def makefile(self, *args, **kwargs):
"""makefile(...) -> an I/O stream connected to the socket
The arguments are as for io.open() after the filename, except the only
supported mode values are 'r' (default), 'w' and 'b'.
"""
self._makefile_refs += 1
return super().makefile(*args, **kwargs)
def wrap_socket(sock, keyfile=None, certfile=None,
server_side=False, cert_reqs=CERT_NONE,
ssl_version=PROTOCOL_SSLv23, ca_certs=None,
do_handshake_on_connect=True,
suppress_ragged_eofs=True):
return PyOpenSSLSocket(sock, keyfile=keyfile, certfile=certfile,
server_side=server_side, cert_reqs=cert_reqs,
ssl_version=ssl_version, ca_certs=ca_certs,
do_handshake_on_connect=do_handshake_on_connect,
suppress_ragged_eofs=suppress_ragged_eofs)
def verify_connection(conn, x509, error_code, depth, ret_code):
# no extra validation - just return whatever OpenSSL already
# decided during its check
return bool(ret_code)
def sslwrap(sock, server_side=False, keyfile=None, certfile=None,
cert_reqs=CERT_NONE, ssl_version=PROTOCOL_TLSv1_2,
ca_certs=None, keyobj=None, certobj=None):
"""this is modification of _ssl.sslwrap that uses PyOpenSSL,
keyobj and certobj are new parameters allowing setting the
key and cert not by filename, but from internal PyOpenSSL
structures.
"""
ctx = OpenSSL.SSL.Context(_ssl_to_openssl_version_remap[ssl_version])
if ca_certs:
ctx.load_verify_locations(ca_certs)
ctx.set_verify(_ssl_to_openssl_cert_op_remap[cert_reqs], verify_connection)
if keyobj:
ctx.use_privatekey(keyobj)
elif keyfile:
ctx.use_privatekey_file(keyfile)
if certobj:
ctx.use_certificate(certobj)
elif certfile:
ctx.use_certificate_file(certfile)
ctx.set_options(0x4000) # THIS IS THE KEY TO SUCCESS OF DS
ssl_sock = OpenSSL.SSL.Connection(ctx, sock)
ssl_sock.setblocking(True)
ssl_sock.set_connect_state()
return ssl_sock
class PyOpenSSLSocket(OpenSSL.SSL.Connection):
def __init__(self, sock, keyfile=None, certfile=None,
server_side=False, cert_reqs=CERT_NONE,
@ -372,12 +67,6 @@ class PyOpenSSLSocket(OpenSSL.SSL.Connection):
ca_certs = ca_certs,
keyobj = keyobj,
certobj = certobj)
# print("DEBUG pyopensslsocket")
# print(context)
# print(sock)
# print(ca_certs)
# print(ssl_version)
super().__init__(context, sock)
self.setblocking(True)
self.set_connect_state()
@ -446,6 +135,7 @@ class PyOpenSSLSocket(OpenSSL.SSL.Connection):
text.mode = mode
return text
@staticmethod
def make_context(keyfile=None, certfile=None,
cert_reqs=CERT_NONE, ssl_version=PROTOCOL_TLSv1_2,
@ -465,3 +155,7 @@ class PyOpenSSLSocket(OpenSSL.SSL.Connection):
ctx.set_options(0x4000) # THIS IS THE KEY TO SUCCESS OF DS
return ctx
def verify_connection(conn, x509, error_code, depth, ret_code):
# no extra validation - just return whatever OpenSSL already
# decided during its check
return bool(ret_code)

@ -76,7 +76,8 @@ def client_post_cert (client, lang):
class ViewSessionInfo (qt.QWidget):
def __init__(self, parent, client, window):
qt.QWidget.__init__(self)
# qt.QWidget.__init__(self)
super().__init__()
self.layout = qt.QGridLayout()
sid = get_sid(client)

@ -18,14 +18,16 @@ from calculate.consolegui import qt
class StatusLabel(qt.QLabel):
def __init__(self, name, parent):
qt.QLabel.__init__(self, name, parent)
# qt.QLabel.__init__(self, name, parent)
super().__init__(name, parent)
self.setWordWrap(True)
self.setAttribute(qt.Qt.WA_DeleteOnClose)
class StatusFieldWgt(qt.QWidget):
def __init__(self, parent, layout):
super(StatusFieldWgt, self).__init__(parent)
# super(StatusFieldWgt, self).__init__(parent)
super().__init__(parent)
self.setLayout(layout)
self.setAttribute(qt.Qt.WA_DeleteOnClose)
@ -33,8 +35,8 @@ class StatusFieldWgt(qt.QWidget):
class StatusField (qt.QScrollArea):
# bottom in main frame
def __init__(self, parent, ClientObj):
qt.QScrollArea.__init__(self, parent)
# qt.QScrollArea.__init__(self, parent)
super().__init__(parent)
self.layout = qt.QVBoxLayout()
self.status_widget = StatusFieldWgt(self, self.layout)
self.setWidget(self.status_widget)

@ -24,7 +24,8 @@ from .more import LabelWordWrap, FileOpenWgt, show_msg, show_question, \
class ToolsWidget (qt.QWidget):
def __init__(self, parent, ClientObj, window):
qt.QWidget.__init__(self)
# qt.QWidget.__init__(self)
super().__init__()
self.vlayout = qt.QVBoxLayout(self)
self.vlayout.setAlignment(qt.Qt.AlignTop)
self.vlayout.setAlignment(qt.Qt.AlignRight)
@ -122,7 +123,8 @@ class ToolsWidget (qt.QWidget):
class ToolTabWidget(qt.QTabWidget):
def __init__(self, parent, ClientObj):
qt.QTabWidget.__init__(self, parent)
# qt.QTabWidget.__init__(self, parent)
super().__init__(parent)
self.ClientObj = ClientObj
self.GuiWidget = ToolGui(self, ClientObj)
@ -186,7 +188,8 @@ class ToolTabWidget(qt.QTabWidget):
# Gui tools in ToolTabWidget
class ToolGui(qt.QWidget):
def __init__(self, parent, ClientObj):
qt.QWidget.__init__(self, parent)
# qt.QWidget.__init__(self, parent)
super().__init__(parent)
self.user_config = ClientObj.user_config
self._parent = parent
@ -329,7 +332,8 @@ class ToolGui(qt.QWidget):
# Other tools in ToolTabWidget
class ToolOther(qt.QWidget):
def __init__(self, parent, ClientObj):
qt.QWidget.__init__(self, parent)
# qt.QWidget.__init__(self, parent)
super().__init__(parent)
self.user_config = ClientObj.user_config
self._parent = parent

Loading…
Cancel
Save