diff options
Diffstat (limited to 'opendc-web/opendc-web-api/opendc/models/project.py')
| -rw-r--r-- | opendc-web/opendc-web-api/opendc/models/project.py | 48 |
1 files changed, 0 insertions, 48 deletions
diff --git a/opendc-web/opendc-web-api/opendc/models/project.py b/opendc-web/opendc-web-api/opendc/models/project.py deleted file mode 100644 index f2b3b564..00000000 --- a/opendc-web/opendc-web-api/opendc/models/project.py +++ /dev/null @@ -1,48 +0,0 @@ -from marshmallow import Schema, fields, validate -from werkzeug.exceptions import Forbidden - -from opendc.models.model import Model -from opendc.exts import db - - -class ProjectAuthorizations(Schema): - """ - Schema representing a project authorization. - """ - userId = fields.String(required=True) - level = fields.String(required=True, validate=validate.OneOf(["VIEW", "EDIT", "OWN"])) - - -class ProjectSchema(Schema): - """ - Schema representing a Project. - """ - _id = fields.String(dump_only=True) - name = fields.String(required=True) - datetimeCreated = fields.DateTime() - datetimeLastEdited = fields.DateTime() - topologyIds = fields.List(fields.String()) - portfolioIds = fields.List(fields.String()) - authorizations = fields.List(fields.Nested(ProjectAuthorizations)) - - -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) |
