X-Git-Url: https://git.openstreetmap.org/rails.git/blobdiff_plain/a6b84a0294a2929006ff056f56103be549c5b5a2..8df1212b59748341295da8d5bb08b4045dc59ad7:/app/models/trace.rb diff --git a/app/models/trace.rb b/app/models/trace.rb index 157b63f69..b13ce84d2 100644 --- a/app/models/trace.rb +++ b/app/models/trace.rb @@ -10,13 +10,11 @@ class Trace < ActiveRecord::Base 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 @@ -72,16 +70,13 @@ class Trace < ActiveRecord::Base 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 @@ -104,6 +99,7 @@ class Trace < ActiveRecord::Base gzipped = filetype =~ /gzip compressed/ bzipped = filetype =~ /bzip2 compressed/ zipped = filetype =~ /Zip archive/ + tarred = filetype =~ /tar archive/ if gzipped mimetype = "application/x-gzip" @@ -111,6 +107,8 @@ class Trace < ActiveRecord::Base mimetype = "application/x-bzip2" elsif zipped mimetype = "application/x-zip" + elsif tarred + mimetype = "application/x-tar" else mimetype = "application/gpx+xml" end @@ -240,7 +238,7 @@ class Trace < ActiveRecord::Base 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 @@ -262,12 +260,8 @@ class Trace < ActiveRecord::Base 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