From 4c6799b9eb06b1214d8aab6de0fcc9b0fe35645f Mon Sep 17 00:00:00 2001 From: Matheus Agio Nerone <man13@inf.ufpr.br> Date: Mon, 16 Nov 2015 14:04:06 -0200 Subject: [PATCH] basic upload Signed-off-by: Matheus Agio Nerone <man13@inf.ufpr.br> --- app/controllers/learning_objects_controller.rb | 12 +++++++++++- app/models/learning_object.rb | 2 +- app/views/learning_objects/_form.html.erb | 1 + 3 files changed, 13 insertions(+), 2 deletions(-) diff --git a/app/controllers/learning_objects_controller.rb b/app/controllers/learning_objects_controller.rb index 70ab3301..dd94665f 100644 --- a/app/controllers/learning_objects_controller.rb +++ b/app/controllers/learning_objects_controller.rb @@ -33,6 +33,7 @@ class LearningObjectsController < ApplicationController collection_struct = Struct.new(:id) collection = collection_struct.new('4') repo = Dspace::Client.instance.repository.collection_repository + strategy = DSpaceRest::Strategies::Uploads::CurlStrategy.new(repo.rest_client.url,repo.rest_client.options[:headers][:rest_dspace_token]) args = {} args['name'] = learning_object_params[:name] @@ -58,6 +59,12 @@ class LearningObjectsController < ApplicationController learning_object_params[:subjects].each do |subject| subjects << subject_repository.find_by_name(subject) end + file = learning_object_params[:file] + learning_object_params[:file] = nil + + repo = Dspace::Client.instance.repository.item_repository + bitstream_response = repo.create_bitstream_for(response, file.tempfile.path, strategy) + @learning_object = LearningObject.new(learning_object_params) @learning_object.id_dspace = response.id @learning_object.subjects = subjects @@ -65,9 +72,12 @@ class LearningObjectsController < ApplicationController @learning_object.last_modified = Time.now @learning_object.publisher = current_user @learning_object.metadata = lo.to_h[:metadata] + @learning_object.bitstreams = [] + @learning_object.bitstreams << bitstream_response.as_json + respond_to do |format| if learning_object_repository.create @learning_object - learning_object_repository.create_relations(@learning_object) + learning_object_repository.create_relations @learning_object format.html { redirect_to me_users_path, notice: 'Learning object was successfully created.' } else format.html { render :new } diff --git a/app/models/learning_object.rb b/app/models/learning_object.rb index c0ef0f7b..70e4a235 100644 --- a/app/models/learning_object.rb +++ b/app/models/learning_object.rb @@ -7,7 +7,7 @@ class LearningObject :type, :grade_level, :bitstreams, :metadata, :likes, :views, :downloads, :subjects, :attributes, :score, :publisher, :school_level, :language, :source, :license, :copyright, - :country, :keywords + :country, :keywords, :file validates_presence_of :name, :created_at, :type, :likes, :views, :downloads validates_numericality_of :likes, greater_than_or_equal_to: 0 diff --git a/app/views/learning_objects/_form.html.erb b/app/views/learning_objects/_form.html.erb index 5a2cee7b..1fe44e65 100644 --- a/app/views/learning_objects/_form.html.erb +++ b/app/views/learning_objects/_form.html.erb @@ -48,6 +48,7 @@ <option value="<%= school_level %>"><%= school_level %></option> <% end %> </select> + <%= f.file_field :file %> <br> <br> <%= f.submit %> -- GitLab