From c02f7b4e2b3fec1c1d572832cf05f469762e3b01 Mon Sep 17 00:00:00 2001 From: katmastt Date: Fri, 27 Oct 2023 09:03:48 +0000 Subject: [PATCH 1/2] implement time limits for each project/user type and make project name read only on project edit --- controllers/ProjectController.php | 37 ++++++++++++------- views/project/edit_cold_storage.php | 25 ++++++++++++- views/project/edit_jupyter.php | 15 +++++++- views/project/edit_machine_compute.php | 14 +++++-- views/project/edit_ondemand.php | 18 +++++++-- views/project/edit_service.php | 20 +++++++--- views/project/new_cold_storage_request.php | 14 +++++++ views/project/new_machine_compute_request.php | 2 +- views/project/new_ondemand_request.php | 3 +- views/project/new_service_request.php | 3 +- views/project/view_cold_request_user.php | 2 +- views/project/view_jupyter_request_user.php | 2 +- .../view_machine_compute_request_user.php | 2 +- views/project/view_ondemand_request_user.php | 2 +- views/project/view_service_request_user.php | 2 +- 15 files changed, 125 insertions(+), 36 deletions(-) diff --git a/controllers/ProjectController.php b/controllers/ProjectController.php index af5ddfd..a047ba0 100644 --- a/controllers/ProjectController.php +++ b/controllers/ProjectController.php @@ -236,6 +236,8 @@ public function actionNewServiceRequest() $limitsModel=new ServiceLimits; $autoacceptModel=new ServiceAutoaccept; + $upperlimits=$limitsModel::find()->where(['user_type'=>$role])->one(); + $service_autoaccept= ServiceAutoaccept::find()->where(['user_type'=>$role])->one(); $service_autoaccept_number=$service_autoaccept->autoaccept_number; @@ -350,7 +352,7 @@ public function actionNewServiceRequest() return $this->render('new_service_request',['service'=>$serviceModel, 'project'=>$projectModel, - 'trls'=>$trls, 'form_params'=>$form_params, 'participating'=>$participating, 'errors'=>$errors, 'upperlimits'=>$upperlimits, 'autoacceptlimits'=>$autoacceptlimits,'autoaccept_allowed' => $autoaccept_allowed, 'role'=>$role, 'new_project_allowed'=>$new_project_allowed]); + 'trls'=>$trls, 'form_params'=>$form_params, 'participating'=>$participating, 'errors'=>$errors, 'upperlimits'=>$upperlimits, 'autoacceptlimits'=>$autoacceptlimits,'autoaccept_allowed' => $autoaccept_allowed, 'role'=>$role, 'new_project_allowed'=>$new_project_allowed, 'upperlimits'=>$upperlimits]); @@ -423,7 +425,7 @@ public function actionNewMachineComputeRequest() $projectModel->user_list=$participant_ids; $isValid = $projectModel->validate(); $isValid = $serviceModel->validate() && $isValid; - $isValid = $projectModel->machinesDuration30() && $isValid; + // $isValid = $projectModel->machinesDuration30() && $isValid; if ($isValid) { @@ -489,7 +491,7 @@ public function actionNewColdStorageRequest() $coldStorageModel=new ColdStorageRequest; $projectModel=new ProjectRequest; // $projectModel->duration=36; - $projectModel->end_date='2100-1-1'; + // $projectModel->end_date='2100-1-1'; $projectModel->backup_services=false; $limitsModel=new ColdStorageLimits; @@ -566,7 +568,7 @@ public function actionNewColdStorageRequest() $projectModel->user_list=$participant_ids; $isValid = $projectModel->validate(); $isValid = $coldStorageModel->validate() && $isValid; - $projectModel->end_date='2100-1-1'; + // $projectModel->end_date='2100-1-1'; if ($isValid) { @@ -646,6 +648,7 @@ public function actionNewOndemandRequest() $limitsModel=new OndemandLimits; $autoacceptModel=new OndemandAutoaccept; + $upperlimits=$limitsModel::find()->where(['user_type'=>$role])->one(); $ondemand_autoaccept= OndemandAutoaccept::find()->where(['user_type'=>$role])->one(); $ondemand_autoaccept_number=$ondemand_autoaccept->autoaccept_number; @@ -759,7 +762,7 @@ public function actionNewOndemandRequest() return $this->render('new_ondemand_request',['ondemand'=>$ondemandModel, 'project'=>$projectModel, - 'maturities'=>$maturities, 'form_params'=>$form_params, 'participating'=>$participating, 'errors'=>$errors, 'upperlimits'=>$upperlimits, 'autoacceptlimits'=>$autoacceptlimits,'autoaccept_allowed' => $autoaccept_allowed, 'role'=>$role, 'new_project_allowed'=>$new_project_allowed]); + 'maturities'=>$maturities, 'form_params'=>$form_params, 'participating'=>$participating, 'errors'=>$errors, 'upperlimits'=>$upperlimits, 'autoacceptlimits'=>$autoacceptlimits,'autoaccept_allowed' => $autoaccept_allowed, 'role'=>$role, 'new_project_allowed'=>$new_project_allowed, 'upperlimits'=>$upperlimits]); } //jupyter notebooks controller @@ -1337,6 +1340,10 @@ public function actionViewRequest($id,$filter='all') public function actionViewRequestUser($id,$filter='all',$return='index') { + $superAdmin = 0; + if((Userw::hasRole('Admin', $superadminAllowed=true)) || (Userw::hasRole('Admin', $superadminAllowed=false)) || (Userw::hasRole('Moderator', $superadminAllowed=true)) || (Userw::hasRole('Moderator', $superadminAllowed=false))){ + $superAdmin = 1; + } $active_servers = 0; $image = ''; ProjectRequest::recordViewed($id); @@ -1475,7 +1482,7 @@ public function actionViewRequestUser($id,$filter='all',$return='index') return $this->render($view_file,['project'=>$project_request,'details'=>$details, 'return'=>$return, 'filter'=>$filter,'usage'=>$usage,'user_list'=>$username_list, 'submitted'=>$submitted,'request_id'=>$id, 'type'=>$type, 'ends'=>$ends, 'start'=>$start, 'remaining_time'=>$remaining_time, - 'project_owner'=>$project_owner, 'number_of_users'=>$number_of_users, 'maximum_number_users'=>$maximum_number_users, 'remaining_jobs'=>$remaining_jobs, 'expired'=>$expired, 'active_servers'=>$active_servers, 'image'=>$image]); + 'project_owner'=>$project_owner, 'number_of_users'=>$number_of_users, 'maximum_number_users'=>$maximum_number_users, 'remaining_jobs'=>$remaining_jobs, 'expired'=>$expired, 'active_servers'=>$active_servers, 'image'=>$image, 'superAdmin'=>$superAdmin]); } @@ -2318,7 +2325,10 @@ public function actionEditProject($id) { $images = ''; $prequest=ProjectRequest::find()->where(['id'=>$id])->one(); - + $exceed_limits = 0; + if((Userw::hasRole('Admin', $superadminAllowed=true)) || (Userw::hasRole('Moderator', $superadminAllowed=true))){ + $exceed_limits = 1; + } if (empty($prequest)) { return $this->render('error_unauthorized'); @@ -2461,7 +2471,8 @@ public function actionEditProject($id) for ($i=1; $i<31; $i++) $num_vms_dropdown[$i]=$i; - $prequest->end_date='2100-1-1'; + // $prequest->end_date='2100-1-1'; + $prequest->end_date=$ends; $volume=''; if ($drequest->type=='hot') { @@ -2556,10 +2567,10 @@ public function actionEditProject($id) $isValid = $prequest->validate(); $isValid = $drequest->validate() && $isValid; - if($prType==3) - { - $isValid = $prequest->machinesDuration30() && $isValid; - } + // if($prType==3) + // { + // $isValid = $prequest->machinesDuration30() && $isValid; + // } $pchanged_tmp= ProjectRequest::ProjectModelChanged($pold,$prequest); $pchanged=$pchanged_tmp[0]; @@ -2716,7 +2727,7 @@ public function actionEditProject($id) return $this->render($view_file,['details'=>$drequest, 'project'=>$prequest, - 'trls'=>$trls, 'form_params'=>$form_params, 'participating'=>$participating, 'errors'=>$errors, 'upperlimits'=>$upperlimits, 'autoacceptlimits'=>$autoacceptlimits,'maturities'=>$maturities, 'vm_exists'=>$vm_exists, 'ends'=>$ends, 'role'=>$role, 'num_vms_dropdown'=>$num_vms_dropdown, 'volume_exists'=>$volume_exists, 'images'=>$images, 'interval'=>$interval]); + 'trls'=>$trls, 'form_params'=>$form_params, 'participating'=>$participating, 'errors'=>$errors, 'upperlimits'=>$upperlimits, 'autoacceptlimits'=>$autoacceptlimits,'maturities'=>$maturities, 'vm_exists'=>$vm_exists, 'ends'=>$ends, 'role'=>$role, 'num_vms_dropdown'=>$num_vms_dropdown, 'volume_exists'=>$volume_exists, 'images'=>$images, 'interval'=>$interval, 'exceed_limits'=>$exceed_limits]); } diff --git a/views/project/edit_cold_storage.php b/views/project/edit_cold_storage.php index 6c3eb49..6f50b52 100644 --- a/views/project/edit_cold_storage.php +++ b/views/project/edit_cold_storage.php @@ -69,7 +69,30 @@

