Compare commits
2 Commits
294ceab157
...
2bc0730fbf
| Author | SHA256 | Date | |
|---|---|---|---|
| 2bc0730fbf | |||
| 5bf35ce12a |
@@ -24,6 +24,7 @@ GridLayout
|
|||||||
|
|
||||||
Label
|
Label
|
||||||
{
|
{
|
||||||
|
id: benutzerNamelabel
|
||||||
text: qsTr("Benutzername:")
|
text: qsTr("Benutzername:")
|
||||||
Layout.alignment: Qt.AlignRight
|
Layout.alignment: Qt.AlignRight
|
||||||
}
|
}
|
||||||
@@ -69,4 +70,17 @@ GridLayout
|
|||||||
{
|
{
|
||||||
Layout.fillHeight: true
|
Layout.fillHeight: true
|
||||||
}
|
}
|
||||||
|
Component.onCompleted:
|
||||||
|
{
|
||||||
|
config.usernameNotAvailable.connect(usernameNotAvailable)
|
||||||
|
}
|
||||||
|
function usernameNotAvailable()
|
||||||
|
{
|
||||||
|
benutzerName.placeholderText = qsTr ("Benutzername ist bereits vergeben")
|
||||||
|
benutzerName.clear()
|
||||||
|
benutzerNamelabel.color = "red"
|
||||||
|
benutzerNamelabel.font.bold = true
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -37,6 +37,7 @@ RowLayout
|
|||||||
implicitWidth: kunden.implicitContentWidth + 10
|
implicitWidth: kunden.implicitContentWidth + 10
|
||||||
onClicked:
|
onClicked:
|
||||||
{
|
{
|
||||||
|
// TODO: here we should call the model
|
||||||
appLoader.source = "CustomerTables.qml"
|
appLoader.source = "CustomerTables.qml"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -45,7 +45,6 @@ Item
|
|||||||
firstStart.push("AdminUserConfig.qml")
|
firstStart.push("AdminUserConfig.qml")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
MessageDialog
|
MessageDialog
|
||||||
{
|
{
|
||||||
id: conErrDialog
|
id: conErrDialog
|
||||||
@@ -62,7 +61,13 @@ Item
|
|||||||
title: qsTr("Encryption Key")
|
title: qsTr("Encryption Key")
|
||||||
anchors.centerIn: parent
|
anchors.centerIn: parent
|
||||||
standardButtons: Dialog.Ok | Dialog.Cancel
|
standardButtons: Dialog.Ok | Dialog.Cancel
|
||||||
onAccepted: config.setEncyrptKey(encryptPassword.text)
|
onAccepted:
|
||||||
|
{
|
||||||
|
// TODO: signal for EncryptionKey testing
|
||||||
|
config.setEncyrptKey(encryptPassword.text)
|
||||||
|
appLoader.source = "Dashboard.qml"
|
||||||
|
topBar.visible = true
|
||||||
|
}
|
||||||
ColumnLayout
|
ColumnLayout
|
||||||
{
|
{
|
||||||
RowLayout
|
RowLayout
|
||||||
@@ -89,6 +94,7 @@ Item
|
|||||||
id: firstStart
|
id: firstStart
|
||||||
anchors.fill: parent
|
anchors.fill: parent
|
||||||
initialItem: "DbConfiguration.qml"
|
initialItem: "DbConfiguration.qml"
|
||||||
|
//initialItem: "AdminUserConfig.qml"
|
||||||
}
|
}
|
||||||
RowLayout
|
RowLayout
|
||||||
{
|
{
|
||||||
@@ -126,7 +132,7 @@ Item
|
|||||||
pyqcrm_conf = Qmldict.func(submitBtn.grids)
|
pyqcrm_conf = Qmldict.func(submitBtn.grids)
|
||||||
if (pyqcrm_conf)
|
if (pyqcrm_conf)
|
||||||
{
|
{
|
||||||
admin = config.setConfig(pyqcrm_conf)
|
config.setConfig(pyqcrm_conf)
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -15,6 +15,7 @@ from .PyqcrmFlags import PyqcrmFlags
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
class ConfigLoader(QObject):
|
class ConfigLoader(QObject):
|
||||||
__config = None
|
__config = None
|
||||||
__version = "0.1-alpha"
|
__version = "0.1-alpha"
|
||||||
@@ -22,6 +23,7 @@ class ConfigLoader(QObject):
|
|||||||
|
|
||||||
dbConnectionError = Signal(str, bool)
|
dbConnectionError = Signal(str, bool)
|
||||||
adminUserError = Signal(str, bool)
|
adminUserError = Signal(str, bool)
|
||||||
|
usernameNotAvailable = Signal()
|
||||||
|
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
super().__init__()
|
super().__init__()
|
||||||
@@ -46,7 +48,10 @@ class ConfigLoader(QObject):
|
|||||||
@Slot(dict, result= bool)
|
@Slot(dict, result= bool)
|
||||||
def addAdminUser(self, user_config):
|
def addAdminUser(self, user_config):
|
||||||
admin = UserManager(user_config["user"], PyqcrmFlags.ADMIN).createUser()
|
admin = UserManager(user_config["user"], PyqcrmFlags.ADMIN).createUser()
|
||||||
return True
|
print (admin)
|
||||||
|
if not admin:
|
||||||
|
self.usernameNotAvailable.emit()
|
||||||
|
return admin
|
||||||
|
|
||||||
@Slot(dict, result= bool)
|
@Slot(dict, result= bool)
|
||||||
def setConfig(self, app_config):
|
def setConfig(self, app_config):
|
||||||
@@ -93,12 +98,21 @@ class ConfigLoader(QObject):
|
|||||||
return False
|
return False
|
||||||
|
|
||||||
def __checkAdminUser(self):
|
def __checkAdminUser(self):
|
||||||
|
con = DbManager().getConnection()
|
||||||
|
cur = con.cursor()
|
||||||
|
cur.callproc("checkAdmin")
|
||||||
|
result = cur.fetchall()
|
||||||
|
if not result:
|
||||||
|
#if not result[0][0] == 1:
|
||||||
|
self.adminUserError.emit("Kein Admin vorhanden", False)
|
||||||
|
else:
|
||||||
|
self.adminUserError.emit("Admin vorhanden", True)
|
||||||
|
|
||||||
self.adminUserError.emit("Kein Admin vorhanden", False)
|
|
||||||
|
|
||||||
@Slot(str)
|
@Slot(str)
|
||||||
def setEncyrptKey(self, key):
|
def setEncyrptKey(self, key):
|
||||||
self.__config['pyqcrm']['ENCRYPTION_KEY'] = key
|
self.__config['pyqcrm']['ENCRYPTION_KEY'] = key
|
||||||
|
print(self.__config)
|
||||||
self.__saveConfig()
|
self.__saveConfig()
|
||||||
|
|
||||||
def __saveConfig(self):
|
def __saveConfig(self):
|
||||||
|
|||||||
@@ -1,5 +1,7 @@
|
|||||||
from .DbManager import DbManager
|
from .DbManager import DbManager
|
||||||
from ..PyqcrmFlags import PyqcrmFlags
|
from ..PyqcrmFlags import PyqcrmFlags
|
||||||
|
from ..Vermasseln import Vermasseln
|
||||||
|
import mariadb
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -15,9 +17,24 @@ class UserManager():
|
|||||||
|
|
||||||
|
|
||||||
def createUser(self):
|
def createUser(self):
|
||||||
self.__cur.callproc("createUser", (self.__username, self.__password, self.__info, self.__role))
|
self.__hashPassword()
|
||||||
self.__con.commit()
|
user_created = True
|
||||||
self.__closeConnection()
|
try:
|
||||||
|
self.__cur.callproc("createUser", (self.__username, self.__password, self.__info, self.__role))
|
||||||
|
self.__con.commit()
|
||||||
|
except mariadb.Error as e:
|
||||||
|
print(f"Error: {e}")
|
||||||
|
print(e.errno)
|
||||||
|
user_created = False
|
||||||
|
finally:
|
||||||
|
self.__cur.close()
|
||||||
|
#self.__closeConnection()
|
||||||
|
return user_created
|
||||||
|
|
||||||
|
def __hashPassword(self):
|
||||||
|
self.__password = Vermasseln.userPasswordHash(self.__password)
|
||||||
|
print (self.__password)
|
||||||
|
|
||||||
|
|
||||||
def getUser(self):
|
def getUser(self):
|
||||||
self.__closeConnection()
|
self.__closeConnection()
|
||||||
|
|||||||
@@ -2,7 +2,11 @@
|
|||||||
from Crypto.Cipher import AES
|
from Crypto.Cipher import AES
|
||||||
from base64 import b64encode, b64decode
|
from base64 import b64encode, b64decode
|
||||||
import platform
|
import platform
|
||||||
from Crypto.Hash import SHA256
|
from Crypto.Hash import SHA256, SHA3_512
|
||||||
|
from Crypto.Protocol.KDF import PBKDF2
|
||||||
|
from Crypto.Random import get_random_bytes
|
||||||
|
import random
|
||||||
|
import string
|
||||||
|
|
||||||
|
|
||||||
class Vermasseln:
|
class Vermasseln:
|
||||||
@@ -42,6 +46,18 @@ class Vermasseln:
|
|||||||
cipher = AES.new(hashed, AES.MODE_SIV, nonce = nonce)
|
cipher = AES.new(hashed, AES.MODE_SIV, nonce = nonce)
|
||||||
return cipher
|
return cipher
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def userPasswordHash(self, password):
|
||||||
|
|
||||||
|
salt = "".join(random.choice(string.ascii_letters + string.digits) for i in range (32))
|
||||||
|
hash_pw = (salt + password).encode("utf-8")
|
||||||
|
h_obj = SHA3_512.new(hash_pw)
|
||||||
|
password = salt + "$" + h_obj.hexdigest()
|
||||||
|
|
||||||
|
return password
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,78 +0,0 @@
|
|||||||
# Resource object code (Python 3)
|
|
||||||
# Created by: object code
|
|
||||||
# Created by: The Resource Compiler for Qt version 6.8.0
|
|
||||||
# WARNING! All changes made in this file will be lost!
|
|
||||||
|
|
||||||
from PySide6 import QtCore
|
|
||||||
|
|
||||||
qt_resource_data = b"\
|
|
||||||
\x00\x00\x01\xba\
|
|
||||||
(\
|
|
||||||
\xb5/\xfd`\xdd\x04\x85\x0d\x00\xb6\x13=\x1f0s\x1e\
|
|
||||||
\xb3\xfb\x92H\xd4\xdc\x08\xd0\xcdc\xdb\xa9\xa2\xa0\xc4\xa4\
|
|
||||||
\xbco\x17:w\xe6&\x14T4\x0c\x034\x003\x00\
|
|
||||||
4\x00{5\x07\x9f\x8a\x9d\x83\xa1\xb9\x87UdHh\
|
|
||||||
\xae\x9a\xf1\xedE}\x17W\x7fsTl\x0c\xc4:]\
|
|
||||||
a\x8c~\xed\xcfF\xa8l\xff\xd9\x0c\x89i^\xac\x94\
|
|
||||||
\xa7\xb4\xf7\xbe\xac\x18M(4A\x9b,]>\xbe(\
|
|
||||||
/+\x10M\x90n#\x02\xb8\x85n\x9a{\x0fs\xf5\
|
|
||||||
o\xeeWb(\xdf^@\xba\xd4\xec\xff\xba\x081\xf6\
|
|
||||||
\x18\x96\xd4\x1b\xbe\xb9\xd2O\xf6\x8f}Z\xfe\xb4C\xe2\
|
|
||||||
\xfc\x91'\xdf\x8f\xd6\xe45\x9c\x99\x9a\xb2\x9c\xd6\xe2l\
|
|
||||||
\xf5\xd3\xca\x80L\xa6f\xd5\x84\x22im\xa4\x96h\xfc\
|
|
||||||
\xbc6\x95\x9c\xa9\xed\xc8u9\x8a5\x8c\x19\x8c\x85\x10\
|
|
||||||
\xcd\xcdX\xf9J\x1eV\xd1#\x8a\xdd[\xf6\x8b*\x0e\
|
|
||||||
\x95\xeadk@\xb9Z+\x0e\xdc\xf3M\xd4\xdc\xecG\
|
|
||||||
;\xb3/e\xc4Ho/\x0a-\xfe\x87\xa2\x9au\xc2\
|
|
||||||
N\xa0\x91\x1dB\x8a!\x91))LZ\x03@\x84\x18\
|
|
||||||
\xc6\xec\x1c\x03\x00\xb53i!-\xd8t\x01r\x1e\xc8\
|
|
||||||
R\xc2\x99\x15\xe6\xba7\xf5\xb1\x85]\xd9d4\xe6\x0c\
|
|
||||||
\x07\x95\x88^\xe0\xf7\x96\x0d\xeb\xc7\xa2\xaeQ\xbf\x96\xfd\
|
|
||||||
\x93\x9c\xd3\x1cX\x94L7\x1bB\xb5\xb0\xc2tNJ\
|
|
||||||
\x5c\xf0x\x18\x1d\xd3vQ\x82w\xa5\xf6\x18\xb9\xbb\xaa\
|
|
||||||
\x8d)z\x08\x8f\xf5\xb8\x80\xe7*\xab\xbd\x0f\xd2\x92;\
|
|
||||||
\xc4\xaa@\x8bdyf\xa1\x0d\xc2[\xc6\xa0QD\x18\
|
|
||||||
\x97p\xb1\x85\xf3m3\x04\x05\x95=^\xd8SU\xe5\
|
|
||||||
6\x9e\x93%!~\x0d`\x01_\xdb(\x5c\xa0\xa7\x82\
|
|
||||||
\x03\xf0\xd6\xb8\x0d\x97\xd8n\x056\x87\xb4\xaf%\xb4\x0d\
|
|
||||||
\x83\xfb\x1b\xe6\x8aD\x22w*\
|
|
||||||
\x00\x00\x00$\
|
|
||||||
m\
|
|
||||||
odule TopBar\x0aTop\
|
|
||||||
Bar 1.0 TopBar.q\
|
|
||||||
ml\x0a\
|
|
||||||
"
|
|
||||||
|
|
||||||
qt_resource_name = b"\
|
|
||||||
\x00\x03\
|
|
||||||
\x00\x00n\xb9\
|
|
||||||
\x00g\
|
|
||||||
\x00u\x00i\
|
|
||||||
\x00\x0a\
|
|
||||||
\x08\x8e<\xbc\
|
|
||||||
\x00T\
|
|
||||||
\x00o\x00p\x00B\x00a\x00r\x00.\x00q\x00m\x00l\
|
|
||||||
\x00\x06\
|
|
||||||
\x07\x84+\x02\
|
|
||||||
\x00q\
|
|
||||||
\x00m\x00l\x00d\x00i\x00r\
|
|
||||||
"
|
|
||||||
|
|
||||||
qt_resource_struct = b"\
|
|
||||||
\x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x01\
|
|
||||||
\x00\x00\x00\x00\x00\x00\x00\x00\
|
|
||||||
\x00\x00\x00\x00\x00\x02\x00\x00\x00\x02\x00\x00\x00\x02\
|
|
||||||
\x00\x00\x00\x00\x00\x00\x00\x00\
|
|
||||||
\x00\x00\x00&\x00\x00\x00\x00\x00\x01\x00\x00\x01\xbe\
|
|
||||||
\x00\x00\x01\x93+<\x17\x5c\
|
|
||||||
\x00\x00\x00\x0c\x00\x04\x00\x00\x00\x01\x00\x00\x00\x00\
|
|
||||||
\x00\x00\x01\x93*\xc9x\xab\
|
|
||||||
"
|
|
||||||
|
|
||||||
def qInitResources():
|
|
||||||
QtCore.qRegisterResourceData(0x03, qt_resource_struct, qt_resource_name, qt_resource_data)
|
|
||||||
|
|
||||||
def qCleanupResources():
|
|
||||||
QtCore.qUnregisterResourceData(0x03, qt_resource_struct, qt_resource_name, qt_resource_data)
|
|
||||||
|
|
||||||
qInitResources()
|
|
||||||
32
rc_pyqcrm.py
32
rc_pyqcrm.py
@@ -6,10 +6,10 @@
|
|||||||
from PySide6 import QtCore
|
from PySide6 import QtCore
|
||||||
|
|
||||||
qt_resource_data = b"\
|
qt_resource_data = b"\
|
||||||
\x00\x00\x00\x18\
|
\x00\x00\x00\x1a\
|
||||||
[\
|
[\
|
||||||
Controls]\x0aStyle=\
|
Controls]\x0d\x0aStyle\
|
||||||
Fusion\x0a\
|
=Fusion\x0d\x0a\
|
||||||
\x00\x00\x01\x22\
|
\x00\x00\x01\x22\
|
||||||
<\
|
<\
|
||||||
svg xmlns=\x22http:\
|
svg xmlns=\x22http:\
|
||||||
@@ -194,19 +194,19 @@ qt_resource_struct = b"\
|
|||||||
\x00\x00\x000\x00\x02\x00\x00\x00\x06\x00\x00\x00\x03\
|
\x00\x00\x000\x00\x02\x00\x00\x00\x06\x00\x00\x00\x03\
|
||||||
\x00\x00\x00\x00\x00\x00\x00\x00\
|
\x00\x00\x00\x00\x00\x00\x00\x00\
|
||||||
\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\
|
\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\
|
||||||
\x00\x00\x01\x93*\xc9x\xac\
|
\x00\x00\x01\x93)\xa6\xd7i\
|
||||||
\x00\x00\x00\x80\x00\x00\x00\x00\x00\x01\x00\x00\x02\x9f\
|
\x00\x00\x00\x80\x00\x00\x00\x00\x00\x01\x00\x00\x02\xa1\
|
||||||
\x00\x00\x01\x93*\xd6\x0c\xbc\
|
\x00\x00\x01\x93 \xd4\x11\xf3\
|
||||||
\x00\x00\x00\x94\x00\x00\x00\x00\x00\x01\x00\x00\x03Y\
|
\x00\x00\x00\x94\x00\x00\x00\x00\x00\x01\x00\x00\x03[\
|
||||||
\x00\x00\x01\x93*\xd6\x0c\xbd\
|
\x00\x00\x01\x93\x00\x9f\x10\x0d\
|
||||||
\x00\x00\x00\xc4\x00\x00\x00\x00\x00\x01\x00\x00\x05\x9a\
|
\x00\x00\x00\xc4\x00\x00\x00\x00\x00\x01\x00\x00\x05\x9c\
|
||||||
\x00\x00\x01\x93*\xd6\x0c\xbc\
|
\x00\x00\x01\x93 \xd4\x11\xf4\
|
||||||
\x00\x00\x00\x5c\x00\x00\x00\x00\x00\x01\x00\x00\x01B\
|
\x00\x00\x00\x5c\x00\x00\x00\x00\x00\x01\x00\x00\x01D\
|
||||||
\x00\x00\x01\x93*\xd6\x0c\xbc\
|
\x00\x00\x01\x93 \xd4\x11\xf4\
|
||||||
\x00\x00\x00B\x00\x00\x00\x00\x00\x01\x00\x00\x00\x1c\
|
\x00\x00\x00B\x00\x00\x00\x00\x00\x01\x00\x00\x00\x1e\
|
||||||
\x00\x00\x01\x93*\xd6\x0c\xbd\
|
\x00\x00\x01\x93\x00\xcf\xe6\x09\
|
||||||
\x00\x00\x00\xae\x00\x00\x00\x00\x00\x01\x00\x00\x04\xd5\
|
\x00\x00\x00\xae\x00\x00\x00\x00\x00\x01\x00\x00\x04\xd7\
|
||||||
\x00\x00\x01\x93*\xd6\x0c\xbd\
|
\x00\x00\x01\x92\xfc,B\x0e\
|
||||||
"
|
"
|
||||||
|
|
||||||
def qInitResources():
|
def qInitResources():
|
||||||
|
|||||||
272
rc_qml.py
272
rc_qml.py
@@ -1,272 +0,0 @@
|
|||||||
# Resource object code (Python 3)
|
|
||||||
# Created by: object code
|
|
||||||
# Created by: The Resource Compiler for Qt version 6.8.0
|
|
||||||
# WARNING! All changes made in this file will be lost!
|
|
||||||
|
|
||||||
from PySide6 import QtCore
|
|
||||||
|
|
||||||
qt_resource_data = b"\
|
|
||||||
\x00\x00\x01\xbc\
|
|
||||||
(\
|
|
||||||
\xb5/\xfd`\xe0\x04\x95\x0d\x00\xf6\xd3=\x1f0s\x1e\
|
|
||||||
\xb3\xfb\x92H\xd4\xdc\x08\xd0\xcdc\xcb\x14\xd1\xdd\x16\xbb\
|
|
||||||
\xef\xdb\x85\xce\x9d\xb9\x1dJ*\x1a\x86\x014\x004\x00\
|
|
||||||
5\x00\xdb\xe0S\xb1s0l{XE\x86\x84m\xd5\
|
|
||||||
\x8c\xcf]\xd4\xdd\xe2\xea\xdfF\xc5\xdd]\x06b\x9d\xae\
|
|
||||||
0F\xbf\xf6\xc7E\xa8l\xff\xd9\x0c\x89i^\xac\x94\
|
|
||||||
\xa7\xec{_V\x0c\x84\xc2\x0av\xb2t\xf9\xf8\xa2\xbc\
|
|
||||||
\xac@4A\xea\x1a\x11\xc0-t\xb3\xed=\xcc\xd5\x7f\
|
|
||||||
\xdb;\x89\xa1\xdc\xf5\x02RG\xcd\xfe\xaf\x8b\x10c\x8f\
|
|
||||||
aI\xbd\xe1\x9bN\xfa\xc9\xee\xae\xec\x93\xe3O;$\
|
|
||||||
\xce\x1fyr\xf7\xd1\xe2\xc9k835e99\x8b\
|
|
||||||
\xb3\xd5O+\x032\x99\x9aU\x13\x8a\xa4\xb5\x916\xb1\
|
|
||||||
\xfc\xbc6\x95\x9c)\xd7\x91\xebj\x14k\x18\xb3\x03\x8c\
|
|
||||||
\x85\x10\xdbf\xac\xdcI\x1eV\xd1#\x8a\xdd[\xf6\x8b\
|
|
||||||
*\x0e\x95\xeadk@\xb9rV\x1c\xb4\xe7\x9bh\xdb\
|
|
||||||
\xecG;\xe3^\xca\x88\x91\x9e\xbb(\xb4\xf8\x1f\x8aj\
|
|
||||||
\xd6\x09_M\xa0\x91!B\x88!\x91!)L\xb3\x06\
|
|
||||||
@\x84\x18\xc6\xcc\xea\x03e7\xa1`/\xb3\xeb\x00\xe4\
|
|
||||||
\xbc\xc9b\x9a3;\xcc6\xde\x15\xc6\x96qq\x93\xd1\
|
|
||||||
\x9a3\x5c\xe4$)\x1b\x7f\x98\xedl2\x12[]\x91\
|
|
||||||
\xfd(\xcf)wR#\xa0*7o4\x08\xc1\xd2\x0a\
|
|
||||||
';*\x83\xb1'\xa1T\xb1\xcfRL\x01\x832{\
|
|
||||||
\x82\xfc\xddj{\x12=\x84\xdf>B\xf0\xf3\x94\xda\x9e\
|
|
||||||
\x07\xb9\x92;`UX\x8bdyf\xe1\x1a\xd0[\xf2\
|
|
||||||
\xa0YD\x18\x97\xbc\xb8\xb2\x13m3\xc3B\xc9\x08\x1f\
|
|
||||||
\xf2\xac\xaar\x1b\xcf\xc9J8\xbf\x0eX\xcb\xd7o\x14\
|
|
||||||
/\xe0\xa9\xd8Ax5n\xee%\xb6[\x81\xcdC\xc4\
|
|
||||||
\x1d\xbf\xda\x7fahCL\x91q\x1a\
|
|
||||||
\x00\x00\x03,\
|
|
||||||
i\
|
|
||||||
mport QtQuick\x0aim\
|
|
||||||
port QtQuick.Con\
|
|
||||||
trols\x0aimport QtQ\
|
|
||||||
uick.Layouts\x0a\x0aGr\
|
|
||||||
idLayout\x0a{\x0a i\
|
|
||||||
d: passEncryptKe\
|
|
||||||
yGrid\x0a column\
|
|
||||||
s: 2\x0a columnS\
|
|
||||||
pacing: 5\x0a ro\
|
|
||||||
wSpacing: 9\x0a \
|
|
||||||
// anchors.fill:\
|
|
||||||
parent\x0a\x0a pro\
|
|
||||||
perty string nam\
|
|
||||||
e: \x22pyqcrm\x22\x0a\x0a \
|
|
||||||
Label\x0a {\x0a \
|
|
||||||
text: qsTr(\
|
|
||||||
\x22Encryption Key \
|
|
||||||
eingeben\x22)\x0a \
|
|
||||||
font.pixelSiz\
|
|
||||||
e: 40\x0a La\
|
|
||||||
yout.columnSpan:\
|
|
||||||
2\x0a Layou\
|
|
||||||
t.alignment: Qt.\
|
|
||||||
AlignHCenter\x0a \
|
|
||||||
padding: 15\
|
|
||||||
\x0a }\x0a\x0a\x0a Lab\
|
|
||||||
el\x0a {\x0a \
|
|
||||||
text: qsTr(\x22Enc\
|
|
||||||
ryption Key:\x22)\x0a \
|
|
||||||
Layout.al\
|
|
||||||
ignment: Qt.Alig\
|
|
||||||
nRight\x0a }\x0a\x0a \
|
|
||||||
TextField\x0a \
|
|
||||||
{\x0a id: pa\
|
|
||||||
ssEncryptKey\x0a \
|
|
||||||
placeholder\
|
|
||||||
Text: qsTr(\x22Hier\
|
|
||||||
Encryption Key \
|
|
||||||
eingeben\x22)\x0a \
|
|
||||||
Layout.fillWi\
|
|
||||||
dth: true\x0a \
|
|
||||||
height: 3\x0a \
|
|
||||||
echoMode: Te\
|
|
||||||
xtInput.Password\
|
|
||||||
\x0a propert\
|
|
||||||
y string name: \x22\
|
|
||||||
ENCRYPT_KEY\x22\x0a \
|
|
||||||
}\x0a\x0a Item\x0a \
|
|
||||||
{\x0a Layou\
|
|
||||||
t.fillHeight: tr\
|
|
||||||
ue\x0a }\x0a}\x0a\
|
|
||||||
\x00\x00\x00!\
|
|
||||||
m\
|
|
||||||
odule gui\x0aTopBar\
|
|
||||||
1.0 TopBar.qml\x0a\
|
|
||||||
\
|
|
||||||
\x00\x00\x01\xfc\
|
|
||||||
(\
|
|
||||||
\xb5/\xfd`\x8f\x06\x95\x0f\x00\xe6\xd8M \xf0\x18=\
|
|
||||||
\xd0E\x8b\xadru:\x98\xfd\x06\x97G\xab\x9e\xb2\xe6\
|
|
||||||
;C\xd5\xda{k,,\x0e\x034\xef\x05B\x00C\
|
|
||||||
\x00E\x00X\xc7\x90\xa5\x9c\xf44C\xc7l\xbb\xaf^\
|
|
||||||
n\x9b\x1d'\x8d\x8f\xe5k\x9f1\x05u\x96\xb4\xcaF\
|
|
||||||
=v\xefb\xaf\x07\x83\xeen\xa8\x82\x93b\x09\x840\
|
|
||||||
\xffwQ\x92\x92\xeb\xc5o\xaf\xe3\x82#\x8e~\x99\xcf\
|
|
||||||
\xf4\xe3\xebu4\xf1\xadw6D\xab4t\xb4\x17\x01\
|
|
||||||
\xd1\xd1ST\xab~\xa2\xde\xf5\xf6\x82\x02\x96\xf5\x90\xfd\
|
|
||||||
j\xf5\xcf\x96Bzd\xe5f\xfd\xe5\xc3\x02\xe0M&\
|
|
||||||
u\xfc\x93\x7f\xf5MR,\xcfr\x93/\xa7\xd5\xd1;\
|
|
||||||
i\x1b\x7f\x86\x0a\xd3\xc5\x01r\xd2*K\xf8b\xac\x8d\
|
|
||||||
v\xc9>\x8d\x87\x7f\xf8;\x8a~RO\xad\x14d}\
|
|
||||||
\xf3\x90\xa5\xde\x8d\x9df\x1b\xec\xb3^\x91s\xb2\xce\xea\
|
|
||||||
4\xf2'\xdf\xc0\x17\x85\xa8&`\xc5\xcf7\x134\xe0\
|
|
||||||
\xaa0\xa7\xf4\xb0\xbfuG\xc6\xb8>\xd3\x01p\xe5Y\
|
|
||||||
\xe7?\xd14\x06\xe6\xfa\xcf\xb3\x93\xe8\xf3V\xae\x88\xf3\
|
|
||||||
i\xcaYBK\x03\xd18\xd83\xc7bO\xfdg\xbd\
|
|
||||||
\x01\xa90,\xdeI\x8b\xe6\x82Y-\xb0\x03\x86%:\
|
|
||||||
z\xf7{\x81\x19\x08\x85\x8e\xdd\xfd\xbf\x9b\xaa\xf3v\xd2\
|
|
||||||
\x11\xdf\x0fL\xa0\x91\x11B\xd0\x90\x88\x8d\x92(\x951\
|
|
||||||
PF \xa6\xca<Z\x99\xf8X\xc3\x03B\x9fEu\
|
|
||||||
\x8d]\xa4\xa9?Ejk\x0e\xed9\x942\xcf\xdd\xfa\
|
|
||||||
\x02\x84AVW&Q\x5cE:\xa4(e-\xca\x98\
|
|
||||||
\xb9\xaa\xf0\xb4yT\xa5\x04\xbf\xadl\xe1\xbeB0\x09\
|
|
||||||
\x89\x94!\x8d\xfc\xf8;\x0d\x1c\x10\xc2\xfa\xe7*pB\
|
|
||||||
\xd3M.\xf4\x01\xac\x0b\x857X\x0a\xe8\xa0G6;\
|
|
||||||
\x126JY\xba\xda\xa2-\xce\x04.\xc7\x1a=\x18n\
|
|
||||||
r\xfb\xb1$|t7Ml\xd4\x0f[\x00\xa2[K\
|
|
||||||
\xa1\xd0\xa1\xf1\x14\xda\xa8J\x08\x16gTw\x9c6\xa4\
|
|
||||||
\x0dp_k\xbd\xb4^\x0as\x0f\x86\x0b\x0a\xcd\xe5\xd9\
|
|
||||||
F^F\x8d\x86^ E\xe47\x05\
|
|
||||||
\x00\x00\x05>\
|
|
||||||
i\
|
|
||||||
mport QtQuick\x0aim\
|
|
||||||
port QtQuick.Con\
|
|
||||||
trols\x0aimport QtQ\
|
|
||||||
uick.Layouts\x0a\x0aGr\
|
|
||||||
idLayout\x0a{\x0a i\
|
|
||||||
d: createUserGri\
|
|
||||||
d\x0a columns: 2\
|
|
||||||
\x0a columnSpaci\
|
|
||||||
ng: 5\x0a rowSpa\
|
|
||||||
cing: 9\x0a // a\
|
|
||||||
nchors.fill: par\
|
|
||||||
ent\x0a\x0a propert\
|
|
||||||
y string name: \x22\
|
|
||||||
user\x22\x0a\x0a Label\
|
|
||||||
\x0a {\x0a t\
|
|
||||||
ext: qsTr(\x22Admin\
|
|
||||||
User erstellen\x22\
|
|
||||||
)\x0a font.p\
|
|
||||||
ixelSize: 40\x0a \
|
|
||||||
Layout.colu\
|
|
||||||
mnSpan: 2\x0a \
|
|
||||||
Layout.alignme\
|
|
||||||
nt: Qt.AlignHCen\
|
|
||||||
ter\x0a padd\
|
|
||||||
ing: 15\x0a }\x0a\x0a\x0a\
|
|
||||||
Label\x0a {\x0a\
|
|
||||||
text: qs\
|
|
||||||
Tr(\x22Benutzername\
|
|
||||||
:\x22)\x0a Layo\
|
|
||||||
ut.alignment: Qt\
|
|
||||||
.AlignRight\x0a \
|
|
||||||
}\x0a\x0a TextField\
|
|
||||||
\x0a {\x0a i\
|
|
||||||
d: benutzerName\x0a\
|
|
||||||
placehol\
|
|
||||||
derText: qsTr(\x22H\
|
|
||||||
ier Benutzername\
|
|
||||||
eingeben\x22)\x0a \
|
|
||||||
Layout.fillW\
|
|
||||||
idth: true\x0a \
|
|
||||||
height: 3\x0a \
|
|
||||||
property st\
|
|
||||||
ring name: \x22PYQC\
|
|
||||||
RM_USER\x22\x0a }\x0a\x0a\
|
|
||||||
Label\x0a {\x0a\
|
|
||||||
text: qs\
|
|
||||||
Tr(\x22Passwort:\x22)\x0a\
|
|
||||||
Layout.a\
|
|
||||||
lignment: Qt.Ali\
|
|
||||||
gnRight\x0a }\x0a\x0a \
|
|
||||||
TextField\x0a \
|
|
||||||
{\x0a id: p\
|
|
||||||
assword\x0a \
|
|
||||||
echoMode: TextIn\
|
|
||||||
put.Password\x0a \
|
|
||||||
placeholder\
|
|
||||||
Text: qsTr(\x22Hier\
|
|
||||||
Passwort eingeb\
|
|
||||||
en\x22)\x0a Lay\
|
|
||||||
out.fillWidth: t\
|
|
||||||
rue\x0a prop\
|
|
||||||
erty string name\
|
|
||||||
: \x22PYQCRM_USER_P\
|
|
||||||
ASS\x22\x0a }\x0a L\
|
|
||||||
abel\x0a {\x0a \
|
|
||||||
text: qsTr(\x22I\
|
|
||||||
nfo:\x22)\x0a L\
|
|
||||||
ayout.alignment:\
|
|
||||||
Qt.AlignRight\x0a \
|
|
||||||
}\x0a\x0a TextFi\
|
|
||||||
eld\x0a {\x0a \
|
|
||||||
id: gecos\x0a \
|
|
||||||
placeholderT\
|
|
||||||
ext: qsTr(\x22Zus\xc3\xa4\
|
|
||||||
tzliche Info\x22)\x0a \
|
|
||||||
Layout.fi\
|
|
||||||
llWidth: true\x0a \
|
|
||||||
property s\
|
|
||||||
tring name: \x22PYQ\
|
|
||||||
CRM_USER_INFO\x22\x0a \
|
|
||||||
}\x0a\x0a Item\x0a \
|
|
||||||
{\x0a Lay\
|
|
||||||
out.fillHeight: \
|
|
||||||
true\x0a }\x0a}\x0a\
|
|
||||||
"
|
|
||||||
|
|
||||||
qt_resource_name = b"\
|
|
||||||
\x00\x03\
|
|
||||||
\x00\x00N\xb9\
|
|
||||||
\x00G\
|
|
||||||
\x00u\x00i\
|
|
||||||
\x00\x0a\
|
|
||||||
\x08\x8e<\xbc\
|
|
||||||
\x00T\
|
|
||||||
\x00o\x00p\x00B\x00a\x00r\x00.\x00q\x00m\x00l\
|
|
||||||
\x00\x11\
|
|
||||||
\x00\x11r\xdc\
|
|
||||||
\x00E\
|
|
||||||
\x00n\x00c\x00r\x00y\x00p\x00t\x00i\x00o\x00n\x00K\x00e\x00y\x00.\x00q\x00m\x00l\
|
|
||||||
\
|
|
||||||
\x00\x06\
|
|
||||||
\x07\x84+\x02\
|
|
||||||
\x00q\
|
|
||||||
\x00m\x00l\x00d\x00i\x00r\
|
|
||||||
\x00\x13\
|
|
||||||
\x0aQ\xd8\x1c\
|
|
||||||
\x00D\
|
|
||||||
\x00b\x00C\x00o\x00n\x00f\x00i\x00g\x00u\x00r\x00a\x00t\x00i\x00o\x00n\x00.\x00q\
|
|
||||||
\x00m\x00l\
|
|
||||||
\x00\x13\
|
|
||||||
\x01\xa7!\xbc\
|
|
||||||
\x00A\
|
|
||||||
\x00d\x00m\x00i\x00n\x00U\x00s\x00e\x00r\x00C\x00o\x00n\x00f\x00i\x00g\x00.\x00q\
|
|
||||||
\x00m\x00l\
|
|
||||||
"
|
|
||||||
|
|
||||||
qt_resource_struct = b"\
|
|
||||||
\x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x01\
|
|
||||||
\x00\x00\x00\x00\x00\x00\x00\x00\
|
|
||||||
\x00\x00\x00\x00\x00\x02\x00\x00\x00\x05\x00\x00\x00\x02\
|
|
||||||
\x00\x00\x00\x00\x00\x00\x00\x00\
|
|
||||||
\x00\x00\x00&\x00\x00\x00\x00\x00\x01\x00\x00\x01\xc0\
|
|
||||||
\x00\x00\x01\x93c~Y\x0a\
|
|
||||||
\x00\x00\x00\x8c\x00\x00\x00\x00\x00\x01\x00\x00\x07\x15\
|
|
||||||
\x00\x00\x01\x93h\xe8\xab\xf0\
|
|
||||||
\x00\x00\x00N\x00\x00\x00\x00\x00\x01\x00\x00\x04\xf0\
|
|
||||||
\x00\x00\x01\x930& \x0f\
|
|
||||||
\x00\x00\x00\x0c\x00\x04\x00\x00\x00\x01\x00\x00\x00\x00\
|
|
||||||
\x00\x00\x01\x93s\x11\x00\xaa\
|
|
||||||
\x00\x00\x00`\x00\x04\x00\x00\x00\x01\x00\x00\x05\x15\
|
|
||||||
\x00\x00\x01\x93c\xd7\xe0,\
|
|
||||||
"
|
|
||||||
|
|
||||||
def qInitResources():
|
|
||||||
QtCore.qRegisterResourceData(0x03, qt_resource_struct, qt_resource_name, qt_resource_data)
|
|
||||||
|
|
||||||
def qCleanupResources():
|
|
||||||
QtCore.qUnregisterResourceData(0x03, qt_resource_struct, qt_resource_name, qt_resource_data)
|
|
||||||
|
|
||||||
qInitResources()
|
|
||||||
Reference in New Issue
Block a user