]> git.openstreetmap.org Git - rails.git/commitdiff
resync from rails_port 11795:12304
authorShaun McDonald <shaun@shaunmcdonald.me.uk>
Fri, 12 Dec 2008 19:29:27 +0000 (19:29 +0000)
committerShaun McDonald <shaun@shaunmcdonald.me.uk>
Fri, 12 Dec 2008 19:29:27 +0000 (19:29 +0000)
app/controllers/trace_controller.rb
app/models/user.rb
db/migrate/017_add_gpx_indexes.rb [new file with mode: 0644]
db/migrate/018_add_timestamp_indexes.rb [moved from db/migrate/017_add_timestamp_indexes.rb with 100% similarity]
db/migrate/019_populate_node_tags_and_remove.rb [moved from db/migrate/018_populate_node_tags_and_remove.rb with 94% similarity]
db/migrate/019_populate_node_tags_and_remove_helper.c [moved from db/migrate/018_populate_node_tags_and_remove_helper.c with 96% similarity]
db/migrate/020_move_to_innodb.rb [moved from db/migrate/019_move_to_innodb.rb with 100% similarity]
db/migrate/021_key_constraints.rb [moved from db/migrate/020_key_constraints.rb with 100% similarity]
db/migrate/022_add_changesets.rb [moved from db/migrate/021_add_changesets.rb with 100% similarity]
db/migrate/023_order_relation_members.rb [moved from db/migrate/022_order_relation_members.rb with 100% similarity]
db/migrate/024_add_end_time_to_changesets.rb [moved from db/migrate/023_add_end_time_to_changesets.rb with 100% similarity]

index 06ae5dc3b7e1910d6614295d9f5e791b0ec876dc..022c304fb15b685dfb0bb39b20e097d25d34ec2d 100644 (file)
@@ -2,6 +2,7 @@ class TraceController < ApplicationController
   layout 'site'
 
   before_filter :authorize_web  
+  before_filter :require_user, :only => [:mine, :edit, :delete, :make_public]
   before_filter :authorize, :only => [:api_details, :api_data, :api_create]
   before_filter :check_database_availability, :except => [:api_details, :api_data, :api_create]
   before_filter :check_read_availability, :only => [:api_details, :api_data, :api_create]
@@ -47,8 +48,9 @@ class TraceController < ApplicationController
     
     if params[:tag]
       @tag = params[:tag]
-      conditions[0] += " AND EXISTS (SELECT * FROM gpx_file_tags AS gft WHERE gft.gpx_id = gpx_files.id AND gft.tag = ?)"
-      conditions << @tag
+
+      files = Tracetag.find_all_by_tag(params[:tag]).collect { |tt| tt.gpx_id }
+      conditions[0] += " AND gpx_files.id IN (#{files.join(',')})"
     end
     
     conditions[0] += " AND gpx_files.visible = ?"
@@ -78,17 +80,7 @@ class TraceController < ApplicationController
   end
 
   def mine
-    if @user
-      @trace = Trace.new
-      unless @user.trace_public_default.nil?
-        @trace.public = true
-      else 
-        @trace.public = false
-      end
-      list(@user, "mine") unless @user.nil?
-    else
-      redirect_to :controller => 'user', :action => 'login', :referer => request.request_uri
-    end
+    list(@user, "mine")
   end
 
   def view
@@ -140,7 +132,7 @@ class TraceController < ApplicationController
         send_file(trace.trace_name, :filename => "#{trace.id}#{trace.extension_name}", :type => trace.mime_type, :disposition => 'attachment')
       end
     else
-      render :nothing, :status => :not_found
+      render :nothing => true, :status => :not_found
     end
   rescue ActiveRecord::RecordNotFound
     render :nothing => true, :status => :not_found
@@ -158,7 +150,7 @@ class TraceController < ApplicationController
         end        
       end
     else
-      render :nothing, :status => :forbidden
+      render :nothing => true, :status => :forbidden
     end
   rescue ActiveRecord::RecordNotFound
     render :nothing => true, :status => :not_found
@@ -174,10 +166,10 @@ class TraceController < ApplicationController
         flash[:notice] = 'Track scheduled for deletion'
         redirect_to :controller => 'traces', :action => 'mine'
       else
-        render :nothing, :status => :bad_request
+        render :nothing => true, :status => :bad_request
       end
     else
-      render :nothing, :status => :forbidden
+      render :nothing => true, :status => :forbidden
     end
   rescue ActiveRecord::RecordNotFound
     render :nothing => true, :status => :not_found
@@ -193,10 +185,10 @@ class TraceController < ApplicationController
         flash[:notice] = 'Track made public'
         redirect_to :controller => 'trace', :action => 'view', :id => params[:id]
       else
-        render :nothing, :status => :bad_request
+        render :nothing => true, :status => :bad_request
       end
     else
