several changes on auth flow

Change-Id: I49ddbb074a9bc018b9e5becafbe5956fa5860333
Signed-off-by: lombardofr <lombardo@everyup.it>
diff --git a/projecthandler/middleware.py b/projecthandler/middleware.py
new file mode 100644
index 0000000..4880ebe
--- /dev/null
+++ b/projecthandler/middleware.py
@@ -0,0 +1,6 @@
+
+class OsmProjectMiddleware(object):
+    def process_view(self, request, view_func, view_args, view_kwargs):
+        print "OsmProjectMiddleware", view_func, view_args, view_kwargs
+
+        return None
\ No newline at end of file
diff --git a/projecthandler/template/project/descriptor/descriptor_view_base.html b/projecthandler/template/project/descriptor/descriptor_view_base.html
index 3635d66..e97649d 100644
--- a/projecthandler/template/project/descriptor/descriptor_view_base.html
+++ b/projecthandler/template/project/descriptor/descriptor_view_base.html
@@ -125,7 +125,7 @@
 
 
         function goToGraph() {
-            window.location.href = '/projects/{{project_id}}/graph?type={{descriptor_type}}&id={{descriptor_id}}'
+            window.location.href = '/projects/graph?type={{descriptor_type}}&id={{descriptor_id}}'
         }
     </script>
 {% endblock %}
diff --git a/projecthandler/template/project/osm/descriptor/descriptor_new.html b/projecthandler/template/project/osm/descriptor/descriptor_new.html
index 799026b..7711b57 100644
--- a/projecthandler/template/project/osm/descriptor/descriptor_new.html
+++ b/projecthandler/template/project/osm/descriptor/descriptor_new.html
@@ -14,8 +14,8 @@
 
 {% block breadcrumb_body %}
 {{ block.super }}
-<li><a href="{% url 'projects:open_project' project_id=project_id %}">{{project_id}}</a></li>
-<li><a href="{% url 'projects:open_project' project_id=project_id %}descriptors/{{descriptor_type}}">{{ descriptor_type }}  Descriptors</a></li>
+<li><a href="{% url 'projects:open_project'  %}">{{project_id}}</a></li>
+<li><a href="{% url 'projects:open_project'  %}descriptors/{{descriptor_type}}">{{ descriptor_type }}  Descriptors</a></li>
 <li>Create Descriptor</li>
 {% endblock %}
 
@@ -50,9 +50,9 @@
 {{ block.super }}
 
 <script>
-    var descr_list_url = '{% url "projects:list_descriptors"  project_id=project_id descriptor_type=descriptor_type%}';
+    var descr_list_url = '{% url "projects:list_descriptors"   descriptor_type=descriptor_type%}';
     var csrf_token = '{{csrf_token}}';
