-
-
Save merwok/108718f81ebff057f840 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| from pyramid.decorator import reify | |
| from pyramid.security import Allow, ALL_PERMISSIONS, Everyone, Deny, authenticated_userid | |
| class Root(object): | |
| def __init__(self, request): | |
| self.request = request | |
| self.__name__ = '' | |
| self.__parent__ = None | |
| def __getitem__(self, key): | |
| return UsersCollection(key, self) | |
| class UserCollection(object): | |
| def __init__(self, name, parent): | |
| self.__name__ = name | |
| self.__parent__ = parent | |
| def __getitem__(self, key): | |
| return User(key, self) | |
| class User(object): | |
| def __init__(self, name, parent): | |
| self.__name__ = name | |
| self.__parent__ = parent | |
| def __getitem__(self, key): | |
| return NoteCollection(key, self) | |
| # /users/123/notes/ | |
| class NoteCollection(object): | |
| __acl__ = [ | |
| (Allow, Everyone, 'show'), | |
| (Allow, 'group:owner', ALL_PERMISSIONS), | |
| ] | |
| def __init__(self, name, parent): | |
| self.__name__ = name | |
| self.__parent__ = parent | |
| def __getitem__(self, key): | |
| return Note(key, self) | |
| # /users/123/notes/456 | |
| class Note(object): | |
| def __init__(self, name, parent): | |
| self.__name__ = name | |
| self.__parent__ = parent | |
| @property | |
| def user(self): | |
| # could be done via find_interface | |
| return self.parent.parent | |
| @property | |
| def userid(self): | |
| # /users/123/notes/456 will return 123 | |
| return self.user.__name__ | |
| def group_finder(self, request): | |
| principals = [] | |
| if authenticated_userid(request) == self.user.__name__: | |
| principals.append('group:owner') | |
| return principals | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment