You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@airavata.apache.org by ma...@apache.org on 2017/01/04 13:54:28 UTC
airavata-php-gateway git commit: AIRAVATA-2041 Display friendly error
when exp id doesn't exist
Repository: airavata-php-gateway
Updated Branches:
refs/heads/develop 0bb7892b8 -> b7d80b118
AIRAVATA-2041 Display friendly error when exp id doesn't exist
Project: http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/repo
Commit: http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/commit/b7d80b11
Tree: http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/tree/b7d80b11
Diff: http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/diff/b7d80b11
Branch: refs/heads/develop
Commit: b7d80b1186205f9f794db17f1aa403bc8485a497
Parents: 0bb7892
Author: Marcus Christie <ma...@apache.org>
Authored: Wed Jan 4 08:53:37 2017 -0500
Committer: Marcus Christie <ma...@apache.org>
Committed: Wed Jan 4 08:53:37 2017 -0500
----------------------------------------------------------------------
app/controllers/ExperimentController.php | 186 +++++++++++-----------
app/libraries/ExperimentUtilities.php | 3 +-
app/views/partials/experiment-info.blade.php | 2 -
3 files changed, 98 insertions(+), 93 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/blob/b7d80b11/app/controllers/ExperimentController.php
----------------------------------------------------------------------
diff --git a/app/controllers/ExperimentController.php b/app/controllers/ExperimentController.php
index fe38a19..08a267e 100755
--- a/app/controllers/ExperimentController.php
+++ b/app/controllers/ExperimentController.php
@@ -1,5 +1,6 @@
<?php
+use Airavata\API\Error\ExperimentNotFoundException;
use Airavata\Model\Status\JobState;
use Airavata\Model\Group\ResourceType;
@@ -114,111 +115,116 @@ class ExperimentController extends BaseController
public function summary()
{
- $experiment = ExperimentUtilities::get_experiment($_GET['expId']);
- if(isset($_GET['isAutoRefresh']) && $_GET['isAutoRefresh'] == 'true' && $experiment != null){
+ $experiment = null;
+ try {
+ $experiment = ExperimentUtilities::get_experiment($_GET['expId']);
+ } catch (ExperimentNotFoundException $enf) {
+
+ Log::error("Experiment wasn't found", array("message" => $enf->getMessage(), "username" => Session::get("username"), "gateway_id" => Session::get("gateway_id")));
+ if (Input::has("dashboard"))
+ return View::make("partials/experiment-info", array("invalidExperimentId" => 1));
+ else
+ return View::make("experiment/summary", array("invalidExperimentId" => 1));
+ }
+ // Assume that experiment is not null now
+
+ if(isset($_GET['isAutoRefresh']) && $_GET['isAutoRefresh'] == 'true'){
$autoRefresh = true;
}else{
$autoRefresh = false;
}
- if ($experiment != null) {
- //viewing experiments of other gateways is not allowed if user is not super admin
- if( $experiment->gatewayId != Session::get("gateway_id") && !Session::has("super-admin")){
- Session::put("permissionDenied", true);
- CommonUtilities::print_error_message('It seems that you do not have permissions to view this experiment or it belongs to another gateway.');
- if (Input::has("dashboard"))
- return View::make("partials/experiment-info", array("invalidExperimentId" => 1, "users" => json_encode(array())));
- else
- return View::make("experiment/summary", array("invalidExperimentId" => 1, "users" => json_encode(array())));
- }
+ //viewing experiments of other gateways is not allowed if user is not super admin
+ if( $experiment->gatewayId != Session::get("gateway_id") && !Session::has("super-admin")){
+ Session::put("permissionDenied", true);
+ CommonUtilities::print_error_message('It seems that you do not have permissions to view this experiment or it belongs to another gateway.');
+ if (Input::has("dashboard"))
+ return View::make("partials/experiment-info", array("invalidExperimentId" => 1, "users" => json_encode(array())));
else
- Session::forget("permissionDenied");
+ return View::make("experiment/summary", array("invalidExperimentId" => 1, "users" => json_encode(array())));
+ }
+ else
+ Session::forget("permissionDenied");
- $project = null;
- if(Config::get('pga_config.airavata')["data-sharing-enabled"]){
- if (SharingUtilities::userCanRead(Session::get("username"), $experiment->projectId, ResourceType::PROJECT)) {
- $project = ProjectUtilities::get_project($experiment->projectId);
- }
- } else {
+ $project = null;
+ if(Config::get('pga_config.airavata')["data-sharing-enabled"]){
+ if (SharingUtilities::userCanRead(Session::get("username"), $experiment->projectId, ResourceType::PROJECT)) {
$project = ProjectUtilities::get_project($experiment->projectId);
}
- $expVal = ExperimentUtilities::get_experiment_values($experiment);
- $jobDetails = ExperimentUtilities::get_job_details($experiment->experimentId);
+ } else {
+ $project = ProjectUtilities::get_project($experiment->projectId);
+ }
+ $expVal = ExperimentUtilities::get_experiment_values($experiment);
+ $jobDetails = ExperimentUtilities::get_job_details($experiment->experimentId);
// var_dump( $jobDetails); exit;
- foreach( $jobDetails as $index => $jobDetail){
- if(isset($jobDetail->jobStatuses)){
- $jobDetails[ $index]->jobStatuses[0]->jobStateName = JobState::$__names[$jobDetail->jobStatuses[0]->jobState];
- }
- else{
- $jobDetails[ $index]->jobStatuses = [new stdClass()];
- $jobDetails[ $index]->jobStatuses[0]->jobStateName = null;
- }
+ foreach( $jobDetails as $index => $jobDetail){
+ if(isset($jobDetail->jobStatuses)){
+ $jobDetails[ $index]->jobStatuses[0]->jobStateName = JobState::$__names[$jobDetail->jobStatuses[0]->jobState];
}
- $expVal["jobDetails"] = $jobDetails;
-
- $writeableProjects = ProjectUtilities::get_all_user_writeable_projects(Session::get("gateway_id"), Session::get("username"));
-
- $data = array(
- "expId" => Input::get("expId"),
- "experiment" => $experiment,
- "project" => $project,
- "jobDetails" => $jobDetails,
- "expVal" => $expVal,
- "autoRefresh"=> $autoRefresh,
- "writeableProjects" => $writeableProjects
- );
- if(Config::get('pga_config.airavata')["data-sharing-enabled"]){
- $users = SharingUtilities::getProfilesForSharedUsers(Input::get("expId"), ResourceType::EXPERIMENT);
- $sharedExperimentOwner = SharingUtilities::getSharedResourceOwner($experiment->experimentId, ResourceType::EXPERIMENT);
- $sharedProjectOwner = SharingUtilities::getSharedResourceOwner($experiment->projectId, ResourceType::PROJECT);
-
- $owner = array();
- $projectOwner = array();
- if (Session::get("username") !== $sharedExperimentOwner) {
- $owner[$sharedExperimentOwner] = $users[$sharedExperimentOwner];
- }
- if (Session::get("username") !== $sharedProjectOwner) {
- $projectOwner[$sharedProjectOwner] = $users[$sharedProjectOwner];
- }
- // Subtract out the owner and project owner from list of users
- $users = array_diff_key($users, $owner);
- $users = array_diff_key($users, $projectOwner);
- // If project owner is the same as owner, just show the owner, not the project owner
- $projectOwner = array_diff_key($projectOwner, $owner);
- // Only allow editing sharing on the summary page if the owner
- // and the experiment isn't editable. If the experiment is
- // editable, the sharing can be edited on the edit page.
- $canEditSharing = (Session::get("username") === $sharedExperimentOwner) && !$expVal["editable"];
- $data['can_write'] = SharingUtilities::userCanWrite(Session::get("username"), $experiment->experimentId, ResourceType::EXPERIMENT);
- $data["users"] = json_encode($users);
- $data["owner"] = json_encode($owner);
- $data["projectOwner"] = json_encode($projectOwner);
- $data["canEditSharing"] = $canEditSharing;
- // The summary page has it's own Update Sharing button
- $data["updateSharingViaAjax"] = true;
+ else{
+ $jobDetails[ $index]->jobStatuses = [new stdClass()];
+ $jobDetails[ $index]->jobStatuses[0]->jobStateName = null;
}
-
- if( Input::has("dashboard"))
- {
- $detailedExperiment = ExperimentUtilities::get_detailed_experiment( $_GET['expId']);
- $data["detailedExperiment"] = $detailedExperiment;
+ }
+ $expVal["jobDetails"] = $jobDetails;
+
+ $writeableProjects = ProjectUtilities::get_all_user_writeable_projects(Session::get("gateway_id"), Session::get("username"));
+
+ $data = array(
+ "expId" => Input::get("expId"),
+ "experiment" => $experiment,
+ "project" => $project,
+ "jobDetails" => $jobDetails,
+ "expVal" => $expVal,
+ "autoRefresh"=> $autoRefresh,
+ "writeableProjects" => $writeableProjects
+ );
+ if(Config::get('pga_config.airavata')["data-sharing-enabled"]){
+ $users = SharingUtilities::getProfilesForSharedUsers(Input::get("expId"), ResourceType::EXPERIMENT);
+ $sharedExperimentOwner = SharingUtilities::getSharedResourceOwner($experiment->experimentId, ResourceType::EXPERIMENT);
+ $sharedProjectOwner = SharingUtilities::getSharedResourceOwner($experiment->projectId, ResourceType::PROJECT);
+
+ $owner = array();
+ $projectOwner = array();
+ if (Session::get("username") !== $sharedExperimentOwner) {
+ $owner[$sharedExperimentOwner] = $users[$sharedExperimentOwner];
}
-
- if (Request::ajax()) {
- //admin wants to see an experiment summary
- if (Input::has("dashboard")) {
- $data["dashboard"] = true;
- return View::make("partials/experiment-info", $data);
- } else
- return json_encode($data);
- } else {
- return View::make("experiment/summary", $data);
+ if (Session::get("username") !== $sharedProjectOwner) {
+ $projectOwner[$sharedProjectOwner] = $users[$sharedProjectOwner];
}
+ // Subtract out the owner and project owner from list of users
+ $users = array_diff_key($users, $owner);
+ $users = array_diff_key($users, $projectOwner);
+ // If project owner is the same as owner, just show the owner, not the project owner
+ $projectOwner = array_diff_key($projectOwner, $owner);
+ // Only allow editing sharing on the summary page if the owner
+ // and the experiment isn't editable. If the experiment is
+ // editable, the sharing can be edited on the edit page.
+ $canEditSharing = (Session::get("username") === $sharedExperimentOwner) && !$expVal["editable"];
+ $data['can_write'] = SharingUtilities::userCanWrite(Session::get("username"), $experiment->experimentId, ResourceType::EXPERIMENT);
+ $data["users"] = json_encode($users);
+ $data["owner"] = json_encode($owner);
+ $data["projectOwner"] = json_encode($projectOwner);
+ $data["canEditSharing"] = $canEditSharing;
+ // The summary page has it's own Update Sharing button
+ $data["updateSharingViaAjax"] = true;
+ }
+
+ if( Input::has("dashboard"))
+ {
+ $detailedExperiment = ExperimentUtilities::get_detailed_experiment( $_GET['expId']);
+ $data["detailedExperiment"] = $detailedExperiment;
+ }
+
+ if (Request::ajax()) {
+ //admin wants to see an experiment summary
+ if (Input::has("dashboard")) {
+ $data["dashboard"] = true;
+ return View::make("partials/experiment-info", $data);
+ } else
+ return json_encode($data);
} else {
- if (Input::has("dashboard"))
- return View::make("partials/experiment-info", array("invalidExperimentId" => 1));
- else
- return View::make("experiment/summary", array("invalidExperimentId" => 1));
+ return View::make("experiment/summary", $data);
}
}
http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/blob/b7d80b11/app/libraries/ExperimentUtilities.php
----------------------------------------------------------------------
diff --git a/app/libraries/ExperimentUtilities.php b/app/libraries/ExperimentUtilities.php
index 0db86f1..90193ae 100755
--- a/app/libraries/ExperimentUtilities.php
+++ b/app/libraries/ExperimentUtilities.php
@@ -199,6 +199,7 @@ class ExperimentUtilities
* Get the experiment with the given ID
* @param $expId
* @return null
+ * @throws ExperimentNotFoundException
*/
public static function get_experiment($expId)
{
@@ -211,7 +212,7 @@ class ExperimentUtilities
} catch (InvalidRequestException $ire) {
CommonUtilities::print_error_message('<p>InvalidRequestException: ' . $ire->getMessage() . '</p>');
} catch (ExperimentNotFoundException $enf) {
- CommonUtilities::print_error_message('<p>ExperimentNotFoundException: ' . $enf->getMessage() . '</p>');
+ throw $enf; // rethrow
} catch (AiravataClientException $ace) {
CommonUtilities::print_error_message('AiravataClientException: ' . $ace->getMessage() . '</p>');
} catch (AiravataSystemException $ase) {
http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/blob/b7d80b11/app/views/partials/experiment-info.blade.php
----------------------------------------------------------------------
diff --git a/app/views/partials/experiment-info.blade.php b/app/views/partials/experiment-info.blade.php
index a0b027e..aa2eaa6 100644
--- a/app/views/partials/experiment-info.blade.php
+++ b/app/views/partials/experiment-info.blade.php
@@ -5,13 +5,11 @@
}
</style>
<div class="container" style="max-width: 750px;">
- <!--
@if(isset( $invalidExperimentId ) )
<div class="alert alert-danger">
The Experiment ID does not exist. Please go to correct experiment.
</div>
@else
- -->
@if( Session::has("permissionDenied" ) )
<div class="alert alert-danger">
{{Session::forget("permissionDenied") }}