[entropy.server,entropy.db] make EntropyRepositoryBase.readonly property private

Rename .readonly property to ._readonly and expose a setter only
where strictly required (entropy.server)
This commit is contained in:
Fabio Erculiani
2011-01-23 23:06:21 +01:00
parent a7fe6f97b8
commit d92f6d6bf4
5 changed files with 32 additions and 11 deletions
+6 -6
View File
@@ -517,7 +517,7 @@ class EntropyRepository(EntropyRepositoryBase):
pass
try:
conn = self.__connection_cache.pop((th_id, pid))
if not self.readonly:
if not self._readonly:
try:
conn.commit()
except OperationalError:
@@ -593,7 +593,7 @@ class EntropyRepository(EntropyRepositoryBase):
first_part = "<EntropyRepository instance at %s, %s" % (
hex(id(self)), self._db_path,)
second_part = ", ro: %s, caching: %s, indexing: %s" % (
self.readonly, self.caching(), self.__indexing,)
self._readonly, self.caching(), self.__indexing,)
third_part = ", name: %s, skip_upd: %s, st_upd: %s" % (
self.name, self.__skip_checks, self.__structure_update,)
fourth_part = ", conn_cache: %s, cursor_cache: %s>" % (
@@ -708,7 +708,7 @@ class EntropyRepository(EntropyRepositoryBase):
Reimplemented from EntropyRepositoryBase.
Needs to call superclass method.
"""
if force or (not self.readonly):
if force or (not self._readonly):
# NOTE: the actual commit MUST be executed before calling
# the superclass method (that is going to call EntropyRepositoryBase
# plugins). This to avoid that other connection to the same exact
@@ -4534,8 +4534,8 @@ class EntropyRepository(EntropyRepositoryBase):
(not os.getenv("ETP_REPO_SCHEMA_UPDATE")):
return
old_readonly = self.readonly
self.readonly = False
old_readonly = self._readonly
self._readonly = False
if not self._doesTableExist("packagedesktopmime"):
self._createPackageDesktopMimeTable()
@@ -4588,7 +4588,7 @@ class EntropyRepository(EntropyRepositoryBase):
self._foreignKeySupport()
self.readonly = old_readonly
self._readonly = old_readonly
self._connection().commit()
if not old_readonly:
+11 -2
View File
@@ -372,7 +372,7 @@ class EntropyRepositoryBase(TextInterface, EntropyRepositoryPluginStore, object)
@param name: repository identifier (or name)
@type name: string
"""
self.readonly = readonly
self._readonly = readonly
self._caching = xcache
self._temporary = temporary
self.name = name
@@ -402,6 +402,15 @@ class EntropyRepositoryBase(TextInterface, EntropyRepositoryPluginStore, object)
"""
return self._temporary
def readonly(self):
"""
Return whether the repository is read-only.
@return: True, if repository is read-only
@rtype: bool
"""
return self._readonly
def close(self):
"""
Close repository storage communication and open disk files.
@@ -409,7 +418,7 @@ class EntropyRepositoryBase(TextInterface, EntropyRepositoryPluginStore, object)
Attention: call this method from your subclass, otherwise
EntropyRepositoryPlugins won't be notified of a repo close.
"""
if not self.readonly:
if not self._readonly:
self.commit()
plugins = self.get_plugins()
@@ -236,6 +236,15 @@ class ServerPackagesRepository(EntropyRepository):
return self.addPackage(pkg_data, revision = current_rev,
formatted_content = formattedContent)
def setReadonly(self, readonly):
"""
Set or unset the repository as read-only.
@param readonly: True, enable read-only
@type readonly: bool
"""
self._readonly = bool(readonly)
class ServerPackagesRepositoryUpdater(object):
+3 -1
View File
@@ -108,7 +108,9 @@ class ServerEntropyRepositoryPlugin(EntropyRepositoryPlugin):
if not local_dbfile_exists:
# better than having a completely broken db
self._metadata['read_only'] = False
entropy_repository_instance.readonly = False
# force parameters, only ServerEntropyRepository exposes
# the setReadonly method
entropy_repository_instance.setReadonly(False)
entropy_repository_instance.initializeRepository()
entropy_repository_instance.commit()
@@ -2520,8 +2520,9 @@ class PortagePlugin(SpmPlugin):
if do_rescan or (str(stored_digest) != str(portage_dirs_digest)):
# force parameters
entropy_repository.readonly = False
# force parameters, only ServerEntropyRepository exposes
# the setReadonly method
entropy_repository.setReadonly(False)
# disable upload trigger
from entropy.server.interfaces.main import \
ServerEntropyRepositoryPlugin