def lock(self, raise_on_fail=True): # type: (bool) -> bool """ Get locks to prevent concurrent calls. :param bool raise_on_fail: Raise :py:class:`LockError` instead of returning `False`. :returns: `True` if all locks were are acquired, `False` otherwise. :rtype: bool :raises LockError: if the lock cannot be acquired. """ if self.is_locked(): return True self.lock_fd = get_lock('univention-lib-package-manager', nonblocking=True) return_value = self.lock_fd is not None if return_value is True: # get apt lock; taken from dist-packages/apt/cache.py lockfile = apt_pkg.config.find_dir("Dir::Cache::Archives") + "lock" self.apt_lock_fd = apt_pkg.get_lock(lockfile) if self.apt_lock_fd < 0: return_value = False if return_value is False: if raise_on_fail: raise LockError(_('Failed to lock')) return return_value
def lock(self, raise_on_fail=True): self.lock_fd = get_lock('univention-lib-package-manager', nonblocking=True) return_value = self.lock_fd is not None if return_value is False: if raise_on_fail: raise LockError(_('Failed to lock')) return return_value
def lock(self, raise_on_fail=True): self.lock_fd = get_lock('univention-lib-package-manager', nonblocking=True) return_value = self.lock_fd is not None if return_value is False: if raise_on_fail: raise LockError(_('Failed to lock')) return return_value
def save(self): # remove all sections for sec in self.sections(): self.remove_section(sec) for lesson in self.lessons: self.add_section(lesson.name) self.set(lesson.name, 'begin', str(lesson.begin)) self.set(lesson.name, 'end', str(lesson.end)) lock = locking.get_lock('ucs-school-lib-schoollessons') with open(LESSONS_FILE, 'w') as fd: shutil.copyfile(LESSONS_FILE, LESSONS_BACKUP) self.write(fd) locking.release_lock(lock)
def lock(self, raise_on_fail=True): if self.is_locked(): return True self.lock_fd = get_lock('univention-lib-package-manager', nonblocking=True) return_value = self.lock_fd is not None if return_value is True: # get apt lock; taken from dist-packages/apt/cache.py lockfile = apt_pkg.config.find_dir("Dir::Cache::Archives") + "lock" self.apt_lock_fd = apt_pkg.get_lock(lockfile) if self.apt_lock_fd < 0: return_value = False if return_value is False: if raise_on_fail: raise LockError(_('Failed to lock')) return return_value