reservation plugin - unbound request (unclean
[unfold.git] / portal / unboundreservationview_b.py
diff --git a/portal/unboundreservationview_b.py b/portal/unboundreservationview_b.py
new file mode 100644 (file)
index 0000000..d591725
--- /dev/null
@@ -0,0 +1,341 @@
+from .                          import forms
+from django.shortcuts           import render, render_to_response
+from django.template            import RequestContext
+from django.template.loader     import render_to_string
+from django.views.generic       import View
+from django.core.mail           import send_mail
+from myslice.configengine       import ConfigEngine
+from unfold.loginrequired       import FreeAccessView
+from ui.topmenu                 import topmenu_items, the_user
+from myslice.theme              import ThemeView
+from django.contrib.staticfiles.urls import staticfiles_urlpatterns
+#from portal.forms               import ReputationForm
+import json, ast
+from pprint                     import pprint
+from manifold.core.query        import Query
+from manifoldapi.manifoldapi    import execute_query,execute_admin_query
+from portal.actions             import is_pi, create_slice, create_pending_slice, clear_user_creds
+from django.utils               import simplejson
+from django.http                import *
+import numpy
+import json
+import logging
+import StringIO
+import pycurl
+from apgl.graph import *
+from apgl.generator.ErdosRenyiGenerator import ErdosRenyiGenerator
+from django.views.decorators.csrf import csrf_exempt
+import time
+import datetime
+import calendar
+# splitting the 2 functions done here
+# GET is for displaying the empty form
+# POST is to process it once filled - or show the form again if anything is missing
+def create_post(request):
+    print(request.user)
+    if request.method == 'POST':
+        post_text = request.POST.get('the_post')
+        response_data = {}
+
+        post = Post(text=post_text, author=request.user)
+        post.save()
+
+        response_data['result'] = 'Create post successful!'
+       
+
+    return HttpResponse(
+           json.dumps(response_data),
+           content_type="application/json"
+           )
+                                               
+
+def response_mimetype(request):
+    
+    
+    if "application/json" in request.META['HTTP_ACCEPT']:
+        return "application/json"
+    else:
+        return "text/plain"
+
+def connected_graph(vert,possib):
+    
+    ################################################
+    # Connected graph calculation 
+    #
+    #    Requirements for ErdosRenyiGenerator python function
+    #
+    #    apt-get install gfortran libopenblas-dev liblapack-dev
+    #    pip install numpy
+    #    pip install scipy
+    #    pip install apgl
+    ################################################## 
+        p = possib
+        vertices= vert
+#graph = SparseGraph(VertexList(vertices, 1))
+#generator = ErdosRenyiGenerator(p, selfEdges=False)
+
+#for i in range(0,10):
+        found = False;
+
+        time_start = time.time()
+        iter_time = 20
+        while not found and time.time()-time_start < iter_time:
+                graph = SparseGraph(VertexList(vertices, 1))
+                generator = ErdosRenyiGenerator(p, selfEdges=False)
+                graph = generator.generate2(graph)
+                #print 'getAllEdges'
+                #print graph.getAllEdges()
+                #print '-----------'
+
+                connected_list=[]
+                #print graph.findConnectedComponents()
+                for list in graph.findConnectedComponents():
+                    if len(list)==vertices:
+                        connected_list=list
+                        break
+                if len(connected_list)==vertices:
+                    links = {}
+                    edge_lst =  graph.getAllEdges()
+                    for item in range(0, len(edge_lst)):
+                        links[item]=str(edge_lst[item][0]), str(edge_lst[item][1])
+                    break
+        if len(connected_list)==vertices:
+            return links
+        else:
+            return ("not_found")
+        #print graph.getAllEdges()
+        #print connected_list
+        return links
+
+
+class UnboundReservationView (FreeAccessView, ThemeView):
+        def my_view(request):
+
+            preset_form = forms.PresetListForm()
+
+            return render_to_response('services.html', {'array': json.dumps(data, cls=SpecialEncoder),'preset_form': preset_form,
+        })
+       def create_post(request):
+           print(request.user) 
+           if request.method == 'POST':
+               print("mlsllslssll,sls*************")
+               post_text = request.POST.get('the_post')
+               response_data = {}
+
+               post = Post(text=post_text, author=request.user)
+               post.save()
+
+               response_data['result'] = 'Create post successful!'
+       
+
+               return HttpResponse(
+               json.dumps(response_data),
+               content_type="application/json"
+                                               )
+           else:
+                return HttpResponse(
+                json.dumps({"nothing to see": "this isn't happening"}),
+                content_type="application/json"
+        )
+    
+        def quiz_guess(request, fact_id):   
+           message = {"fact_type": "", "fact_note": ""}
+           if request.is_ajax():
+               fact = get_object_or_404(Fact, id=fact_id)
+               message['fact_type'] = fact.type
+               message['fact_note'] = fact.note
+            else:
+               message = "You're the lying type, I can just tell."
+               json = simplejson.dumps(message)
+               return HttpResponse(json, mimetype='application/json')
+       def default_env (self):
+           return { 
+                   'MANIFOLD_URL':ConfigEngine().manifold_url(),
+                   }       
+        def post (self, request):
+               env = self.default_env()
+               print(request.user)
+               print(request.POST["b"])
+               
+               body1= request.POST["mitsos"]
+               user_urn= request.POST["name"]
+               user_urn=str(user_urn)
+               print(user_urn)
+               buffer = StringIO.StringIO()
+               json_data=open('/home/coyiotis/test.json').read()
+               data1 = json.loads(json_data)
+               data=json.dumps(body1)
+               data2=str(unicode(data))
+               json_data_1 = json.loads(body1)
+               json_data_1=json.dumps(json_data_1)
+               json_data_1 =str(unicode(json_data_1))
+               #print(data)       
+               print('*******************************nikos')   
+               #print(json_data_1)
+               #print(json_data_1['data'])
+               if request.POST["b"]=="1":
+                   c = pycurl.Curl()
+                   c.setopt(pycurl.URL, 'https://194.177.207.2:8001/mapper/')
+                   c.setopt(pycurl.HTTPHEADER, ['Content-Type: application/json','Accept: application/json'])
+                   c.setopt(pycurl.POST, 1)
+                   c.setopt(pycurl.SSL_VERIFYPEER, False)
+                   c.setopt(pycurl.SSL_VERIFYHOST, False)        
+                   c.setopt(pycurl.POSTFIELDS, body1)
+                   c.setopt(pycurl.WRITEDATA, buffer)
+                   c.perform()
+                   c.close()
+                   global body
+                   body = buffer.getvalue()
+                       # Body is a string in some encoding.
+                       # In Python 2, we can print it without knowing what the encoding is.
+               #print(body)    
+                   env['responsejson'] =  json.dumps(body)
+               
+                   body = body.replace('\n', '')
+               #body = body.replace(' ', '')
+               #print(json.dumps(body))
+                   print(body)
+                #j = json.loads(body)
+               ##print json_string
+               #parent =  j["resource_response"]
+               #for item in parent:
+                 #  print item["name"]
+                 #  print item["type"]
+
+                   global decoded
+                   decoded = json.loads(body)
+               # pretty printing of json-formatted string
+                   print json.dumps(decoded, sort_keys=True, indent=4)
+                   print "JSON parsing example: ", decoded['resource_response']
+               #print len(item_dict['result'][0]['run'])
+               else:
+                   leases_list=[]
+                   slice_params={}
+                   resources=[]
+                   final_params={}
+               
+                   for x in xrange(0, len(decoded['resource_response']['resources'])):
+                       end_time=decoded['resource_response']['resources'][x]['valid_until']
+                       start_time=decoded['resource_response']['resources'][x]['valid_from']
+                   #s = "01/12/2011"
+                       start_time=int(time.mktime(datetime.datetime.strptime(start_time, "%Y-%m-%d %H:%M:%S %Z").timetuple()))
+                       end_time=int(time.mktime(datetime.datetime.strptime(end_time, "%Y-%m-%d %H:%M:%S %Z").timetuple()))
+                       print(start_time)
+                       print(end_time)
+                   #print(calendar.timegm(start_time.utctimetuple()))
+                  
+                       urn=decoded['resource_response']['resources'][x]['urn']
+                       slice_params = {
+                                   'resource'         : urn,
+                                   'start_time'       : start_time,
+                                   'end_time'         : end_time
+                       }
+                       leases_list.append(slice_params)
+                       resources.append(urn)
+                  
+                   print("chrysaAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA") 
+                   for keys,values in slice_params.items():
+                       print(keys)
+                       print(values)
+                       final_params = {
+                       'resource'        : resources,
+                       'lease'        : leases_list
+                   }    
+                   #final_params=str(final_params)
+               #final_params=[{'resource': resources, 'leases':leases_list}]
+               #print(final_params)
+               
+                   print(user_urn)             
+                   final_params= ast.literal_eval(json.dumps(final_params))
+                   query = Query.update('slice').filter_by('slice_hrn', '==', user_urn).set(final_params).select('slice_hrn')
+               #query = Query.update('myslice:slice').filter_by('slice_hrn', '==', user_urn).set(slice_params).select('slice_hrn')
+                   results = execute_query(request,query)
+                   print("________________________________________________________________________________")
+                   print(results)
+                   print('________________________________________________________________________________')
+                   print(query)
+               return HttpResponse(json.dumps(body), mimetype='application/json')
+               #return render_to_response('workflow.html', env, context_instance=RequestContext(request))
+               #return render(request, 'workflow.html', {"variable_int" : 12})
+       def get (self, request):
+               buffer = StringIO.StringIO()
+               print("mlsllslssll,sls*************3")
+               #message = {"fact_type": "", "fact_note": ""}
+               childs = []
+               
+               
+                               
+                  
+                   
+               if request.is_ajax():
+                   print("mlsllslssll,sls*************4")
+                       #fact = get_object_or_404(Fact, id=fact_id)
+                   #    message['fact_type'] = fact.type
+                   #    message['fact_note'] = fact.note
+               #else:
+               #       message = "You're the lying type, I can just tell."
+               #       json = simplejson.dumps(message)            
+               if request.GET.has_key('node-num2'):
+                        child1=""
+                       child="{\"type\":\"Node\",\"valid_form\":"+request.GET['fromdate']+",\"valid_until\":"+request.GET['todate']+",\"exclusive\": true}"
+                       for index in range(int(request.GET['node-num'])):
+                                           childs.append(child)
+                                           if index>1:
+                                                       child1=child1+",{\"type\":\"Node\",\"valid_form\":"+"\""+request.GET['fromdate']+"\""+",\"valid_until\":"+"\""+request.GET['todate']+"\""+",\"exclusive\":true}"
+                                           if index==0:
+                                                       child1="{\"type\":\"Node\",\"valid_form\":"+"\""+request.GET['fromdate']+"\""+",\"valid_until\":"+"\""+request.GET['todate']+"\""+",\"exclusive\":true}"
+                       
+                       
+                       
+                       response_dict={}
+                       jchilds="{\"resources\":["+child1+"]\"\"}"
+                       #print(request.GET['jsondata'])
+                       c = pycurl.Curl()
+                       c.setopt(pycurl.URL, 'https://194.177.207.2:8001/mapper/')
+                       c.setopt(pycurl.HTTPHEADER, ['Content-Type: application/json','Accept: application/json'])
+                       c.setopt(pycurl.POST, 1)
+                       c.setopt(pycurl.SSL_VERIFYPEER, False)
+                       c.setopt(pycurl.SSL_VERIFYHOST, False)        
+                       c.setopt(pycurl.POSTFIELDS, request.GET['jsondata'])
+                       c.setopt(pycurl.WRITEDATA, buffer)
+                       c.perform()
+                       c.close()
+                                               
+                       body = buffer.getvalue()
+                       
+                       #return HttpResponse(json.dumps(body), mimetype='application/json')
+                       #response_dict = {'1':request.GET['node-
+                       #jnum'], '2':request.GET['node-num2']}
+                       #links = connected_graph(int(request.GET['node-num']),float(request.GET['node-num2'])/100)
+            #===================================================================
+                #for item in range(0,len(links)):
+               #child[item]=links[item]
+            #=====  =============================================================
+                       #print response_dict
+                       jsonchilds=json.dumps(childs)
+                       links=0
+                       json_stuff = simplejson.dumps({'links': links, 'body': body})
+                       print '**********************************BP 1 *********************************'+request.GET['jsondata']
+                       print '**********************************BP 2 *********************************'+body
+                       if links == 'not_found':
+                       #return HttpResponse(simplejson.dumps(['false']), content_type = response_mimetype(self.request))
+                               return HttpResponse(content='false', mimetype=DEFAULT_CONTENT_TYPE)
+                       else:
+                               return HttpResponse(json_stuff, content_type = response_mimetype(self.request))
+               #return HttpResponse(simplejson.dumps(response_dict), mimetype='application/javascript')
+               #return HttpResponse(json, mimetype='application/json')
+               return self._display (request)
+       
+       def _display (self, request):
+               return render(request, 'workflow_b.html', {
+                'topmenu_items': topmenu_items('Unbound Request', request),
+                'username': the_user (request)
+                })
+        
+
+
+