summaryrefslogtreecommitdiff
path: root/opendc-web/opendc-web-api/opendc/models/topology.py
diff options
context:
space:
mode:
Diffstat (limited to 'opendc-web/opendc-web-api/opendc/models/topology.py')
-rw-r--r--opendc-web/opendc-web-api/opendc/models/topology.py9
1 files changed, 8 insertions, 1 deletions
diff --git a/opendc-web/opendc-web-api/opendc/models/topology.py b/opendc-web/opendc-web-api/opendc/models/topology.py
index 71d2cade..592f82c5 100644
--- a/opendc-web/opendc-web-api/opendc/models/topology.py
+++ b/opendc-web/opendc-web-api/opendc/models/topology.py
@@ -1,5 +1,7 @@
+from bson import ObjectId
from marshmallow import Schema, fields
+from opendc.exts import db
from opendc.models.project import Project
from opendc.models.model import Model
@@ -73,7 +75,7 @@ class TopologySchema(Schema):
Schema representing a datacenter topology.
"""
_id = fields.String(dump_only=True)
- projectId = fields.String(dump_only=True)
+ projectId = fields.String()
name = fields.String(required=True)
rooms = fields.List(fields.Nested(RoomSchema), required=True)
@@ -93,3 +95,8 @@ class Topology(Model):
"""
project = Project.from_id(self.obj['projectId'])
project.check_user_access(user_id, edit_access)
+
+ @classmethod
+ def get_for_project(cls, project_id):
+ """Get all topologies for the specified project id."""
+ return db.fetch_all({'projectId': ObjectId(project_id)}, cls.collection_name)