added intervention controller and stuff

This commit is contained in:
Thomas Hille
2017-02-28 15:24:53 +01:00
parent 2456f46b2b
commit 3d7f5bdf1a
10 changed files with 141 additions and 8 deletions

View File

@ -0,0 +1,55 @@
class InterventionsController < ApplicationController
include CommonBehavior
before_action :set_intervention, only: MEMBER_ACTIONS
def authorize!
authorize(@intervention || @interventions)
end
private :authorize!
def create
#@intervention = Intervention.new(intervention_params)
#authorize!
#create_and_respond(object: @intervention)
end
def destroy
destroy_and_respond(object: @intervention)
end
def edit
end
def intervention_params
params[:intervention].permit(:name)
end
private :intervention_params
def index
@interventions = Intervention.all.paginate(page: params[:page])
authorize!
end
def new
#@intervention = Intervention.new
#authorize!
end
def set_intervention
@intervention = Intervention.find(params[:id])
authorize!
end
private :set_intervention
def show
end
def update
update_and_respond(object: @intervention, params: intervention_params)
end
def to_s
name
end
end

View File

@ -1,15 +1,16 @@
class Intervention < ActiveRecord::Base
NAME = %w(overallSlower longSession syntaxErrors videoNotWatched)
has_many :user_exercise_interventions
has_many :users, through: :user_exercise_interventions, source_type: "ExternalUser"
#belongs_to :user, polymorphic: true
#belongs_to :external_users, source: :user, source_type: ExternalUser
#belongs_to :internal_users, source: :user, source_type: InternalUser, through: :user_interventions
# alias_method :users, :external_users
#has_many :exercises, through: :user_interventions
validates :name, inclusion: {in: NAME}
def to_s
name
end
def self.createDefaultInterventions
%w(BreakIntervention QuestionIntervention).each do |name|
Intervention.find_or_create_by(name: name)
end
end
end

View File

@ -0,0 +1,34 @@
class InterventionPolicy < AdminOrAuthorPolicy
def author?
@user == @record.author
end
private :author?
def batch_update?
admin?
end
def show?
@user.internal_user?
end
[:clone?, :destroy?, :edit?, :update?].each do |action|
define_method(action) { admin? || author?}
end
[:reload?].each do |action|
define_method(action) { everyone }
end
class Scope < Scope
def resolve
if @user.admin?
@scope.all
elsif @user.internal_user?
@scope.where('user_id = ? OR public = TRUE', @user.id)
else
@scope.none
end
end
end
end

View File

@ -0,0 +1,6 @@
= form_for(@intervention) do |f|
= render('shared/form_errors', object: @intervention)
.form-group
= f.label(:name)
= f.text_field(:name, class: 'form-control', required: true)
.actions = render('shared/submit_button', f: f, object: @intervention)

View File

@ -0,0 +1,14 @@
h1 = Intervention.model_name.human(count: 2)
.table-responsive
table.table
thead
tr
th = t('activerecord.attributes.intervention.name')
tbody
- @interventions.each do |intervention|
tr
td = intervention.name
td = link_to(t('shared.show'), intervention)
= render('shared/pagination', collection: @interventions)

View File

@ -0,0 +1,4 @@
h1
= @intervention.name
= row(label: 'intervention.name', value: @intervention.name)

View File

@ -75,6 +75,8 @@ de:
message: Nachricht
name: Name
regular_expression: Regulärer Ausdruck
intervention:
name: Name
internal_user:
activated: Aktiviert
consumer: Konsument

View File

@ -96,6 +96,8 @@ en:
message: Message
name: Name
regular_expression: Regular Expression
intervention:
name: Name
internal_user:
activated: Activated
consumer: Consumer

View File

@ -61,6 +61,7 @@ Rails.application.routes.draw do
post :clone
get :implement
get :working_times
post :intervention
get :statistics
get :reload
post :submit
@ -83,6 +84,14 @@ Rails.application.routes.draw do
end
end
resources :interventions do
member do
post :clone
get :reload
post :submit
end
end
resources :external_users, only: [:index, :show], concerns: :statistics do
resources :exercises, concerns: :statistics
end

View File

@ -4,6 +4,7 @@ class CreateInterventions < ActiveRecord::Migration
t.belongs_to :user, polymorphic: true
t.belongs_to :exercise
t.belongs_to :intervention
t.integer :accumulated_worktime_s
t.timestamps
end
@ -12,5 +13,10 @@ class CreateInterventions < ActiveRecord::Migration
t.text :markup
t.timestamps
end
Intervention.createDefaultInterventions
end
end