openSUSE/open-build-service

View on GitHub
src/api/app/controllers/webui/projects/maintenance_incidents_controller.rb

Summary

Maintainability
A
0 mins
Test Coverage
A
95%
module Webui
  module Projects
    class MaintenanceIncidentsController < WebuiController
      before_action :set_project, only: [:index]
      before_action :lockout_spiders, only: [:index]
      before_action :require_login, only: [:create]

      after_action :verify_authorized, except: [:index]

      def index
        respond_to do |format|
          format.html do
            @incidents = @project.maintenance_incidents
          end
          format.json do
            render json: MaintenanceIncidentDatatable.new(params, view_context: view_context, project: @project)
          end
        end
      end

      def create
        @project = Project.get_by_name(params[:project_name])
        authorize @project, :update?

        incident = MaintenanceIncident.build_maintenance_incident(@project, params[:noaccess].present?)

        if incident
          flash[:success] = "Created maintenance incident project #{elide(incident.project.name)}"
          redirect_to(project_show_path(incident.project))
          return
        end

        flash[:error] = 'Incident projects shall only create below maintenance projects.'
        redirect_to(project_show_path(@project))
      end
    end
  end
end