</script>
<script type="text/template" id="developer-slicedetail-template">
- <td><%= name %></td>\r
+ <td><%= name %></td><td><%= sliceInfo.roles[0] %></td><td><%= sliceInfo.sliverCount %></td><td><%= sliceInfo.siteCount %></td>\r
</script>
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<pk>[a-zA-Z0-9\-]+)/$', view_url[3].as_view(), name=view_url[1]+'list'))
+ urlpatterns.append(url(r'^' + view_url[1] + '/(?P<pk>[a-zA-Z0-9\-]+)/$', view_url[3].as_view(), name=view_url[1]+'detail'))
finally:
sys.path = sys_path_save
sliceInfo = serializers.SerializerMethodField("getSliceInfo")\r
\r
def getSliceInfo(self, slice):\r
- return slice.getSliceInfo()\r
+ return slice.getSliceInfo(user=self.context['request'].user)\r
\r
networks = serializers.HyperlinkedRelatedField(many=True, read_only=True, view_name='network-detail')\r
availableNetworks = serializers.HyperlinkedRelatedField(many=True, read_only=True, view_name='network-detail')\r
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)
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)
@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
className: 'developer_slicedetail'\r
});
+/*
DeveloperApp.SliceListView = Marionette.CollectionView.extend({
+ tagName: "table",\r
+ className: "table table-hover",\r
+ template: "#developer-slicetable-template",\r
+ childView: DeveloperApp.SliceDetailView,\r
+});\r
+*/\r
+\r
+DeveloperApp.SliceListView = Marionette.CompositeView.extend({\r
tagName: "table",\r
className: "table-striped table-bordered",\r
template: "#developer-slicetable-template",\r
childView: DeveloperApp.SliceDetailView,\r
+ childViewContainer: "tbody",\r
});\r
DeveloperApp.on("start", function() {
var developerSliceListView = new DeveloperApp.SliceListView({
- collection: xos.slices\r
+ collection: xos.slicesPlus\r
});\r
console.log(developerSliceListView);\r
DeveloperApp.mainRegion.show(developerSliceListView);\r
- xos.slices.fetch();\r
+ xos.slicesPlus.fetch();\r
});
$(document).ready(function(){
USER_API = "/plstackapi/users/";
DEPLOYMENT_API = "/plstackapi/deployments";
+SLICEPLUS_API = "/xoslib/slicesplus/";
+
XOSModel = Backbone.Model.extend({
/* from backbone-tastypie.js */
//idAttribute: 'resource_uri',
});
function xoslib() {
+ // basic REST
this.sliver = XOSModel.extend({ urlRoot: SLIVER_API });
this.sliverCollection = XOSCollection.extend({ urlRoot: SLIVER_API,
model: this.sliver});
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"]; };
};