Skip to content
Extraits de code Groupes Projets
photo.rb 1,63 ko
Newer Older
class Photo < Post
Raphael's avatar
Raphael a validé
  require 'carrierwave/orm/mongomapper'
  include MongoMapper::Document
  mount_uploader :image, ImageUploader
  xml_accessor :remote_photo
  xml_reader :album_id 
maxwell's avatar
maxwell a validé

  key :album_id, ObjectId
ilya's avatar
ilya a validé

   
maxwell's avatar
maxwell a validé
  belongs_to :album, :class_name => 'Album'
  timestamps!

  validates_presence_of :album
maxwell's avatar
maxwell a validé
  def self.instantiate(params = {})
    image_file = params[:user_file].first
    params.delete :user_file
maxwell's avatar
maxwell a validé
    
ilya's avatar
ilya a validé
    photo = Photo.new(params)
    photo.image.store! image_file
    photo.save
ilya's avatar
ilya a validé
  end
ilya's avatar
ilya a validé
  after_save :log_save_inspection 
  validates_true_for :album_id, :logic => lambda {self.validate_album_person}
ilya's avatar
ilya a validé

  key :remote_photo_path
  key :remote_photo_name
ilya's avatar
ilya a validé
  def validate_album_person
    album.person_id == person_id
  end
Raphael's avatar
Raphael a validé
  
  def remote_photo
ilya's avatar
ilya a validé
    image.url.nil? ? (remote_photo_path +  remote_photo_name) : image.url
  end

  def remote_photo= remote_path
Raphael's avatar
Raphael a validé
    name_start = remote_path.rindex '/'
    self.remote_photo_path = remote_path.slice(0, name_start )
ilya's avatar
ilya a validé
    self.remote_photo_name = remote_path.slice(name_start + 1, remote_path.length)
Raphael's avatar
Raphael a validé
  end

  def url(name = nil)
    if remote_photo_path
ilya's avatar
ilya a validé
      name = name.to_s + "_" if name
      person.url.chop + remote_photo_path + "/" + name.to_s + remote_photo_name
Raphael's avatar
Raphael a validé
    else
      image.url name
    end
    users = Person.all('profile.image_url' => image.url(:thumb_medium) )
    users.each{ |user|
      user.profile.update_attributes!(:image_url => nil)

  def thumb_hash
    {:thumb_url => image.url(:thumb_medium), :id => id, :album_id => album_id}
  end
Raphael's avatar
Raphael a validé
end