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
Example #2
0
	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
Example #3
0
 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
Example #4
0
	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