Control DMSF via REST API #78
This commit is contained in:
parent
03cf2db837
commit
db06ee468f
@ -26,7 +26,7 @@ class DmsfUploadController < ApplicationController
|
|||||||
|
|
||||||
before_filter :find_project
|
before_filter :find_project
|
||||||
before_filter :authorize
|
before_filter :authorize
|
||||||
before_filter :find_folder, :except => [:upload_file, :upload]
|
before_filter :find_folder, :except => [:upload_file, :upload, :commit]
|
||||||
|
|
||||||
helper :all
|
helper :all
|
||||||
helper :dmsf_workflows
|
helper :dmsf_workflows
|
||||||
@ -118,9 +118,11 @@ class DmsfUploadController < ApplicationController
|
|||||||
|
|
||||||
# REST API file commit
|
# REST API file commit
|
||||||
def commit
|
def commit
|
||||||
uploaded_files = params[:attachments]
|
attachments = params[:attachments]
|
||||||
if uploaded_files && uploaded_files.is_a?(Hash)
|
if attachments && attachments.is_a?(Hash)
|
||||||
|
@folder = DmsfFolder.visible.find_by_id attachments[:folder_id].to_i if attachments[:folder_id].present?
|
||||||
# standard file input uploads
|
# standard file input uploads
|
||||||
|
uploaded_files = attachments.select { |key, value| key == 'uploaded_file'}
|
||||||
uploaded_files.each_value do |uploaded_file|
|
uploaded_files.each_value do |uploaded_file|
|
||||||
upload = DmsfUpload.create_from_uploaded_attachment(@project, @folder, uploaded_file)
|
upload = DmsfUpload.create_from_uploaded_attachment(@project, @folder, uploaded_file)
|
||||||
uploaded_file[:disk_filename] = upload.disk_filename
|
uploaded_file[:disk_filename] = upload.disk_filename
|
||||||
@ -133,7 +135,7 @@ class DmsfUploadController < ApplicationController
|
|||||||
|
|
||||||
def commit_files_internal(commited_files)
|
def commit_files_internal(commited_files)
|
||||||
if commited_files && commited_files.is_a?(Hash)
|
if commited_files && commited_files.is_a?(Hash)
|
||||||
files = []
|
@files = []
|
||||||
failed_uploads = []
|
failed_uploads = []
|
||||||
commited_files.each_value do |commited_file|
|
commited_files.each_value do |commited_file|
|
||||||
name = commited_file[:name]
|
name = commited_file[:name]
|
||||||
@ -216,18 +218,18 @@ class DmsfUploadController < ApplicationController
|
|||||||
new_revision.assign_workflow(commited_file[:dmsf_workflow_id])
|
new_revision.assign_workflow(commited_file[:dmsf_workflow_id])
|
||||||
FileUtils.mv(commited_disk_filepath, new_revision.disk_file)
|
FileUtils.mv(commited_disk_filepath, new_revision.disk_file)
|
||||||
file.set_last_revision new_revision
|
file.set_last_revision new_revision
|
||||||
files.push(file)
|
@files.push(file)
|
||||||
else
|
else
|
||||||
failed_uploads.push(commited_file)
|
failed_uploads.push(commited_file)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
unless files.empty?
|
unless @files.empty?
|
||||||
files.each { |file| log_activity(file, 'uploaded') if file }
|
@files.each { |file| log_activity(file, 'uploaded') if file }
|
||||||
if (@folder && @folder.notification?) || (!@folder && @project.dmsf_notification?)
|
if (@folder && @folder.notification?) || (!@folder && @project.dmsf_notification?)
|
||||||
begin
|
begin
|
||||||
recipients = DmsfMailer.get_notify_users(@project, files)
|
recipients = DmsfMailer.get_notify_users(@project, @files)
|
||||||
recipients.each do |u|
|
recipients.each do |u|
|
||||||
DmsfMailer.files_updated(u, @project, files).deliver
|
DmsfMailer.files_updated(u, @project, @files).deliver
|
||||||
end
|
end
|
||||||
if Setting.plugin_redmine_dmsf[:dmsf_display_notified_recipients] == '1'
|
if Setting.plugin_redmine_dmsf[:dmsf_display_notified_recipients] == '1'
|
||||||
unless recipients.empty?
|
unless recipients.empty?
|
||||||
@ -247,7 +249,9 @@ class DmsfUploadController < ApplicationController
|
|||||||
end
|
end
|
||||||
respond_to do |format|
|
respond_to do |format|
|
||||||
format.js
|
format.js
|
||||||
format.api { render_validation_errors(failed_uploads) }
|
format.api {
|
||||||
|
render_validation_errors(failed_uploads) unless failed_uploads.empty?
|
||||||
|
}
|
||||||
format.html { redirect_to dmsf_folder_path(:id => @project, :folder_id => @folder) }
|
format.html { redirect_to dmsf_folder_path(:id => @project, :folder_id => @folder) }
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
8
app/views/dmsf_upload/commit.api.rsb
Normal file
8
app/views/dmsf_upload/commit.api.rsb
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
api.array :dmsf_files, api_meta(:total_count => @files.size) do
|
||||||
|
@files.each do |file|
|
||||||
|
api.file do
|
||||||
|
api.id file.id
|
||||||
|
api.name file.name
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
@ -1,5 +1,6 @@
|
|||||||
<?xml version="1.0" encoding="utf8" ?>
|
<?xml version="1.0" encoding="utf-8" ?>
|
||||||
<attachments>
|
<attachments>
|
||||||
|
<folder_id>6118</folder_id>
|
||||||
<uploaded_file>
|
<uploaded_file>
|
||||||
<disk_filename>cat.gif</disk_filename>
|
<disk_filename>cat.gif</disk_filename>
|
||||||
<name>cat.gif</name>
|
<name>cat.gif</name>
|
||||||
@ -7,6 +8,6 @@
|
|||||||
<description>REST API</description>
|
<description>REST API</description>
|
||||||
<comment>From API</comment>
|
<comment>From API</comment>
|
||||||
<version/>
|
<version/>
|
||||||
<token>15843.c49f68ff81b552d315927df2e27df506</token>
|
<token>15838.c49f68ff81b552d315927df2e27df506</token>
|
||||||
</uploaded_file>
|
</uploaded_file>
|
||||||
</attachments>
|
</attachments>
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user