X-Git-Url: http://git.maemo.org/git/?p=theonering;a=blobdiff_plain;f=src%2Flocation.py;h=32b582340723edabe8c811469952b7c66a136f72;hp=a77d0c77081c3b347b4be5732ef0ea96288899ab;hb=8894c48314aa35230635af3f4ae8814234ae3fa1;hpb=1c892d1b9bf14b28eb54ce3590ed2ee29d5e3d25 diff --git a/src/location.py b/src/location.py index a77d0c7..32b5823 100644 --- a/src/location.py +++ b/src/location.py @@ -3,9 +3,10 @@ import logging import telepathy import util.misc as misc_utils +import handle -_moduleLogger = logging.getLogger('location') +_moduleLogger = logging.getLogger(__name__) #class LocationMixin(tp.ConnectionInterfaceLocation): @@ -27,14 +28,22 @@ class LocationMixin(object): """ @returns {Contact: {Location Type: Location}} """ - raise telepathy.errors.NotImplemented("Yet") + contactLocation = ( + (contact, self._get_location(contact)) + for contact in contacts + ) + return dict( + (contact, location) + for (contact, location) in contactLocation + if location + ) @misc_utils.log_exception(_moduleLogger) def RequestLocation(self, contact): """ @returns {Location Type: Location} """ - raise telepathy.errors.NotImplemented("Yet") + return self._get_location(contact) @misc_utils.log_exception(_moduleLogger) def SetLocation(self, location): @@ -42,3 +51,20 @@ class LocationMixin(object): Since presence is based off of phone numbers, not allowing the client to change it """ raise telepathy.errors.PermissionDenied() + + def _get_location(self, contact): + h = self.get_handle_by_id(telepathy.HANDLE_TYPE_CONTACT, contact) + if isinstance(h, handle.ConnectionHandle): + number = self.session.backend.get_callback_number() + else: + number = h.phoneNumber + + rawData = self.session.location.request_location(number) + if rawData is None: + return {} + + data = { + "country": rawData["country"], + "city": rawData["city"], + "region": rawData["region"], + }