ondrejsika.com

Snippets

Get address components from Google Geo API

Python

def get_geolocation(result):
    address = ["", "", "", ""]
    for obj in result["address_components"]:
        if "locality" in obj["types"]:
            address[0] = obj["long_name"]
        if "administrative_area_level_1" in obj["types"]:
            address[1] = obj["long_name"]
        if "country" in obj["types"]:
            address[2] = obj["long_name"]
    return  tuple(address)

import requests
import json

url = "http://maps.googleapis.com/maps/api/geocode/json?latlng=40,-76&sensor=false"
print get_geolocation(json.loads(requests.get(url).text)["results"][0])
url = "http://maps.googleapis.com/maps/api/geocode/json?latlng=50,13&sensor=false"
print get_geolocation(json.loads(requests.get(url).text)["results"][0])

JavaScript

Requires jQuery

function get_geolocation(lat, lon, callback){
    url = "http://maps.googleapis.com/maps/api/geocode/json?latlng="+lat+","+lon+"&sensor=false";
    $.getJSON(url, function(json){
        address = ["", "", "", ""];
        json["results"][0]["address_components"].forEach(function(obj){
            if (obj["types"].indexOf("locality") != -1) address[0] = obj["long_name"];
            if (obj["types"].indexOf("administrative_area_level_1") != -1) address[1] = obj["long_name"];
            if (obj["types"].indexOf("country") != -1) address[2] = obj["long_name"];
        })
        callback(address);
    });
}

Redmine gmail config

To file config/configuration.yml append this.
production:
    delivery_method: :smtp
    smtp_settings:
       address: smtp.gmail.com
       port: 587
       domain: gmail.com
       authentication: :login
       user_name: "username@gmail.com"
       password: "password"