Merge branch 'master' of github.com:open-cloud/xos
diff --git a/xos/core/models/slicetag.py b/xos/core/models/slicetag.py
index 7376c88..a335ce0 100644
--- a/xos/core/models/slicetag.py
+++ b/xos/core/models/slicetag.py
@@ -19,6 +19,6 @@
         if user.is_admin:
             qs = SliceTag.objects.all()
         else:
-            st_ids = [st.id for st in SliceTag.objects.filter(user=user)]
-            qs = SliceTag.objects.filter(id__in=st_ids)
+            slices = Slice.select_by_user(user)
+            qs = SliceTag.objects.filter(slice__in=slices)
         return qs
diff --git a/xos/core/models/user.py b/xos/core/models/user.py
index 57e7a35..795aa92 100644
--- a/xos/core/models/user.py
+++ b/xos/core/models/user.py
@@ -337,6 +337,15 @@
     def can_update_tenant_root_privilege(self, tenant_root_privilege, allow=[]):
         return self.can_update_tenant_root(tenant_root_privilege.tenant_root, allow)
 
+    def get_readable_objects(self, filter=None):
+       """ Returns a list of objects that the user is allowed to read. """
+       from core.models import Deployment, Network, Site, Slice, SliceTag, Sliver, Tag, User
+       models = [Deployment, Network, Site, Slice, SliceTag, Sliver, Tag, User]
+       readable_objects = []
+       for model in models:
+           readable_objects.extend(model.select_by_user(self))
+       return readable_objects      
+
     @staticmethod
     def select_by_user(user):
         if user.is_admin: