def get_distance_duration(self):
     duration = 0
     distance = 0
     departure_time = self._context.get('departure_time')
     if not departure_time:
         n = datetime.datetime.now()
         departure_time = int(time.mktime(n.timetuple()))
     if self.partner_id and self.job_id.address_id:
         partner = self.partner_id
         origin = geo_query_address(street=partner.street,
                                    zip=partner.zip,
                                    city=partner.city,
                                    state=partner.state_id.name,
                                    country=partner.country_id.name)
         partner = self.job_id.address_id
         destination = geo_query_address(street=partner.street,
                                         zip=partner.zip,
                                         city=partner.city,
                                         state=partner.state_id.name,
                                         country=partner.country_id.name)
         maps = GoogleMaps()
         duration = maps.duration(origin, destination, mode='transit',
                                  departure_time=departure_time) / 60.0
         distance = maps.distance(origin, destination, mode='transit',
                                  departure_time=departure_time) / 1000.0
     self.write({'duration': duration, 'distance': distance})
     return True
 def get_distance_duration(self):
     duration = 0
     distance = 0
     departure_time = self._context.get('departure_time')
     if not departure_time:
         n = datetime.datetime.now()
         departure_time = int(time.mktime(n.timetuple()))
     if self.partner_id and self.job_id.address_id:
         partner = self.partner_id
         origin = geo_query_address(street=partner.street,
                                    zip=partner.zip,
                                    city=partner.city,
                                    state=partner.state_id.name,
                                    country=partner.country_id.name)
         partner = self.job_id.address_id
         destination = geo_query_address(street=partner.street,
                                         zip=partner.zip,
                                         city=partner.city,
                                         state=partner.state_id.name,
                                         country=partner.country_id.name)
         maps = GoogleMaps()
         duration = maps.duration(origin, destination, mode='walking',
                                  departure_time=departure_time) / 60.0
         distance = maps.distance(origin, destination, mode='walking',
                                  departure_time=departure_time) / 1000.0
     self.write({'duration': duration, 'distance': distance})
     return True
Beispiel #3
0
 def assign_geo_localize(self,
                         cr,
                         uid,
                         ids,
                         latitude=False,
                         longitude=False,
                         context=None):
     if latitude and longitude:
         self.write(cr,
                    uid,
                    ids, {
                        'partner_latitude': latitude,
                        'partner_longitude': longitude
                    },
                    context=context)
         return True
     # Don't pass context to browse()! We need country name in english below
     for lead in self.browse(cr, uid, ids):
         if lead.partner_latitude and lead.partner_longitude:
             continue
         if lead.country_id:
             result = geo_find(
                 geo_query_address(street=lead.street,
                                   zip=lead.zip,
                                   city=lead.city,
                                   state=lead.state_id.name,
                                   country=lead.country_id.name))
             if result:
                 self.write(cr,
                            uid, [lead.id], {
                                'partner_latitude': result[0],
                                'partner_longitude': result[1]
                            },
                            context=context)
     return True
Beispiel #4
0
 def assign_geo_localize(self, cr, uid, ids, latitude=False, longitude=False, context=None):
     if latitude and longitude:
         self.write(cr, uid, ids, {"partner_latitude": latitude, "partner_longitude": longitude}, context=context)
         return True
     # Don't pass context to browse()! We need country name in english below
     for lead in self.browse(cr, uid, ids):
         if lead.partner_latitude and lead.partner_longitude:
             continue
         if lead.country_id:
             result = geo_find(
                 geo_query_address(
                     street=lead.street,
                     zip=lead.zip,
                     city=lead.city,
                     state=lead.state_id.name,
                     country=lead.country_id.name,
                 )
             )
             if result:
                 self.write(
                     cr,
                     uid,
                     [lead.id],
                     {"partner_latitude": result[0], "partner_longitude": result[1]},
                     context=context,
                 )
     return True
Beispiel #5
0
    def add_geo_localization_details(self, vals):
        """Add geo localization details to the current partner."""
        # skip during dry runs.
        if self.__dryRun__:
            return vals

        street = vals.get('street')
        zip = vals.get('zip')
        city = vals.get('city')
        country_id = vals.get('country_id')

        if street and zip and city and country_id:
            result = geo_find(
                geo_query_address(
                    street=vals.get('street', '').encode(__codec__),
                    zip=vals.get('zip', '').encode(__codec__),
                    city=vals.get('city', '').encode(__codec__),
                    country=self.env['res.country'].browse(
                        vals.get('country_id')).name.encode(__codec__),
                ))
            if result:
                vals['partner_latitude'] = result[0]
                vals['partner_longitude'] = result[1]
                vals['date_localization'] = fields.Date.context_today(self)
        else:
            _logger.debug('Missing details. Skipping.')
        return vals
Beispiel #6
0
 def add_geo_localization_details(self, vals):
     result = geo_find(
         geo_query_address(
             street=vals.get('street'),
             zip=vals.get('zip'),
             city=vals.get('city'),
             country=self.env['res.country'].browse(
                 vals.get('country_id')).name,
         )
     )
     if result:
         vals['partner_latitude'] = result[0]
         vals['partner_longitude'] = result[1]
         vals['date_localization'] = fields.Date.context_today(self)
     return vals
Beispiel #7
0
 def geo_localize(self):
     api_key = self.env['ir.config_parameter'].get_param('google_maps_api')
     for partner in self:
         if not partner:
             continue
         result = geo_find(
             geo_query_address(street=' '.join([
                 getattr(partner, f) for f in ('street', 'street2')
                 if getattr(partner, f)
             ]),
                               zip=partner.zip,
                               city=partner.city,
                               state=partner.state_id.name,
                               country=partner.country_id.name), api_key)
         if result:
             partner.write({
                 'partner_latitude':
                 result[0],
                 'partner_longitude':
                 result[1],
                 'date_localization':
                 fields.Date.context_today(partner)
             })
     return True