Project details

- field($project, 'name') ?> + field($project, 'name')->textInput(['readonly' => true, 'value' =>$project['name']]) ?> +
+ Project end date * '; + echo DatePicker::widget([ + 'model' => $project, + 'attribute' => 'end_date', + 'pluginOptions' => [ + 'endDate'=>"+".($upperlimits->duration-$interval)."D", + 'autoclose'=>true, + 'format'=>'yyyy-m-d' + ] + ]);}?> + Project end date * '; + echo DatePicker::widget([ + 'model' => $project, + 'attribute' => 'end_date', + 'pluginOptions' => [ + 'autoclose'=>true, + 'format'=>'yyyy-m-d' + ] + ]);}?> +
field($project, 'user_num') ?> 'blue-label']) ?> diff --git a/views/project/edit_jupyter.php b/views/project/edit_jupyter.php index cf836bb..0bee833 100644 --- a/views/project/edit_jupyter.php +++ b/views/project/edit_jupyter.php @@ -85,7 +85,8 @@ field($project, 'name')->textInput(['readonly' => true, 'value' =>$project['name']]) ?>
- Project end date * '; + Project end date * '; echo DatePicker::widget([ 'model' => $project, 'attribute' => 'end_date', @@ -94,7 +95,17 @@ 'autoclose'=>true, 'format'=>'yyyy-m-d' ] - ]);?> + ]);}?> + Project end date * '; + echo DatePicker::widget([ + 'model' => $project, + 'attribute' => 'end_date', + 'pluginOptions' => [ + 'autoclose'=>true, + 'format'=>'yyyy-m-d' + ] + ]);}?>
field($details, 'participants_number')->label($participants_label) ?> diff --git a/views/project/edit_machine_compute.php b/views/project/edit_machine_compute.php index 8446416..88ac78f 100644 --- a/views/project/edit_machine_compute.php +++ b/views/project/edit_machine_compute.php @@ -45,16 +45,22 @@

