scope :visible_to_all, -> { where(:visibility => %w(public identifiable)) }
scope :tagged, ->(t) { joins(:tags).where(:gpx_file_tags => { :tag => t }) }
- validates_presence_of :user_id, :name, :timestamp
- validates_presence_of :description, :on => :create
- validates_length_of :name, :maximum => 255
- validates_length_of :description, :maximum => 255
- # validates_numericality_of :latitude, :longitude
- validates_inclusion_of :inserted, :in => [true, false]
- validates_inclusion_of :visibility, :in => %w(private public trackable identifiable)
+ validates :user, :presence => true, :associated => true
+ validates :name, :presence => true, :length => 1..255
+ validates :description, :presence => { :on => :create }, :length => 1..255
+ validates :timestamp, :presence => true
+ validates :visibility, :inclusion => %w(private public trackable identifiable)
def destroy
super
def large_picture
f = File.new(large_picture_name, "rb")
- logger.info "large picture file: '#{f.path}', bytes: #{File.size(f.path)}"
data = f.sysread(File.size(f.path))
- logger.info "have read data, bytes: '#{data.length}'"
f.close
data
end
def icon_picture
f = File.new(icon_picture_name, "rb")
- logger.info "icon picture file: '#{f.path}'"
data = f.sysread(File.size(f.path))
f.close
data
gzipped = filetype =~ /gzip compressed/
bzipped = filetype =~ /bzip2 compressed/
zipped = filetype =~ /Zip archive/
+ tarred = filetype =~ /tar archive/
if gzipped
mimetype = "application/x-gzip"
mimetype = "application/x-bzip2"
elsif zipped
mimetype = "application/x-zip"
+ elsif tarred
+ mimetype = "application/x-tar"
else
mimetype = "application/gpx+xml"
end
end
def xml_file
- # 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'
filetype = `/usr/bin/file -bz #{trace_name}`.chomp
gzipped = filetype =~ /gzip compressed/
bzipped = filetype =~ /bzip2 compressed/
elsif bzipped
system("bunzip2 -c #{trace_name} > #{tmpfile.path}")
elsif zipped
- system("unzip -p #{trace_name} -x '__MACOSX/*' > #{tmpfile.path}")
+ system("unzip -p #{trace_name} -x '__MACOSX/*' > #{tmpfile.path} 2> /dev/null")
end
tmpfile.unlink
f_lon = 0
first = true
- # If there are any existing points for this trace then delete
- # them - we check for existing points first to avoid locking
- # the table in the common case where there aren't any.
- if Tracepoint.where(:gpx_id => id).exists?
- Tracepoint.delete_all(:gpx_id => id)
- end
+ # If there are any existing points for this trace then delete them
+ Tracepoint.delete_all(:gpx_id => id)
gpx.points do |point|
if first