- raise OSM::APIBadUserInput.new("No lat was given") unless params['lat']
- raise OSM::APIBadUserInput.new("No lon was given") unless params['lon']
- raise OSM::APIBadUserInput.new("No text was given") unless params['text']
-
- lon = params['lon'].to_f
- lat = params['lat'].to_f
- comment = params['text']
-
- name = "NoName";
- name = params['name'] if params['name'];
-
- @bug = MapBug.create_bug(lat, lon)
-
-
- #TODO: move this into a helper function
- url = "http://nominatim.openstreetmap.org/reverse?lat=" + lat.to_s + "&lon=" + lon.to_s + "&zoom=16"
- response = REXML::Document.new(Net::HTTP.get(URI.parse(url)))
-
- if result = response.get_text("reversegeocode/result")
- @bug.nearby_place = result.to_s
- else
- @bug.nearby_place = "unknown"
- end
-
- @bug.save;
- add_comment(@bug, comment, name);
+ raise OSM::APIBadUserInput.new("No lat was given") unless params['lat']
+ raise OSM::APIBadUserInput.new("No lon was given") unless params['lon']
+ raise OSM::APIBadUserInput.new("No text was given") unless params['text']
+
+ lon = params['lon'].to_f
+ lat = params['lat'].to_f
+ comment = params['text']
+
+ name = "NoName"
+ name = params['name'] if params['name']
+
+ #Include in a transaction to ensure that there is always a map_bug_comment for every map_bug
+ MapBug.transaction do
+ @bug = MapBug.create_bug(lat, lon)
+
+ #TODO: move this into a helper function
+ begin
+ url = "http://nominatim.openstreetmap.org/reverse?lat=" + lat.to_s + "&lon=" + lon.to_s + "&zoom=16"
+ response = REXML::Document.new(Net::HTTP.get(URI.parse(url)))
+
+ if result = response.get_text("reversegeocode/result")
+ @bug.nearby_place = result.to_s
+ else
+ @bug.nearby_place = "unknown"
+ end
+ rescue Exception => err
+ @bug.nearby_place = "unknown"
+ end
+
+ @bug.save
+ add_comment(@bug, comment, name,"opened")
+ end