Changeset 1140

Show
Ignore:
Timestamp:
08/27/07 18:06:19 (1 year ago)
Author:
alban
Message:

ajout de Subscription.notify. Fixes #6

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/app/models/mailer.rb

    r1121 r1140  
    11class Mailer < ActionMailer::Base 
     2  default_url_options[:host] = 'audiobank.tryphon.org' 
     3 
    24  def confirm(user, controller) 
    35    @recipients = user.email 
     
    1517  end 
    1618   
     19  def document_shared(user, subscriptions) 
     20    return if subscriptions.empty? 
     21     
     22    @recipients = user.email 
     23    @from = "AudioBank <audiobank@tryphon.org>" 
     24    @subject =  
     25      "[AudioBank] " +  
     26      (subscriptions.size == 1 ? "nouvelle souscription" : "nouvelles souscriptions") 
     27    @body = { :subscriptions => subscriptions, :user => user } 
     28  end 
     29   
    1730end 
  • trunk/app/models/subscription.rb

    r1130 r1140  
    55         
    66        validates_uniqueness_of :subscriber_id, :scope => [:document_id, :subscriber_type] 
     7         
     8        def self.notify 
     9          unnotified_subscriptions = Subscription.find_all_by_notified(false) 
     10          puts "#{unnotified_subscriptions.size} unnotified subscriptions" unless unnotified_subscriptions.empty? 
     11           
     12          mapped_subscriptions = Hash.new { |hash, user| hash[user] = Array.new } 
     13           
     14          unnotified_subscriptions.inject(mapped_subscriptions) do |map, subscription| 
     15            subscription.users.each do |user|  
     16              map[user].push(subscription) 
     17            end 
     18          map 
     19          end 
     20           
     21          mapped_subscriptions.each do |user, subscriptions| 
     22            puts "notify #{user.username} for #{subscriptions.size} subscription(s)" 
     23            Mailer.deliver_document_shared(user, subscriptions)   
     24            subscriptions.each { |subscription| subscription.update_attribute("notified", true) } 
     25          end 
     26        end 
     27         
     28        def users 
     29         subscriber.is_a?(Group) ? subscriber.users : [ subscriber ] 
     30        end 
     31         
    732end 
  • trunk/db/schema.rb

    r1137 r1140  
    33# then regenerate this schema definition. 
    44 
    5 ActiveRecord::Schema.define(:version => 22) do 
     5ActiveRecord::Schema.define(:version => 24) do 
    66 
    77  create_table "casts", :force => true do |t| 
    8     t.column "document_id", :integer, :null => false 
    9     t.column "name",        :string,  :null => false 
     8    t.column "document_id", :integer,                 :null => false 
     9    t.column "name",        :string,  :default => "", :null => false 
    1010  end 
    1111 
     
    1515 
    1616  create_table "documents", :force => true do |t| 
    17     t.column "title",       :string,                                           :null => false 
    18     t.column "description", :string,                                           :null => false 
     17    t.column "title",       :string,   :default => "",                         :null => false 
     18    t.column "description", :string,   :default => "",                         :null => false 
    1919    t.column "author_id",   :integer,                                          :null => false 
    2020    t.column "length",      :integer,  :default => 0,                          :null => false 
    2121    t.column "size",        :integer,  :default => 0,                          :null => false 
    2222    t.column "format",      :string,   :default => "application/octet-stream", :null => false 
    23     t.column "type",        :string,                                           :null => false 
     23    t.column "type",        :string,   :default => "",                         :null => false 
    2424    t.column "uploaded",    :boolean,  :default => false 
    2525    t.column "updated_at",  :datetime 
     
    3232 
    3333  create_table "groups", :force => true do |t| 
    34     t.column "name",        :string,  :null => false 
     34    t.column "name",        :string,  :default => "", :null => false 
    3535    t.column "description", :string 
    36     t.column "owner_id",    :integer, :null => false 
     36    t.column "owner_id",    :integer,                 :null => false 
    3737  end 
    3838 
     
    7474 
    7575  create_table "reviews", :force => true do |t| 
    76     t.column "document_id", :integer,  :null => false 
    77     t.column "user_id",     :integer,  :null => false 
    78     t.column "rating",      :integer,  :null => false 
    79     t.column "description", :string,   :null => false 
    80     t.column "created_at",  :datetime, :null => false 
     76    t.column "document_id", :integer,                  :null => false 
     77    t.column "user_id",     :integer,                  :null => false 
     78    t.column "rating",      :integer,                  :null => false 
     79    t.column "description", :string,   :default => "", :null => false 
     80    t.column "created_at",  :datetime,                 :null => false 
    8181  end 
    8282 
     
    9090 
    9191  create_table "subscriptions", :force => true do |t| 
    92     t.column "document_id",     :integer,                 :null => false 
    93     t.column "author_id",       :integer,                 :null => false 
    94     t.column "subscriber_id",   :integer,                 :null => false 
     92    t.column "document_id",     :integer,                  :null => false 
     93    t.column "author_id",       :integer,                  :null => false 
     94    t.column "subscriber_id",   :integer,                  :null => false 
    9595    t.column "download_count",  :integer,  :default => 0 
    9696    t.column "created_at",      :datetime 
    97     t.column "subscriber_type", :string,                  :null => false 
     97    t.column "subscriber_type", :string,   :default => "", :null => false 
     98    t.column "notified",        :boolean,                  :null => false 
    9899  end 
    99100 
     
    103104 
    104105  create_table "uploads", :force => true do |t| 
    105     t.column "document_id", :integer, :null => false 
    106     t.column "key",         :string,  :null => false 
     106    t.column "document_id", :integer,                 :null => false 
     107    t.column "key",         :string,  :default => "", :null => false 
    107108  end 
    108109 
    109110  create_table "users", :force => true do |t| 
    110     t.column "username",     :string,                      :null => false 
    111     t.column "password",     :string,                      :null => false 
    112     t.column "name",         :string,                      :null => false 
    113     t.column "email",        :string,                      :null => false 
     111    t.column "username",     :string,   :default => "" 
     112    t.column "password",     :string,   :default => "" 
     113    t.column "name",         :string,   :default => "",    :null => false 
     114    t.column "email",        :string,   :default => "",    :null => false 
    114115    t.column "organization", :string 
    115116    t.column "confirmed",    :boolean,  :default => false