Add track type to admin dashboard

This commit is contained in:
Rishabh Singh 2019-06-22 19:23:40 +05:30
parent 770a63e15c
commit abc59bb3d7
18 changed files with 252 additions and 2 deletions

View file

@ -102,6 +102,7 @@ class AdminAbility
signed_in_with_organizer_role(user, conf_ids_for_organization_admin)
end
# rubocop:disable Metrics/AbcSize
def signed_in_with_organizer_role(user, conf_ids_for_organization_admin = [])
# ids of all the conferences for which the user has the 'organizer' role and
# conferences that belong to organizations for which user is 'organization_admin'
@ -131,6 +132,7 @@ class AdminAbility
can :manage, Cfp, program: { conference_id: conf_ids }
can :manage, Event, program: { conference_id: conf_ids }
can :manage, EventType, program: { conference_id: conf_ids }
can :manage, TrackType, program: { conference_id: conf_ids }
can :manage, Track, program: { conference_id: conf_ids }
can :manage, DifficultyLevel, program: { conference_id: conf_ids }
can :manage, Commercial, commercialable_type: 'Event',
@ -163,6 +165,7 @@ class AdminAbility
can [:index, :revert_object, :revert_attribute], PaperTrail::Version, item_type: 'User'
can [:index, :revert_object, :revert_attribute], PaperTrail::Version, conference_id: conf_ids
end
# rubocop:enable Metrics/AbcSize
def signed_in_with_cfp_role(user)
# ids of all the conferences for which the user has the 'cfp' role
@ -175,6 +178,7 @@ class AdminAbility
can :manage, Booth, conference_id: conf_ids_for_cfp
can :manage, Event, program: { conference_id: conf_ids_for_cfp }
can :manage, EventType, program: { conference_id: conf_ids_for_cfp }
can :manage, TrackType, program: { conference_id: conf_ids_for_cfp }
can :manage, Track, program: { conference_id: conf_ids_for_cfp }
can :manage, DifficultyLevel, program: { conference_id: conf_ids_for_cfp }
can :manage, EmailSettings, conference_id: conf_ids_for_cfp
@ -201,7 +205,7 @@ class AdminAbility
end
can [:index, :revert_object, :revert_attribute], PaperTrail::Version,
item_type: %w[Event EventType Track DifficultyLevel EmailSettings Room Cfp Program Comment], conference_id: conf_ids_for_cfp
item_type: %w[Event EventType Track TrackType DifficultyLevel EmailSettings Room Cfp Program Comment], conference_id: conf_ids_for_cfp
can [:index, :revert_object, :revert_attribute], PaperTrail::Version,
["item_type = 'Commercial' AND conference_id IN (?) AND (object LIKE '%Event%' OR object_changes LIKE '%Event%')", conf_ids_for_cfp] do |version|
version.item_type == 'Commercial' && conf_ids_for_cfp.include?(version.conference_id) &&

View file

@ -52,6 +52,7 @@ class Conference < ApplicationRecord
through: :program,
source: :events
has_many :event_types, through: :program
has_many :track_types, through: :program
has_many :surveys, as: :surveyable, dependent: :destroy do
def for_registration

View file

@ -10,6 +10,7 @@ class Program < ApplicationRecord
has_many :cfps, dependent: :destroy
has_many :event_types, dependent: :destroy
has_many :tracks, dependent: :destroy
has_many :track_types, dependent: :destroy
has_many :difficulty_levels, dependent: :destroy
has_many :schedules, dependent: :destroy
has_many :event_schedules, through: :schedules

16
app/models/track_type.rb Normal file
View file

@ -0,0 +1,16 @@
# frozen_string_literal: true
class TrackType < ApplicationRecord
belongs_to :program, touch: true
has_paper_trail meta: { conference_id: :conference_id },
ignore: %i[updated_at]
validates :title, presence: true
private
def conference_id
program.conference_id
end
end