bug fix on NSD composer; enabling button compose new descriptor

Change-Id: I2b50eee0e2a2c20823abf51e2fb0d40c3e1e13ff
Signed-off-by: lombardofr <lombardo@everyup.it>
diff --git a/descriptorhandler/template/descriptorlist.html b/descriptorhandler/template/descriptorlist.html
index 5285125..bbe8f21 100644
--- a/descriptorhandler/template/descriptorlist.html
+++ b/descriptorhandler/template/descriptorlist.html
@@ -7,12 +7,10 @@
             <h3 class="box-title">
             </h3>
             <div class="box-tools">
-                {% comment %}<div class="btn-group">
-                    <button type="button" class="btn btn-default" data-container="body"
-                    data-toggle="tooltip" data-placement="top" title="Composer"
-                    onclick="">
-                <i class="fa fa-paint-brush"></i> <span> Composer</span></button>
-                </div>{% endcomment %}
+                <div class="btn-group">
+                    <button type="button" class="btn btn-default" data-toggle="modal" data-target="#modal_new_package_name_chooser" >
+                <i class="fa fa-paint-brush"></i> <span> Compose a new {{ descriptor_type|upper }}</span></button>
+                </div>
             </div>
         </div>
         <div class="box-body">
diff --git a/descriptorhandler/template/modal/choose_node_id.html b/descriptorhandler/template/modal/choose_node_id.html
deleted file mode 100644
index 91c4d20..0000000
--- a/descriptorhandler/template/modal/choose_node_id.html
+++ /dev/null
@@ -1 +0,0 @@
-{% extends "descriptor/modal/choose_node_id.html" %}
\ No newline at end of file
diff --git a/descriptorhandler/template/modal/choose_package_name.html b/descriptorhandler/template/modal/choose_package_name.html
new file mode 100644
index 0000000..2211026
--- /dev/null
+++ b/descriptorhandler/template/modal/choose_package_name.html
@@ -0,0 +1,35 @@
+<div class="modal" id="modal_new_package_name_chooser">
+    <div class="modal-dialog">
+        <div class="modal-content">
+            <div class="modal-header">
+                <button type="button" class="close" data-dismiss="modal" aria-label="Close">
+                    <span aria-hidden="true">×</span></button>
+                <h4 class="modal-title">Create new Package</h4>
+            </div>
+            <form id="formCreatePackage" action='{% url "projects:descriptors:create_package_empty" descriptor_type=descriptor_type %}'
+                  class="form-horizontal"
+                  method="post" enctype="multipart/form-data">
+                {% csrf_token %}
+                <div class="modal-body" id="modal_new_package_name_chooser">
+                    <div class="form-group">
+                        <label for="package_name" class="col-sm-3 control-label">Package name *</label>
+                        <div class="col-sm-6">
+                            <input class="form-control" id="package_name" name="name"
+                                   placeholder="name" required>
+                        </div>
+                    </div>
+                </div>
+                <div class="modal-footer">
+                    <button type="button" class="btn btn-default pull-left" data-dismiss="modal">Cancel</button>
+                    <button class="btn btn-primary"
+                            data-loading-text="<i class='fa fa-circle-o-notch fa-spin'></i> Creating..."
+                            id="create_new_user">Create
+                    </button>
+
+                </div>
+            </form>
+        </div>
+        <!-- /.modal-content -->
+    </div>
+    <!-- /.modal-dialog -->
+</div>
\ No newline at end of file
diff --git a/descriptorhandler/urls.py b/descriptorhandler/urls.py
index b0972d9..481211a 100644
--- a/descriptorhandler/urls.py
+++ b/descriptorhandler/urls.py
@@ -19,9 +19,9 @@
 
 urlpatterns = [
     url(r'(?P<descriptor_type>\w+)/list$', views.show_descriptors, name='list_descriptors'),
+    url(r'(?P<descriptor_type>\w+)/create', views.create_package_empty, name='create_package_empty'),
     url(r'(?P<descriptor_type>\w+)/(?P<descriptor_id>[-\w]+)(/$)', views.edit_descriptor, name='edit_descriptor'),
-    url(r'(?P<descriptor_type>\w+)/(?P<descriptor_id>[-\w]+)/delete$', views.delete_descriptor,
-        name='delete_descriptor'),
+    url(r'(?P<descriptor_type>\w+)/(?P<descriptor_id>[-\w]+)/delete$', views.delete_descriptor, name='delete_descriptor'),
     url(r'(?P<descriptor_type>\w+)/(?P<descriptor_id>[-\w]+)/clone', views.clone_descriptor, name='clone_descriptor'),
     url(r'(?P<descriptor_type>\w+)/(?P<descriptor_id>[-\w]+)/addElement/(?P<element_type>\w+)', views.addElement,
         name='addElement'),
diff --git a/descriptorhandler/views.py b/descriptorhandler/views.py
index 064b5a5..fda9aff 100644
--- a/descriptorhandler/views.py
+++ b/descriptorhandler/views.py
@@ -90,12 +90,35 @@
             'message': 'An error occurred while processing your request.' if result and result['error'] is True else "Record deleted successfully"}
     }, url)
 
+@login_required
+def create_package_empty(request, descriptor_type=None):
+    user = osmutils.get_user(request)
+    pkg_name = request.POST.get('name', '')
+    try:
+        client = Client()
+        if descriptor_type == 'nsd':
+            result = client.nsd_create_pkg_base(user.get_token(), pkg_name)
+        elif descriptor_type == 'vnfd':
+            result = client.vnfd_create_pkg_base(user.get_token(), pkg_name)
+        else:
+            log.debug('Update descriptor: Unknown data type')
+            result = {'error': True, 'data': 'Update descriptor: Unknown data type'}
+    except Exception as e:
+        log.exception(e)
+        result = {'error': True, 'data': str(e)}
+
+    if result['error'] == True:
+        return __response_handler(request, result['data'], url=None,
+                                  status=result['data']['status'] if 'status' in result['data'] else 500)
+    else:
+        result['data']['type'] = descriptor_type
+        return __response_handler(request, result, url=None, status=200)
+
 
 @login_required
 def clone_descriptor(request, descriptor_type=None, descriptor_id=None):
     user = osmutils.get_user(request)
     project_id = user.project_id
-
     try:
         client = Client()
         if descriptor_type == 'nsd':
@@ -111,7 +134,6 @@
     if result['error'] == True:
         return __response_handler(request, result['data'], url=None,
                                   status=result['data']['status'] if 'status' in result['data'] else 500)
-
     else:
         return __response_handler(request, {}, url=None, status=200)
 
@@ -319,7 +341,6 @@
                 result = client.nsd_get(user.get_token(), descriptor_id)
             elif descriptor_type == 'vnfd':
                 result = client.vnfd_get(user.get_token(), descriptor_id)
-
         except Exception as e:
             log.exception(e)
             result = {'error': True, 'data': str(e)}