Skip to content

Commit 8485b1e

Browse files
committed
Adding python sdks for user management
1 parent 0ac59b1 commit 8485b1e

File tree

6 files changed

+113
-0
lines changed

6 files changed

+113
-0
lines changed

dynatademand/api.py

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -291,6 +291,44 @@ def get_project_detailed_report(self, project_id):
291291
)
292292
return self._api_get('/projects/{}/detailedReport'.format(project_id))
293293

294+
def get_user_info(self):
295+
return self._api_get('/users/info')
296+
297+
def get_company_users(self):
298+
return self._api_get('/users')
299+
300+
def get_company_teams(self):
301+
return self._api_get('/teams')
302+
303+
def get_roles(self, **kwargs):
304+
self.validator.validate_request(
305+
'get_roles',
306+
query_params=kwargs
307+
)
308+
return self._api_get('/roles', kwargs)
309+
310+
def get_project_permissions(self, project_id):
311+
self.validator.validate_request(
312+
'get_project_permissions',
313+
path_data={'extProjectId': '{}'.format(project_id)},
314+
)
315+
return self._api_get('/projects/{}/permissions'.format(project_id))
316+
317+
def upsert_project_permissions(self, project_id, upsert_permissions_data):
318+
self.validator.validate_request(
319+
'upsert_project_permissions',
320+
path_data={'extProjectId': '{}'.format(project_id)},
321+
request_body=upsert_permissions_data,
322+
)
323+
response_data = self._api_post('/projects/{}/permissions'.format(project_id), upsert_permissions_data)
324+
if response_data.get('status').get('message') != 'success':
325+
raise DemandAPIError(
326+
"Could not upsert project permissions. Demand API responded with: {}".format(
327+
response_data
328+
)
329+
)
330+
return response_data
331+
294332
def add_line_item(self, project_id, lineitem_data):
295333
'''
296334
A line item is a project entity that exist for a specific market and
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
{
2+
"type": "object",
3+
"properties": {
4+
"users": {
5+
"type": "array",
6+
"items": {
7+
"type": "object",
8+
"properties": {
9+
"id": {
10+
"type": "integer"
11+
},
12+
"role": {
13+
"type": "string"
14+
}
15+
}
16+
}
17+
},
18+
"teams": {
19+
"type": "array",
20+
"items": {
21+
"type": "object",
22+
"properties": {
23+
"id": {
24+
"type": "integer"
25+
}
26+
}
27+
}
28+
}
29+
}
30+
}
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
{
2+
"type": "object",
3+
"properties": {
4+
"extProjectId": {
5+
"type": "string",
6+
"required": true
7+
}
8+
},
9+
"required": [
10+
"extProjectId"
11+
]
12+
}
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
{
2+
"type": "object",
3+
"properties": {
4+
"extProjectId": {
5+
"type": "string",
6+
"required": true
7+
}
8+
},
9+
"required": [
10+
"extProjectId"
11+
]
12+
}
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
{
2+
"type": "object",
3+
"properties": {
4+
"name": {
5+
"type": "string",
6+
"description": "This is the name of the role. eg: manager"
7+
},
8+
"id": {
9+
"type": "array",
10+
"items": {
11+
"type": "string"
12+
}
13+
}
14+
},
15+
"required": []
16+
}

dynatademand/validator.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,12 @@
1717
'buy_project': ['path', 'body', ],
1818
'get_project_detailed_report': ['path', ],
1919
'reconcile_project': ['path', ],
20+
'get_project_permissions':['path', ],
21+
'upsert_project_permissions':['path', 'body', ],
2022

23+
# Roles
24+
'get_roles': ['query', ]
25+
2126
# Invoices
2227
'get_invoice': ['path', ],
2328
'get_invoices_summary': ['query', ],

0 commit comments

Comments
 (0)