mirror of
https://github.com/ENSL/ensl.org.git
synced 2024-12-27 04:51:14 +00:00
db9d4c1564
* Logrotation for production * added contributors class method to Group * added contributor? method to User * added contributor flag to User-API * added Contributor-Tab to staff-page
128 lines
2.6 KiB
Ruby
128 lines
2.6 KiB
Ruby
# == Schema Information
|
|
#
|
|
# Table name: groups
|
|
#
|
|
# id :integer not null, primary key
|
|
# name :string(255)
|
|
# created_at :datetime
|
|
# updated_at :datetime
|
|
# founder_id :integer
|
|
#
|
|
|
|
class Group < ActiveRecord::Base
|
|
include Extra
|
|
|
|
ADMINS = 1
|
|
REFEREES = 2
|
|
MOVIES = 3
|
|
DONORS = 4
|
|
MOVIEMAKERS = 5
|
|
CASTERS = 6
|
|
CHAMPIONS = 7
|
|
PREDICTORS = 8
|
|
STAFF = 10
|
|
GATHER_MODERATORS = 14
|
|
CONTRIBUTORS = 16
|
|
|
|
attr_protected :id, :updated_at, :created_at, :founder_id
|
|
validates_length_of :name, :maximum => 20
|
|
|
|
has_and_belongs_to_many :users
|
|
has_many :groupers
|
|
has_many :users, :through => :groupers
|
|
belongs_to :founder, :class_name => "User"
|
|
|
|
def to_s
|
|
name
|
|
end
|
|
|
|
def can_create? cuser
|
|
cuser and cuser.admin?
|
|
end
|
|
|
|
def can_update? cuser
|
|
cuser and cuser.admin?
|
|
end
|
|
|
|
def can_destroy? cuser
|
|
cuser and cuser.admin? and id != Group::ADMINS
|
|
end
|
|
|
|
def self.staff
|
|
staff = []
|
|
|
|
(admins + casters + referees + extras).each do |g|
|
|
staff << g unless staff.include? g
|
|
end
|
|
staff
|
|
end
|
|
|
|
def self.admins
|
|
admins = []
|
|
admin_group = where(id: ADMINS).first
|
|
return admins unless admin_group
|
|
|
|
(admin_group.groupers).each do |g|
|
|
admins << g unless admins.include? g
|
|
end
|
|
admins
|
|
end
|
|
|
|
def self.referees
|
|
referees = []
|
|
referee_group = where(id: REFEREES).first
|
|
return referees unless referee_group
|
|
|
|
(referee_group.groupers).each do |g|
|
|
referees << g unless referees.include? g
|
|
end
|
|
referees
|
|
end
|
|
|
|
def self.extras
|
|
extras = []
|
|
extra_group = where(id: PREDICTORS).first
|
|
staff_group = where(id: STAFF).first
|
|
|
|
extra_groupers = extra_group ? extra_group.groupers : []
|
|
staff_groupers = staff_group ? staff_group.groupers : []
|
|
|
|
(extra_groupers + staff_groupers).each do |g|
|
|
extras << g unless extras.include? g
|
|
end
|
|
extras
|
|
end
|
|
|
|
def self.casters
|
|
casters = []
|
|
caster_group = where(id:CASTERS).first
|
|
return casters unless caster_group
|
|
|
|
(caster_group.groupers).each do |g|
|
|
casters << g unless casters.include? g
|
|
end
|
|
casters
|
|
end
|
|
|
|
def self.gathermods
|
|
gathermods = []
|
|
gathermod_group = where(id:GATHER_MODERATORS).first
|
|
return gathermods unless gathermod_group
|
|
|
|
(gathermod_group.groupers).each do |g|
|
|
gathermods << g unless gathermods.include? g
|
|
end
|
|
gathermods
|
|
end
|
|
|
|
def self.contributors
|
|
contributors = []
|
|
group_contrib = where(id:CONTRIBUTORS).first
|
|
return contributors unless group_contrib
|
|
|
|
(group_contrib.groupers).each do |g|
|
|
contributors << g unless contributors.include? g
|
|
end
|
|
contributors
|
|
end
|
|
end
|