-      render :nothing, :status => :forbidden
+      render :nothing => true, :status => :forbidden
     end
   rescue ActiveRecord::RecordNotFound
     render :nothing => true, :status => :not_found
@@ -234,7 +226,7 @@ class TraceController < ApplicationController
       if trace.public? or (@user and @user == trace.user)
         send_file(trace.large_picture_name, :filename => "#{trace.id}.gif", :type => 'image/gif', :disposition => 'inline')
       else
-        render :nothing, :status => :forbidden
+        render :nothing => true, :status => :forbidden
       end
     else
       render :nothing => true, :status => :not_found
@@ -250,7 +242,7 @@ class TraceController < ApplicationController
       if trace.public? or (@user and @user == trace.user)
         send_file(trace.icon_picture_name, :filename => "#{trace.id}_icon.gif", :type => 'image/gif', :disposition => 'inline')
       else
-        render :nothing, :status => :forbidden
+        render :nothing => true, :status => :forbidden
       end
     else
       render :nothing => true, :status => :not_found
index 0eddb259d01213506df8aa502aa71076b0a669aa..ce244fe02448bce114dbb79d25b6a009a4848f28 100644 (file)
@@ -110,4 +110,17 @@ class User < ActiveRecord::Base
     return self.preferences.find(:first, :conditions => {:k => "gps.trace.public", :v => "default"})
   end
 
+  def delete
+    self.active = false
+    self.display_name = "user_#{self.id}"
+    self.description = nil
+    self.home_lat = nil
+    self.home_lon = nil
+    self.image = nil
+    self.email_valid = false
+    self.new_email = nil
+    self.visible = false
+    self.save
+  end
+
 end
diff --git a/db/migrate/017_add_gpx_indexes.rb b/db/migrate/017_add_gpx_indexes.rb
new file mode 100644 (file)
index 0000000..1778dcc
--- /dev/null
@@ -0,0 +1,11 @@
+class AddGpxIndexes < ActiveRecord::Migration
+  def self.up
+    add_index "gpx_files", ["user_id"], :name => "gpx_files_user_id_idx"
+    add_index "gpx_file_tags", ["tag"], :name => "gpx_file_tags_tag_idx"
+  end
+
+  def self.down
+    remove_index "gpx_file_tags", :name => "gpx_file_tags_tag_idx"
+    remove_index "gpx_files", :name => "gpx_files_user_id_idx"
+  end
+end
similarity index 94%
rename from db/migrate/018_populate_node_tags_and_remove.rb
rename to db/migrate/019_populate_node_tags_and_remove.rb
index 2a3f3c9881f13d0e6f0c2415364eda229a967bd2..8603586463f8b8330583a33bf67d87dd737d5257 100644 (file)
@@ -3,9 +3,9 @@ class PopulateNodeTagsAndRemove < ActiveRecord::Migration
     have_nodes = select_value("SELECT count(*) FROM current_nodes").to_i != 0
 
     if have_nodes
-      prefix = File.join Dir.tmpdir, "017_populate_node_tags_and_remove.#{$$}."
+      prefix = File.join Dir.tmpdir, "019_populate_node_tags_and_remove.#{$$}."
 
-      cmd = "db/migrate/018_populate_node_tags_and_remove_helper"
+      cmd = "db/migrate/019_populate_node_tags_and_remove_helper"
       src = "#{cmd}.c"
       if not File.exists? cmd or File.mtime(cmd) < File.mtime(src) then 
         system 'cc -O3 -Wall `mysql_config --cflags --libs` ' +
similarity index 96%
rename from db/migrate/018_populate_node_tags_and_remove_helper.c
rename to db/migrate/019_populate_node_tags_and_remove_helper.c
index 83c1b174367fd0ac4b473ed8f7939914614d1a1b..c41ea33da77e1912bd0ceba7291b6ce04ebf919d 100644 (file)
@@ -7,9 +7,9 @@
 static void exit_mysql_err(MYSQL *mysql) {
   const char *err = mysql_error(mysql);
   if (err) {
-    fprintf(stderr, "018_populate_node_tags_and_remove_helper: MySQL error: %s\n", err);
+    fprintf(stderr, "019_populate_node_tags_and_remove_helper: MySQL error: %s\n", err);
   } else {
-    fprintf(stderr, "018_populate_node_tags_and_remove_helper: MySQL error\n");
+    fprintf(stderr, "019_populate_node_tags_and_remove_helper: MySQL error\n");
   }
   abort();
   exit(EXIT_FAILURE);
@@ -192,7 +192,7 @@ int main(int argc, char **argv) {
   struct data data, *d = &data;
 
   if (argc != 8) {
-    printf("Usage: 018_populate_node_tags_and_remove_helper host user passwd database port socket prefix\n");
+    printf("Usage: 019_populate_node_tags_and_remove_helper host user passwd database port socket prefix\n");
     exit(EXIT_FAILURE);
   }