team.rb revision 20718983ee2ea9c0164f0f1f5e18ff87056986f6
02c335c23bf5fa225a467c19f2c063fb0dc7b8c3Timo Sirainenclass Team < ActiveRecord::Base
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen has_many :team_users
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen has_many :users, :through => :team_users
bdd36cfdba3ff66d25570a9ff568d69e1eb543cfTimo Sirainen has_many :permissions, :as => :subject
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen # create admin user after team creation
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen attr_accessor :admin_user
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen attr_accessible :admin_user
09060303d565e15d54e42b4ef722f9d3c26f5336Timo Sirainen after_create :create_admin_user
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen
9522aa5f33cc37fe8ccd0d647cc51dd3ba6a9b55Timo Sirainen attr_accessible :name
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen strip_attributes :only => :name
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen scope :autocomplete_search, ->(query) {
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen where("name #{connection.ilike_operator} ?", "%" << query << "%")
4fda77c9e9fc68feb292c4dacae1fac49dd08165Timo Sirainen }
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen validates :name,
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen :presence => true,
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen :length => { :minimum => 3, :maximum => 50 },
f158d9a303bb15a6848ca276c9391c7ca52e452bTimo Sirainen :uniqueness => { :case_sensitive => false }
f158d9a303bb15a6848ca276c9391c7ca52e452bTimo Sirainen
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen def to_s
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen name
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen end
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen # does the given user have admin-privileges in this team?
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen def admin?(user)
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen user && (user.admin? || team_users.admin.find_by_user_id(user.id))
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen end
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen protected
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen # create admin user after team-creation
0dffa25d211be541ee3c953b23566a1a990789dfTimo Sirainen def create_admin_user
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen if admin_user
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen team_users.create! \
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen admin: true,
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen user: admin_user
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen end
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen end
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainenend
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen