various gpx bits
This commit is contained in:
parent
1bbe59b6a7
commit
e25cbb009a
3 changed files with 25 additions and 16 deletions
|
@ -123,7 +123,7 @@ class TraceController < ApplicationController
|
||||||
def data
|
def data
|
||||||
trace = Trace.find(params[:id])
|
trace = Trace.find(params[:id])
|
||||||
if trace.public? or (@user and @user == trace.user)
|
if trace.public? or (@user and @user == trace.user)
|
||||||
send_data(File.open("/tmp/#{trace.id}.gpx",'r').read , :filename => "#{trace.id}.gpx", :type => 'text/plain', :disposition => 'inline')
|
send_data(File.open("/home/osm/gpx/#{trace.id}.gpx",'r').read , :filename => "#{trace.id}.gpx", :type => 'text/plain', :disposition => 'inline')
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -188,7 +188,7 @@ class TraceController < ApplicationController
|
||||||
@trace.timestamp = Time.now
|
@trace.timestamp = Time.now
|
||||||
|
|
||||||
if @trace.save
|
if @trace.save
|
||||||
saved_filename = "/tmp/#{@trace.id}.gpx"
|
saved_filename = "/home/osm/gpx/#{@trace.id}.gpx"
|
||||||
File.rename(filename, saved_filename)
|
File.rename(filename, saved_filename)
|
||||||
logger.info("id is #{@trace.id}")
|
logger.info("id is #{@trace.id}")
|
||||||
flash[:notice] = "Your GPX file has been uploaded and is awaiting insertion in to the database. This will usually happen within half an hour, and an email will be sent to you on completion."
|
flash[:notice] = "Your GPX file has been uploaded and is awaiting insertion in to the database. This will usually happen within half an hour, and an email will be sent to you on completion."
|
||||||
|
|
|
@ -7,6 +7,7 @@ class Trace < ActiveRecord::Base
|
||||||
|
|
||||||
belongs_to :user
|
belongs_to :user
|
||||||
has_many :tags, :class_name => 'Tracetag', :foreign_key => 'gpx_id', :dependent => :destroy
|
has_many :tags, :class_name => 'Tracetag', :foreign_key => 'gpx_id', :dependent => :destroy
|
||||||
|
has_many :points, :class_name => 'Tracepoint', :foreign_key => 'gpx_id', :dependent => :destroy
|
||||||
|
|
||||||
def tagstring=(s)
|
def tagstring=(s)
|
||||||
self.tags = s.split().collect {|tag|
|
self.tags = s.split().collect {|tag|
|
||||||
|
@ -47,12 +48,12 @@ class Trace < ActiveRecord::Base
|
||||||
|
|
||||||
# FIXME change to permanent filestore area
|
# FIXME change to permanent filestore area
|
||||||
def large_picture_name
|
def large_picture_name
|
||||||
"/tmp/#{id}.gif"
|
"/home/osm/icons/#{id}.gif"
|
||||||
end
|
end
|
||||||
|
|
||||||
# FIXME change to permanent filestore area
|
# FIXME change to permanent filestore area
|
||||||
def icon_picture_name
|
def icon_picture_name
|
||||||
"/tmp/#{id}_icon.gif"
|
"/home/osm/icons/#{id}_icon.gif"
|
||||||
end
|
end
|
||||||
|
|
||||||
def to_xml_node
|
def to_xml_node
|
||||||
|
|
|
@ -16,7 +16,7 @@ while($running) do
|
||||||
|
|
||||||
ActiveRecord::Base.logger.info("GPX Import daemon wake @ #{Time.now}.")
|
ActiveRecord::Base.logger.info("GPX Import daemon wake @ #{Time.now}.")
|
||||||
|
|
||||||
traces = Trace.find(:all) #, :conditions => ['inserted = ?', false])
|
traces = Trace.find(:all, :conditions => ['inserted = ?', false])
|
||||||
|
|
||||||
if traces and traces.length > 0
|
if traces and traces.length > 0
|
||||||
traces.each do |trace|
|
traces.each do |trace|
|
||||||
|
@ -25,7 +25,7 @@ while($running) do
|
||||||
logger.info("GPX Import importing #{trace.name} (#{trace.id}) from #{trace.user.email}")
|
logger.info("GPX Import importing #{trace.name} (#{trace.id}) from #{trace.user.email}")
|
||||||
|
|
||||||
# TODO *nix specific, could do to work on windows... would be functionally inferior though - check for '.gz'
|
# TODO *nix specific, could do to work on windows... would be functionally inferior though - check for '.gz'
|
||||||
gzipped = `file -b /tmp/#{trace.id}.gpx`.chomp =~/^gzip/
|
gzipped = `file -b /home/osm/gpx/#{trace.id}.gpx`.chomp =~/^gzip/
|
||||||
|
|
||||||
if gzipped
|
if gzipped
|
||||||
logger.info("gzipped")
|
logger.info("gzipped")
|
||||||
|
@ -74,20 +74,28 @@ while($running) do
|
||||||
trace.inserted = true
|
trace.inserted = true
|
||||||
trace.save
|
trace.save
|
||||||
|
|
||||||
logger.info "done trace #{trace.id} -------------------------------------------------------------------------------"
|
logger.info "done trace #{trace.id}"
|
||||||
# Notifier::deliver_gpx_success(trace, gpx.possible_points)
|
Notifier::deliver_gpx_success(trace, gpx.possible_points)
|
||||||
else
|
else
|
||||||
#trace.destroy
|
`rm /home/osm/gpx/#{trace.id}.gpx`
|
||||||
# Notifier::deliver_gpx_failure(trace, '0 points parsed ok. Do they all have lat,lng,alt,timestamp?')
|
trace.destroy
|
||||||
|
Notifier::deliver_gpx_failure(trace, '0 points parsed ok. Do they all have lat,lng,alt,timestamp?')
|
||||||
end
|
end
|
||||||
|
|
||||||
rescue Exception => ex
|
rescue Exception => ex
|
||||||
logger.info ex
|
logger.info ex
|
||||||
ex.backtrace.each {|l| logger.info l }
|
ex.backtrace.each {|l| logger.info l }
|
||||||
#trace.destroy
|
`rm /home/osm/gpx/#{trace.id}.gpx`
|
||||||
# Notifier::deliver_gpx_failure(trace, ex.to_s + ex.backtrace.join("\n") )
|
trace.destroy
|
||||||
|
Notifier::deliver_gpx_failure(trace, ex.to_s + ex.backtrace.join("\n") )
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
Trace.find(:all, :conditions => ['inserted = ?', false]).each do |trace|
|
||||||
|
`rm /home/osm/gpx/#{trace.id}.gpx`
|
||||||
|
trace.destroy
|
||||||
|
end
|
||||||
|
exit
|
||||||
sleep 15.minutes
|
sleep 15.minutes
|
||||||
end
|
end
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue