Skip to content
Extraits de code Groupes Projets
post.rb 1,59 ko
Newer Older
  • Learn to ignore specific revisions
  • maxwell's avatar
    maxwell a validé
      require 'lib/encryptable'
    
    maxwell's avatar
    maxwell a validé
      include MongoMapper::Document
    
      include ApplicationHelper 
    
      include Diaspora::Webhooks
    
    Raphael's avatar
    Raphael a validé
      include Encryptable
    
    ilya's avatar
    ilya a validé
      xml_accessor :_id
    
      xml_accessor :person, :as => Person
    
    maxwell's avatar
    maxwell a validé
      key :person_id, ObjectId
    
    ilya's avatar
    ilya a validé
    
    
      many :comments, :class_name => 'Comment', :foreign_key => :post_id
    
      belongs_to :person, :class_name => 'Person'
    
    maxwell's avatar
    maxwell a validé
      
      cattr_reader :per_page
      @@per_page = 10
        
    
    maxwell's avatar
    maxwell a validé
      timestamps!
    
      before_destroy :propagate_retraction
    
    Raphael's avatar
    Raphael a validé
      after_destroy :destroy_comments
    
      def self.instantiate params
        self.create params
      end
    
    #Querying
    
    maxwell's avatar
    maxwell a validé
      def self.stream
        Post.sort(:created_at.desc).all
      end
    
    maxwell's avatar
    maxwell a validé
      def self.newest_for(person)
    
        self.first(:person_id => person.id, :order => '_id desc')
    
    ilya's avatar
    ilya a validé
    #ENCRYPTION
    
      before_validation :sign_if_mine
      validates_true_for :creator_signature, :logic => lambda {self.verify_creator_signature}
      
      xml_accessor :creator_signature
      key :creator_signature, String
      
      def signable_accessors
        accessors = self.class.roxml_attrs.collect{|definition| 
          definition.accessor}
        accessors.delete 'person'
        accessors.delete 'creator_signature'
        accessors
      end
    
      def signable_string
        signable_accessors.collect{|accessor| 
          (self.send accessor.to_sym).to_s}.join ';'
      end
    
    ilya's avatar
    ilya a validé
      def log_inspection
    
        Rails.logger.debug self.inspect
    
    ilya's avatar
    ilya a validé
      end
    
    ilya's avatar
    ilya a validé
      def log_save_inspection
    
        Rails.logger.debug "After saving, object is:"
    
    ilya's avatar
    ilya a validé
        log_inspection
      end
    
    ilya's avatar
    ilya a validé
    
    
    Raphael's avatar
    Raphael a validé
    protected
       def destroy_comments
    
        comments.each{|c| c.destroy}
      end
      
    
      def propagate_retraction
    
    maxwell's avatar
    maxwell a validé