from PyQt4.QtCore import *
from PyQt4.QtGui import *
-from sfa.util.record import SfaRecord, SliceRecord, AuthorityRecord, UserRecord
from sface.config import config
from sface.sfiprocess import SfiProcess
from sface.screens.sfascreen import SfaScreen
+from sface.sfidata import SfiData
NAME_COLUMN = 0
#ROLE_COLUMN = 1
if option.state & QStyle.State_Selected:
painter.fillRect(option.rect, option.palette.color(QPalette.Active, QPalette.Highlight))
- color = None
for x in user_status.keys():
if (user_status[x] == status_data) and (x in color_status):
- color = color_status[x]
+ painter.fillPath(path, color_status[x])
- if color != None:
- painter.fillPath(path, color)
painter.setPen(QColor.fromRgb(0, 0, 0))
painter.drawText(textRect, Qt.AlignVCenter, QString(data))
model = current.model()
node_index = model.index(current.row(), 0, current.parent())
node_data = node_index.data().toString()
- self.emit(SIGNAL('hostnameClicked(QString)'), node_data)
def hideUnusableColumns(self):
self.hideColumn(SERVER_MEMBERSHIP_STATUS_COLUMN)
slice_persons = []
if sliceRec:
- #for pi in sliceRec.get_field("PI", default=[]):
+ #for pi in sliceRec.get("PI", []):
# name = str(pi)
# if not name in added_persons:
# slice_persons.append({"name": name, "role": "PI", "member": user_status["in"]})
# added_persons.append(name)
- for researcher in sliceRec.get_field("researcher", default=[]):
+ for researcher in sliceRec.get("researcher", []):
name = str(researcher)
if not name in added_persons:
slice_persons.append({"name": name, "role": "researcher", "member": user_status["in"]})
added_persons.append(name)
- i=0
- while (os.path.exists(config.getAuthorityListFile(i))):
- rec = self.readUserRecord(i)
- if rec:
- name = str(rec.get_name())
- if not name in added_persons:
- slice_persons.append({"name": name, "role": "", "member": user_status["out"]})
- added_persons.append(name)
- i=i+1
+ userNames = SfiData().getAuthorityHrns(type="user")
+ for name in userNames:
+ if not name in added_persons:
+ slice_persons.append({"name": name, "role": "", "member": user_status["out"]})
+ added_persons.append(name)
rootItem = self.invisibleRootItem()
childStatus = str(item.child(row, MEMBERSHIP_STATUS_COLUMN).data(Qt.DisplayRole).toString())
if (childStatus == user_status['add']):
- researcher = slicerec.get_field("researcher", [])
+ researcher = slicerec.get("researcher", [])
researcher.append(childName)
slicerec["researcher"] = researcher
change = True
elif (childStatus == user_status['remove']):
- if childName in slicerec.get_field("PI"):
- slicerec.get_field("PI").remove(childName)
- if childName in slicerec.get_field("researcher"):
- slicerec.get_field("researcher").remove(childName)
+ if childName in slicerec.get("PI"):
+ slicerec.get("PI").remove(childName)
+ if childName in slicerec.get("researcher"):
+ slicerec.get("researcher").remove(childName)
change = True
return change
return researchers
- def readUserRecord(self, i):
- rec_file = config.getAuthorityListFile(i)
- if os.path.exists(rec_file):
- xml = open(rec_file).read()
- rec = UserRecord()
- rec.load_from_string(xml)
- return rec
- return None
-
class UsersWidget(QWidget):
def __init__(self, parent):
QWidget.__init__(self, parent)
self.updateView()
def submitFinished(self):
- self.setStatus("<font color='green'>Slice data submitted.</font>")
- QTimer.singleShot(1000, self.refresh)
+ self.disconnect(self.process, SIGNAL('finished()'), self.submitFinished)
+
+ faultString = self.process.getFaultString()
+ if not faultString:
+ self.setStatus("<font color='green'>Slice user data submitted.</font>")
+ QTimer.singleShot(1000, self.refresh)
+ else:
+ self.setStatus("<font color='red'>Slice user submit failed: %s</font>" % (faultString))
def getSliceRecordFinished(self):
- self.setStatus("<font color='green'>Authority data refreshed.</font>", timeout=5000)
- self.refreshAuthority()
+ self.disconnect(self.process, SIGNAL('finished()'), self.getSliceRecordFinished)
+
+ faultString = self.process.getFaultString()
+ if not faultString:
+ self.setStatus("<font color='green'>Slice record refreshed.</font>")
+ self.refreshAuthority()
+ else:
+ self.setStatus("<font color='red'>Slice rec refresh error: %s</font>" % (faultString))
def getAuthorityRecordFinished(self):
- self.setStatus("<font color='green'>Slice data refreshed.</font>", timeout=5000)
- self.updateView()
- #self.parent().signalAll("usersUpdated")
+ self.disconnect(self.process, SIGNAL('finished()'), self.getAuthorityRecordFinished)
- def readSliceRecord(self):
- rec_file = config.getSliceRecordFile()
- if os.path.exists(rec_file):
- xml = open(rec_file).read()
- rec = SliceRecord()
- rec.load_from_string(xml)
- return rec
- return None
-
- def readAuthorityRecord(self):
- rec_file = config.getAuthorityRecordFile()
- if os.path.exists(rec_file):
- xml = open(rec_file).read()
- rec = AuthorityRecord()
- rec.load_from_string(xml)
- return rec
- return None
+ faultString = self.process.getFaultString()
+ if not faultString:
+ self.setStatus("<font color='green'>User data refreshed.</font>")
+ self.updateView()
+ #self.parent().signalAll("usersUpdated")
+ else:
+ self.setStatus("<font color='red'>Authority rec refresh error: %s</font>" % (faultString))
def setStatus(self, msg, timeout=None):
self.parent().setStatus(msg, timeout)
if self.checkRunningProcess():
return
- rec = self.readSliceRecord()
+ rec = SfiData().getSliceRecord()
change = self.userModel.updateRecord(rec)
if not change:
rec_file = config.getSliceRecordFile()
file(rec_file, "w").write(rec.save_to_string())
- self.disconnect(self.process, SIGNAL('finished()'), self.getAuthorityRecordFinished)
self.connect(self.process, SIGNAL('finished()'), self.submitFinished)
self.process.updateRecord(rec_file)
self.setStatus("<font color='red'>There is already a process running. Please wait.</font>")
return
- self.disconnect(self.process, SIGNAL('finished()'), self.submitFinished)
self.connect(self.process, SIGNAL('finished()'), self.getSliceRecordFinished)
self.process.getSliceRecord()
self.setStatus("Refreshing slice record. This will take some time...")
def refreshAuthority(self):
- self.disconnect(self.process, SIGNAL('finished()'), self.getSliceRecordFinished)
self.connect(self.process, SIGNAL('finished()'), self.getAuthorityRecordFinished)
- self.process.listRecords(config.getAuthority(), "user", config.getAuthorityListFile())
+ self.process.listRecords(config.getAuthority(), None)
self.setStatus("Refreshing user records. This will take some time...")
def updateView(self):
- sliceRec = self.readSliceRecord()
+ sliceRec = SfiData().getSliceRecord()
if not sliceRec:
# wait until we've resolved the slicerecord before displaying