-    var new_desc_url ="{% url 'projects:new_descriptor' project_id=project_id descriptor_type=descriptor_type %}"
+    var new_desc_url ="{% url 'projects:new_descriptor'  descriptor_type=descriptor_type %}"
 
     function cancel(id) {
         window.location.href = descr_list_url
diff --git a/projecthandler/template/project/osm/descriptor/descriptor_view.html b/projecthandler/template/project/osm/descriptor/descriptor_view.html
index fe2d78c..3272f44 100644
--- a/projecthandler/template/project/osm/descriptor/descriptor_view.html
+++ b/projecthandler/template/project/osm/descriptor/descriptor_view.html
@@ -15,8 +15,8 @@
 
 {% block breadcrumb_body %}
 {{ block.super }}
-<li><a href="{% url 'projects:open_project' project_id=project_id %}">{{project_id}}</a></li>
-<li><a href="{% url 'projects:open_project' project_id=project_id %}descriptors/{{descriptor_type}}">{{ descriptor_type }} Descriptors</a></li>
+<li><a href="{% url 'projects:open_project' %}">{{project_id}}</a></li>
+<li><a href="{% url 'projects:open_project' %}descriptors/{{descriptor_type}}">{{ descriptor_type }} Descriptors</a></li>
 <li><a>{{descriptor_id}}</a></li>
 {% endblock %}
 
@@ -97,7 +97,7 @@
                 break;
         }
         $.ajax({
-            url: "/projects/{{project_id}}/descriptors/{{descriptor_type}}/{{descriptor_id}}/",
+            url: "/projects/descriptors/{{descriptor_type}}/{{descriptor_id}}/",
             type: 'POST',
             dataType: 'json',
             data: {
diff --git a/projecthandler/template/project/osm/descriptor/descriptorlist.html b/projecthandler/template/project/osm/descriptor/descriptorlist.html
index 002cd57..c995844 100644
--- a/projecthandler/template/project/osm/descriptor/descriptorlist.html
+++ b/projecthandler/template/project/osm/descriptor/descriptorlist.html
@@ -7,10 +7,13 @@
             <h3 class="box-title">
             </h3>
             <div class="box-tools">
-
-                <a href="{% url 'projects:new_descriptor' project_id=project_id descriptor_type=descriptor_type %}"
+                <div class="btn-group">
+                    <!--
+                <a href="{% url 'projects:open_composer'%}"
                    class="btn btn-block btn-primary btn-sm"><i
-                        class="fa fa-upload"></i><span> Onboard {{ descriptor_type|upper }}</span></a>
+                        class="fa fa-paint-brush" disabled></i><span> Composer</span></a>
+                        -->
+                </div>
             </div>
         </div>
         <div class="box-body">
@@ -39,28 +42,28 @@
                                 {% if descriptor_type == "nsd" %}
                                     <button type="button" class="btn btn-default" data-container="body"
                                             data-toggle="tooltip" data-placement="top" title="Instantiate NS"
-                                            onclick="javascript:openModalCreateNS({ 'project_id':'{{ project_id }}', 'descriptor_type': '{{ descriptor_type }}', 'descriptor_name':'{{ k|get:"name" }}', 'descriptor_id':'{{ k|get:"_id" }}','vim_list_url': '{% url "projects:vims:list" project_id=project_id %}',  'nsd_list_url': '{% url "projects:list_descriptors" project_id=project_id descriptor_type=descriptor_type %}' })">
+                                            onclick="javascript:openModalCreateNS({ 'project_id':'{{ project_id }}', 'descriptor_type': '{{ descriptor_type }}', 'descriptor_name':'{{ k|get:"name" }}', 'descriptor_id':'{{ k|get:"_id" }}','vim_list_url': '{% url "projects:vims:list"  %}',  'nsd_list_url': '{% url "projects:list_descriptors"  descriptor_type=descriptor_type %}' })">
                                         <i class="fa fa-paper-plane"></i></button>
                                 {% endif %}
                                 <button type="button" class="btn btn-default" data-container="body"
                                         data-toggle="tooltip" data-placement="top" title="Edit"
-                                        onclick="javascript:openDescriptorView('{{ project_id }}', '{{ descriptor_type }}', '{{ k|get:"_id" }}')">
+                                        onclick="javascript:openDescriptorView('{{ descriptor_type }}', '{{ k|get:"_id" }}')">
                                     <i class="fa fa-edit"></i></button>
                                 <button type="button" class="btn btn-default" data-container="body"
                                         data-toggle="tooltip" data-placement="top" title="Show content"
-                                        onclick="javascript:openPackageContentList('{{ project_id }}', '{{ descriptor_type }}', '{{ k|get:"_id" }}')">
+                                        onclick="javascript:openPackageContentList('{{ descriptor_type }}', '{{ k|get:"_id" }}')">
                                     <i class="fa fa-folder-open"></i></button>
                                 <button type="button" class="btn btn-default" data-container="body"
                                         data-toggle="tooltip" data-placement="top" title="Show Graph"
-                                        onclick="location.href='/projects/{{ project_id }}/graph?type={{ descriptor_type }}&id={{ k|get:"_id" }}'"
+                                        onclick="location.href='/projects/graph?type={{ descriptor_type }}&id={{ k|get:"_id" }}'"
                                         disabled><i class="fa fa-sitemap fa-fw"></i></button>
                                 <button type="button" class="btn btn-default" data-container="body"
                                         data-toggle="tooltip" data-placement="top" title="Download package"
-                                        onclick="location.href='{% url 'projects:custom_action' project_id=project_id descriptor_type=descriptor_type descriptor_id=k|get:'_id' action_name='download_pkg' %}'">
+                                        onclick="location.href='{% url 'projects:custom_action'  descriptor_type=descriptor_type descriptor_id=k|get:'_id' action_name='download_pkg' %}'">
                                     <i class="fa fa-download fa-fw"></i></button>
                                 <button type="button" class="btn btn-default" data-container="body"
                                         data-toggle="tooltip" data-placement="top" title="Delete"
-                                        onclick="javascript:deletePackage('{{ project_id }}', '{{ descriptor_type }}', '{{ k|get:"_id" }}')">
+                                        onclick="javascript:deletePackage( '{{ descriptor_type }}', '{{ k|get:"_id" }}')">
                                     <i class="far fa-trash-alt"></i></button>
                             </div>
 
diff --git a/projecthandler/template/project/osm/osm_project_descriptors.html b/projecthandler/template/project/osm/osm_project_descriptors.html
index 99b6111..10df788 100644
--- a/projecthandler/template/project/osm/osm_project_descriptors.html
+++ b/projecthandler/template/project/osm/osm_project_descriptors.html
@@ -22,7 +22,7 @@
 
 {% block breadcrumb_body %}
   	{{ block.super }}
-    <li><a href="{% url 'projects:open_project' project_id=project_id %}">{{project_id}}</a></li>
+    <li><a href="{% url 'projects:open_project' %}">{{project_id}}</a></li>
     <li><a> {% if descriptor_type  %}
      {{ descriptor_type }}
   {% else%}
@@ -47,8 +47,8 @@
   	{{ block.super }}
     <script>
     var csrf_token = '{{csrf_token}}';
-    var descr_list_url = '{% url "projects:list_descriptors"  project_id=project_id descriptor_type=descriptor_type%}';
-    var new_desc_url ="{% url 'projects:new_descriptor' project_id=project_id descriptor_type=descriptor_type %}"
+    var descr_list_url = '{% url "projects:list_descriptors"   descriptor_type=descriptor_type%}';
+    var new_desc_url ="{% url 'projects:new_descriptor'  descriptor_type=descriptor_type %}"
     </script>
     <script src="/static/bower_components/select2/dist/js/select2.js"></script>
     <script src="/static/src/instancehandler/instance_create.js"></script>
diff --git a/projecthandler/template/project/osm/osm_project_details.html b/projecthandler/template/project/osm/osm_project_details.html
index ed3e0fa..b0a1203 100644
--- a/projecthandler/template/project/osm/osm_project_details.html
+++ b/projecthandler/template/project/osm/osm_project_details.html
@@ -44,7 +44,7 @@
                     <div class="inner"><h3>{{ project_overview.nsd }}</h3>
                         <p>NS packages</p></div>
                     <div class="icon"><i class="fa fa-archive"></i></div>
-                    <a href='{% url "projects:list_descriptors"  project_id=project_id descriptor_type="nsd" %}' class="small-box-footer">Open list <i
+                    <a href='{% url "projects:list_descriptors"   descriptor_type="nsd" %}' class="small-box-footer">Open list <i
                             class="fa fa-arrow-circle-right"></i></a></div>
             </div>
             <div class="col-md-6 ">
@@ -52,7 +52,7 @@
                     <div class="inner"><h3>{{ project_overview.vnfd }}</h3>
                         <p>VNF packages</p></div>
                     <div class="icon"><i class="fa fa-archive"></i></div>
-                    <a href='{% url "projects:list_descriptors"  project_id=project_id descriptor_type="vnfd" %}' class="small-box-footer">Open list <i
+                    <a href='{% url "projects:list_descriptors"   descriptor_type="vnfd" %}' class="small-box-footer">Open list <i
                             class="fa fa-arrow-circle-right"></i></a></div>
             </div>
         </div>
@@ -62,7 +62,7 @@
                     <div class="inner"><h3>{{ project_overview.ns }}</h3>
                         <p>NS Instances</p></div>
                     <div class="icon"><i class="fa fa-sitemap fa-fw"></i></div>
-                    <a href='{% url "projects:instances:list" project_id=project_id type="ns"  %}' class="small-box-footer">Open list <i
+                    <a href='{% url "projects:instances:list"  type="ns"  %}' class="small-box-footer">Open list <i
                             class="fa fa-arrow-circle-right"></i></a></div>
             </div>
 
@@ -71,7 +71,7 @@
                     <div class="inner"><h3>{{ project_overview.vnf }}</h3>
                         <p>VNF Instances</p></div>
                     <div class="icon"><i class="far fa-hdd fa-fw"></i></div>
-                    <a href='{% url "projects:instances:list" project_id=project_id type="vnf"  %}' class="small-box-footer">Open list <i
+                    <a href='{% url "projects:instances:list"  type="vnf"  %}' class="small-box-footer">Open list <i
                             class="fa fa-arrow-circle-right"></i></a></div>
             </div>
 
diff --git a/projecthandler/template/project/osm/osm_project_left_sidebar.html b/projecthandler/template/project/osm/osm_project_left_sidebar.html
index 6399b11..b07c432 100644
--- a/projecthandler/template/project/osm/osm_project_left_sidebar.html
+++ b/projecthandler/template/project/osm/osm_project_left_sidebar.html
@@ -8,14 +8,14 @@
             <li {% if request.get_full_path == home_url %} class="active" {% endif %} ><a href='{% url "home" %}'><i
                     class="fa fa-home fa-fw"></i> <span>Home</span></a></li>
             <li class="header">PROJECT</li>
-            {% url "projects:open_project"  project_id=project_id as  project_url %}
+            {% url "projects:open_project"  as  project_url %}
             <li {% if request.get_full_path == project_url %} class="active" {% endif %} >
-                <a href='{% url "projects:open_project"  project_id=project_id %}'>
+                <a href='{% url "projects:open_project" %}'>
                     <i class="fa fa-file-text fa-fw"></i> <span>Overview</span>
                 </a>
             </li>
-            {% url "projects:list_descriptors"  project_id=project_id descriptor_type="nsd" as  nsd_list_url %}
-            {% url "projects:list_descriptors"  project_id=project_id descriptor_type='vnfd' as  vnfd_list_url %}
+            {% url "projects:list_descriptors"   descriptor_type="nsd" as  nsd_list_url %}
+            {% url "projects:list_descriptors"   descriptor_type='vnfd' as  vnfd_list_url %}
             <li {% if request.get_full_path == nsd_list_url or  request.get_full_path == vnfd_list_url %}
                 class="active treeview menu-open" {% else %} class="treeview  menu-open" {% endif %} >
                 <a href="#">
@@ -38,8 +38,8 @@
 
                 </ul>
             </li>
-            {% url "projects:instances:list" project_id=project_id type='ns' as  instance_ns_list_url %}
-            {% url "projects:instances:list" project_id=project_id type='vnf' as  instance_vnf_list_url %}
+            {% url "projects:instances:list"  type='ns' as  instance_ns_list_url %}
+            {% url "projects:instances:list"  type='vnf' as  instance_vnf_list_url %}
             <li {% if request.get_full_path == instance_ns_list_url or  request.get_full_path == instance_vnf_list_url %}
                 class="active treeview menu-open" {% else %} class="treeview  menu-open" {% endif %} >
                 <a href="#">
@@ -49,32 +49,32 @@
                     </span>
                 </a>
                 <ul class="treeview-menu" style="display: block;">
-                    {% url "projects:instances:list" project_id=project_id type='ns' as  instance_ns_list_url %}
+                    {% url "projects:instances:list"  type='ns' as  instance_ns_list_url %}
                     <li {% if request.get_full_path == instance_ns_list_url %} class="active" {% endif %} >
-                        <a href='{% url "projects:instances:list" project_id=project_id  type="ns" %}'>
+                        <a href='{% url "projects:instances:list"   type="ns" %}'>
                             <i class="fa fa-sitemap fa-fw"></i> <span>NS Instances</span>
                         </a>
 
                     </li>
-                    {% url "projects:instances:list" project_id=project_id type='vnf' as  instance_vnf_list_url %}
+                    {% url "projects:instances:list"  type='vnf' as  instance_vnf_list_url %}
                     <li {% if request.get_full_path == instance_vnf_list_url %} class="active" {% endif %} >
-                        <a href='{% url "projects:instances:list" project_id=project_id  type="vnf" %}'>
+                        <a href='{% url "projects:instances:list"   type="vnf" %}'>
                             <i class="far fa-hdd fa-fw"></i> <span>VNF Instances</span>
                         </a>
                     </li>
                 </ul>
             </li>
 
-            {% url "projects:sdns:list"  project_id=project_id as sdn_list_url %}
+            {% url "projects:sdns:list"   as sdn_list_url %}
             <li {% if request.get_full_path == sdn_list_url %} class="active" {% endif %}>
-                <a href='{% url "projects:sdns:list"  project_id=project_id %}'>
+                <a href='{% url "projects:sdns:list"   %}'>
                     <i class="fas fa-globe fa-fw"></i> <span>SDN Controllers</span>
                 </a>
             </li>
 
-            {% url "projects:vims:list"  project_id=project_id as  vim_list_url %}
+            {% url "projects:vims:list"   as  vim_list_url %}
             <li {% if request.get_full_path == vim_list_url %} class="active" {% endif %}>
-                <a href='{% url "projects:vims:list"  project_id=project_id %}'>
+                <a href='{% url "projects:vims:list"   %}'>
                     <i class="fa fa-server fa-fw"></i> <span>VIM Accounts</span>
                 </a>
             </li>
diff --git a/projecthandler/template/project/project_delete.html b/projecthandler/template/project/project_delete.html
index 432e1ff..4ae063e 100644
--- a/projecthandler/template/project/project_delete.html
+++ b/projecthandler/template/project/project_delete.html
@@ -14,7 +14,7 @@
 {% block breadcrumb_body %}
   	{{ block.super }}
     {% if project_id  %}
-    <li><a href="{% url 'projects:open_project' project_id=project_id %}">{{project_overview_data.name}}</a></li>
+    <li><a href="{% url 'projects:open_project' %}">{{project_overview_data.name}}</a></li>
     <li>Delete Project</li>
     {% endif %}
 {% endblock %}
diff --git a/projecthandler/template/project/project_details.html b/projecthandler/template/project/project_details.html
index e944e0d..aac2983 100644
--- a/projecthandler/template/project/project_details.html
+++ b/projecthandler/template/project/project_details.html
@@ -25,7 +25,7 @@
 {% block breadcrumb_body %}
   	{{ block.super }}
     <li><a href="{% url 'projects:projects_list' %}">Projects</a></li>
-    <li><a href="{% url 'projects:open_project' project_id=project_id %}">{{project_overview.name}}</a></li>
+    <li><a href="{% url 'projects:open_project' %}">{{project_overview.name}}</a></li>
 {% endblock %}
 
 {% block content_body %}
diff --git a/projecthandler/template/project/project_graph_base.html b/projecthandler/template/project/project_graph_base.html
index 7d344da..282afb4 100644
--- a/projecthandler/template/project/project_graph_base.html
+++ b/projecthandler/template/project/project_graph_base.html
@@ -1,58 +1,81 @@
 {% extends "base.html" %}
-
+{% load get %}
 {% load staticfiles %}
 
+
+
 {% block head_block %}
-  	{{ block.super }}
-    	<link rel="stylesheet" href="{% static "topology3D/css/graph_editor_d3js.css" %}">
-    	<link rel="stylesheet" href="{% static "topology3D/css/d3-context-menu.css" %}">
+    {{ block.super }}
+    <link rel="stylesheet" href="/static/bower_components/select2/dist/css/select2.min.css">
+    <link rel="stylesheet" href="/static/css/lwuitable.css">
+
+    <!-- Topology3D core CSS -->
+    <link rel="stylesheet" href="/static/topology3D/css/graph_editor_d3js.css">
+    <link rel="stylesheet" href="/static/topology3D/css/d3-context-menu.css">
+
 {% endblock %}
 {% block title_header_big %}
     {{ block.super }}
 {% endblock %}
 {% block left_sidebar %}
-
+    {% include 'osm/osm_project_left_sidebar.html' %}
 {% endblock %}
 
 
 {% block breadcrumb_body %}
-  	{{ block.super }}
-    <li><a href="{% url 'projects:open_project' project_id=project_id %}">{{project_overview_data.name}}</a></li>
+    {{ block.super }}
+    <li><a href="#"><i class="fa fa-sitemap"></i> Composer</a></li>
 {% endblock %}
 
 {% block content_body %}
-  	{{ block.super }}
- {% csrf_token %}
-<div class="row" >
-    <div class="col-md-12">
-        {% block topology_toolbar %}
+    {{ block.super }}
+    {% csrf_token %}
+    {% include 'osm/descriptor/modal/create_link_chooser.html' %}
+{% include 'osm/descriptor/modal/choose_node_id.html' %}
+{% include 'osm/modal/modal_keyboard_info.html' %}
+    <div class="row" >
+        <div class="col-md-12">
+            {% block topology_toolbar %}
+                {{ block.super }}
+                 {% include 'topology_toolbar.html' %}
+            {% endblock %}
+            <div id="graph_ed_container" style="width: 100%; height:100%; background-color: white; border: 2px #3c8dbc solid;">
 
-
-        {% endblock %}
-        <div id="graph_ed_container" style="width: 100%; height:100%; background-color: white; border: 2px #3c8dbc solid;">
-
+            </div>
         </div>
     </div>
-</div>
+
 
 
 {% endblock %}
 
 {% block resource_block %}
-  	{{ block.super }}
+    {{ block.super }}
+    <script>
+        var topology_data = {};//{{topology_data|safe }};
+    </script>
+    <!-- Utility JS -->
+    <script src="/static/bower_components/select2/dist/js/select2.js"></script>
 
     <!-- d3.js -->
-    <script src="{% static "bower_components/d3/d3.min.js" %}" charset="utf-8"></script>
+    <script src="https://d3js.org/d3.v4.js"></script>
+<!--
+    <script src="/static/bower_components/d3/d3.js"></script>-->
 
     <!-- topology3D -->
-    <script src="{% static "topology3D/js/d3-context-menu.js" %}"></script>
-    <script src="{% static "topology3D/js/event.js" %}"></script>
-    <script src="{% static "topology3D/js/graph_editor.js" %}"></script>
-    <script src="{% static "topology3D/js/graph_request.js" %}"></script>
+    <script src="/static/topology3D/js/d3-context-menu.js"></script>
+    <script src="/static/topology3D/js/event.js"></script>
+    <script src="/static/topology3D/js/graph_editor.js"></script>
+    <script src="/static/topology3D/js/graph_request.js"></script>
+    <script src="/static/topology3D/js/model_graph_editor.js"></script>
+
+
+    <script src="/static/src/osm_gui_properties.js"></script>
+    <script src="/static/src/projecthandler/composer.js"></script>
+    <script src="/static/src/projecthandler/osm/controller.js"></script>
 
 {% endblock %}
 
-
-{% block header %}
+{% block footer %}
+    {% include "footer.html" %}
 {% endblock %}
-
diff --git a/projecthandler/template/project/projectlist.html b/projecthandler/template/project/projectlist.html
index 6339679..6e3793d 100644
--- a/projecthandler/template/project/projectlist.html
+++ b/projecthandler/template/project/projectlist.html
@@ -57,13 +57,13 @@
 					<tr>
 
 						<td>
-							<a href="javascript:openProject('{{ p.name }}')" >{{ p.name }}</a>
+							<a href="/projects/switch/{{ p.name }}" >{{ p.name }}</a>
 						</td>
 
 						<td>{{ p|get_sub:"_admin,modified"|get_date}}</td>
                         <td>{{ p|get_sub:"_admin,created"|get_date}}</td>
 
-						<td><a href="javascript:deleteProject('{% url 'projects:delete_project'  project_id=p|get:'_id' %}')"> Delete</a></td>
+						<td><a href="javascript:deleteProject('{% url 'projects:delete_project' %}')"> Delete</a></td>
 
 					</tr>
 				{% endfor %}
diff --git a/projecthandler/template/project/repository/repo_base_left_sidebar.html b/projecthandler/template/project/repository/repo_base_left_sidebar.html
deleted file mode 100644
index 3367eeb..0000000
--- a/projecthandler/template/project/repository/repo_base_left_sidebar.html
+++ /dev/null
@@ -1,12 +0,0 @@
-{% extends "left_sidebar_base.html" %}
-
-{% block left_sidebar_base %}
-    <li class="header">REPOSITORY</li>
-    {% url "repos:repos_list" as  repo_list_url %}
-    <li {% if request.get_full_path == repo_list_url %} class="active" {% endif %}><a href='{% url "repos:repos_list" %}'><i class="fa fa-git fa-fw"></i><span>Ropository Registered</span></a></li>
-
-    {% block li_list %}
-
-
-    {% endblock %}
-{% endblock %}
diff --git a/projecthandler/template/project/repository/repo_create_modal.html b/projecthandler/template/project/repository/repo_create_modal.html
deleted file mode 100644
index 6df53b5..0000000
--- a/projecthandler/template/project/repository/repo_create_modal.html
+++ /dev/null
@@ -1,43 +0,0 @@
-<div class="modal" id="modal_new_repository" xmlns="http://www.w3.org/1999/html">
-    <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" id="modal_new_repo_title">New Repository</h4>
-            </div>
-            <div id="div_chose_id" class="modal-body">
-                <!-- form start -->
-            <form action='{% url "repos:new_repo" %}' class="form-horizontal" role="form" method="post" enctype="multipart/form-data">
-                {% csrf_token %}
-                    <div class="box-body">
-                        <div class="form-group">
-                            <label for="name" class="col-sm-2 control-label">Name</label>
-
-                            <div class="col-sm-10">
-                                <input type="text" class="form-control" id="name" placeholder="Name" name="name" required>
-                            </div>
-                        </div>
-                        <div class="form-group">
-                            <label for="base_url_repo" class="col-sm-2 control-label">Base Url</label>
-
-                                <div class="col-sm-10">
-                                    <input class="form-control required" id="base_url_repo"
-                                           name="base_url_repo" placeholder="Base Url" pattern="((git|ssh|http(s)?)|(git@[\w\.]+))(:(\/\/)?)([\w\.\/\-]*)">
-                                </div>
-                        </div>
-                    </div>
-                    <!-- /.box-body -->
-                    <div class="box-footer">
-                        <button type="button" class="btn btn-default pull-left" data-dismiss="modal">Cancel</button>
-                        <button type="submit" class="btn btn-info pull-right" id="save_new_repo">Register</button>
-                    </div>
-                    <!-- /.box-footer -->
-                </form>
-            </div>
-
-        </div>
-        <!-- /.modal-content -->
-    </div>
-    <!-- /.modal-dialog -->
-</div>
\ No newline at end of file
diff --git a/projecthandler/template/project/repository/repo_list.html b/projecthandler/template/project/repository/repo_list.html
deleted file mode 100644
index 1f0a8f3..0000000
--- a/projecthandler/template/project/repository/repo_list.html
+++ /dev/null
@@ -1,120 +0,0 @@
-{% extends "base.html" %}
-
-{% load staticfiles %}
-
-{% block head_block %}
-{{ block.super }}
-
-<style type="text/css">
-
-  input:required:invalid, input:focus:invalid {
-
-    background-position: right top;
-    background-repeat: no-repeat;
-  }
-  input:required:valid {
-
-    background-position: right top;
-    background-repeat: no-repeat;
-  }
-
-.form-control.select2-hidden-accessible {
-    top: 30px;
-}
-
-
-</style>
-{% endblock %}
-
-{% block title_header_big %}
-{{ block.super }}
-{% endblock %}
-
-{% block left_sidebar %}
-<!-- Left side column. contains the sidebar -->
-{% include "repository/repo_base_left_sidebar.html" %}
-{% endblock %}
-
-
-{% block breadcrumb_body %}
-{{ block.super }}
-
-{% endblock %}
-
-{% block content_body %}
-{{ block.super }}
-{% csrf_token %}
-    <div class="row">
-
-        <div class="col-md-12">
-
-            <div class="box">
-                <div class="box-header with-border">
-                    <h3 class="box-title">Registered Repository</h3>
-                    <div class="box-tools">
-                        <a href="#" class="btn btn-block btn-primary btn-sm" data-toggle="modal"
-                           data-target="#modal_new_repository"><i
-                                class="fa fa-plus"></i><span> New Repository</span></a>
-                    </div>
-                </div>
-                <div class="box-body">
-                    <table id="deployments_table" class="table table-bordered table-striped">
-                        <thead>
-                        <tr>
-
-                            <th>Name</th>
-                            <th>Url</th>
-                            <th>Last Update</th>
-                            <th>Actions</th>
-                        </tr>
-                        </thead>
-                        <tbody>
-                        {% for repo in repos %}
-                            <tr>
-
-                                <td>
-                                    {{ repo.name }}
-                                </td>
-                                <td>
-                                    {{ repo.base_url }}
-                                </td>
-                                <td>{{ repo.last_update }}</td>
-                                <td>
-                                    <div class="btn-group">
-                                        <button type="button" class="btn btn-default"><i class="fa fa-cog"
-                                                                                         aria-hidden="true"></i>
-                                        </button>
-                                        <button type="button" class="btn btn-default dropdown-toggle"
-                                                data-toggle="dropdown"
-                                                aria-expanded="false">
-                                            <span class="caret"></span>
-                                            <span class="sr-only">Toggle Dropdown</span>
-                                        </button>
-                                        <ul class="dropdown-menu" role="menu">
-                                            <li class='disabled'><a href='#'><i class="fa fa-edit fa-fw"></i>Edit</a>
-                                            </li>
-                                            <li><a href='{% url "repos:delete_repo" repo_id=repo.id %}'>
-                                                <i class="fa fa-trash fa-fw"></i>Delete</a></li>
-                                        </ul>
-                                    </div>
-                                </td>
-
-                            </tr>
-                        {% endfor %}
-                        </tbody>
-                    </table>
-                </div>
-            </div>
-        </div>
-
-    </div>
-{% include 'repository/repo_create_modal.html' %}
-
-{% endblock %}
-
-{% block resource_block %}
-{{ block.super }}
-
-
-
-{% endblock %}
\ No newline at end of file
diff --git a/projecthandler/urls/project.py b/projecthandler/urls/project.py
index 2054656..1e3b24e 100644
--- a/projecthandler/urls/project.py
+++ b/projecthandler/urls/project.py
@@ -18,24 +18,26 @@
 from projecthandler import views
 
 urlpatterns = [
+    url(r'^$', views.open_project, name='open_project'),
     url(r'^list/', views.user_projects, name='projects_list'),
     url(r'^new/', views.create_new_project, name='new_project'),
-    url(r'^(?P<project_id>\w+)/$', views.open_project, name='open_project'),
-    url(r'^(?P<project_id>\w+)/sdn/', include('sdnctrlhandler.urls', namespace='sdns'), name='sdns_base'),
-    url(r'^(?P<project_id>\w+)/vims/', include('vimhandler.urls', namespace='vims'), name='vims_base'),
-    url(r'^(?P<project_id>\w+)/instances/', include('instancehandler.urls', namespace='instances'), name='instances_base'),
-    url(r'^(?P<project_id>\w+)/delete$', views.delete_project, name='delete_project'),
-    url(r'^(?P<project_id>\w+)/descriptors/(?P<descriptor_type>\w+)/list$', views.show_descriptors, name='list_descriptors'),
-    url(r'^(?P<project_id>\w+)/descriptors/(?P<descriptor_type>\w+)/(?P<descriptor_id>[-\w]+)(/$)',
+    url(r'^delete$', views.delete_project, name='delete_project'),
+    url(r'^switch/(?P<project_id>\w+)', views.switch_project, name='switch_project'),
+    url(r'^descriptors/(?P<descriptor_type>\w+)/list$', views.show_descriptors, name='list_descriptors'),
+    url(r'^descriptors/(?P<descriptor_type>\w+)/(?P<descriptor_id>[-\w]+)(/$)',
         views.edit_descriptor, name='edit_descriptor'),
-    url(r'^(?P<project_id>\w+)/descriptors/(?P<descriptor_type>\w+)/(?P<descriptor_id>[-\w]+)/delete$',
+    url(r'^descriptors/(?P<descriptor_type>\w+)/(?P<descriptor_id>[-\w]+)/delete$',
         views.delete_descriptor,
         name='delete_descriptor'),
-    url(r'^(?P<project_id>\w+)/descriptors/(?P<descriptor_type>\w+)/(?P<descriptor_id>[-\w]+)/action/(?P<action_name>[-\w]+)',
+    url(r'^descriptors/(?P<descriptor_type>\w+)/(?P<descriptor_id>[-\w]+)/action/(?P<action_name>[-\w]+)',
         views.custom_action,
         name='custom_action'),
-    url(r'^(?P<project_id>\w+)/descriptors/(?P<descriptor_type>\w+)/new$', views.new_descriptor,
+    url(r'^descriptors/(?P<descriptor_type>\w+)/new$', views.new_descriptor,
         name='new_descriptor'),
-
+    url(r'^composer$', views.open_composer, name='open_composer'),
+    url(r'^availablenodes', views.get_available_nodes, name='get_available_nodes'),
+    url(r'^sdn/', include('sdnctrlhandler.urls', namespace='sdns'), name='sdns_base'),
+    url(r'^vims/', include('vimhandler.urls', namespace='vims'), name='vims_base'),
+    url(r'^instances/', include('instancehandler.urls', namespace='instances'), name='instances_base'),
 
 ]
\ No newline at end of file
diff --git a/projecthandler/views.py b/projecthandler/views.py
index 0d50e10..144aa5b 100644
--- a/projecthandler/views.py
+++ b/projecthandler/views.py
@@ -20,11 +20,12 @@
 import yaml
 from django.contrib.auth.decorators import login_required
 from django.http import HttpResponse, JsonResponse
-from django.middleware.csrf import get_token
 from django.shortcuts import render, redirect
+
+from authosm.exceptions import OSMAuthException
 from lib.util import Util
-from projecthandler.osm_model import OsmProject
 from lib.osm.osmclient.clientv2 import Client
+import authosm.utils as osmutils
 
 
 logging.basicConfig(level=logging.DEBUG)
@@ -39,11 +40,12 @@
 @login_required
 def create_new_project(request):
     if request.method == 'POST':
+        user = osmutils.get_user(request)
         client = Client()
         new_project_dict = request.POST.dict()
         keys = ["name"]
         project_data = dict(filter(lambda i: i[0] in keys and len(i[1]) > 0, new_project_dict.items()))
-        result = client.project_create(request.session['token'], project_data)
+        result = client.project_create(user.get_token(), project_data)
         if isinstance(result, dict) and 'error' in result and result['error']:
             print result
             return __response_handler(request, result['data'], url=None,
@@ -54,23 +56,208 @@
 
 @login_required
 def user_projects(request):
+    user = osmutils.get_user(request)
     client = Client()
-    result = client.project_list(request.session['token'])
+    result = client.project_list(user.get_token())
     return render(request, 'projectlist.html', {
         'projects': result['data'] if result and result['error'] is False else [],
     })
 
 
+def open_composer(request):
+    user = osmutils.get_user(request)
+    project_id = user.project_id
+    result = {'project_id': project_id,
+              'vertices': [
+                  {"info": {"type": "vnf", "property": {"custom_label": ""},
+                            "group": []}, "id": "vm"},
+                  {"info": {"type": "vnf", "property": {"custom_label": ""},
+                            "group": []}, "id": "vlan"},
+                  {"info": {"type": "vnf", "property": {"custom_label": ""},
+                            "group": []}, "id": "firewall"},
+                  {"info": {"type": "vnf", "property": {"custom_label": ""},
+                            "group": []}, "id": "ping"},
+
+                  {"info": {"type": "ns_vl", "property": {"custom_label": ""},
+                            "group": []}, "id": "vl1"},
+                  {"info": {"type": "ns_vl", "property": {"custom_label": ""},
+                            "group": []}, "id": "vl2"},
+                  {"info": {"type": "ns_vl", "property": {"custom_label": ""},
+                            "group": []}, "id": "vl3"},
+              ],
+              'edges': [
+                  {"source": "vm", "group": [], "target": "vl3", "view": "ns"},
+                  {"source": "vlan", "group": [], "target": "vl3", "view": "ns"},
+                  {"source": "vlan", "group": [], "target": "vl1", "view": "ns"},
+                  {"source": "firewall", "group": [], "target": "vl1", "view": "ns"},
+                  {"source": "firewall", "group": [], "target": "vl2", "view": "ns"},
+                  {"source": "ping", "group": [], "target": "vl2", "view": "ns"},
+              ],
+              'model': {
+                "layer": {
+
+                    "ns": {
+                        "nodes": {
+                            "vnf": {
+                                "addable": {
+                                    "callback": "addNode"
+                                },
+                                "removable": {
+                                    "callback": "removeNode"
+                                },
+                                "expands": "vnf"
+                            },
+                            "ns_vl": {
+                                "addable": {
+                                    "callback": "addNode"
+                                },
+                                "removable": {
+                                    "callback": "removeNode"
+                                }
+                            },
+
+                        },
+                        "allowed_edges": {
+                            "ns_vl": {
+                                "destination": {
+                                    "vnf": {
+                                        "callback": "addLink",
+                                        "direct_edge": False,
+                                        "removable": {
+                                            "callback": "removeLink"
+                                        }
+                                    }
+                                }
+                            },
+                            "vnf": {
+                                "destination": {
+                                    "ns_vl": {
+                                        "callback": "addLink",
+                                        "direct_edge": False,
+                                        "removable": {
+                                            "callback": "removeLink"
+                                        }
+                                    },
+
+                                }
+                            }
+
+                        }
+                    },
+                    "vnf": {
+                        "nodes": {
+                            "vdu": {
+                                "addable": {
+                                    "callback": "addNode"
+                                },
+                                "removable": {
+                                    "callback": "removeNode"
+                                }
+                            },
+                            "cp": {
+                                "addable": {
+                                    "callback": "addNode"
+                                },
+                                "removable": {
+                                    "callback": "removeNode"
+                                }
+                            },
+
+                        },
+                        "allowed_edges": {
+                            "vdu": {
+                                "destination": {
+                                    "cp": {
+                                        "callback": "addLink",
+                                        "direct_edge": False,
+                                        "removable": {
+                                            "callback": "removeLink"
+                                        }
+                                    }
+                                }
+                            },
+                            "cp": {
+                                "destination": {
+                                    "vdu": {
+                                        "callback": "addLink",
+                                        "direct_edge": False,
+                                        "removable": {
+                                            "callback": "removeLink"
+                                        }
+                                    }
+                                }
+                            }
+                        }
+                    },
+                    "name": "OSM",
+                    "version": 1,
+                    "nodes": {
+                        "vnf": {
+                            "label": "vnf"
+                        },
+                        "ns_vl": {
+                            "label": "vl"
+                        },
+                        "cp": {
+                            "label": "cp"
+                        },
+                        "vdu": {
+                            "label": "vdu"
+                        }
+                    },
+                    "description": "osm",
+                    "callback": {
+                        "addNode": {
+                            "file": "osm_controller.js",
+                            "class": "OsmController"
+                        },
+                        "removeNode": {
+                            "file": "osm_controller.js",
+                            "class": "OsmController"
+                        },
+                        "addLink": {
+                            "file": "osm_controller.js",
+                            "class": "OsmController"
+                        },
+                        "removeLink": {
+                            "file": "osm_controller.js",
+                            "class": "OsmController"
+                        }
+                    }
+
+                }
+            }}
+    return __response_handler(request, result, 'project_graph_base.html')
+
+
+def get_available_nodes(request):
+
+    params = request.GET.dict()
+    nodes = {
+        'ns': [{"types": [{"name": "Generic", "id": "vnf"},
+                          {"name": "ping", "id": "vnf"},
+                          {"name": "pong", "id": "vnf"},
+                          {"name": "hackfest1-vm", "id": "vnf"}], "category_name": "Vnf"},
+               {"types": [{"name": "VL", "id": "ns_vl"}], "category_name": "VirtualLink"}],
+        'vnf': [{"types": [{"name": "VDU", "id": "vdu"}], "category_name": "Vdu"},
+                {"types": [{"name": "CP", "id": "cp"}], "category_name": "CP"}]
+    }
+
+    return __response_handler(request, nodes[params['layer']])
+
+
 @login_required
-def open_project(request, project_id=None):
+def open_project(request):
+    user = osmutils.get_user(request)
+    project_id = user.project_id
     try:
-        user = request.user
+
         client = Client()
         ##TODO change with adhoc api call
-        nsd = client.nsd_list(request.session['token'])
-        vnfd = client.vnfd_list(request.session['token'])
-        ns = client.ns_list(request.session['token'])
-        vnf = client.vnf_list(request.session['token'])
+        nsd = client.nsd_list(user.get_token())
+        vnfd = client.vnfd_list(user.get_token())
+        ns = client.ns_list(user.get_token())
+        vnf = client.vnf_list(user.get_token())
         project_overview = {
             'owner': user.username,
             'name': project_id,
@@ -92,9 +279,11 @@
 
 
 @login_required
-def delete_project(request, project_id=None):
+def delete_project(request):
+    user = osmutils.get_user(request)
+    project_id = user.project_id
     client = Client()
-    result = client.project_delete(request.session['token'], project_id)
+    result = client.project_delete(user.get_token(), project_id)
     if isinstance(result, dict) and 'error' in result and result['error']:
         print result
         return __response_handler(request, result['data'], url=None,
@@ -104,14 +293,23 @@
 
 
 @login_required
-def show_descriptors(request, project_id=None, descriptor_type=None):
+def switch_project(request, project_id):
+    user = osmutils.get_user(request)
+    user.switch_project(project_id)
+    return redirect('projects:open_project')
+
+
+@login_required
+def show_descriptors(request, descriptor_type=None):
+    user = osmutils.get_user(request)
+    project_id = user.project_id
     client = Client()
     print request.GET.dict()
     try:
         if descriptor_type == 'nsd':
-            descriptors = client.nsd_list(request.session['token'])
+            descriptors = client.nsd_list(user.get_token())
         elif descriptor_type == 'vnfd':
-            descriptors = client.vnfd_list(request.session['token'])
+            descriptors = client.vnfd_list(user.get_token())
     except Exception as e:
         log.exception(e)
         descriptors = []
@@ -126,14 +324,15 @@
 
 
 @login_required
-def delete_descriptor(request, project_id=None, descriptor_type=None, descriptor_id=None):
-
+def delete_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':
-            result = client.nsd_delete(request.session['token'], descriptor_id)
+            result = client.nsd_delete(user.get_token(), descriptor_id)
         elif descriptor_type == 'vnfd':
-            result = client.vnfd_delete(request.session['token'], descriptor_id)
+            result = client.vnfd_delete(user.get_token(), descriptor_id)
     except Exception as e:
         log.exception(e)
         result = {'error': True, 'data': str(e)}
@@ -142,9 +341,9 @@
     descriptors = {}
     try:
         if descriptor_type == 'nsd':
-            descriptors = client.nsd_list(request.session['token'])
+            descriptors = client.nsd_list(user.get_token())
         elif descriptor_type == 'vnfd':
-            descriptors = client.vnfd_list(request.session['token'])
+            descriptors = client.vnfd_list(user.get_token())
     except Exception as e:
         log.exception(e)
 
@@ -161,8 +360,9 @@
 
 
 @login_required
-def new_descriptor(request, project_id=None, descriptor_type=None):
-
+def new_descriptor(request, descriptor_type=None):
+    user = osmutils.get_user(request)
+    project_id = user.project_id
     page = 'osm/descriptor/descriptor_new.html'
     if request.method == 'GET':
         request_id = request.GET.get('id', '')
@@ -181,9 +381,9 @@
             try:
                 client = Client()
                 if descriptor_type == 'nsd':
-                    result = client.nsd_onboard(request.session['token'], file_uploaded)
+                    result = client.nsd_onboard(user.get_token(), file_uploaded)
                 elif descriptor_type == 'vnfd':
-                    result = client.vnfd_onboard(request.session['token'], file_uploaded)
+                    result = client.vnfd_onboard(user.get_token(), file_uploaded)
                 else:
                     log.debug('Create descriptor: Unknown data type')
                     result = {'error': True, 'data': 'Create descriptor: Unknown data type'}
@@ -202,7 +402,9 @@
 
 
 @login_required
-def edit_descriptor(request, project_id=None, descriptor_id=None, descriptor_type=None):
+def edit_descriptor(request, descriptor_id=None, descriptor_type=None):
+    user = osmutils.get_user(request)
+    project_id = user.project_id
     if request.method == 'POST':
         print "edit_descriptor"
         new_data = request.POST.get('text'),
@@ -216,14 +418,14 @@
                 elif data_type == 'json':
                     new_data = json.loads(request.POST.get('text'))
                 print new_data
-                result = client.nsd_update(request.session['token'], descriptor_id, new_data)
+                result = client.nsd_update(user.get_token(), descriptor_id, new_data)
             elif descriptor_type == 'vnfd':
                 if data_type == 'yaml':
                     new_data = yaml.load(request.POST.get('text'))
                 elif data_type == 'json':
                     new_data = json.loads(request.POST.get('text'))
                 print new_data
-                result = client.vnfd_update(request.session['token'], descriptor_id, new_data)
+                result = client.vnfd_update(user.get_token(), descriptor_id, new_data)
 
             else:
                 log.debug('Update descriptor: Unknown data type')
@@ -244,10 +446,10 @@
         try:
             client = Client()
             if descriptor_type == 'nsd':
-                result = client.nsd_get(request.session['token'], descriptor_id)
+                result = client.nsd_get(user.get_token(), descriptor_id)
                 print result
             elif descriptor_type == 'vnfd':
-                result = client.vnfd_get(request.session['token'], descriptor_id)
+                result = client.vnfd_get(user.get_token(), descriptor_id)
 
                 print result
         except Exception as e:
@@ -269,14 +471,14 @@
 
 
 @login_required
-def get_package_files_list(request, project_id, descriptor_id, descriptor_type):
-    files_list = []
+def get_package_files_list(request, descriptor_id, descriptor_type):
+    user = osmutils.get_user(request)
     try:
         client = Client()
         if descriptor_type == 'nsd':
-            artifacts_res = client.nsd_artifacts(request.session['token'], descriptor_id)
+            artifacts_res = client.nsd_artifacts(user.get_token(), descriptor_id)
         elif descriptor_type == 'vnfd':
-            artifacts_res = client.vnf_packages_artifacts(request.session['token'], descriptor_id)
+            artifacts_res = client.vnf_packages_artifacts(user.get_token(), descriptor_id)
         else:
             return False
 
@@ -289,15 +491,16 @@
     return __response_handler(request, result)
 
 @login_required
-def download_pkg(request, project_id, descriptor_id, descriptor_type):
+def download_pkg(request, descriptor_id, descriptor_type):
+    user = osmutils.get_user(request)
     file_name = "osm_export.tar.gz"
     tar_pkg = None
     try:
         client = Client()
         if descriptor_type == 'nsd':
-            tar_pkg = client.get_nsd_pkg(request.session['token'], descriptor_id)
+            tar_pkg = client.get_nsd_pkg(user.get_token(), descriptor_id)
         elif descriptor_type == 'vnfd':
-            tar_pkg = client.get_vnfd_pkg(request.session['token'], descriptor_id)
+            tar_pkg = client.get_vnfd_pkg(user.get_token(), descriptor_id)
 
     except Exception as e:
         log.exception(e)
@@ -309,10 +512,10 @@
 
 
 @login_required
-def custom_action(request, project_id=None, descriptor_id=None, descriptor_type=None, action_name=None):
+def custom_action(request, descriptor_id=None, descriptor_type=None, action_name=None):
     if request.method == 'GET':
         print "Custom action: " + action_name
-        return globals()[action_name](request, project_id, descriptor_id, descriptor_type)
+        return globals()[action_name](request, descriptor_id, descriptor_type)
 
 
 def __response_handler(request, data_res, url=None, to_redirect=None, *args, **kwargs):