예제 #1
0
    def from_dict(cls, obj):
        workspace_components = obj['parameters']['components']
        layout = obj['parameters']['layout']
        stack = deque()
        row_layout = ''
        row_layouts = []
        for c in layout[1:]:
            if c == '(':
                stack.append('(')
            elif c == ')':
                stack.pop()
                if len(stack) == 0:
                    row_layouts.append(row_layout[row_layout.index('c'):])
                    row_layout = ''
            row_layout += c

        workspace_rows = [WorkspaceRow(components=Workspace._parse(row_layout, workspace_components))
                          for row_layout in row_layouts]

        component_count = 0
        # The rest of the components not in the layout should be selector components
        selector_components = []
        if component_count < len(workspace_components):
            for i in range(component_count, len(workspace_components)):
                component = workspace_components[i]
                selector_components.append(TYPE_TO_COMPONENT[component['type']].from_dict(component))

        params = obj['parameters']
        tabs = [WorkspaceTab.from_dict(tab) for tab in params.get('tabs', [])]
        return Workspace(name=obj['name'], rows=workspace_rows, selector_components=selector_components,
                         alias=obj.get('alias'), tabs=tabs,
                         entitlements=Entitlements.from_dict(obj.get('entitlements', {})),
                         description=obj.get('description'),
                         disclaimer=params.get('disclaimer'), maintainers=params.get('maintainers'))
예제 #2
0
def test_from_dict():
    replace = Replacer()
    mock = replace('gs_quant.api.gs.users.GsUsersApi.get_users', Mock())
    mock.return_value = [
        TargetUser.from_dict({
            'id': 'userId',
            'email': '*****@*****.**',
            'name': 'Jane Doe',
            'company': 'Goldman Sachs Group'
        })
    ]
    ent = Entitlements.from_dict({'edit': ['guid:userId', 'role:roleId']})
    replace.restore()
    assert ent.edit.users == [get_fake_user()]
    assert ent.edit.roles == ['roleId']
예제 #3
0
 def get_entitlements(self):
     entitlements_dict = self.get_entity().get('entitlements')
     if entitlements_dict is None:
         raise ValueError('This entity does not have entitlements.')
     return Entitlements.from_dict(entitlements_dict)