xoslib second prototype
diff --git a/planetstack/core/xoslib/objects/__init__.py b/planetstack/core/xoslib/objects/__init__.py
new file mode 100644
index 0000000..5387bfe
--- /dev/null
+++ b/planetstack/core/xoslib/objects/__init__.py
@@ -0,0 +1,12 @@
+from .slivers import XOSSlivers
+from .sites import XOSSites
+from .nodes import XOSNodes
+from .slices import XOSSlices
+
+XOSLIB_OBJECTS = {}
+
+XOSLIB_OBJECTS[XOSSlivers.name] = XOSSlivers
+XOSLIB_OBJECTS[XOSSites.name] = XOSSites
+XOSLIB_OBJECTS[XOSNodes.name] = XOSNodes
+XOSLIB_OBJECTS[XOSSlices.name] = XOSSlices
+
diff --git a/planetstack/core/xoslib/objects/nodes.py b/planetstack/core/xoslib/objects/nodes.py
new file mode 100644
index 0000000..fedd0b0
--- /dev/null
+++ b/planetstack/core/xoslib/objects/nodes.py
@@ -0,0 +1,19 @@
+from core.models import Node
+from xosbase import XOSBase
+from django.forms.models import model_to_dict
+
+class XOSNodes(XOSBase):
+ name = "nodes"
+
+ def __init__(self):
+ super(XOSNodes, self).__init__()
+
+ def get(self):
+ allNodes = list(Node.objects.all())
+
+ result = []
+ for nocd in allNodes:
+ d=model_to_dict(nocd)
+ result.append(self.ensure_serializable(d))
+
+ return result
diff --git a/planetstack/core/xoslib/objects/sites.py b/planetstack/core/xoslib/objects/sites.py
new file mode 100644
index 0000000..7146320
--- /dev/null
+++ b/planetstack/core/xoslib/objects/sites.py
@@ -0,0 +1,20 @@
+from core.models import Site
+from xosbase import XOSBase
+from django.forms.models import model_to_dict
+
+class XOSSites(XOSBase):
+ name = "sites"
+
+ def __init__(self):
+ super(XOSSites, self).__init__()
+
+ def get(self):
+ allSites = list(Site.objects.all())
+
+ result = []
+ for site in allSites:
+ d=model_to_dict(site)
+ result.append(self.ensure_serializable(d))
+
+ return result
+
diff --git a/planetstack/core/xoslib/objects/slices.py b/planetstack/core/xoslib/objects/slices.py
index 139597f..04a04f2 100644
--- a/planetstack/core/xoslib/objects/slices.py
+++ b/planetstack/core/xoslib/objects/slices.py
@@ -1,2 +1,21 @@
+from core.models import Slice
+from xosbase import XOSBase
+from django.forms.models import model_to_dict
+
+class XOSSlices(XOSBase):
+ name = "slices"
+
+ def __init__(self):
+ super(XOSSlices, self).__init__()
+
+ def get(self):
+ allSlices = list(Slice.objects.all())
+
+ result = []
+ for slice in allSlices:
+ d = model_to_dict(slice)
+ result.append(self.ensure_serializable(d))
+
+ return result
diff --git a/planetstack/core/xoslib/objects/slivers.py b/planetstack/core/xoslib/objects/slivers.py
index 139597f..1428908 100644
--- a/planetstack/core/xoslib/objects/slivers.py
+++ b/planetstack/core/xoslib/objects/slivers.py
@@ -1,2 +1,20 @@
+from core.models import Sliver
+from xosbase import XOSBase
+from django.forms.models import model_to_dict
+class XOSSlivers(XOSBase):
+ name = "slivers"
+
+ def __init__(self):
+ super(XOSSlivers, self).__init__()
+
+ def get(self):
+ allSlivers = list(Sliver.objects.all())
+
+ result = []
+ for sliver in allSlivers:
+ d=model_to_dict(sliver)
+ result.append(self.ensure_serializable(d))
+
+ return result
diff --git a/planetstack/core/xoslib/objects/xosbase.py b/planetstack/core/xoslib/objects/xosbase.py
new file mode 100644
index 0000000..881c7b5
--- /dev/null
+++ b/planetstack/core/xoslib/objects/xosbase.py
@@ -0,0 +1,21 @@
+import datetime
+import time
+
+class XOSBase(object):
+ name = "XOSBase"
+
+ def __init__(self):
+ pass
+
+ def ensure_serializable(self, d):
+ d2={}
+ for (k,v) in d.items():
+ # datetime is not json serializable
+ if isinstance(v, datetime.datetime):
+ d2[k] = time.mktime(v.timetuple())
+ elif v.__class__.__name__ == "Geoposition":
+ pass
+ else:
+ d2[k] = v
+ return d2
+