Project details

- field($project, 'name') ?> + field($project, 'name')->textInput(['readonly' => true, 'value' =>$project['name']]) ?>
Project end date * '; - echo $form->field($project, 'end_date')->widget(DatePicker::className(),[ + if($exceed_limits == 0){echo $form->field($project, 'end_date')->widget(DatePicker::className(),[ 'pluginOptions' => [ 'autoclose'=>true, 'format'=>'yyyy-m-d', - 'endDate'=>'+30d' + 'endDate'=>'+'.(90-$interval)."d" ] - ])->label(""); + ])->label("");} + if($exceed_limits == 1){echo $form->field($project, 'end_date')->widget(DatePicker::className(),[ + 'pluginOptions' => [ + 'autoclose'=>true, + 'format'=>'yyyy-m-d' + ] + ])->label("");} ?>
field($project, 'user_num') ?> diff --git a/views/project/edit_ondemand.php b/views/project/edit_ondemand.php index 3eb7e5b..1f04ff9 100644 --- a/views/project/edit_ondemand.php +++ b/views/project/edit_ondemand.php @@ -76,17 +76,29 @@

Project details

- field($project, 'name') ?> + field($project, 'name')->textInput(['readonly' => true, 'value' =>$project['name']]) ?>
- Project end date * '; + Project end date * '; echo DatePicker::widget([ 'model' => $project, 'attribute' => 'end_date', 'pluginOptions' => [ + 'endDate'=>"+".($upperlimits->duration-$interval)."D", 'autoclose'=>true, 'format'=>'yyyy-m-d' ] - ]);?> + ]);}?> + Project end date * '; + echo DatePicker::widget([ + 'model' => $project, + 'attribute' => 'end_date', + 'pluginOptions' => [ + 'autoclose'=>true, + 'format'=>'yyyy-m-d' + ] + ]);}?>
field($project, 'user_num') ?> 'blue-label']) ?> diff --git a/views/project/edit_service.php b/views/project/edit_service.php index c3f9f6c..2ed529f 100644 --- a/views/project/edit_service.php +++ b/views/project/edit_service.php @@ -62,19 +62,29 @@

Project details

- field($project, 'name') ?> + field($project, 'name')->textInput(['readonly' => true, 'value' =>$project['name']]) ?>
- Project end date * '; + Project end date * '; echo DatePicker::widget([ 'model' => $project, 'attribute' => 'end_date', 'pluginOptions' => [ + 'endDate'=>"+".($upperlimits->duration-$interval)."D", 'autoclose'=>true, 'format'=>'yyyy-m-d' - ] - ]); - ?> + ]);}?> + Project end date * '; + echo DatePicker::widget([ + 'model' => $project, + 'attribute' => 'end_date', + 'pluginOptions' => [ + 'autoclose'=>true, + 'format'=>'yyyy-m-d' + ] + ]);}?>
field($project, 'user_num') ?> diff --git a/views/project/new_cold_storage_request.php b/views/project/new_cold_storage_request.php index 7a3575c..7fda79d 100644 --- a/views/project/new_cold_storage_request.php +++ b/views/project/new_cold_storage_request.php @@ -65,6 +65,20 @@

Project details

field($project, 'name') ?> + +
+ Project end date * '; + echo DatePicker::widget([ + 'model' => $project, + 'attribute' => 'end_date', + 'options' => array('placeholder' => 'Enter date'), + 'pluginOptions' => [ + 'endDate'=>"+".$upperlimits->duration."D", + 'autoclose'=>true, + 'padding-top'=>"500px;" + ] + ]);?> +
field($project, 'user_num') ?> 'blue-label']) ?>
diff --git a/views/project/new_machine_compute_request.php b/views/project/new_machine_compute_request.php index 7c0e090..47dd341 100644 --- a/views/project/new_machine_compute_request.php +++ b/views/project/new_machine_compute_request.php @@ -61,7 +61,7 @@ 'pluginOptions' => [ 'autoclose'=>true, 'format'=>'yyyy-m-d', - 'endDate'=>'+30d' + 'endDate'=>'+90d' ] ])->label(""); ?> diff --git a/views/project/new_ondemand_request.php b/views/project/new_ondemand_request.php index d922c47..fe2b1f9 100644 --- a/views/project/new_ondemand_request.php +++ b/views/project/new_ondemand_request.php @@ -80,8 +80,9 @@ echo DatePicker::widget([ 'model' => $project, 'attribute' => 'end_date', - 'options' => ['placeholder' => 'Enter date'], + 'options' => array('placeholder' => 'Enter date'), 'pluginOptions' => [ + 'endDate'=>"+".$upperlimits->duration."D", 'autoclose'=>true, 'padding-top'=>"500px;" ] diff --git a/views/project/new_service_request.php b/views/project/new_service_request.php index e9667fc..5607abe 100644 --- a/views/project/new_service_request.php +++ b/views/project/new_service_request.php @@ -78,8 +78,9 @@ echo DatePicker::widget([ 'model' => $project, 'attribute' => 'end_date', - 'options' => ['placeholder' => 'Enter date'], + 'options' => array('placeholder' => 'Enter date'), 'pluginOptions' => [ + 'endDate'=>"+".$upperlimits->duration."D", 'autoclose'=>true, 'padding-top'=>"500px;" ] diff --git a/views/project/view_cold_request_user.php b/views/project/view_cold_request_user.php index fc57189..9be7fbb 100644 --- a/views/project/view_cold_request_user.php +++ b/views/project/view_cold_request_user.php @@ -38,7 +38,7 @@ Headers::begin() ?> status==1) || ($project->status==2)) & $expired!=1) +if (($project_owner || $superAdmin) & (($project->status==1) || ($project->status==2)) & $expired!=1) { if ($return == 'user_request'){ echo Headers::widget( diff --git a/views/project/view_jupyter_request_user.php b/views/project/view_jupyter_request_user.php index 14b7130..d2c5c6c 100644 --- a/views/project/view_jupyter_request_user.php +++ b/views/project/view_jupyter_request_user.php @@ -41,7 +41,7 @@ */ Headers::begin() ?> status==1) || ($project->status==2)) & $expired!=1) +if (($project_owner || $superAdmin) & (($project->status==1) || ($project->status==2)) & $expired!=1) { if ($return == 'user_request') { echo Headers::widget( diff --git a/views/project/view_machine_compute_request_user.php b/views/project/view_machine_compute_request_user.php index f75c016..f92308b 100644 --- a/views/project/view_machine_compute_request_user.php +++ b/views/project/view_machine_compute_request_user.php @@ -37,7 +37,7 @@ Headers::begin() ?> status==1) || ($project->status==2)) & $expired!=1) +if (($project_owner || $superAdmin) & (($project->status==1) || ($project->status==2)) & $expired!=1) { if ($return == 'user_request'){ echo Headers::widget( diff --git a/views/project/view_ondemand_request_user.php b/views/project/view_ondemand_request_user.php index 8909dd3..a44d17c 100644 --- a/views/project/view_ondemand_request_user.php +++ b/views/project/view_ondemand_request_user.php @@ -59,7 +59,7 @@ */ Headers::begin() ?> status==1) || ($project->status==2)) & $expired!=1) +if (($project_owner || $superAdmin) & (($project->status==1) || ($project->status==2)) & $expired!=1) { if ($return == 'user_request') { echo Headers::widget( diff --git a/views/project/view_service_request_user.php b/views/project/view_service_request_user.php index d16d2e4..ef47ae9 100644 --- a/views/project/view_service_request_user.php +++ b/views/project/view_service_request_user.php @@ -40,7 +40,7 @@ Headers::begin() ?> status==1) || ($project->status==2)) & $expired!=1) +if (($project_owner || $superAdmin) & (($project->status==1) || ($project->status==2)) & $expired!=1) { if ($return == 'user_request'){ echo Headers::widget( From 694e592ff5bf6c55f5522dd2fbe65dd9aa784da3 Mon Sep 17 00:00:00 2001 From: katmastt Date: Fri, 27 Oct 2023 09:08:14 +0000 Subject: [PATCH 2/2] show on index page remaining days for cold storage projects --- views/project/index.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/views/project/index.php b/views/project/index.php index e7072dc..86c2747 100644 --- a/views/project/index.php +++ b/views/project/index.php @@ -195,7 +195,7 @@ $projectTarget='_self'; $project_icon=''; $title="Storage volume project"; - $days='N/A'; + $days=$res[1]. " days"; }