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

pulibrary / tigerdata-app / 5e196f0b-4679-416a-ac29-0ef7ad4c0444

08 Aug 2025 05:02PM UTC coverage: 76.229% (+0.3%) from 75.918%
5e196f0b-4679-416a-ac29-0ef7ad4c0444

push

circleci

web-flow
Adding a specific controller and screen for editing the request after it has been submitted (#1704)

Change Approve button to only be visible for submitted requests
Add Edit submitted request button for editing submitted requests
Also add fields in the request for approved values

55 of 59 new or added lines in 2 files covered. (93.22%)

2264 of 2970 relevant lines covered (76.23%)

176.01 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

© 2025 Coveralls, Inc