mirror of
https://git.salome-platform.org/gitpub/modules/smesh.git
synced 2024-12-27 09:50:34 +05:00
bug corrections in Zcracks for V83
This commit is contained in:
parent
d1bb1f5d44
commit
1a3a88cfc9
@ -2,15 +2,20 @@ import sys, os, shutil, pickle, tempfile
|
|||||||
import main, genereCrack, Zset
|
import main, genereCrack, Zset
|
||||||
import utilityFunctions as uF
|
import utilityFunctions as uF
|
||||||
|
|
||||||
|
os.environ['QT_QPA_PLATFORM_PLUGIN_PATH']=os.path.join(os.environ['QTDIR'],'plugins','platforms')
|
||||||
|
|
||||||
|
if 'MESHGEMSHOME' in os.environ:
|
||||||
|
meshgemsdir=os.environ['MESHGEMSHOME']
|
||||||
|
if len(meshgemsdir) > 0:
|
||||||
|
meshgems=meshgemsdir.split(os.sep)[-1]
|
||||||
|
uF.removeFromSessionPath('LD_LIBRARY_PATH', meshgems)
|
||||||
|
|
||||||
#commande="/bin/bash -c ""source $HOME/zebulon/Z8.6.6_NEW/do_config_bash"""
|
#commande="/bin/bash -c ""source $HOME/zebulon/Z8.6.6_NEW/do_config_bash"""
|
||||||
#os.system(commande)
|
#os.system(commande)
|
||||||
|
|
||||||
def IHM():
|
def IHM():
|
||||||
|
|
||||||
try:
|
|
||||||
from PyQt5.QtWidgets import QApplication
|
from PyQt5.QtWidgets import QApplication
|
||||||
except:
|
|
||||||
from PyQt4.QtGui import QApplication
|
|
||||||
|
|
||||||
app = QApplication(sys.argv)
|
app = QApplication(sys.argv)
|
||||||
myapp = main.ShipHolderApplication()
|
myapp = main.ShipHolderApplication()
|
||||||
@ -31,8 +36,7 @@ def SCRIPT(dataFile=None, data=None, dim=3, names=None):
|
|||||||
|
|
||||||
print data
|
print data
|
||||||
|
|
||||||
tmpdir=tempfile.mkdtemp()
|
tmpdir=tempfile.mkdtemp(prefix='tmpZcracks')
|
||||||
uF.removeFromSessionPath('LD_LIBRARY_PATH', 'Meshgems-2111')
|
|
||||||
|
|
||||||
if names==None: names={'saneGeoName':'salome_sane', 'crackGeoName':'salome_crack', 'crackedGeoName':'salome_cracked'}
|
if names==None: names={'saneGeoName':'salome_sane', 'crackGeoName':'salome_crack', 'crackedGeoName':'salome_cracked'}
|
||||||
|
|
||||||
|
@ -18,13 +18,13 @@ import string
|
|||||||
|
|
||||||
#tmpdir = "/local00/home/B27118/projets/Zcracks/Zcracks/casTests/tmpdir"
|
#tmpdir = "/local00/home/B27118/projets/Zcracks/Zcracks/casTests/tmpdir"
|
||||||
#if not os.path.isdir(tmpdir): os.mkdir(tmpdir)
|
#if not os.path.isdir(tmpdir): os.mkdir(tmpdir)
|
||||||
tmpdir=tempfile.mktemp(prefix='tmpZcracks')
|
tmpdir=tempfile.mkdtemp(prefix='tmpZcracks')
|
||||||
print "tmpdir=", tmpdir
|
print "tmpdir=", tmpdir
|
||||||
|
|
||||||
meshgemsdir=os.environ('MESHGEMSHOME')
|
#meshgemsdir=os.environ('MESHGEMSHOME')
|
||||||
if len(meshgemsdir) > 0:
|
#if len(meshgemsdir) > 0:
|
||||||
meshgems=string.split(meshgemsdir,os.sep)[-1]
|
#meshgems=string.split(meshgemsdir,os.sep)[-1]
|
||||||
uF.removeFromSessionPath('LD_LIBRARY_PATH', meshgems)
|
#uF.removeFromSessionPath('LD_LIBRARY_PATH', meshgems)
|
||||||
|
|
||||||
def LAUNCH(listCas=[]):
|
def LAUNCH(listCas=[]):
|
||||||
if type(listCas)!=list: listCas=[listCas]
|
if type(listCas)!=list: listCas=[listCas]
|
||||||
|
@ -1,13 +1,9 @@
|
|||||||
import sys, pickle, tempfile, shutil
|
import sys, pickle, tempfile, shutil
|
||||||
from os import path, getpid, environ, remove, system
|
from os import path, getpid, environ, remove, system
|
||||||
|
|
||||||
try:
|
from PyQt5.QtCore import *
|
||||||
from PyQt5.QtCore import *
|
from PyQt5.QtGui import *
|
||||||
from PyQt5.QtGui import *
|
from PyQt5.QtWidgets import *
|
||||||
from PyQt5.QtWidgets import *
|
|
||||||
except:
|
|
||||||
from PyQt4.QtCore import *
|
|
||||||
from PyQt4.QtGui import *
|
|
||||||
|
|
||||||
import utilityFunctions as uF
|
import utilityFunctions as uF
|
||||||
import genereCrack, Zset, output, zcracks_ui
|
import genereCrack, Zset, output, zcracks_ui
|
||||||
@ -21,8 +17,6 @@ from zcracks_ui import Ui_Zui
|
|||||||
# ---------------------
|
# ---------------------
|
||||||
|
|
||||||
|
|
||||||
uF.removeFromSessionPath('LD_LIBRARY_PATH', 'Meshgems-2111')
|
|
||||||
|
|
||||||
def stringToFloat(string, typ=float):
|
def stringToFloat(string, typ=float):
|
||||||
if str(string).replace(' ','')=='':
|
if str(string).replace(' ','')=='':
|
||||||
out=[]
|
out=[]
|
||||||
@ -78,25 +72,6 @@ class ShipHolderApplication(QGroupBox):
|
|||||||
|
|
||||||
self.verbose=1
|
self.verbose=1
|
||||||
|
|
||||||
#self.connect(self.ui.CBQuad, SIGNAL("toggled(bool)"),self.pressQuad)
|
|
||||||
#self.connect(self.ui.btReset, SIGNAL("clicked()"),self.pressReset)
|
|
||||||
#self.connect(self.ui.btCancel, SIGNAL("clicked()"),self.pressCancel)
|
|
||||||
#self.connect(self.ui.btApply, SIGNAL("clicked()"),self.pressApply)
|
|
||||||
#self.connect(self.ui.btApplyClose, SIGNAL("clicked()"),self.pressApplyClose)
|
|
||||||
#self.connect(self.ui.btLoad, SIGNAL("clicked()"),self.pressCharger)
|
|
||||||
#self.connect(self.ui.btSave, SIGNAL("clicked()"),self.pressSauver)
|
|
||||||
#self.connect(self.ui.btLoadCracked, SIGNAL("clicked()"),self.pressLoadCracked)
|
|
||||||
#self.connect(self.ui.btLoadSane, SIGNAL("clicked()"),self.pressLoadSane)
|
|
||||||
|
|
||||||
#self.connect(self.ui.btGrVol, SIGNAL("clicked()"),self.pressLoadGroupVOL)
|
|
||||||
#self.connect(self.ui.btGrFace, SIGNAL("clicked()"),self.pressLoadGroupFACE)
|
|
||||||
#self.connect(self.ui.btGrEdge, SIGNAL("clicked()"),self.pressLoadGroupEDGE)
|
|
||||||
#self.connect(self.ui.btGrNode, SIGNAL("clicked()"),self.pressLoadGroupNODE)
|
|
||||||
#self.connect(self.ui.btGrAll, SIGNAL("clicked()"),self.pressLoadGroupALL)
|
|
||||||
#self.connect(self.ui.btVisu, SIGNAL("clicked()"),self.pressVisu)
|
|
||||||
|
|
||||||
#self.connect(self.ui.CBAdvanced, SIGNAL("toggled(bool)"),self.pressAdvanced)
|
|
||||||
|
|
||||||
self.ui.CBQuad.toggled.connect(self.pressQuad)
|
self.ui.CBQuad.toggled.connect(self.pressQuad)
|
||||||
self.ui.btReset.clicked.connect(self.pressReset)
|
self.ui.btReset.clicked.connect(self.pressReset)
|
||||||
self.ui.btCancel.clicked.connect(self.pressCancel)
|
self.ui.btCancel.clicked.connect(self.pressCancel)
|
||||||
@ -144,9 +119,9 @@ class ShipHolderApplication(QGroupBox):
|
|||||||
def pressQuad(self):
|
def pressQuad(self):
|
||||||
if self.ui.CBQuad.isChecked():
|
if self.ui.CBQuad.isChecked():
|
||||||
self.ui.CBBarsoum.setEnabled(True)
|
self.ui.CBBarsoum.setEnabled(True)
|
||||||
self.ui.valGradation.setText(QString('2.3'))
|
self.ui.valGradation.setText('2.3')
|
||||||
else:
|
else:
|
||||||
self.ui.valGradation.setText(QString('1.3'))
|
self.ui.valGradation.setText('1.3')
|
||||||
self.ui.CBBarsoum.setChecked(False)
|
self.ui.CBBarsoum.setChecked(False)
|
||||||
self.ui.CBBarsoum.setEnabled(False)
|
self.ui.CBBarsoum.setEnabled(False)
|
||||||
|
|
||||||
@ -162,10 +137,10 @@ class ShipHolderApplication(QGroupBox):
|
|||||||
tab=onglet.findChildren(QTableWidget)[0]
|
tab=onglet.findChildren(QTableWidget)[0]
|
||||||
for irow in range(tab.rowCount()):
|
for irow in range(tab.rowCount()):
|
||||||
if tab.item(irow,0) != None:
|
if tab.item(irow,0) != None:
|
||||||
tab.item(irow,0).setText(QString(''))
|
tab.item(irow,0).setText('')
|
||||||
self.ui.valGradation.setText(QString('1.3'))
|
self.ui.valGradation.setText('1.3')
|
||||||
self.ui.valLayers.setText(QString('5'))
|
self.ui.valLayers.setText('6')
|
||||||
self.ui.valIterations.setText(QString('2'))
|
self.ui.valIterations.setText('2')
|
||||||
self.ui.CBIs2D.setChecked(False)
|
self.ui.CBIs2D.setChecked(False)
|
||||||
self.ui.CBRefine.setChecked(False)
|
self.ui.CBRefine.setChecked(False)
|
||||||
|
|
||||||
@ -257,7 +232,7 @@ class ShipHolderApplication(QGroupBox):
|
|||||||
fileNames = fileDiag.selectedFiles()
|
fileNames = fileDiag.selectedFiles()
|
||||||
filedef = fileNames[0]
|
filedef = fileNames[0]
|
||||||
filedef = addExtension(str(filedef), 'med')
|
filedef = addExtension(str(filedef), 'med')
|
||||||
self.ui.valCrackedName.setText(QString(filedef))
|
self.ui.valCrackedName.setText(filedef)
|
||||||
|
|
||||||
|
|
||||||
def pressLoadSane(self):
|
def pressLoadSane(self):
|
||||||
@ -268,7 +243,7 @@ class ShipHolderApplication(QGroupBox):
|
|||||||
if fileDiag.exec_() :
|
if fileDiag.exec_() :
|
||||||
fileNames = fileDiag.selectedFiles()
|
fileNames = fileDiag.selectedFiles()
|
||||||
filedef = fileNames[0]
|
filedef = fileNames[0]
|
||||||
self.ui.valSaneName.setText(QString(filedef))
|
self.ui.valSaneName.setText(filedef)
|
||||||
|
|
||||||
|
|
||||||
def pressCharger(self):
|
def pressCharger(self):
|
||||||
@ -287,23 +262,15 @@ class ShipHolderApplication(QGroupBox):
|
|||||||
|
|
||||||
for cont, obj in enumerate(self.lineEditObjects):
|
for cont, obj in enumerate(self.lineEditObjects):
|
||||||
if self.lineEditTypes[cont] in [float, int]:
|
if self.lineEditTypes[cont] in [float, int]:
|
||||||
obj.setText(QString(self.data['TXT'+self.lineEditNames[cont]]))
|
obj.setText(self.data['TXT'+self.lineEditNames[cont]])
|
||||||
else:
|
else:
|
||||||
obj.setText(QString(self.data[self.lineEditNames[cont]]))
|
obj.setText(self.data[self.lineEditNames[cont]])
|
||||||
|
|
||||||
self.ui.CBQuad.setChecked(True if 'quad' in self.data.keys() and self.data['quad'] else False)
|
self.ui.CBQuad.setChecked(True if 'quad' in self.data.keys() and self.data['quad'] else False)
|
||||||
self.ui.CBBarsoum.setChecked(True if 'barsoum' in self.data.keys() and self.data['barsoum'] else False)
|
self.ui.CBBarsoum.setChecked(True if 'barsoum' in self.data.keys() and self.data['barsoum'] else False)
|
||||||
self.ui.CBIs2D.setChecked(True if 'is2D' in self.data.keys() and self.data['is2D'] else False)
|
self.ui.CBIs2D.setChecked(True if 'is2D' in self.data.keys() and self.data['is2D'] else False)
|
||||||
self.ui.CBRefine.setChecked(True if 'refine' in self.data.keys() and self.data['refine'] else False)
|
self.ui.CBRefine.setChecked(True if 'refine' in self.data.keys() and self.data['refine'] else False)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#if self.data['quad']: self.ui.CBQuad.setChecked(True)
|
|
||||||
#if self.data['barsoum']: self.ui.CBBarsoum.setChecked(True)
|
|
||||||
#if self.data['is2D']: self.ui.CBIs2D.setChecked(True)
|
|
||||||
#if self.data['refine']: self.ui.CBRefine.setChecked(True)
|
|
||||||
self.setTableParameters()
|
self.setTableParameters()
|
||||||
|
|
||||||
|
|
||||||
@ -451,7 +418,7 @@ class ShipHolderApplication(QGroupBox):
|
|||||||
if tab.item(irow,0) == None:
|
if tab.item(irow,0) == None:
|
||||||
item = QTableWidgetItem()
|
item = QTableWidgetItem()
|
||||||
tab.setItem(irow, 0, item)
|
tab.setItem(irow, 0, item)
|
||||||
tab.item(irow,0).setText(QString(self.data['TXTcrack'][str(self.ui.tabWidget.tabText(iongl))][str(label)]))
|
tab.item(irow,0).setText(self.data['TXTcrack'][str(self.ui.tabWidget.tabText(iongl))][str(label)])
|
||||||
if str(self.ui.tabWidget.tabText(iongl)) == self.data['TXTcrack']['actif']:
|
if str(self.ui.tabWidget.tabText(iongl)) == self.data['TXTcrack']['actif']:
|
||||||
self.ui.tabWidget.setCurrentWidget(onglet)
|
self.ui.tabWidget.setCurrentWidget(onglet)
|
||||||
|
|
||||||
@ -475,19 +442,19 @@ class ShipHolderApplication(QGroupBox):
|
|||||||
|
|
||||||
for group in objetSain.GetGroups():
|
for group in objetSain.GetGroups():
|
||||||
if (self.GroupToLoad in ['VOL','ALL']) and (group.GetType()==SMESH.VOLUME):
|
if (self.GroupToLoad in ['VOL','ALL']) and (group.GetType()==SMESH.VOLUME):
|
||||||
groupsVOL+=group.GetName().replace(' ','')+" "
|
groupsVOL+=self.cleanGroupName(group)
|
||||||
nGr+=1
|
nGr+=1
|
||||||
|
|
||||||
if (self.GroupToLoad in ['FACE','ALL']) and (group.GetType()==SMESH.FACE):
|
if (self.GroupToLoad in ['FACE','ALL']) and (group.GetType()==SMESH.FACE):
|
||||||
groupsFAC+=group.GetName().replace(' ','')+" "
|
groupsFAC+=self.cleanGroupName(group)
|
||||||
nGr+=1
|
nGr+=1
|
||||||
|
|
||||||
if (self.GroupToLoad in ['EDGE','ALL']) and (group.GetType()==SMESH.EDGE):
|
if (self.GroupToLoad in ['EDGE','ALL']) and (group.GetType()==SMESH.EDGE):
|
||||||
groupsEDG+=group.GetName().replace(' ','')+" "
|
groupsEDG+=self.cleanGroupName(group)
|
||||||
nGr+=1
|
nGr+=1
|
||||||
|
|
||||||
if (self.GroupToLoad in ['NODE','ALL']) and (group.GetType()==SMESH.NODE):
|
if (self.GroupToLoad in ['NODE','ALL']) and (group.GetType()==SMESH.NODE):
|
||||||
groupsNOD+=group.GetName().replace(' ','')+" "
|
groupsNOD+=self.cleanGroupName(group)
|
||||||
nGr+=1
|
nGr+=1
|
||||||
|
|
||||||
if groupsVOL!='': self.ui.valGrVol.setText(groupsVOL)
|
if groupsVOL!='': self.ui.valGrVol.setText(groupsVOL)
|
||||||
@ -504,6 +471,24 @@ class ShipHolderApplication(QGroupBox):
|
|||||||
except:
|
except:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
def cleanGroupName(self, group):
|
||||||
|
name=group.GetName()
|
||||||
|
while name.endswith(' '): name=name[:-1]
|
||||||
|
if ' ' in name:
|
||||||
|
message('A','%s group has a space in its name --> ignored' %name)
|
||||||
|
return('')
|
||||||
|
else:
|
||||||
|
return(name+" ")
|
||||||
|
|
||||||
|
def checkNamesSpaces(self, names):
|
||||||
|
if type(names) is str: names=[names]
|
||||||
|
ok=True
|
||||||
|
for n in names:
|
||||||
|
if ' ' in n:
|
||||||
|
message('E','%s has a space in its name, please remove it' %n, goOn=True)
|
||||||
|
ok=False
|
||||||
|
return(ok)
|
||||||
|
|
||||||
|
|
||||||
# ---------------------------------
|
# ---------------------------------
|
||||||
# LANCEMENT DE LA BOITE DE DIAG
|
# LANCEMENT DE LA BOITE DE DIAG
|
||||||
|
@ -22,9 +22,9 @@ class output():
|
|||||||
pass
|
pass
|
||||||
f = open(self.tmpFile,'w')
|
f = open(self.tmpFile,'w')
|
||||||
f.write('\n ------------------------------\n')
|
f.write('\n ------------------------------\n')
|
||||||
f.write(' | BIENVENU DANS L\'INTERFACE |\n')
|
f.write(' | BIENVENUE DANS L\'INTERFACE |\n')
|
||||||
f.write(' | ZCRACKS DE SALOME |\n')
|
f.write(' | ZCRACKS DE SALOME |\n')
|
||||||
f.write(' | VERSION ALPHA |\n')
|
f.write(' | VERSION BETA |\n')
|
||||||
f.write(' ------------------------------\n\n')
|
f.write(' ------------------------------\n\n')
|
||||||
f.close()
|
f.close()
|
||||||
|
|
||||||
|
@ -179,6 +179,12 @@ def extendElsets(meshFile, outFile=None):
|
|||||||
|
|
||||||
([mesh], status) = smesh.CreateMeshesFromMED(meshFile)
|
([mesh], status) = smesh.CreateMeshesFromMED(meshFile)
|
||||||
|
|
||||||
|
if mesh.NbVolumes()>0:
|
||||||
|
case2D=False
|
||||||
|
mesh.Reorient2DBy3D( [ mesh ], mesh, 1 )
|
||||||
|
else:
|
||||||
|
case2D=True
|
||||||
|
|
||||||
mesh=cleanGroups(mesh)
|
mesh=cleanGroups(mesh)
|
||||||
|
|
||||||
# Node color status
|
# Node color status
|
||||||
@ -339,91 +345,6 @@ def getMaxAspectRatio(tmpdir):
|
|||||||
return(float(maxAR))
|
return(float(maxAR))
|
||||||
|
|
||||||
|
|
||||||
#def extendElsets(meshFile):
|
|
||||||
#if not path.isfile(meshFile):
|
|
||||||
#message('E','Mesh med file is not valid')
|
|
||||||
#return(-1)
|
|
||||||
|
|
||||||
#import SMESH, salome
|
|
||||||
##salome.salome_init()
|
|
||||||
#theStudy = salome.myStudy
|
|
||||||
#from salome.smesh import smeshBuilder
|
|
||||||
#smesh = smeshBuilder.New(theStudy)
|
|
||||||
|
|
||||||
#([mesh], status) = smesh.CreateMeshesFromMED(meshFile)
|
|
||||||
|
|
||||||
## Node color status
|
|
||||||
#nodeList=mesh.GetNodesId()
|
|
||||||
#colorList=[0]*len(nodeList)
|
|
||||||
|
|
||||||
## Init using SIDE0 SIDE1
|
|
||||||
#for group in mesh.GetGroups():
|
|
||||||
#if group.GetType()==SMESH.FACE :
|
|
||||||
#color=0
|
|
||||||
#if group.GetName()[0:4]=='SIDE0' :
|
|
||||||
#color=1
|
|
||||||
#elif group.GetName()[0:4]=='SIDE1' :
|
|
||||||
#color=2
|
|
||||||
#else : continue
|
|
||||||
## Get faces
|
|
||||||
#faces=group.GetIDs()
|
|
||||||
## Set faces nodes to given color
|
|
||||||
#for face_id in faces :
|
|
||||||
#for face_node_id in mesh.GetElemNodes(face_id) :
|
|
||||||
#colorList[face_node_id-1]=color
|
|
||||||
|
|
||||||
## Propagates color using elem connectivity
|
|
||||||
## Always propagates max color
|
|
||||||
#volElemList=mesh.GetElementsByType(SMESH.VOLUME)
|
|
||||||
#ifChanged=True
|
|
||||||
#while ifChanged :
|
|
||||||
#ifChanged=False
|
|
||||||
#minColor=100
|
|
||||||
#maxColor=0
|
|
||||||
#for elemId in volElemList:
|
|
||||||
#for elemNodeId in mesh.GetElemNodes(elemId) :
|
|
||||||
#nodeColor=colorList[elemNodeId-1]
|
|
||||||
#if nodeColor<minColor : minColor=nodeColor
|
|
||||||
#if nodeColor>maxColor : maxColor=nodeColor
|
|
||||||
#if minColor!=maxColor :
|
|
||||||
#ifChanged = True
|
|
||||||
#for elemNodeId in mesh.GetElemNodes(elemId) :
|
|
||||||
#colorList[elemNodeId-1]=maxColor
|
|
||||||
|
|
||||||
#velem0 = []
|
|
||||||
#velem1 = []
|
|
||||||
#for elemId in volElemList:
|
|
||||||
#elemNodesId=mesh.GetElemNodes(elemId)
|
|
||||||
#elemColor=colorList[elemNodesId[0]-1]
|
|
||||||
#if(elemColor==1) : velem0.append(elemId)
|
|
||||||
#if(elemColor==2) : velem1.append(elemId)
|
|
||||||
|
|
||||||
#mesh.MakeGroupByIds('SIDE_co',SMESH.VOLUME,velem0)
|
|
||||||
#mesh.MakeGroupByIds('SIDE_ext',SMESH.VOLUME,velem1)
|
|
||||||
|
|
||||||
#surfElemList=mesh.GetElementsByType(SMESH.FACE)
|
|
||||||
#selem0 = []
|
|
||||||
#selem1 = []
|
|
||||||
#nbelem0=0
|
|
||||||
#nbelem1=0
|
|
||||||
|
|
||||||
#for elemId in surfElemList:
|
|
||||||
#elemNodesId=mesh.GetElemNodes(elemId)
|
|
||||||
#elemColor=colorList[elemNodesId[0]-1]
|
|
||||||
#if(elemColor==1) : selem0.append(elemId)
|
|
||||||
#if(elemColor==2) : selem1.append(elemId)
|
|
||||||
|
|
||||||
#mesh.MakeGroupByIds('SIDE_co',SMESH.FACE,selem0)
|
|
||||||
#mesh.MakeGroupByIds('SIDE_ext',SMESH.FACE,selem1)
|
|
||||||
|
|
||||||
#maxAR=0.
|
|
||||||
#for elem in volElemList:
|
|
||||||
#maxAR=max(mesh.GetAspectRatio(elem),maxAR)
|
|
||||||
#for elem in surfElemList:
|
|
||||||
#maxAR=max(mesh.GetAspectRatio(elem),maxAR)
|
|
||||||
|
|
||||||
#mesh.ExportMED(meshFile, 0, SMESH.MED_V2_2, 1, None ,1)
|
|
||||||
#return(maxAR)
|
|
||||||
|
|
||||||
|
|
||||||
def removeFromSessionPath(envVar, patern):
|
def removeFromSessionPath(envVar, patern):
|
||||||
|
Loading…
Reference in New Issue
Block a user