Amisha's latest changes
diff --git a/planetstack/core/plus/views.py b/planetstack/core/plus/views.py
index 2b015ef..4e58508 100644
--- a/planetstack/core/plus/views.py
+++ b/planetstack/core/plus/views.py
@@ -63,15 +63,41 @@
         serviceClass = request.POST.get("serviceClass", "0")
         imageName = request.POST.get("imageName", "0")
         actionToDo = request.POST.get("actionToDo", "0")
-        print sliceName
+        network = request.POST.get("network","0")
+        mountDataSets = request.POST.get("mountDataSets","0")
         if (actionToDo == "add"):
            serviceClass = ServiceClass.objects.get(name=serviceClass)
            site = request.user.site
            #image = Image.objects.get(name=imageName)
-           newSlice = Slice(name=sliceName,serviceClass=serviceClass,site=site,imagePreference=imageName)
+           newSlice = Slice(name=sliceName,serviceClass=serviceClass,site=site,imagePreference=imageName,mountDataSets=mountDataSets,network=network)
            newSlice.save()
         return newSlice
 
+class TenantUpdateSlice(View):
+    def post(self, request, *args, **kwargs):

+        sliceName = request.POST.get("sliceName", "0")

+        serviceClass = request.POST.get("serviceClass", "0")

+        imageName = request.POST.get("imageName", "0")

+        actionToDo = request.POST.get("actionToDo", "0")

+        network = request.POST.get("network","0")

+        slice = Slice.objects.filter(name = sliceName)

+        abc = ServiceClass.objects.get(name=serviceClass)

+        if (actionToDo == "update"):

+        #       print getattr(slice,'serviceClass',abc)

+                setattr(slice,'serviceClass',abc)

+        #fields = {'serviceClass':ServiceClass.objects.get(name=serviceClass),

+         #         'imagePreference':imageName,

+          #        'network':network

+           #      }

+        #update_slice(sliceName,**fields)

+        return HttpResponse("Slice updated")
+
+def  update_slice(sliceName,**fields):
+         slice = Slice.objects.filter(name = sliceName)

+         for (k,v) in fields.items():

+                setattr(slice, k, v)

+                slice.save()

+         return slice
 
 def getTenantSliceInfo(user, tableFormat = False):
     tenantSliceDetails = {}
@@ -99,17 +125,21 @@
        slice = Slice.objects.get(name=Slice.objects.get(id=entry.id).name)
        sliceServiceClass = entry.serviceClass.name
        preferredImage =  entry.imagePreference
+       sliceDataSet = entry.mountDataSets
+       sliceNetwork = entry.network
        numSliver = 0
        sliceImage=""
        sliceSite = {}
+       sliceNode = {}
+       sliceInstance= {}
        for sliver in slice.slivers.all():
-            numSliver +=sliver.numberCores
-           # sliceSite[sliver.deploymentNetwork.name] =sliceSite.get(sliver.deploymentNetwork.name,0) + 1
 	    if sliver.node.site.name in BLESSED_SITES:
                 sliceSite[sliver.node.site.name] = sliceSite.get(sliver.node.site.name,0) + 1
                 sliceImage = sliver.image.name
+                sliceNode[sliver.instance_name] = sliver.name
+       numSliver = sum(sliceSite.values())
        numSites = len(sliceSite)
-       userSliceInfo.append({'sliceName': sliceName,'sliceServiceClass': sliceServiceClass,'preferredImage':preferredImage,'numOfSites':numSites, 'sliceSite':sliceSite,'sliceImage':sliceImage,'numOfSlivers':numSliver})
+       userSliceInfo.append({'sliceName': sliceName,'sliceServiceClass': sliceServiceClass,'preferredImage':preferredImage,'numOfSites':numSites, 'sliceSite':sliceSite,'sliceImage':sliceImage,'numOfSlivers':numSliver,'sliceDataSet':sliceDataSet,'sliceNetwork':sliceNetwork, 'instanceNodePair':sliceNode})
     return userSliceInfo
 
 def getTenantSitesInfo():
@@ -143,7 +173,7 @@
     return imageInfo
 
 def getMountDataSets():
-        dataSetList = ['GenBank','LSST','LHC','NOAA','Measurement Lab','Common Crawl']

+        dataSetList = ['------','GenBank','LSST','LHC','NOAA','Measurement Lab','Common Crawl']

         dataSetInfo = []

         for entry in dataSetList:

                 dataSetInfo.append({'DataSet':entry})

@@ -208,9 +238,10 @@
 
     rows = bq.get_cached_query_results(bq.compose_latest_query(groupByFields=["%hostname", "event", "%slice"]), wait)
 
-    # if wait==False, then we could have no rows yet
+    # wait=False on the first time the Dashboard is opened. This means we might
+    # not have any rows yet. The dashboard code polls every 30 seconds, so it
+    # will eventually pick them up.
 
-    stats_rows = {}
     if rows:
         rows = bq.postprocess_results(rows, filter={"slice": HPC_SLICE_NAME}, maxi=["cpu"], count=["hostname"], computed=["bytes_sent/elapsed"], groupBy=["Time","site"], maxDeltaTime=80)
 
@@ -218,6 +249,8 @@
         stats_rows = {}
         for row in rows:
             stats_rows[row["site"]] = row
+    else:
+        stats_rows = {}
 
     slice = Slice.objects.get(name=HPC_SLICE_NAME)
     slice_slivers = list(slice.slivers.all())