import util.misc as misc_utils
-_moduleLogger = logging.getLogger('avatars')
+_moduleLogger = logging.getLogger(__name__)
class AvatarsMixin(tp.server.ConnectionInterfaceAvatars):
__OTHER_AVATAR = "tor_question"
__LOOKUP_PATHS = (
+ "/opt/theonering/share",
"/usr/share/theonering",
os.path.join(os.path.dirname(__file__), "../support/icons"),
)
def __init__(self):
tp.server.ConnectionInterfaceAvatars.__init__(self)
+ self._avatarCache = {}
self._implement_property_get(
telepathy.interfaces.CONNECTION_INTERFACE_AVATARS,
@misc_utils.log_exception(_moduleLogger)
def RequestAvatar(self, contact):
imageName = self._select_avatar(contact)
- image = self._load_avatar(imageName)
+ image = self._get_avatar(imageName)
return image, "image/png"
@misc_utils.log_exception(_moduleLogger)
def RequestAvatars(self, contacts):
for handleid in contacts:
imageName = self._select_avatar(handleid)
- image = self._load_avatar(imageName)
+ image = self._get_avatar(imageName)
self.AvatarRetrieved(handleid, imageName, image, "image/png")
@misc_utils.log_exception(_moduleLogger)
return imageName
+ def _get_avatar(self, imageName):
+ try:
+ return self._avatarCache[imageName]
+ except KeyError:
+ image = self._load_avatar(imageName)
+ self._avatarCache[imageName] = image
+ return image
+
def _load_avatar(self, imageName):
+ _moduleLogger.debug("Loading avatar %r from file" % (imageName, ))
try:
with open(os.sep.join([self.__LOOKUP_PATHS[0], imageName+".png"]), "rb") as f:
return f.read()