• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

pulibrary / tigerdata-app / 090aaa6c-8309-4242-bcfa-1f06b7babb48

08 Aug 2025 12:04PM UTC coverage: 76.213% (+0.3%) from 75.918%
090aaa6c-8309-4242-bcfa-1f06b7babb48

Pull #1704

circleci

carolyncole
Adding a specific controller and screen for editing the request after it has been submitted

Also add fields in the request for approved values
Pull Request #1704: Adding a specific controller and screen for editing the request after it has been submitted

53 of 57 new or added lines in 2 files covered. (92.98%)

2262 of 2968 relevant lines covered (76.21%)

176.28 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

91.89
/app/controllers/edit_requests_controller.rb
1
# frozen_string_literal: true
2
class EditRequestsController < ApplicationController
1✔
3
  layout "edit_request"
1✔
4

5
  before_action :set_request_model, only: %i[edit update]
1✔
6

7
  # GET /edit_requests/1/edit
8
  def edit
1✔
9
    unless current_user.superuser || current_user.sysadmin || current_user.trainer
2✔
10
      flash[:notice] = I18n.t(:no_modify_submitted)
1✔
11
      redirect_to request_path(@request_model)
1✔
12
    end
13
  end
14

15
  # PATCH/PUT /edit_requests/1 or /edit_requests/1.json
16
  def update
1✔
17
    if current_user.superuser || current_user.sysadmin || current_user.trainer
3✔
18
      respond_to do |format|
2✔
19
        if @request_model.update(request_params) && @request_model.valid_to_submit?
2✔
20
          format.html { redirect_to request_url(@request_model), notice: I18n.t(:successful_update) }
2✔
21
          format.json { render :show, status: :ok, location: @request_model }
1✔
22
        else
23
          format.html { render :edit, status: :unprocessable_entity }
2✔
24
          format.json { render json: @request_model.errors, status: :unprocessable_entity }
1✔
25
        end
26
      end
27
    else
28
      flash[:notice] = I18n.t(:no_modify_submitted)
1✔
29
      redirect_to request_path(@request_model)
1✔
30
    end
31
  end
32

33
  private
1✔
34

35
    # Use callbacks to share common setup or constraints between actions.
36
    def set_request_model
1✔
37
      @princeton_departments = Affiliation.all
5✔
38
      @princeton_users = PrincetonUsers.user_list
5✔
39
      @request_model = Request.find(params[:id])
5✔
40
    end
41

42
    # Only allow a list of trusted parameters through.
43
    def request_params
1✔
44
      request_params = params.fetch(:request, {}).permit(:request_title, :project_title, :state, :data_sponsor, :data_manager,
2✔
45
                                        :description, :parent_folder, :project_folder, :project_id, :quota, :requested_by,
46
                                        :storage_size, :storage_unit, user_roles: [], departments: [])
47
      if request_params[:departments].present?
2✔
48
        request_params[:departments] = request_params[:departments].compact_blank.map { |dep_str| JSON.parse(dep_str) }
3✔
49
      end
50
      if request_params[:user_roles].present?
2✔
NEW
51
        request_params[:user_roles] = request_params[:user_roles].compact_blank.map { |role_str| JSON.parse(role_str) }
×
52
      end
53
      move_approved_values(request_params)
2✔
54
    end
55

56
    def move_approved_values(request_params)
1✔
57
      if request_params[:quota].present?
2✔
58
        request_params[:approved_quota] = request_params.delete(:quota)
1✔
59
      end
60
      if request_params[:storage_size].present?
2✔
NEW
61
        request_params[:approved_storage_size] = request_params.delete(:storage_size)
×
62
      end
63
      if request_params[:storage_unit].present?
2✔
NEW
64
        request_params[:approved_storage_unit] = request_params.delete(:storage_unit)
×
65
      end
66
      request_params
2✔
67
    end
68
end
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc