Improve reporting of errors in GPX uploads, and allow private traces

to be uploaded once again.
This commit is contained in:
Tom Hughes 2007-06-12 08:52:19 +00:00
parent 2afcb4b222
commit bd5793f7a6
3 changed files with 22 additions and 7 deletions

View file

@ -2,7 +2,7 @@ class TraceController < ApplicationController
before_filter :authorize_web before_filter :authorize_web
before_filter :authorize, :only => [:api_details, :api_data, :api_create] before_filter :authorize, :only => [:api_details, :api_data, :api_create]
layout 'site' layout 'site'
# Counts and selects pages of GPX traces for various criteria (by user, tags, public etc.). # Counts and selects pages of GPX traces for various criteria (by user, tags, public etc.).
# target_user - if set, specifies the user to fetch traces for. if not set will fetch all traces # target_user - if set, specifies the user to fetch traces for. if not set will fetch all traces
# paging_action - the action that will be linked back to from view # paging_action - the action that will be linked back to from view
@ -115,10 +115,6 @@ class TraceController < ApplicationController
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."
redirect_to :action => 'mine' redirect_to :action => 'mine'
else
# fixme throw an error here
redirect_to :action => 'mine'
flash[:notice] = "You haven't entered a tag or a description for yoru traces."
end end
end end

View file

@ -1,10 +1,10 @@
class Trace < ActiveRecord::Base class Trace < ActiveRecord::Base
set_table_name 'gpx_files' set_table_name 'gpx_files'
validates_presence_of :user_id, :name, :public, :timestamp validates_presence_of :user_id, :name, :timestamp
validates_presence_of :description, :on => :create validates_presence_of :description, :on => :create
# validates_numericality_of :latitude, :longitude # validates_numericality_of :latitude, :longitude
validates_inclusion_of :inserted, :in => [ true, false] validates_inclusion_of :public, :inserted, :in => [ true, false]
belongs_to :user belongs_to :user
has_many :tags, :class_name => 'Tracetag', :foreign_key => 'gpx_id', :dependent => :delete_all has_many :tags, :class_name => 'Tracetag', :foreign_key => 'gpx_id', :dependent => :delete_all
@ -15,6 +15,10 @@ class Trace < ActiveRecord::Base
FileUtils.rm_f(trace_name, icon_picture_name, large_picture_name) FileUtils.rm_f(trace_name, icon_picture_name, large_picture_name)
end end
def tagstring
return tags.collect {|tt| tt.tag}.join(" ")
end
def tagstring=(s) def tagstring=(s)
self.tags = s.split().collect {|tag| self.tags = s.split().collect {|tag|
tt = Tracetag.new tt = Tracetag.new

View file

@ -0,0 +1,15 @@
<h1>Upload GPS Trace</h1>
<%= error_messages_for 'trace' %>
<% form_tag({:action => 'create'}, :multipart => true) do %>
<table>
<tr><td align="right">Upload GPX File</td><td><%= file_field('trace', 'gpx_file', {:size => 50, :maxlength => 255}) %></td></tr>
<tr><td align="right">Description</td><td><%= text_field('trace', 'description', {:size => 50, :maxlength => 255}) %></td></tr>
<tr><td align="right">Tags</td><td><%= text_field('trace', 'tagstring', {:size => 50, :maxlength => 255}) %></td></tr>
<tr><td align="right">Public?</td><td><%= check_box('trace', 'public') %></td></tr>
<tr><td></td><td>
<%= submit_tag 'Upload' %> | <a href="http://wiki.openstreetmap.org/index.php/Upload">help</a>
</td></tr>
</table>
<% end %>