diff --git a/libraries/entropy/client/interfaces/db.py b/libraries/entropy/client/interfaces/db.py index 4cf5c6736..e26b28afa 100644 --- a/libraries/entropy/client/interfaces/db.py +++ b/libraries/entropy/client/interfaces/db.py @@ -34,7 +34,8 @@ from entropy.db.exceptions import IntegrityError, OperationalError, Error, \ DatabaseError from entropy.core.settings.base import SystemSettings from entropy.services.client import WebService -from entropy.client.services.interfaces import RepositoryWebService +from entropy.client.services.interfaces import RepositoryWebService, \ + RepositoryWebServiceFactory import entropy.tools @@ -177,7 +178,14 @@ class AvailablePackagesRepositoryUpdater(object): @property def _webservices(self): if self.__webservices is None: - self.__webservices = self._entropy.RepositoryWebServices() + if hasattr(self._entropy, "RepositoryWebServices"): + self.__webservices = self._entropy.RepositoryWebServices() + else: + # in case self._entropy is a simple TextInterface() + # like how it's called in remote_revision(). + self.__webservices = RepositoryWebServiceFactory(self._entropy) + # cross fingers! + return self.__webservices @property diff --git a/libraries/entropy/services/client.py b/libraries/entropy/services/client.py index 9b25a9c68..dcad3e121 100644 --- a/libraries/entropy/services/client.py +++ b/libraries/entropy/services/client.py @@ -33,6 +33,7 @@ from entropy.cache import EntropyCacher from entropy.const import const_debug_write, const_setup_file, etpConst, \ const_convert_to_rawstring, const_isunicode, const_isstring, \ const_convert_to_unicode, const_isstring, const_debug_enabled +from entropy.core.settings.base import SystemSettings from entropy.exceptions import EntropyException import entropy.tools import entropy.dep @@ -237,6 +238,8 @@ class WebService(object): def __init__(self, entropy_client, repository_id): """ WebService constructor. + NOTE: This base class must NOT use any Entropy Client specific method + and MUST rely on what is provided by it's parent class TextInterface. @param entropy_client: Entropy Client interface @type entropy_client: entropy.client.interfaces.client.Client @@ -313,7 +316,7 @@ class WebService(object): Get SystemSettings instance """ if self.__settings is None: - self.__settings = self._entropy.Settings() + self.__settings = SystemSettings() return self.__settings @property