From fdd158d86ae19f44d0ba8c2d0ef9f481a1f4557b Mon Sep 17 00:00:00 2001
From: Raphael Sofaer <raphael@joindiaspora.com>
Date: Mon, 21 Mar 2011 18:42:36 -0700
Subject: [PATCH] Make urls not change on processing

---
 app/models/photo.rb                | 20 ++++++--------------
 app/models/user.rb                 |  1 -
 app/uploaders/processed_image.rb   |  2 +-
 app/uploaders/unprocessed_image.rb |  8 ++++++--
 spec/models/photo_spec.rb          |  3 ---
 spec/models/user_spec.rb           |  4 ----
 6 files changed, 13 insertions(+), 25 deletions(-)

diff --git a/app/models/photo.rb b/app/models/photo.rb
index 0cfb47b132..bbab524031 100644
--- a/app/models/photo.rb
+++ b/app/models/photo.rb
@@ -33,8 +33,9 @@ class Photo < Post
   def self.diaspora_initialize(params = {})
     photo = super(params)
     image_file = params.delete(:user_file)
-    photo.random_string = gen_random_string(10)
+    photo.random_string = ActiveSupport::SecureRandom.hex(10)
     photo.unprocessed_image.store! image_file
+    photo.update_remote_path
     photo
   end
 
@@ -47,12 +48,12 @@ class Photo < Post
   end
 
   def update_remote_path
-    unless self.processed_image.url.match(/^https?:\/\//)
+    unless self.unprocessed_image.url.match(/^https?:\/\//)
       pod_url = AppConfig[:pod_url].dup
       pod_url.chop! if AppConfig[:pod_url][-1,1] == '/'
-      remote_path = "#{pod_url}#{self.processed_image.url}"
+      remote_path = "#{pod_url}#{self.unprocessed_image.url}"
     else
-      remote_path = self.processed_image.url
+      remote_path = self.unprocessed_image.url
     end
 
     name_start = remote_path.rindex '/'
@@ -77,7 +78,7 @@ class Photo < Post
       name = name.to_s + '_' if name
       remote_photo_path + name.to_s + remote_photo_name
     elsif not_processed?
-      unprocessed_image.url
+      unprocessed_image.url(name)
     else
       processed_image.url(name)
     end
@@ -102,7 +103,6 @@ class Photo < Post
   def process
     return false if unprocessed_image.path.include?('.gif') || self.processed?
     processed_image.store!(unprocessed_image) #Ultra naive
-    update_remote_path
     save!
   end
 
@@ -110,14 +110,6 @@ class Photo < Post
     true
   end
 
-  def self.gen_random_string(len)
-    chars = ("a".."z").to_a + ("A".."Z").to_a + ("0".."9").to_a
-    string = ""
-    1.upto(len) { |i| string << chars[rand(chars.size-1)] }
-    return string
-  end
-
-
   def as_json(opts={})
     {
     :photo => {
diff --git a/app/models/user.rb b/app/models/user.rb
index bf75d81a13..f5a16d92c2 100644
--- a/app/models/user.rb
+++ b/app/models/user.rb
@@ -226,7 +226,6 @@ class User < ActiveRecord::Base
   def update_profile(params)
     if photo = params.delete(:photo)
       photo.update_attributes(:pending => false) if photo.pending
-      photo.process
       params[:image_url] = photo.url(:thumb_large)
       params[:image_url_medium] = photo.url(:thumb_medium)
       params[:image_url_small] = photo.url(:thumb_small)
diff --git a/app/uploaders/processed_image.rb b/app/uploaders/processed_image.rb
index fb0478c80f..a2e8c3658f 100644
--- a/app/uploaders/processed_image.rb
+++ b/app/uploaders/processed_image.rb
@@ -14,7 +14,7 @@ class ProcessedImage < CarrierWave::Uploader::Base
   end
 
   def filename
-    model.random_string + model.id.to_s + File.extname(@filename) if @filename
+    model.random_string + File.extname(@filename) if @filename
   end
 
   version :thumb_small do
diff --git a/app/uploaders/unprocessed_image.rb b/app/uploaders/unprocessed_image.rb
index ab43a3d070..5792412531 100644
--- a/app/uploaders/unprocessed_image.rb
+++ b/app/uploaders/unprocessed_image.rb
@@ -6,7 +6,7 @@ class UnprocessedImage < CarrierWave::Uploader::Base
   include CarrierWave::MiniMagick
 
   def store_dir
-    "uploads/u_images"
+    "uploads/images"
   end
 
   def extension_white_list
@@ -14,7 +14,11 @@ class UnprocessedImage < CarrierWave::Uploader::Base
   end
 
   def filename
-    model.random_string + model.id.to_s + File.extname(@filename) if @filename
+    model.random_string + File.extname(@filename) if @filename
   end
 
+  version :thumb_small
+  version :thumb_medium
+  version :thumb_large
+  version :scaled_full
 end
diff --git a/spec/models/photo_spec.rb b/spec/models/photo_spec.rb
index d8219ddac8..a1b18ccb36 100644
--- a/spec/models/photo_spec.rb
+++ b/spec/models/photo_spec.rb
@@ -75,9 +75,6 @@ describe Photo do
       @photo.save!
     end
     it 'sets a remote url' do
-      @photo.remote_photo_path.should be_nil
-      @photo.remote_photo_name.should be_nil
-
       @photo.update_remote_path
 
       @photo.remote_photo_path.should include("http")
diff --git a/spec/models/user_spec.rb b/spec/models/user_spec.rb
index a9daff2a96..95fd1d6bf6 100644
--- a/spec/models/user_spec.rb
+++ b/spec/models/user_spec.rb
@@ -300,10 +300,6 @@ describe User do
         alice.update_profile(@params).should be true
         @photo.reload.pending.should be_false
       end
-      it 'post-processes the photo' do
-        @photo.should_receive(:process)
-        alice.update_profile(@params).should be true
-      end
     end
   end
 
-- 
GitLab