Skip to content

Commit

Permalink
WIP: deposit re-ingest, part 2
Browse files Browse the repository at this point in the history
  • Loading branch information
fcd1 committed Nov 27, 2024
1 parent de34497 commit 3a54e56
Show file tree
Hide file tree
Showing 4 changed files with 60 additions and 42 deletions.
55 changes: 55 additions & 0 deletions app/controllers/deposits_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,61 @@ def destroy
end
end

def get_endpoint(collection_slug,
depositor_user_id)
case COLLECTIONS[:slug][collection_slug][:parser]
when "academic-commons"
Sword::Endpoints::AcademicCommonsEndpoint.new(collection_slug, depositor_user_id)
when "proquest"
Sword::Endpoints::ProquestEndpoint.new(collection_slug, depositor_user_id)
when "eprints"
Sword::Endpoints::EprintsEndpoint.new(collection_slug, depositor_user_id)
else
# raise an exception here
end
end

def resubmit
original_deposit = Deposit.find(params[:id])
endpoint = get_endpoint(original_deposit.collection_slug,
original_deposit.depositor_user_id)

path_to_deposit_contents = original_deposit.content_path

# log basic essential info. Keep it terse! Gonna use :warn level, though not a warning.
Rails.logger.warn("About to resubmit deposit for deposit id: #{original_deposit.id}:" \
"Collection slug: #{original_deposit.collection_slug}, " \
"Username: #{original_deposit.depositor_user_id}, " \
"Path to contents: #{path_to_deposit_contents}"
)

endpoint.handle_deposit(path_to_deposit_contents)

# log basic essential info. Keep it terse! Gonna use :warn level, though not a warning.
Rails.logger.warn("Following is a re-deposit:" \
"Title: #{endpoint.deposit_title.truncate_words(10)}, " \
"Files: #{endpoint.documents_to_deposit}, " \
"Hyacinth item pid: #{endpoint.adapter_item_identifier}, " \
"Hyacinth asset pids: #{endpoint.asset_pids}, " \
"Path to SWORD contents: #{path_to_deposit_contents}"
)

# create Deposit instance to store deposit info in database
resubmit_deposit = Deposit.new
resubmit_deposit.depositor_user_id = @depositor_user_id
resubmit_deposit.collection_slug = @collection_slug
resubmit_deposit.deposit_files = endpoint.documents_to_deposit
resubmit_deposit.title = "(RE-DEPOSIT) " + original_deposit.title
resubmit_deposit.item_in_hyacinth = endpoint.adapter_item_identifier
resubmit_deposit.asset_pids = endpoint.asset_pids
resubmit_deposit.ingest_confirmed = endpoint.confirm_ingest
resubmit_deposit.content_path = path_to_deposit_contents
resubmit_deposit.save
response.status = 201
render json: { item_pid: endpoint.adapter_item_identifier,
ingest_into_hyacinth: !(HYACINTH_CONFIG[:bypass_ingest] or COLLECTIONS[:slug][endpoint.collection_slug][:bypass_hyacinth_ingest])}
end

private
# Use callbacks to share common setup or constraints between actions.
def set_deposit
Expand Down
41 changes: 0 additions & 41 deletions app/controllers/sword_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -59,47 +59,6 @@ def deposit
ingest_into_hyacinth: !(HYACINTH_CONFIG[:bypass_ingest] or COLLECTIONS[:slug][@endpoint.collection_slug][:bypass_hyacinth_ingest])}
end

def resubmit_deposit(deposit)

@endpoint = get_endpoint(deposit.collection_slug,
deposit.depositor_user_id)

@path_to_deposit_contents = deposit.content_path

# log basic essential info. Keep it terse! Gonna use :warn level, though not a warning.
Rails.logger.warn("About to resubmit deposit for deposit id: #{deposit.id}:" \
"Collection slug: #{deposit.collection_slug}, " \
"Username: #{deposit.depositor_user_id}, " \
"Path to contents: #{@path_to_deposit_contents}"
)

@endpoint.handle_deposit(@path_to_deposit_contents)

# log basic essential info. Keep it terse! Gonna use :warn level, though not a warning.
Rails.logger.warn("Following is a re-deposit:" \
"Title: #{@endpoint.deposit_title.truncate_words(10)}, " \
"Files: #{@endpoint.documents_to_deposit}, " \
"Hyacinth item pid: #{@endpoint.adapter_item_identifier}, " \
"Hyacinth asset pids: #{@endpoint.asset_pids}, " \
"Path to SWORD contents: #{@path_to_deposit_contents}"
)

# create Deposit instance to store deposit info in database
@deposit = Deposit.new
@deposit.depositor_user_id = @depositor_user_id
@deposit.collection_slug = @collection_slug
@deposit.deposit_files = @endpoint.documents_to_deposit
@deposit.title = "(RE-DEPOSIT) " + deposit.title
@deposit.item_in_hyacinth = @endpoint.adapter_item_identifier
@deposit.asset_pids = @endpoint.asset_pids
@deposit.ingest_confirmed = @endpoint.confirm_ingest
@deposit.content_path = @path_to_deposit_contents
@deposit.save
response.status = 201
render json: { item_pid: @endpoint.adapter_item_identifier,
ingest_into_hyacinth: !(HYACINTH_CONFIG[:bypass_ingest] or COLLECTIONS[:slug][@endpoint.collection_slug][:bypass_hyacinth_ingest])}
end

def service_document
# log basic essential info. Keep it terse! Gonna use :warn level, though not a warning.
Rails.logger.warn("Received Service Document request. Username: #{@depositor_user_id}")
Expand Down
1 change: 1 addition & 0 deletions app/views/deposits/show.html.erb
Original file line number Diff line number Diff line change
Expand Up @@ -49,3 +49,4 @@
</p>

<%= link_to 'Delete', @deposit, method: :delete, data: { confirm: 'Are you sure?' } %>
<%= link_to 'Resubmit', resubmit_deposit_path %>
5 changes: 4 additions & 1 deletion config/routes.rb
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,10 @@
post 'add_permission', action: 'add_permission', as: 'add_permission'
end
end
resources :deposits
resources :deposits do
get 'resubmit', on: :member
end

resources :packages

# Example resource route with options:
Expand Down

0 comments on commit 3a54e56

Please sign in to comment.