Sha256: f09c2c51fee78e4e5e5ec12604b31093ce83664a1e3a8973d8546da7c8fc055f

Contents?: true

Size: 1.4 KB

Versions: 3

Compression:

Stored size: 1.4 KB

Contents

module Pbw
  class Process < Rule
    has_many :triggers, :class_name => 'Pbw::Trigger'
    has_many :attached_processes, :class_name => 'Pbw::AttachedProcess'
    
    def self.viewable_by?(user, subject)
        user.admin?
    end

    def self.creatable_by?(user, subject)
        true
    end

    def self.editable_by?(user, subject)
        user.admin?
    end

    def self.deletable_by?(user, subject)
        user.admin?
    end

    def before_run(token_or_area)
    	# stub method
    	true
    end

    def after_triggers(token_or_area)
    	# stub method
    end

    def changeset(token_or_area)
    	# stub method
    	Pbw::Changeset.new
    end

    def execute_changeset!(&changeset)
    	changeset.models_changed.each do |model|
    		changes = changeset.changes_for_model(model)
    		changes.keys.each do |field|
    			model.send("#{field}=".to_sym,changes[field])
    		end
    		return false unless model.save
    	end
    	true
    end

    def run!(token_or_area)
    	return false unless before_run(token_or_area)
    	changes = changeset(token_or_area)
    	return false unless changes
    	raise "Invalid object returned from changeset method in #{self.class.name}" unless changes.is_a?(Changeset)
    	return false unless token_or_area.check_constraints_and_capabilities(changes)
    	execute_changeset!(changes)
    	token_or_area.check_triggers!
    	after_triggers(token_or_area)
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
pbw-0.1.1 app/models/pbw/process.rb
pbw-0.1.0 app/models/pbw/process.rb
pbw-0.0.10 app/models/pbw/process.rb