|
9 | 9 | from cesium import featurize |
10 | 10 |
|
11 | 11 |
|
12 | | -def is_owned_by(self, user): |
13 | | - if hasattr(self, 'users'): |
14 | | - return (user in self.users) |
| 12 | +def is_owned_by(self, user_or_token): |
| 13 | + if hasattr(self, 'tokens'): |
| 14 | + return (user_or_token in self.tokens) |
15 | 15 | elif hasattr(self, 'project'): |
16 | | - return (user in self.project.users) |
| 16 | + return self.project in user_or_token.projects |
| 17 | + elif hasattr(self, 'projects'): |
| 18 | + return bool(set(self.projects) & set(user_or_token.projects)) |
| 19 | + elif hasattr(self, 'users'): |
| 20 | + if hasattr(user_or_token, 'created_by'): |
| 21 | + if user_or_token.created_by in self.users: |
| 22 | + return True |
| 23 | + return (user_or_token in self.users) |
17 | 24 | else: |
18 | 25 | raise NotImplementedError(f"{type(self).__name__} object has no owner") |
19 | 26 | Base.is_owned_by = is_owned_by |
@@ -62,6 +69,11 @@ class Project(Base): |
62 | 69 | back_populates='users', cascade='all') |
63 | 70 | UserProjects = join_model('user_projects', User, Project) |
64 | 71 |
|
| 72 | +@property |
| 73 | +def token_projects(self): |
| 74 | + return self.created_by.projects |
| 75 | +Token.projects = token_projects |
| 76 | + |
65 | 77 |
|
66 | 78 | class Featureset(Base): |
67 | 79 | project_id = sa.Column(sa.ForeignKey('projects.id', ondelete='CASCADE'), |
|
0 commit comments