diff options
author | 2011-05-17 17:14:01 +0200 | |
---|---|---|
committer | 2011-05-24 18:55:39 +0200 | |
commit | 8fcbeab8bf791e9b2b793bb85ee5faea80338ac7 (patch) | |
tree | 3fdc4e394423118d4337d6307d3d546ae37f11ad /site/app/models | |
parent | Agenda items (diff) | |
download | council-webapp-8fcbeab8bf791e9b2b793bb85ee5faea80338ac7.tar.gz council-webapp-8fcbeab8bf791e9b2b793bb85ee5faea80338ac7.tar.bz2 council-webapp-8fcbeab8bf791e9b2b793bb85ee5faea80338ac7.zip |
Basic meeting participation tracing
When archiving agenda mark all council members as participants. Remember
their names and irc_nicks.
Diffstat (limited to 'site/app/models')
-rw-r--r-- | site/app/models/agenda.rb | 10 | ||||
-rw-r--r-- | site/app/models/agenda_item.rb | 4 | ||||
-rw-r--r-- | site/app/models/participation.rb | 34 |
3 files changed, 45 insertions, 3 deletions
diff --git a/site/app/models/agenda.rb b/site/app/models/agenda.rb index 5998ae8..f8f90df 100644 --- a/site/app/models/agenda.rb +++ b/site/app/models/agenda.rb @@ -8,6 +8,7 @@ class Agenda < ActiveRecord::Base end has_many :agenda_items + has_many :participations lifecycle do state :open, :default => true @@ -16,7 +17,14 @@ class Agenda < ActiveRecord::Base transition :close, {:open => :submissions_closed}, :available_to => '::Agenda.transitions_available(acting_user)' transition :reopen, {:submissions_closed=> :open}, :available_to => '::Agenda.transitions_available(acting_user)' transition :archive, {:submissions_closed => :old}, :available_to => '::Agenda.transitions_available(acting_user)' do - Agenda.new.save! + ActiveRecord::Base.transaction do + Agenda.new.save! + ::User.council_member_is(true).each do |participant| + Participation.create! :irc_nick => participant.irc_nick, + :participant => participant, + :agenda => self + end + end end end diff --git a/site/app/models/agenda_item.rb b/site/app/models/agenda_item.rb index 1bb3a36..f5108bd 100644 --- a/site/app/models/agenda_item.rb +++ b/site/app/models/agenda_item.rb @@ -21,7 +21,7 @@ class AgendaItem < ActiveRecord::Base end def update_permitted? - return false if agenda._?.state == 'archived' + return false if agenda._?.state == 'old' return false if user_changed? return true if acting_user.council_member? return true if acting_user.administrator? @@ -42,7 +42,7 @@ class AgendaItem < ActiveRecord::Base def edit_permitted?(field) return false if field == :rejected && !agenda.nil? return false if field == :agenda && rejected? - return false if agenda._?.state == 'archived' + return false if agenda._?.state == 'old' return false if field == :user return true if acting_user.administrator? return true if acting_user.council_member? diff --git a/site/app/models/participation.rb b/site/app/models/participation.rb new file mode 100644 index 0000000..95c4142 --- /dev/null +++ b/site/app/models/participation.rb @@ -0,0 +1,34 @@ +class Participation < ActiveRecord::Base + + hobo_model # Don't put anything above this + + fields do + irc_nick :string + timestamps + end + + belongs_to :participant, :class_name => 'User' + belongs_to :agenda + + # --- Permissions --- # + + def create_permitted? + false + end + + def update_permitted? + false + end + + def destroy_permitted? + false + end + + def view_permitted?(field) + true + end + + def name + participant.name + end +end |