def testGSNameWidgetInvalidName(self): # base invalid name is empty nw = GSNameWidget(name='') self.assertFalse(nw.isValid()) nw.validateName('') self.assertFalse(nw.isValid()) nw.highlightName() self.assertNotEqual(nw.nameBox.lineEdit().styleSheet(), '') invalidnames = ['xMl_name', 'name with spaces', '9starts_with_number', ':starts_with_punctuation'] # XML invalid name nw.setNameRegex(xmlNameRegex(), xmlNameRegexMsg()) self.assertFalse(nw.isValid()) self.assertIsNone(nw.definedName()) for ivname in invalidnames: nw.setName(ivname) self.assertFalse(nw.isValid()) # empty name regex nw.setName('') nw.setNameRegex(xmlNameEmptyRegex(), xmlNameRegexMsg()) self.assertTrue(nw.isValid()) self.assertEqual(nw.definedName(), '') for ivname in invalidnames: nw.setName(ivname) self.assertFalse(nw.isValid()) # custom regex invalid name nw.setNameRegex(r'^(?!XML|\d|\W)[a-z](\S(?!::))*', 'regex message') nw.setName('my::name') self.assertFalse(nw.isValid())
def testGSNameWidgetValidName(self): nw = GSNameWidget(name='my_pg_connection') self.assertTrue(nw.isValid()) self.assertIsNotNone(nw.definedName()) self.assertEqual(nw.definedName(), 'my_pg_connection') nw.validateName('my_pg_connection') self.assertTrue(nw.isValid()) nw.highlightName() self.assertEqual(nw.nameBox.lineEdit().styleSheet(), '') validnames = ['name_8291', 'name.with.dots', 'name:with::colons', '_name_with_underscore'] # XML valid name nw.setNameRegex(xmlNameRegex(), xmlNameRegexMsg()) self.assertTrue(nw.isValid()) for vname in validnames: nw.setName(vname) self.assertTrue(nw.isValid()) # empty name regex nw.setName('') nw.setNameRegex(xmlNameEmptyRegex(), xmlNameRegexMsg()) self.assertTrue(nw.isValid()) nw.setAllowEmpty(True) self.assertTrue(nw.isValid()) self.assertEqual(nw.definedName(), '') for vname in validnames: nw.setName(vname) self.assertTrue(nw.isValid())
def initGui(self): layout = QtGui.QVBoxLayout() self.setWindowTitle('Publish project') verticalLayout = QtGui.QVBoxLayout() horizontalLayout = QtGui.QHBoxLayout() horizontalLayout.setSpacing(30) horizontalLayout.setMargin(0) catalogLabel = QtGui.QLabel('Catalog') self.catalogBox = QtGui.QComboBox() self.catalogBox.addItems(self.catalogs.keys()) self.catalogBox.currentIndexChanged.connect(self.catalogHasChanged) horizontalLayout.addWidget(catalogLabel) horizontalLayout.addWidget(self.catalogBox) verticalLayout.addLayout(horizontalLayout) horizontalLayout = QtGui.QHBoxLayout() horizontalLayout.setSpacing(30) horizontalLayout.setMargin(0) workspaceLabel = QtGui.QLabel('Workspace') self.workspaceBox = QtGui.QComboBox() cat = self.catalogs[self.catalogs.keys()[0]] self.workspaces = cat.get_workspaces() try: defaultWorkspace = cat.get_default_workspace() defaultWorkspace.fetch() defaultName = defaultWorkspace.dom.find('name').text except: defaultName = None workspaceNames = [w.name for w in self.workspaces] self.workspaceBox.addItems(workspaceNames) if defaultName is not None: self.workspaceBox.setCurrentIndex(workspaceNames.index(defaultName)) horizontalLayout.addWidget(workspaceLabel) horizontalLayout.addWidget(self.workspaceBox) verticalLayout.addLayout(horizontalLayout) self.destGroupBox = QtGui.QGroupBox() self.destGroupBox.setLayout(verticalLayout) verticalLayout = QtGui.QVBoxLayout() horizontalLayout = QtGui.QHBoxLayout() horizontalLayout.setSpacing(30) horizontalLayout.setMargin(0) groupLabel = QtGui.QLabel('Global group name') groupnames = [grp.name for grp in cat.get_layergroups()] self.groupNameBox = GSNameWidget( nameregex=xmlNameEmptyRegex(), nameregexmsg=xmlNameRegexMsg(), names=groupnames, unique=True, allowempty=True) horizontalLayout.addWidget(groupLabel) horizontalLayout.addWidget(self.groupNameBox) verticalLayout.addLayout(horizontalLayout) self.groupGroupBox = QtGui.QGroupBox() self.groupGroupBox.setLayout(verticalLayout) layout.addWidget(self.destGroupBox) layout.addWidget(self.groupGroupBox) overwriteLabel = QtGui.QLabel( "Ungrouped layers will be published first.\n" "No GeoServer items will be overwritten.") overwriteLabel.setAlignment(QtCore.Qt.AlignHCenter) f = overwriteLabel.font() f.setItalic(True) overwriteLabel.setFont(f) layout.addWidget(overwriteLabel) self.buttonBox = QtGui.QDialogButtonBox( QtGui.QDialogButtonBox.Ok | QtGui.QDialogButtonBox.Close) self.okButton = self.buttonBox.button(QtGui.QDialogButtonBox.Ok) self.cancelButton = self.buttonBox.button(QtGui.QDialogButtonBox.Close) layout.addWidget(self.buttonBox) self.setLayout(layout) self.buttonBox.accepted.connect(self.okPressed) self.buttonBox.rejected.connect(self.cancelPressed) self.groupNameBox.nameValidityChanged.connect(self.validateGroupName) # set initial enabled state of Ok button self.validateGroupName() self.resize(400,200)
def initGui(self): layout = QtGui.QVBoxLayout() self.setWindowTitle('Publish project') verticalLayout = QtGui.QVBoxLayout() horizontalLayout = QtGui.QHBoxLayout() horizontalLayout.setSpacing(30) horizontalLayout.setMargin(0) catalogLabel = QtGui.QLabel('Catalog') self.catalogBox = QtGui.QComboBox() self.catalogBox.addItems(self.catalogs.keys()) self.catalogBox.currentIndexChanged.connect(self.catalogHasChanged) horizontalLayout.addWidget(catalogLabel) horizontalLayout.addWidget(self.catalogBox) verticalLayout.addLayout(horizontalLayout) horizontalLayout = QtGui.QHBoxLayout() horizontalLayout.setSpacing(30) horizontalLayout.setMargin(0) workspaceLabel = QtGui.QLabel('Workspace') self.workspaceBox = QtGui.QComboBox() cat = self.catalogs[self.catalogs.keys()[0]] self.workspaces = cat.get_workspaces() try: defaultWorkspace = cat.get_default_workspace() defaultWorkspace.fetch() defaultName = defaultWorkspace.dom.find('name').text except: defaultName = None workspaceNames = [w.name for w in self.workspaces] self.workspaceBox.addItems(workspaceNames) if defaultName is not None: self.workspaceBox.setCurrentIndex( workspaceNames.index(defaultName)) horizontalLayout.addWidget(workspaceLabel) horizontalLayout.addWidget(self.workspaceBox) verticalLayout.addLayout(horizontalLayout) self.destGroupBox = QtGui.QGroupBox() self.destGroupBox.setLayout(verticalLayout) verticalLayout = QtGui.QVBoxLayout() horizontalLayout = QtGui.QHBoxLayout() horizontalLayout.setSpacing(30) horizontalLayout.setMargin(0) groupLabel = QtGui.QLabel('Global group name') groupnames = [grp.name for grp in cat.get_layergroups()] self.groupNameBox = GSNameWidget(nameregex=xmlNameEmptyRegex(), nameregexmsg=xmlNameRegexMsg(), names=groupnames, unique=True, allowempty=True) horizontalLayout.addWidget(groupLabel) horizontalLayout.addWidget(self.groupNameBox) verticalLayout.addLayout(horizontalLayout) self.groupGroupBox = QtGui.QGroupBox() self.groupGroupBox.setLayout(verticalLayout) layout.addWidget(self.destGroupBox) layout.addWidget(self.groupGroupBox) overwriteLabel = QtGui.QLabel( "Ungrouped layers will be published first.\n" "No GeoServer items will be overwritten.") overwriteLabel.setAlignment(QtCore.Qt.AlignHCenter) f = overwriteLabel.font() f.setItalic(True) overwriteLabel.setFont(f) layout.addWidget(overwriteLabel) self.buttonBox = QtGui.QDialogButtonBox(QtGui.QDialogButtonBox.Ok | QtGui.QDialogButtonBox.Close) self.okButton = self.buttonBox.button(QtGui.QDialogButtonBox.Ok) self.cancelButton = self.buttonBox.button(QtGui.QDialogButtonBox.Close) layout.addWidget(self.buttonBox) self.setLayout(layout) self.buttonBox.accepted.connect(self.okPressed) self.buttonBox.rejected.connect(self.cancelPressed) self.groupNameBox.nameValidityChanged.connect(self.validateGroupName) # set initial enabled state of Ok button self.validateGroupName() self.resize(400, 200)