forked from fixin.me/fixin.me
		
	Implement Units default destroy
This commit is contained in:
		
							parent
							
								
									1fedd70fe5
								
							
						
					
					
						commit
						2cbae12fa2
					
				@ -1,7 +1,8 @@
 | 
				
			|||||||
class Default::UnitsController < ApplicationController
 | 
					class Default::UnitsController < ApplicationController
 | 
				
			||||||
  navigation_tab :units
 | 
					  navigation_tab :units
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  before_action :find_unit, only: [:import, :export, :destroy]
 | 
					  before_action :find_unit, only: :export
 | 
				
			||||||
 | 
					  before_action :find_unit_default, only: [:import, :destroy]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  before_action only: :import do
 | 
					  before_action only: :import do
 | 
				
			||||||
    raise AccessForbidden unless current_user.at_least(:active)
 | 
					    raise AccessForbidden unless current_user.at_least(:active)
 | 
				
			||||||
@ -15,7 +16,9 @@ class Default::UnitsController < ApplicationController
 | 
				
			|||||||
  end
 | 
					  end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  def import
 | 
					  def import
 | 
				
			||||||
    raise ParameterInvalid unless @unit.default? && @unit.port(current_user)
 | 
					    @unit.port!(current_user)
 | 
				
			||||||
 | 
					    flash.now[:notice] = t('.success', unit: @unit)
 | 
				
			||||||
 | 
					  ensure
 | 
				
			||||||
    run_and_render :index
 | 
					    run_and_render :index
 | 
				
			||||||
  end
 | 
					  end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -26,16 +29,26 @@ class Default::UnitsController < ApplicationController
 | 
				
			|||||||
  #end
 | 
					  #end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  def export
 | 
					  def export
 | 
				
			||||||
    raise ParameterInvalid unless !@unit.default? && @unit.port(nil)
 | 
					    @unit.port!(nil)
 | 
				
			||||||
 | 
					    flash.now[:notice] = t('.success', unit: @unit)
 | 
				
			||||||
 | 
					  ensure
 | 
				
			||||||
    run_and_render :index
 | 
					    run_and_render :index
 | 
				
			||||||
  end
 | 
					  end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  def destroy
 | 
					  def destroy
 | 
				
			||||||
 | 
					    @unit.destroy!
 | 
				
			||||||
 | 
					    flash.now[:notice] = t('.success', unit: @unit)
 | 
				
			||||||
 | 
					  ensure
 | 
				
			||||||
 | 
					    run_and_render :index
 | 
				
			||||||
  end
 | 
					  end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  private
 | 
					  private
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  def find_unit
 | 
					  def find_unit
 | 
				
			||||||
    @unit = Unit.find_by!(id: params[:id], user: [current_user, nil])
 | 
					    @unit = Unit.find_by!(id: params[:id], user: current_user)
 | 
				
			||||||
 | 
					  end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  def find_unit_default
 | 
				
			||||||
 | 
					    @unit = Unit.find_by!(id: params[:id], user: nil)
 | 
				
			||||||
  end
 | 
					  end
 | 
				
			||||||
end
 | 
					end
 | 
				
			||||||
 | 
				
			|||||||
@ -97,11 +97,11 @@ class Unit < ApplicationRecord
 | 
				
			|||||||
    user_id.nil?
 | 
					    user_id.nil?
 | 
				
			||||||
  end
 | 
					  end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  def port(recipient)
 | 
					  # Should only by invoked on Units returned from #defaults_diff which are #portable
 | 
				
			||||||
    recipient_base = base && Unit.find_by(symbol: base.symbol, user: recipient)
 | 
					  def port!(recipient)
 | 
				
			||||||
    return nil if recipient_base.nil? != base.nil?
 | 
					    recipient_base = base && Unit.find_by!(symbol: base.symbol, user: recipient)
 | 
				
			||||||
    params = slice(ATTRIBUTES - [:symbol, :base_id])
 | 
					    params = slice(ATTRIBUTES - [:symbol, :base_id])
 | 
				
			||||||
    Unit.find_or_initialize_by(user: recipient, symbol: symbol)
 | 
					    Unit.find_or_initialize_by(user: recipient, symbol: symbol)
 | 
				
			||||||
      .update(base: recipient_base, **params)
 | 
					      .update!(base: recipient_base, **params)
 | 
				
			||||||
  end
 | 
					  end
 | 
				
			||||||
end
 | 
					end
 | 
				
			||||||
 | 
				
			|||||||
@ -11,7 +11,8 @@
 | 
				
			|||||||
      <% end %>
 | 
					      <% end %>
 | 
				
			||||||
      <% if current_user.at_least(:admin) %>
 | 
					      <% if current_user.at_least(:admin) %>
 | 
				
			||||||
        <% if unit.default? %>
 | 
					        <% if unit.default? %>
 | 
				
			||||||
          <%= image_button_to t('.delete'), 'delete-outline', unit_path(unit), method: :delete %>
 | 
					          <%= image_button_to t('.delete'), 'delete-outline', default_unit_path(unit),
 | 
				
			||||||
 | 
					            method: :delete %>
 | 
				
			||||||
        <% else %>
 | 
					        <% else %>
 | 
				
			||||||
          <%= image_button_to t('.export'), 'upload-outline', export_default_unit_path(unit),
 | 
					          <%= image_button_to t('.export'), 'upload-outline', export_default_unit_path(unit),
 | 
				
			||||||
            disabled_attributes(!unit.portable?) %>
 | 
					            disabled_attributes(!unit.portable?) %>
 | 
				
			||||||
 | 
				
			|||||||
@ -33,6 +33,9 @@ en:
 | 
				
			|||||||
        forbidden: >
 | 
					        forbidden: >
 | 
				
			||||||
          You have not been granted access to this action (403 Forbidden).
 | 
					          You have not been granted access to this action (403 Forbidden).
 | 
				
			||||||
          This should not happen, please notify site administrator.
 | 
					          This should not happen, please notify site administrator.
 | 
				
			||||||
 | 
					        not_found: >
 | 
				
			||||||
 | 
					          The record that you requested operation on does not exist (404).
 | 
				
			||||||
 | 
					          This should not happen, please notify site administrator.
 | 
				
			||||||
        unprocessable_entity: >
 | 
					        unprocessable_entity: >
 | 
				
			||||||
          The request is semantically incorrect and was rejected (422 Unprocessable Entity).
 | 
					          The request is semantically incorrect and was rejected (422 Unprocessable Entity).
 | 
				
			||||||
          This should not happen, please notify site administrator.
 | 
					          This should not happen, please notify site administrator.
 | 
				
			||||||
@ -77,6 +80,12 @@ en:
 | 
				
			|||||||
        actions: Actions on defaults
 | 
					        actions: Actions on defaults
 | 
				
			||||||
        import_all: Import all
 | 
					        import_all: Import all
 | 
				
			||||||
        back: Back to units
 | 
					        back: Back to units
 | 
				
			||||||
 | 
					      import:
 | 
				
			||||||
 | 
					        success: Imported unit "%{unit}"
 | 
				
			||||||
 | 
					      export:
 | 
				
			||||||
 | 
					        success: Exported unit "%{unit}"
 | 
				
			||||||
 | 
					      destroy:
 | 
				
			||||||
 | 
					        success: Deleted unit "%{unit}"
 | 
				
			||||||
  users:
 | 
					  users:
 | 
				
			||||||
    index:
 | 
					    index:
 | 
				
			||||||
      disguise: View as
 | 
					      disguise: View as
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user