def __setitem__(self, cpv, values):
		"""set a cpv to values
		This shouldn't be overriden in derived classes since it handles the readonly checks"""
		if self.readonly:
			raise cache_errors.ReadOnlyRestriction()
		d = None
		if self.cleanse_keys:
			d=ProtectedDict(values)
			for k, v in list(d.items()):
				if not v:
					del d[k]
		if "_eclasses_" in values:
			if d is None:
				d = ProtectedDict(values)
			if self.serialize_eclasses:
				d["_eclasses_"] = serialize_eclasses(d["_eclasses_"],
					self.validation_chf, paths=self.store_eclass_paths)
			else:
				d["_eclasses_"] = self._internal_eclasses(d["_eclasses_"],
					self.validation_chf, self.store_eclass_paths)
		elif d is None:
			d = values
		self._setitem(cpv, d)
		if not self.autocommits:
			self.updates += 1
			if self.updates > self.sync_rate:
				self.commit()
				self.updates = 0
Exemple #2
0
    def __setitem__(self, cpv, values):
        """set a cpv to values
		This shouldn't be overriden in derived classes since it handles the readonly checks"""
        if self.readonly:
            raise cache_errors.ReadOnlyRestriction()
        d = None
        if self.cleanse_keys:
            d = ProtectedDict(values)
            for k, v in list(item for item in d.items()
                             if item[0] != "_eclasses_"):
                if not v:
                    del d[k]
        if "_eclasses_" in values:
            if d is None:
                d = ProtectedDict(values)
            if self.serialize_eclasses:
                d["_eclasses_"] = serialize_eclasses(
                    d["_eclasses_"],
                    self.validation_chf,
                    paths=self.store_eclass_paths)
            else:
                d["_eclasses_"] = self._internal_eclasses(
                    d["_eclasses_"], self.validation_chf,
                    self.store_eclass_paths)
        elif d is None:
            d = values
        self._setitem(cpv, d)
        if not self.autocommits:
            self.updates += 1
            if self.updates > self.sync_rate:
                self.commit()
                self.updates = 0
Exemple #3
0
    def __setitem__(self, cpv, values):
        """set a cpv to values
		This shouldn't be overriden in derived classes since it handles the readonly checks"""
        if self.readonly:
            raise cache_errors.ReadOnlyRestriction()
        if self.cleanse_keys:
            d = ProtectedDict(values)
            for k, v in list(d.items()):
                if not v:
                    del d[k]
            if self.serialize_eclasses and "_eclasses_" in values:
                d["_eclasses_"] = serialize_eclasses(d["_eclasses_"])
        elif self.serialize_eclasses and "_eclasses_" in values:
            d = ProtectedDict(values)
            d["_eclasses_"] = serialize_eclasses(d["_eclasses_"])
        else:
            d = values
        self._setitem(cpv, d)
        if not self.autocommits:
            self.updates += 1
            if self.updates > self.sync_rate:
                self.commit()
                self.updates = 0