def add_student(self, account, sn=None, pwd=None):
s = self.vfs.strings
if sn and (not hasattr(self, '_last_sn') or sn != self._last_sn) and \
self._is_student_function_enabled(sn):
self._last_sn = sn
if hasattr(self, '_last_sn'):
if hasattr(self, '_queued_addition_requests'):
queued_addition_requests = self._queued_addition_requests.keys()
del self._queued_addition_requests
for request in queued_addition_requests:
self.add(request, StudentsStudentDirectory(
self.vfs, self, request))
if hasattr(self, '_queued_deletion_requests'):
queued_deletion_requests = self._queued_deletion_requests.keys()
del self._queued_deletion_requests
for request in queued_deletion_requests:
node = self.vfs.open(request, edit_check=False)
node.parent.unlink(PurePosixPath(request).name)
if account not in map(lambda x: x[0], self._children):
self.add(account, StudentsStudentDirectory(
self.vfs, self, account))
else:
if not hasattr(self, '_queued_addition_requests'):
self._queued_addition_requests = OrderedDict()
self._queued_addition_requests[account] = None
if pwd:
depth = 0
while pwd is not self.vfs.root:
pwd = pwd.parent
depth += 1
return PurePosixPath('../' * depth,
s['dir_root_students'], account).as_posix()
评论列表
文章目录