blob: ee84c73e64f2d7e62ac74617b793a14991f1dde1 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
|
from marshmallow import Schema, fields
from werkzeug.exceptions import Forbidden
from opendc.models.model import Model
from opendc.exts import db
class ProjectSchema(Schema):
"""
Schema representing a Project.
"""
_id = fields.String()
name = fields.String(required=True)
datetimeCreated = fields.DateTime()
datetimeLastEdited = fields.DateTime()
topologyIds = fields.List(fields.String())
portfolioIds = fields.List(fields.String())
class Project(Model):
"""Model representing a Project."""
collection_name = 'projects'
def check_user_access(self, user_id, edit_access):
"""Raises an error if the user with given [user_id] has insufficient access.
:param user_id: The User ID of the user.
:param edit_access: True when edit access should be checked, otherwise view access.
"""
for authorization in self.obj['authorizations']:
if user_id == authorization['userId'] and authorization['level'] != 'VIEW' or not edit_access:
return
raise Forbidden("Forbidden from retrieving project.")
@classmethod
def get_for_user(cls, user_id):
"""Get all projects for the specified user id."""
return db.fetch_all({'authorizations.userId': user_id}, Project.collection_name)
|