You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@airavata.apache.org by sm...@apache.org on 2020/05/01 03:07:14 UTC
[airavata-custos-portal] 03/20: Added edit screens for the admin
This is an automated email from the ASF dual-hosted git repository.
smarru pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/airavata-custos-portal.git
commit a91fe19ca51bd6a524f0e93f5ff3cca51937fd39
Author: Shivam Rastogi <sh...@yahoo.com>
AuthorDate: Thu Mar 12 00:34:24 2020 -0400
Added edit screens for the admin
---
.../custos_admin_portal/apps/admin/urls.py | 3 +-
.../custos_admin_portal/apps/admin/views.py | 14 +++-
.../static/common/dist/webpack-stats.json | 2 +-
.../EditTenantRequest.vue} | 36 +++++-----
.../ListTenantRequestsContainer.vue | 83 ++++++++++++++++++++++
.../ViewTenantRequestContainer.vue | 75 ++++++++++++++++++-
...quest.js => entry-admin-edit-tenant-request.js} | 9 ++-
.../entry-admin-list-new-tenant-requests.js | 25 +++++++
...quest.js => entry-admin-view-tenant-request.js} | 2 +-
.../apps/custos_admin_portal_admin/utils/urls.js | 17 ++++-
.../apps/workspace/RequestNewTenantContainer.vue | 9 ++-
.../apps/workspace/ViewTenantRequestContainer.vue | 29 ++++++++
.../static/common/vue.config.js | 4 +-
.../custos_admin_portal/templates/base.html | 2 +-
.../templates/custos_admin_portal/home.html | 2 -
15 files changed, 275 insertions(+), 37 deletions(-)
diff --git a/custos_admin_portal/custos_admin_portal/apps/admin/urls.py b/custos_admin_portal/custos_admin_portal/apps/admin/urls.py
index c8fcdc2..dd0828d 100644
--- a/custos_admin_portal/custos_admin_portal/apps/admin/urls.py
+++ b/custos_admin_portal/custos_admin_portal/apps/admin/urls.py
@@ -6,5 +6,6 @@ from . import views
app_name = 'custos_admin_portal_admin'
urlpatterns = [
url(r'^list-requests', views.list_new_tenant_requests, name='list_request'),
- url(r'request/(?P<tenant_request_id>[^/]+)/$', views.view_tenant_request, name="view_tenant_request")
+ url(r'^request/(?P<tenant_request_id>[^/]+)/$', views.view_tenant_request, name="view_tenant_request"),
+ url(r'^edit-tenant-request/(?P<tenant_request_id>[^/]+)/$', views.edit_tenant_request, name="edit_tenant_request")
]
diff --git a/custos_admin_portal/custos_admin_portal/apps/admin/views.py b/custos_admin_portal/custos_admin_portal/apps/admin/views.py
index 42ecb83..4b4428f 100644
--- a/custos_admin_portal/custos_admin_portal/apps/admin/views.py
+++ b/custos_admin_portal/custos_admin_portal/apps/admin/views.py
@@ -5,13 +5,21 @@ def list_new_tenant_requests(request):
print("New tenant requests list is called")
# TODO fetch all the tenant requests from airavata here.
return render(request, 'workspace/list_requests.html', {
- 'bundle_name': 'list-requests',
+ 'bundle_name': 'admin-list-requests',
})
def view_tenant_request(request, tenant_request_id):
- print("Admin Tenant request Id: {}".format(tenant_request_id)),
+ print("Admin view Tenant request Id: {}".format(tenant_request_id)),
return render(request, 'workspace/view_tenant_request.html', {
- 'bundle_name': 'view-request',
+ 'bundle_name': 'admin-view-request',
+ 'tenant_request_id': tenant_request_id
+ })
+
+
+def edit_tenant_request(request, tenant_request_id):
+ print("Edit Tenant request Id: {}".format(tenant_request_id)),
+ return render(request, 'workspace/view_tenant_request.html', {
+ 'bundle_name': 'admin-edit-request',
'tenant_request_id': tenant_request_id
})
diff --git a/custos_admin_portal/custos_admin_portal/static/common/dist/webpack-stats.json b/custos_admin_portal/custos_admin_portal/static/common/dist/webpack-stats.json
index 1af4990..4e733dd 100644
--- a/custos_admin_portal/custos_admin_portal/static/common/dist/webpack-stats.json
+++ b/custos_admin_portal/custos_admin_portal/static/common/dist/webpack-stats.json
@@ -1 +1 @@
-{"status":"done","publicPath":"http://localhost:9000/static/common/dist/","chunks":{"app":[{"name":"app.js","publicPath":"http://localhost:9000/static/common/dist/app.js","path":"/home/shivam/Programming/custos_UI/custos_admin_portal/custos_admin_portal/static/common/dist/app.js"},{"name":"app.js.map","publicPath":"http://localhost:9000/static/common/dist/app.js.map","path":"/home/shivam/Programming/custos_UI/custos_admin_portal/custos_admin_portal/static/common/dist/app.js.map"}],"chunk [...]
\ No newline at end of file
+{"status":"done","publicPath":"http://localhost:9000/static/common/dist/","chunks":{"admin-edit-request":[{"name":"admin-edit-request.js","publicPath":"http://localhost:9000/static/common/dist/admin-edit-request.js","path":"/home/shivam/Programming/custos_UI/custos_admin_portal/custos_admin_portal/static/common/dist/admin-edit-request.js"},{"name":"admin-edit-request.e3e36cbf5bfd0814904f.hot-update.js","publicPath":"http://localhost:9000/static/common/dist/admin-edit-request.e3e36cbf5bfd [...]
\ No newline at end of file
diff --git a/custos_admin_portal/custos_admin_portal/static/common/js/apps/workspace/RequestNewTenantContainer.vue b/custos_admin_portal/custos_admin_portal/static/common/js/apps/custos_admin_portal_admin/EditTenantRequest.vue
similarity index 93%
copy from custos_admin_portal/custos_admin_portal/static/common/js/apps/workspace/RequestNewTenantContainer.vue
copy to custos_admin_portal/custos_admin_portal/static/common/js/apps/custos_admin_portal_admin/EditTenantRequest.vue
index 9d833f6..511b4b8 100755
--- a/custos_admin_portal/custos_admin_portal/static/common/js/apps/workspace/RequestNewTenantContainer.vue
+++ b/custos_admin_portal/custos_admin_portal/static/common/js/apps/custos_admin_portal_admin/EditTenantRequest.vue
@@ -2,7 +2,7 @@
<div>
<div class="row">
<div class="col">
- <h1 class="h4 mb-4">New Tenant Request Form</h1>
+ <h1 class="h4 mb-4">Update Tenant Request Form</h1>
</div>
</div>
<div>
@@ -272,7 +272,9 @@
</b-form-group>
- <b-button type="submit" variant="primary">Submit</b-button>
+ <b-button type="submit" variant="primary">Update</b-button>
+ <b-button type="submit" variant="">Discard</b-button>
+
</b-form>
@@ -282,6 +284,7 @@
<script>
import {email, required, url, minLength} from "vuelidate/lib/validators";
+ import urls from "./utils/urls";
export default {
computed: {
@@ -298,22 +301,23 @@
data() {
return {
form: {
- client_name: "",
- requester_email: "",
- admin_username: "",
- admin_first_name: "",
- admin_last_name: "",
- admin_email: "",
+ request_id: "234234324",
+ client_name: "Test Client",
+ requester_email: "tmp@gmail.com",
+ admin_username: "airavata_admin",
+ admin_first_name: "Shivam",
+ admin_last_name: "Rastogi",
+ admin_email: "shivam@airavata.com",
admin_password: "",
- primary_contact: "",
- secondary_contact: "",
- redirect_uris: [""],
- scope: [],
- domain: "",
- client_uri: "",
- logo_uri: "",
+ primary_contact: "51651",
+ secondary_contact: "5545",
+ redirect_uris: ["http://tst.com"],
+ scope: ["openid"],
+ domain: "google.com",
+ client_uri: "http://tst.com",
+ logo_uri: "http://tst.com",
application_type: "web",
- comment: ""
+ comment: "Testing the page"
},
scopeOptions: [
{text: "openId", value: "openid"},
diff --git a/custos_admin_portal/custos_admin_portal/static/common/js/apps/custos_admin_portal_admin/ListTenantRequestsContainer.vue b/custos_admin_portal/custos_admin_portal/static/common/js/apps/custos_admin_portal_admin/ListTenantRequestsContainer.vue
new file mode 100644
index 0000000..8bd2add
--- /dev/null
+++ b/custos_admin_portal/custos_admin_portal/static/common/js/apps/custos_admin_portal_admin/ListTenantRequestsContainer.vue
@@ -0,0 +1,83 @@
+<template>
+ <div>
+ <div class="row">
+ <div class="col">
+ <h1 class="h4 mb-4">Existing Tenants Request</h1>
+ </div>
+ </div>
+ <div class="row">
+ <div class="col">
+ <div class="card">
+ <div class="card-body">
+ <table class="table table-hover">
+ <thead>
+ <tr>
+ <th>Request Id</th>
+ <th>Client Name</th>
+ <th>Creation Time</th>
+ <th>Status</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr
+ v-for="tR in tenantRequests"
+ :key="tR.requestId"
+ >
+ <td>
+ <b-link @click="viewLink(tR)">{{tR.requestId}}</b-link>
+ </td>
+ <td>{{tR.clientName}}</td>
+ <td>
+ <span>{{ tR.creationTime }}</span>
+ </td>
+ <td>
+ {{tR.status}}
+ </td>
+ </tr>
+ </tbody>
+ </table>
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+</template>
+
+<script>
+
+
+ import {now} from "moment";
+ import urls from "./utils/urls";
+
+ export default {
+
+ data() {
+ return {
+ tenantRequests: []
+ }
+ },
+ beforeMount() {
+ this.tenantRequests.push({
+ requestId: '234234324',
+ clientName: 'scigap',
+ creationTime: now(),
+ status: 'Active'
+ });
+ this.tenantRequests.push({
+ requestId: '54645645',
+ clientName: 'scigap',
+ creationTime: now(),
+ status: 'Active'
+ })
+ },
+ methods: {
+ viewLink(tenantRequest) {
+ console.log("Executed view link",tenantRequest)
+ return urls.navigateToAdminViewRequest(tenantRequest)
+ }
+ }
+ };
+</script>
+
+<style>
+</style>
diff --git a/custos_admin_portal/custos_admin_portal/static/common/js/apps/custos_admin_portal_admin/ViewTenantRequestContainer.vue b/custos_admin_portal/custos_admin_portal/static/common/js/apps/custos_admin_portal_admin/ViewTenantRequestContainer.vue
index 4c9a5c9..f414cd6 100644
--- a/custos_admin_portal/custos_admin_portal/static/common/js/apps/custos_admin_portal_admin/ViewTenantRequestContainer.vue
+++ b/custos_admin_portal/custos_admin_portal/static/common/js/apps/custos_admin_portal_admin/ViewTenantRequestContainer.vue
@@ -35,10 +35,72 @@
<th scope="row">Admin Name</th>
<td>{{request.admin_first_name}} {{ " " }} {{request.admin_last_name}}</td>
</tr>
+ <tr>
+ <th scope="row">Primary contact</th>
+ <td>{{request.primary_contact}}</td>
+ </tr>
+ <tr>
+ <th scope="row">Secondary contact</th>
+ <td>{{request.secondary_contact}}</td>
+ </tr>
+ <tr>
+ <th scope="row">Redirect URI Name</th>
+ <td>{{request.redirect_uris}}</td>
+ </tr>
+ <tr>
+ <th scope="row">Scope</th>
+ <td>{{request.scope}}</td>
+ </tr>
+ <tr>
+ <th scope="row">Domain</th>
+ <td>{{request.domain}}</td>
+ </tr>
+ <tr>
+ <th scope="row">Client URI</th>
+ <td>{{request.client_uri}}</td>
+ </tr>
+ <tr>
+ <th scope="row">Comment</th>
+ <td>{{request.comment}}</td>
+ </tr>
+ <div class="row">
+ <div
+ id="col-exp-buttons"
+ class="col"
+ >
+ <b-button
+ v-b-modal.modal-1
+ variant="success"
+ >
+ <div>
+ <b-modal id="modal-1" title="Info">
+ <p class="my-4">Tenant is approved and credentials are activated</p>
+ </b-modal>
+ </div>
+ Approve
+ </b-button>
+ <b-button
+ @click="editExperiment"
+ variant="primary"
+ >
+ Edit
+ </b-button>
+ <b-button
+ v-b-modal.modal-2
+ variant="danger"
+ >
+ Reject
+ <div>
+ <b-modal id="modal-2" title="Info">
+ <p class="my-4">Tenant is rejected</p>
+ </b-modal>
+ </div>
+ </b-button>
+ </div>
+ </div>
- </tbody>
- <b-button type="submit" variant="primary">Submit</b-button>
+ </tbody>
</table>
</div>
</div>
@@ -48,6 +110,8 @@
</template>
<script>
+ import urls from "./utils/urls";
+
export default {
props: {
tenantRequestId: {
@@ -57,6 +121,7 @@
data() {
return {
request: {
+ request_id: "xder3545d",
client_name: "Test Client",
requester_email: "tmp@gmail.com",
admin_username: "airavata_admin",
@@ -74,6 +139,12 @@
comment: "Testing the page"
}
}
+ },
+ methods: {
+ editExperiment(tenantRequest) {
+ console.log("Executed edit link");
+ return urls.navigateToAdminEditRequest(this.request)
+ }
}
}
</script>
\ No newline at end of file
diff --git a/custos_admin_portal/custos_admin_portal/static/common/js/apps/custos_admin_portal_admin/entry-view-tenant-request.js b/custos_admin_portal/custos_admin_portal/static/common/js/apps/custos_admin_portal_admin/entry-admin-edit-tenant-request.js
old mode 100644
new mode 100755
similarity index 72%
copy from custos_admin_portal/custos_admin_portal/static/common/js/apps/custos_admin_portal_admin/entry-view-tenant-request.js
copy to custos_admin_portal/custos_admin_portal/static/common/js/apps/custos_admin_portal_admin/entry-admin-edit-tenant-request.js
index 3aab6cb..4d8f496
--- a/custos_admin_portal/custos_admin_portal/static/common/js/apps/custos_admin_portal_admin/entry-view-tenant-request.js
+++ b/custos_admin_portal/custos_admin_portal/static/common/js/apps/custos_admin_portal_admin/entry-admin-edit-tenant-request.js
@@ -1,6 +1,6 @@
import { entry } from "../../index";
-import ViewTenantRequestContainer from "./ViewTenantRequestContainer";
import MainLayout from "../../components/MainLayout";
+import EditTenantRequest from "./EditTenantRequest";
// Expect a template with id "edit-experiment" and experiment-id data attribute
//
@@ -10,7 +10,7 @@ entry(Vue => {
new Vue({
render(h) {
return h(MainLayout, [
- h(ViewTenantRequestContainer, {
+ h(EditTenantRequest, {
props: {
tenantRequestId: this.tenantRequestId
}
@@ -24,8 +24,7 @@ entry(Vue => {
},
beforeMount() {
this.tenantRequestId = JSON.parse(this.$el.dataset.tenantRequestId);
- console.log("Entry is executed");
- console.log(this.$el.dataset)
+ console.log("Entry for admin edit tenant request is executed")
}
- }).$mount("#admin-view-request");
+ }).$mount("#admin-edit-request");
});
diff --git a/custos_admin_portal/custos_admin_portal/static/common/js/apps/custos_admin_portal_admin/entry-admin-list-new-tenant-requests.js b/custos_admin_portal/custos_admin_portal/static/common/js/apps/custos_admin_portal_admin/entry-admin-list-new-tenant-requests.js
new file mode 100644
index 0000000..3676b1c
--- /dev/null
+++ b/custos_admin_portal/custos_admin_portal/static/common/js/apps/custos_admin_portal_admin/entry-admin-list-new-tenant-requests.js
@@ -0,0 +1,25 @@
+import { entry } from "../../index";
+import ListTenantRequestsContainer from "./ListTenantRequestsContainer";
+import MainLayout from "../../components/MainLayout";
+
+// Expect a template with id "edit-experiment" and experiment-id data attribute
+//
+// <div id="edit-experiment" data-experiment-id="..expid.."/>
+
+entry(Vue => {
+ new Vue({
+ render(h) {
+ return h(MainLayout, [
+ h(ListTenantRequestsContainer)
+ ]);
+ },
+ data() {
+ return {
+ experimentId: null
+ };
+ },
+ beforeMount() {
+ console.log("Entry for list-admin-new-tenant-request is executed")
+ }
+ }).$mount("#admin-list-requests");
+});
diff --git a/custos_admin_portal/custos_admin_portal/static/common/js/apps/custos_admin_portal_admin/entry-view-tenant-request.js b/custos_admin_portal/custos_admin_portal/static/common/js/apps/custos_admin_portal_admin/entry-admin-view-tenant-request.js
similarity index 92%
rename from custos_admin_portal/custos_admin_portal/static/common/js/apps/custos_admin_portal_admin/entry-view-tenant-request.js
rename to custos_admin_portal/custos_admin_portal/static/common/js/apps/custos_admin_portal_admin/entry-admin-view-tenant-request.js
index 3aab6cb..aa24249 100644
--- a/custos_admin_portal/custos_admin_portal/static/common/js/apps/custos_admin_portal_admin/entry-view-tenant-request.js
+++ b/custos_admin_portal/custos_admin_portal/static/common/js/apps/custos_admin_portal_admin/entry-admin-view-tenant-request.js
@@ -24,7 +24,7 @@ entry(Vue => {
},
beforeMount() {
this.tenantRequestId = JSON.parse(this.$el.dataset.tenantRequestId);
- console.log("Entry is executed");
+ console.log("Entry adming view request is executed");
console.log(this.$el.dataset)
}
}).$mount("#admin-view-request");
diff --git a/custos_admin_portal/custos_admin_portal/static/common/js/apps/custos_admin_portal_admin/utils/urls.js b/custos_admin_portal/custos_admin_portal/static/common/js/apps/custos_admin_portal_admin/utils/urls.js
index 3867fbb..c096ad1 100644
--- a/custos_admin_portal/custos_admin_portal/static/common/js/apps/custos_admin_portal_admin/utils/urls.js
+++ b/custos_admin_portal/custos_admin_portal/static/common/js/apps/custos_admin_portal_admin/utils/urls.js
@@ -9,7 +9,20 @@ export default {
},
navigateToAdminViewRequest(tenantRequest) {
window.location.assign(
- this.viewTenantRequest(tenantRequest)
+ this.viewAdminTenantRequest(tenantRequest)
);
- }
+ },
+ adminEditTenantRequest(tenantRequest) {
+ return (
+ "/admin/edit-tenant-request/" +
+ encodeURIComponent(tenantRequest.request_id) +
+ "/"
+ );
+ },
+ navigateToAdminEditRequest(tenantRequest) {
+ window.location.assign(
+ this.adminEditTenantRequest(tenantRequest)
+ );
+ },
+
};
diff --git a/custos_admin_portal/custos_admin_portal/static/common/js/apps/workspace/RequestNewTenantContainer.vue b/custos_admin_portal/custos_admin_portal/static/common/js/apps/workspace/RequestNewTenantContainer.vue
index 9d833f6..4c68b44 100755
--- a/custos_admin_portal/custos_admin_portal/static/common/js/apps/workspace/RequestNewTenantContainer.vue
+++ b/custos_admin_portal/custos_admin_portal/static/common/js/apps/workspace/RequestNewTenantContainer.vue
@@ -272,8 +272,13 @@
</b-form-group>
- <b-button type="submit" variant="primary">Submit</b-button>
-
+ <b-button v-b-modal.modal-1 type="submit" variant="primary">Submit</b-button>
+ <div>
+ <b-modal id="modal-1" title="Client Id and Secret">
+ <p class="my-4">Client Id: custos-cs8jycc8cu66jnc2tsu3-10000002</p>
+ <p class="my-4">Secret: sYh5JIunQQ3aNsG53vC1ZZKrCT8MJmRKzbRmwfla</p>
+ </b-modal>
+ </div>
</b-form>
</div>
diff --git a/custos_admin_portal/custos_admin_portal/static/common/js/apps/workspace/ViewTenantRequestContainer.vue b/custos_admin_portal/custos_admin_portal/static/common/js/apps/workspace/ViewTenantRequestContainer.vue
index 5b4e2ea..b4e89b2 100644
--- a/custos_admin_portal/custos_admin_portal/static/common/js/apps/workspace/ViewTenantRequestContainer.vue
+++ b/custos_admin_portal/custos_admin_portal/static/common/js/apps/workspace/ViewTenantRequestContainer.vue
@@ -35,6 +35,35 @@
<th scope="row">Admin Name</th>
<td>{{request.admin_first_name}} {{ " " }} {{request.admin_last_name}}</td>
</tr>
+ <tr>
+ <th scope="row">Primary contact</th>
+ <td>{{request.primary_contact}}</td>
+ </tr>
+ <tr>
+ <th scope="row">Secondary contact</th>
+ <td>{{request.secondary_contact}}</td>
+ </tr>
+ <tr>
+ <th scope="row">Redirect URI Name</th>
+ <td>{{request.redirect_uris}}</td>
+ </tr>
+ <tr>
+ <th scope="row">Scope</th>
+ <td>{{request.scope}}</td>
+ </tr>
+ <tr>
+ <th scope="row">Domain</th>
+ <td>{{request.domain}}</td>
+ </tr>
+ <tr>
+ <th scope="row">Client URI</th>
+ <td>{{request.client_uri}}</td>
+ </tr>
+ <tr>
+ <th scope="row">Comment</th>
+ <td>{{request.comment}}</td>
+ </tr>
+
</tbody>
</table>
diff --git a/custos_admin_portal/custos_admin_portal/static/common/vue.config.js b/custos_admin_portal/custos_admin_portal/static/common/vue.config.js
index e2d7bad..6edcf61 100755
--- a/custos_admin_portal/custos_admin_portal/static/common/vue.config.js
+++ b/custos_admin_portal/custos_admin_portal/static/common/vue.config.js
@@ -9,7 +9,9 @@ module.exports = {
'request-new-tenant': "./js/apps/workspace/entry-request-new-tenant",
'list-requests': "./js/apps/workspace/entry-list-new-tenant-requests",
'view-request': "./js/apps/workspace/entry-view-tenant-request",
- 'admin-view-request': "./js/apps/custos_admin_portal_admin/entry-view-tenant-request"
+ 'admin-view-request': "./js/apps/custos_admin_portal_admin/entry-admin-view-tenant-request",
+ 'admin-edit-request': "./js/apps/custos_admin_portal_admin/entry-admin-edit-tenant-request",
+ 'admin-list-requests': "./js/apps/custos_admin_portal_admin/entry-admin-list-new-tenant-requests"
},
css: {
loaderOptions: {
diff --git a/custos_admin_portal/custos_admin_portal/templates/base.html b/custos_admin_portal/custos_admin_portal/templates/base.html
index 16024b9..9a4a419 100644
--- a/custos_admin_portal/custos_admin_portal/templates/base.html
+++ b/custos_admin_portal/custos_admin_portal/templates/base.html
@@ -147,7 +147,7 @@
{% block header %}
<img class=c-header__logo src="{% static 'images/airavata-logo.png' %}" alt="Airavata Logo"/>
{% endblock %}
- <div class=c-header__title><a href="/">{% block title %}Custos Admin Portal{% endblock %}</a>
+ <div class=c-header__title><a href="/">{% block title %}Custos Portal{% endblock %}</a>
</div>
</header>
diff --git a/custos_admin_portal/custos_admin_portal/templates/custos_admin_portal/home.html b/custos_admin_portal/custos_admin_portal/templates/custos_admin_portal/home.html
index 90131f9..3fa6752 100644
--- a/custos_admin_portal/custos_admin_portal/templates/custos_admin_portal/home.html
+++ b/custos_admin_portal/custos_admin_portal/templates/custos_admin_portal/home.html
@@ -7,11 +7,9 @@
<div class="jumbotron">
<h1>Welcome!</h1>
<p>This is the Django based web portal for Custos Admin.</p>
- {% if not user.is_authenticated %}
<p><a class="btn btn-primary btn-lg" href="{% url 'custos_admin_portal_auth:login' %}" role="button">Login ยป</a></p>
<p><a class="btn btn-primary btn-lg" href="{% url 'custos_admin_portal_auth:create_account' %}" role="button">Register</a></p>
- {% endif %}
</div>
{% if user.is_authenticated %}
<div class="row">