+ def hideUnusableColumns(self):
+ self.hideColumn(SERVER_MEMBERSHIP_STATUS_COLUMN)
+
+class UserModel(QStandardItemModel):
+ def __init__(self, rows=0, columns=4, parent=None):
+ QStandardItemModel.__init__(self, rows, columns, parent)
+
+ def updateModel(self, sliceRec):
+ self.clear()
+
+ added_persons = []
+ slice_persons = []
+
+ if sliceRec:
+ #for pi in sliceRec.get_field("PI", default=[]):
+ # 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=[]):
+ 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
+
+ rootItem = self.invisibleRootItem()
+
+ for person in slice_persons:
+ rootItem.appendRow([self.readOnlyItem(person["name"]),
+ self.readOnlyItem(person["member"]),
+ self.readOnlyItem(person["member"])])
+
+ headers = QStringList() << "User Name" << "Status" << "ServerStatus"
+ self.setHorizontalHeaderLabels(headers)
+
+ def readOnlyItem(self, x):
+ item = QStandardItem(QString(x))
+ item.setFlags(Qt.ItemIsSelectable | Qt.ItemIsEnabled)
+ return item
+
+ def updateRecord(self, slicerec):
+ change = False
+
+ item = self.invisibleRootItem()
+ children = item.rowCount()
+ for row in range(0, children):
+ childName = str(item.child(row, NAME_COLUMN).data(Qt.DisplayRole).toString())
+ childStatus = str(item.child(row, MEMBERSHIP_STATUS_COLUMN).data(Qt.DisplayRole).toString())
+
+ if (childStatus == user_status['add']):
+ researcher = slicerec.get_field("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)
+ change = True
+
+ return change
+
+ def getResearchers(self):
+ researchers = []
+ item = self.invisibleRootItem()
+ children = item.rowCount()
+ for row in range(0, children):
+ childName = str(item.child(row, NAME_COLUMN).data(Qt.DisplayRole).toString())
+ childStatus = str(item.child(row, MEMBERSHIP_STATUS_COLUMN).data(Qt.DisplayRole).toString())
+
+ if (childStatus == user_status['add']) or (childStatus == user_status['in']):
+ researchers.append(childName)
+
+ 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