aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoachim Filip Ignacy Bartosik <jbartosik@gmail.com>2011-05-17 17:14:01 +0200
committerJoachim Filip Ignacy Bartosik <jbartosik@gmail.com>2011-05-24 18:55:39 +0200
commit8fcbeab8bf791e9b2b793bb85ee5faea80338ac7 (patch)
tree3fdc4e394423118d4337d6307d3d546ae37f11ad /site/app/models
parentAgenda items (diff)
downloadcouncil-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.rb10
-rw-r--r--site/app/models/agenda_item.rb4
-rw-r--r--site/app/models/participation.rb34
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