Skip to content
Snippets Groups Projects
Commit a92ef460 authored by Mateus Rambo Strey's avatar Mateus Rambo Strey
Browse files

create learning object without params

parent 315b3370
No related branches found
No related tags found
No related merge requests found
class LearningObject::DraftBuilder
def self.build(publisher, params={})
@draft = LearningObject.new(sanitize_params(params))
@draft.state = LearningObject.states[:draft]
# build topics
params[:topics].try(:each) do |t|
@draft.topics << Topic.find(t)
end
#build language
@draft.language = Language.find(params[:language]) if params[:language].to_i > 0
#build school_level
@draft.school_level = Topic.find(params[:school_level]) if params[:school_level].to_i > 0
# set publisher
@draft.publisher = publisher
@draft
end
def self.sanitize_params(args={})
new_args = args.clone
%w(topics language link school_level).each do |arg|
new_args.delete(arg)
end
metadata = { 'dc.object.url' => args[:link] }
new_args.merge(metadata: metadata)
end
end
......@@ -31,9 +31,7 @@ class V1::LearningObjectsController < ApplicationController
publisher = LearningObjectPublisher.new(DspaceService.create_client)
if publisher.create_draft(learning_object, current_user)
current_user.tag(learning_object, with: tag_params[:tags].map{ |t| t['name']})
learning_object.add_subjects(ids: subject_params[:subjects].map{ |s| s['id']})
learning_object.add_educational_stages(ids: educational_stage_params[:educational_stages].map{ |e| e['id']})
learning_object_associations(learning_object)
render json: learning_object, status: :created
else
render json: learning_object.errors, status: :unprocessable_entity
......@@ -44,7 +42,7 @@ class V1::LearningObjectsController < ApplicationController
# PATCH/PUT /learning_objects/1.json
def update
if @learning_object.update(learning_object_params)
current_user.tag(@learning_object, with: tag_params[:tags].map{ |t| t['name']})
learning_object_associations(learning_object)
publisher = LearningObjectPublisher.new(DspaceService.create_client)
publisher.update_dspace(@learning_object)
......@@ -75,19 +73,19 @@ class V1::LearningObjectsController < ApplicationController
# Never trust parameters from the scary internet, only allow the white list through.
def learning_object_params
return nil if params[:learning_object].nil?
params[:learning_object].permit(:author, :name, :object_type_id, :description, :license_id, :thumbnail, :software, :language_id, :link)
end
def tag_params
params[:learning_object].permit(tags: [:name] )
def extra_params
return {} if params[:learning_object].nil?
params[:learning_object].permit(subjects: [], educational_stages: [], tags: [:name])
end
def subject_params
params[:learning_object].permit(subjects: [:id] )
end
def educational_stage_params
params[:learning_object].permit(educational_stages: [:id] )
def learning_object_associations(learning_object)
current_user.tag(learning_object, with: extra_params[:tags].map { |t| t['name'] }) unless extra_params[:tags].nil?
learning_object.add_subjects(ids: extra_params[:subjects]) unless extra_params[:subjects].nil?
learning_object.add_educational_stages(ids: extra_params[:educational_stages]) unless extra_params[:educational_stages].nil?
end
def authorize!
......
......@@ -39,7 +39,8 @@ class LearningObjectPublisher
next if value.blank?
value = [value] if value.is_a? String
value.each do |v|
item.add_metadata(key, v, object.language.code) unless v.blank?
p v
item.add_metadata(key, v, object.language.try(:code) || 'pt') unless v.blank?
end
end
end
......@@ -60,8 +61,8 @@ class LearningObjectPublisher
'dc.object.url' => object.link,
'dc.contributor.author' => object.author,
'dc.description' => object.description,
'dc.language' => object.language.code,
'dc.type' => object.object_type.name,
'dc.language' => object.language.try(:code),
'dc.type' => object.object_type.try(:name),
'dc.rights.license' => object.license.try(:name),
# 'dc.subject.category' => object.subjects,
'dc.date.submitted' => object.created_at.to_s
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment