domain_name on user and project creation
Change-Id: I1b879156ffe671f00eeb4b0ec93f64ed8639d492
Signed-off-by: lombardofr <lombardo@everyup.it>
diff --git a/projecthandler/template/project/modal/project_new.html b/projecthandler/template/project/modal/project_new.html
index c346ec8..df652d7 100644
--- a/projecthandler/template/project/modal/project_new.html
+++ b/projecthandler/template/project/modal/project_new.html
@@ -1,3 +1,18 @@
+<!--
+Copyright 2019 EveryUP srl
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+-->
<div class="modal" id="modal_new_project" xmlns="http://www.w3.org/1999/html">
<div class="modal-dialog">
<div class="modal-content">
@@ -10,9 +25,17 @@
{% csrf_token %}
<div class="modal-body">
- <div id="div_chose_id">
- <label>Project Name: </label>
- <input name="name" id="name" size="40" maxlength="20"/>
+ <div class="form-group" id="div_chose_id" >
+ <label for="name" class="col-sm-3 control-label">Project Name* : </label>
+ <input name="name" id="name" size="40" maxlength="20"required/>
+ </div>
+
+ <div class="form-group">
+ <label for="domain_name" class="col-sm-3 control-label">Domain Name: </label>
+ <div class="col-sm-6">
+ <select required id="domain_name" class="js-example-basic form-control" name="domain_name">
+ </select>
+ </div>
</div>
</div>
diff --git a/projecthandler/template/project/projectlist.html b/projecthandler/template/project/projectlist.html
index f1aa4f1..5423aa1 100644
--- a/projecthandler/template/project/projectlist.html
+++ b/projecthandler/template/project/projectlist.html
@@ -20,8 +20,9 @@
{% load staticfiles %}
{% block head_block %}
- {{ block.super }}
- <link rel="stylesheet" href="/static/node_modules/datatables.net-bs/css/dataTables.bootstrap.min.css">
+ {{ block.super }}
+ <link rel="stylesheet" href="/static/node_modules/select2/dist/css/select2.min.css">
+ <link rel="stylesheet" href="/static/node_modules/datatables.net-bs/css/dataTables.bootstrap.min.css">
{% endblock %}
{% block title_header_big %}
@@ -54,7 +55,7 @@
<div class="box-tools">
<button type="button" class="btn btn-default" data-container="body"
data-toggle="tooltip" data-placement="top" title="New Project"
- onclick="javascript:showModalNewProject()">
+ onclick="javascript:showModalNewProject({'domains_list_url': '{% url "projects:domains_list" %}'})">
<i class="fa fa-plus"></i> New Project</button>
</div>
</div>
@@ -85,6 +86,7 @@
{{ block.super }}
<script src="/static/node_modules/datatables.net/js/jquery.dataTables.min.js"></script>
<script src="/static/node_modules/datatables.net-bs/js/dataTables.bootstrap.min.js"></script>
+ <script src="/static/node_modules/select2/dist/js/select2.js"></script>
<script>
var table;
@@ -157,7 +159,31 @@
});
</script>
<script>
- function showModalNewProject(){
+ function showModalNewProject(args){
+ select2_groups = $('#domain_name').select2({
+ placeholder: 'Select Domain',
+ width: '100%',
+ ajax: {
+ url: args.domains_list_url,
+ dataType: 'json',
+ processResults: function (data) {
+ domains_list = [];
+ if (data['domains']) {
+ for (d in data['domains']) {
+ var domain = data['domains'][d];
+ if( domain.endsWith(':ro') === false) {
+ domains_list.push({ id: domain, text: domain })
+ }
+
+ }
+ }
+
+ return {
+ results: domains_list
+ };
+ }
+ }
+ });
$('#modal_new_project').modal('show');
}
diff --git a/projecthandler/urls/project.py b/projecthandler/urls/project.py
index d017922..0a7c94a 100644
--- a/projecthandler/urls/project.py
+++ b/projecthandler/urls/project.py
@@ -20,6 +20,7 @@
urlpatterns = [
url(r'^$', views.open_project, name='open_project'),
url(r'^list/', views.user_projects, name='projects_list'),
+ url(r'^domains/', views.user_domains, name='domains_list'),
url(r'^new/', views.create_new_project, name='new_project'),
url(r'^descriptors/', include('descriptorhandler.urls', namespace='descriptors'), name='descriptor_base'),
url(r'^(?P<project_id>[-\w]+)/delete$', views.delete_project, name='delete_project'),
diff --git a/projecthandler/views.py b/projecthandler/views.py
index fad83bd..c46d856 100644
--- a/projecthandler/views.py
+++ b/projecthandler/views.py
@@ -43,7 +43,7 @@
user = osmutils.get_user(request)
client = Client()
new_project_dict = request.POST.dict()
- keys = ["name"]
+ keys = ["name", "domain_name"]
project_data = dict(filter(lambda i: i[0] in keys and len(i[1]) > 0, new_project_dict.items()))
result = client.project_create(user.get_token(), project_data)
if isinstance(result, dict) and 'error' in result and result['error']:
@@ -62,6 +62,25 @@
'projects': result['data'] if result and result['error'] is False else [],
},'projectlist.html')
+
+@login_required
+def user_domains(request):
+ user = osmutils.get_user(request)
+ client = Client()
+ result = client.get_domains(user.get_token())
+ if result and result['error'] is False:
+ domains = []
+ if result['data'] and result['data']['user_domain_name']:
+ domain_names = result['data']['user_domain_name'].split(',')
+ domains.extend(x for x in domain_names if x not in domains)
+ if result['data'] and result['data']['project_domain_name']:
+ domain_names = result['data']['project_domain_name'].split(',')
+ domains.extend(x for x in domain_names if x not in domains)
+
+ return __response_handler(request, {'domains': domains})
+ return __response_handler(request, {'domains': []})
+
+
@login_required
def open_project(request):
user = osmutils.get_user(request)