Merge pull request #771 from openHPI/add_handling_missing_file_type_on_import

Add handling for missing file type on import
This commit is contained in:
Sebastian Serth
2020-11-02 19:44:51 +01:00
committed by GitHub
4 changed files with 28 additions and 5 deletions

View File

@@ -178,7 +178,6 @@ class ExercisesController < ApplicationController
user = user_from_api_key
return render json: {}, status: 401 if user.nil?
exercise = nil
ActiveRecord::Base.transaction do
exercise = ::ProformaService::Import.call(zip: tempfile, user: user)
exercise.save!
@@ -188,7 +187,8 @@ class ExercisesController < ApplicationController
render json: {}, status: 401
rescue Proforma::ProformaError
render json: t('exercises.import_codeharbor.import_errors.invalid'), status: 400
rescue StandardError
rescue StandardError => e
Raven.capture_exception(e)
render json: t('exercises.import_codeharbor.import_errors.internal_error'), status: 500
end

View File

@@ -47,9 +47,10 @@ module ProformaService
end
def codeocean_file_from_task_file(file)
extension = File.extname(file.filename)
codeocean_file = CodeOcean::File.new(
context: @exercise,
file_type: FileType.find_by(file_extension: File.extname(file.filename)),
file_type: file_type(extension),
hidden: file.visible == 'no',
name: File.basename(file.filename, '.*'),
read_only: file.usage_by_lms != 'edit',
@@ -63,5 +64,14 @@ module ProformaService
end
codeocean_file
end
def file_type(extension)
FileType.find_or_create_by(file_extension: extension) do |file_type|
file_type.name = extension[1..]
file_type.user = @user
file_type.indent_size = 4
file_type.editor_mode = 'ace/mode/plain_text'
end
end
end
end