diff --git a/app/models/photo.rb b/app/models/photo.rb index c11aae84a..bedcdc143 100644 --- a/app/models/photo.rb +++ b/app/models/photo.rb @@ -30,27 +30,27 @@ class Photo < Post validates_true_for :album_id, :logic => lambda {self.validate_album_person} before_destroy :ensure_user_picture - + key :remote_photo_path + key :remote_photo_name def validate_album_person album.person_id == person_id end def remote_photo - url + image.url.nil? ? (remote_photo_path + '/' + remote_photo_name) : image.url end def remote_photo= remote_path name_start = remote_path.rindex '/' - @remote_photo_path = remote_path.slice(0, name_start ) - @remote_photo_name = remote_path.slice(name_start, remote_path.length) - save - raise "Failed to set path for : #{self.inspect}" if Photo.first(:id => self.id).url.nil? + self.remote_photo_path = remote_path.slice(0, name_start ) + self.remote_photo_name = remote_path.slice(name_start + 1, remote_path.length) end - def url name = nil - if @remote_photo_path - @remote_photo_path + name.to_s + @remote_photo_name + def url(name = nil) + if remote_photo_path + name = name.to_s + "_" if name + person.url.chop + remote_photo_path + "/" + name.to_s + remote_photo_name else image.url name end diff --git a/app/views/photos/_photo.haml b/app/views/photos/_photo.haml index e6734639a..e15dcb0d5 100644 --- a/app/views/photos/_photo.haml +++ b/app/views/photos/_photo.haml @@ -8,7 +8,7 @@ = link_to post.album.name, object_path(post.album) %br - = link_to (image_tag post.image.url(:thumb_large)), object_path(post) + = link_to (image_tag post.url(:thumb_large)), object_path(post) %div.time = link_to(how_long_ago(post), photo_path(post)) diff --git a/spec/models/photo_spec.rb b/spec/models/photo_spec.rb index c91fd3c1a..b0ad79b83 100644 --- a/spec/models/photo_spec.rb +++ b/spec/models/photo_spec.rb @@ -108,5 +108,26 @@ describe Photo do xml = @photo.to_xml.to_s xml.include?(@photo.album_id.to_s).should be true end + + it 'should set the remote_photo on marshalling' do + @photo.image.store! File.open(@fixture_name) + + @photo.save + @photo.reload + + url = @photo.url + thumb_url = @photo.url :thumb_medium + + xml = @photo.to_diaspora_xml + id = @photo.id + + @photo.destroy + @user.receive xml + + new_photo = Photo.first(:id => id) + new_photo.url.nil?.should be false + new_photo.url.include?(url).should be true + new_photo.url(:thumb_medium).include?(thumb_url).should be true + end end end