From db236c385c165787e6bbd143455501e1af73a393 Mon Sep 17 00:00:00 2001 From: Scott Baker Date: Sun, 13 Jul 2014 17:36:19 -0700 Subject: [PATCH] xosDeveloper view working --- .../core/xoslib/dashboards/xosDeveloper.html | 2 +- planetstack/core/xoslib/methods/__init__.py | 4 ++-- planetstack/core/xoslib/methods/sliceplus.py | 8 +++++++- planetstack/core/xoslib/objects/sliceplus.py | 3 --- planetstack/core/xoslib/static/js/xosDeveloper.js | 14 ++++++++++++-- .../core/xoslib/static/js/xoslib/xos-backbone.js | 9 +++++++++ 6 files changed, 31 insertions(+), 9 deletions(-) diff --git a/planetstack/core/xoslib/dashboards/xosDeveloper.html b/planetstack/core/xoslib/dashboards/xosDeveloper.html index c6002d7..33d7ee7 100644 --- a/planetstack/core/xoslib/dashboards/xosDeveloper.html +++ b/planetstack/core/xoslib/dashboards/xosDeveloper.html @@ -24,6 +24,6 @@ diff --git a/planetstack/core/xoslib/methods/__init__.py b/planetstack/core/xoslib/methods/__init__.py index 6c75063..0b891eb 100644 --- a/planetstack/core/xoslib/methods/__init__.py +++ b/planetstack/core/xoslib/methods/__init__.py @@ -37,9 +37,9 @@ try: for view_url in view_urls: if view_url[0] == "list": - urlpatterns.append(url(r'^xoslib/' + view_url[1] + '/$', view_url[3].as_view(), name=view_url[1]+'list')) + urlpatterns.append(url(r'^' + view_url[1] + '/$', view_url[3].as_view(), name=view_url[1]+'list')) elif view_url[0] == "detail": - urlpatterns.append(url(r'^xoslib/' + view_url[1] + '/(?P[a-zA-Z0-9\-]+)/$', view_url[3].as_view(), name=view_url[1]+'list')) + urlpatterns.append(url(r'^' + view_url[1] + '/(?P[a-zA-Z0-9\-]+)/$', view_url[3].as_view(), name=view_url[1]+'detail')) finally: sys.path = sys_path_save diff --git a/planetstack/core/xoslib/methods/sliceplus.py b/planetstack/core/xoslib/methods/sliceplus.py index 79aae3b..f990275 100644 --- a/planetstack/core/xoslib/methods/sliceplus.py +++ b/planetstack/core/xoslib/methods/sliceplus.py @@ -13,7 +13,7 @@ class SlicePlusIdSerializer(serializers.ModelSerializer): sliceInfo = serializers.SerializerMethodField("getSliceInfo") def getSliceInfo(self, slice): - return slice.getSliceInfo() + return slice.getSliceInfo(user=self.context['request'].user) networks = serializers.HyperlinkedRelatedField(many=True, read_only=True, view_name='network-detail') availableNetworks = serializers.HyperlinkedRelatedField(many=True, read_only=True, view_name='network-detail') @@ -26,6 +26,9 @@ class SlicePlusList(generics.ListCreateAPIView): queryset = SlicePlus.objects.select_related().all() serializer_class = SlicePlusIdSerializer + method_kind = "list" + method_name = "slicesplus" + def get_queryset(self): return SlicePlus.select_by_user(self.request.user) @@ -41,6 +44,9 @@ class SlicePlusDetail(generics.RetrieveUpdateDestroyAPIView): queryset = SlicePlus.objects.select_related().all() serializer_class = SlicePlusIdSerializer + method_kind = "detail" + method_name = "slicesplus" + def get_queryset(self): return SlicePlus.select_by_user(self.request.user) diff --git a/planetstack/core/xoslib/objects/sliceplus.py b/planetstack/core/xoslib/objects/sliceplus.py index e35f4d1..2542fd7 100644 --- a/planetstack/core/xoslib/objects/sliceplus.py +++ b/planetstack/core/xoslib/objects/sliceplus.py @@ -27,12 +27,9 @@ class SlicePlus(Slice): @staticmethod def select_by_user(user): - print "XX" if user.is_admin: qs = SlicePlus.objects.all() else: slice_ids = [sp.slice.id for sp in SlicePrivilege.objects.filter(user=user)] qs = SlicePlus.objects.filter(id__in=slice_ids) - print qs - print qs.all() return qs diff --git a/planetstack/core/xoslib/static/js/xosDeveloper.js b/planetstack/core/xoslib/static/js/xosDeveloper.js index 5e81d85..eb83efe 100644 --- a/planetstack/core/xoslib/static/js/xosDeveloper.js +++ b/planetstack/core/xoslib/static/js/xosDeveloper.js @@ -10,20 +10,30 @@ DeveloperApp.SliceDetailView = Marionette.ItemView.extend({ className: 'developer_slicedetail' }); +/* DeveloperApp.SliceListView = Marionette.CollectionView.extend({ + tagName: "table", + className: "table table-hover", + template: "#developer-slicetable-template", + childView: DeveloperApp.SliceDetailView, +}); +*/ + +DeveloperApp.SliceListView = Marionette.CompositeView.extend({ tagName: "table", className: "table-striped table-bordered", template: "#developer-slicetable-template", childView: DeveloperApp.SliceDetailView, + childViewContainer: "tbody", }); DeveloperApp.on("start", function() { var developerSliceListView = new DeveloperApp.SliceListView({ - collection: xos.slices + collection: xos.slicesPlus }); console.log(developerSliceListView); DeveloperApp.mainRegion.show(developerSliceListView); - xos.slices.fetch(); + xos.slicesPlus.fetch(); }); $(document).ready(function(){ diff --git a/planetstack/core/xoslib/static/js/xoslib/xos-backbone.js b/planetstack/core/xoslib/static/js/xoslib/xos-backbone.js index b113535..59645e7 100644 --- a/planetstack/core/xoslib/static/js/xoslib/xos-backbone.js +++ b/planetstack/core/xoslib/static/js/xoslib/xos-backbone.js @@ -5,6 +5,8 @@ SITE_API = "/plstackapi/sites/"; USER_API = "/plstackapi/users/"; DEPLOYMENT_API = "/plstackapi/deployments"; +SLICEPLUS_API = "/xoslib/slicesplus/"; + XOSModel = Backbone.Model.extend({ /* from backbone-tastypie.js */ //idAttribute: 'resource_uri', @@ -119,6 +121,7 @@ XOSCollection = Backbone.Collection.extend({ }); function xoslib() { + // basic REST this.sliver = XOSModel.extend({ urlRoot: SLIVER_API }); this.sliverCollection = XOSCollection.extend({ urlRoot: SLIVER_API, model: this.sliver}); @@ -149,6 +152,12 @@ function xoslib() { model: this.deployment}); this.deployments = new this.deploymentCollection(); + // enhanced REST + this.slicePlus = XOSModel.extend({ urlRoot: SLICEPLUS_API }); + this.slicePlusCollection = XOSCollection.extend({ urlRoot: SLICEPLUS_API, + model: this.slicePlus}); + this.slicesPlus = new this.slicePlusCollection(); + this.listObjects = function() { return ["slivers", "slices", "nodes", "sites", "users", "deployments"]; }; }; -- 2.43.0