summaryrefslogtreecommitdiff
path: root/web-server/opendc/models
diff options
context:
space:
mode:
Diffstat (limited to 'web-server/opendc/models')
-rw-r--r--web-server/opendc/models/experiment.py2
-rw-r--r--web-server/opendc/models/model.py11
-rw-r--r--web-server/opendc/models/simulation.py4
3 files changed, 10 insertions, 7 deletions
diff --git a/web-server/opendc/models/experiment.py b/web-server/opendc/models/experiment.py
index ac606d64..36b5d415 100644
--- a/web-server/opendc/models/experiment.py
+++ b/web-server/opendc/models/experiment.py
@@ -21,4 +21,4 @@ class Experiment(Model):
authorizations = list(
filter(lambda x: str(x['simulationId']) == str(self.obj['simulationId']), user.obj['authorizations']))
if len(authorizations) == 0 or (edit_access and authorizations[0]['authorizationLevel'] == 'VIEW'):
- raise ClientError(Response(403, "Forbidden from retrieving/editing experiment."))
+ raise ClientError(Response(403, 'Forbidden from retrieving/editing experiment.'))
diff --git a/web-server/opendc/models/model.py b/web-server/opendc/models/model.py
index 1935638f..f42134bf 100644
--- a/web-server/opendc/models/model.py
+++ b/web-server/opendc/models/model.py
@@ -1,3 +1,5 @@
+from uuid import uuid4
+
from opendc.util.database import DB
from opendc.util.exceptions import ClientError
from opendc.util.rest import Response
@@ -23,7 +25,7 @@ class Model:
def get_id(self):
"""Returns the ID of the enclosed object."""
- return self.obj['_id']
+ return str(self.obj['_id'])
def check_exists(self):
"""Raises an error if the enclosed object does not exist."""
@@ -35,12 +37,13 @@ class Model:
self.obj[key] = value
def insert(self):
- """Inserts the enclosed object and updates the internal reference to the newly inserted object."""
- self.obj = DB.insert(self.obj, self.collection_name)
+ """Inserts the enclosed object and generates a UUID for it."""
+ self.obj['_id'] = str(uuid4())
+ DB.insert(self.obj, self.collection_name)
def update(self):
"""Updates the enclosed object and updates the internal reference to the newly inserted object."""
- self.obj = DB.update(self.get_id(), self.obj, self.collection_name)
+ DB.update(self.get_id(), self.obj, self.collection_name)
def delete(self):
"""Deletes the enclosed object in the database."""
diff --git a/web-server/opendc/models/simulation.py b/web-server/opendc/models/simulation.py
index 86aa4726..9a2770cf 100644
--- a/web-server/opendc/models/simulation.py
+++ b/web-server/opendc/models/simulation.py
@@ -25,7 +25,7 @@ class Simulation(Model):
def get_all_authorizations(self):
"""Get all user IDs having access to this simulation."""
return [
- user['_id'] for user in DB.fetch_all({'authorizations': {
- 'simulationId': self.get_id()
+ str(user['_id']) for user in DB.fetch_all({'authorizations': {
+ 'simulationId': self.obj['_id']
}}, User.collection_name)
]