-
Notifications
You must be signed in to change notification settings - Fork 4
/
Copy pathpending_assignments.py
54 lines (37 loc) · 1.41 KB
/
pending_assignments.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
"""
Example script showing the new async API with processing all pending assignments
18.11.2021 Octavio Simone
"""
from dracoon import DRACOON
import asyncio
from dracoon.nodes_models import ProcessRoomPendingUsers
async def main():
baseURL = 'https://dracoon.team'
client_id = 'XXXXXXXXXXXXXXXXXXXXXX'
client_secret = 'XXXXXXXXXXXXXXXXXXXXXXXXXXX'
dracoon = DRACOON(base_url=baseURL, client_id=client_id, client_secret=client_secret)
print(dracoon.get_code_url())
auth_code = input('Enter auth code:')
await dracoon.connect(auth_code=auth_code)
# retrieve pending assignments
pending_assign = await dracoon.nodes.get_pending_assignments(filter="groupId:eq:91|state:eq:WAITING")
assignments = {
"items": []
}
# build assignment processing payload
for pending_assignment in pending_assign.items:
assignment = {
"roomId": pending_assignment.roomId,
"roomName": pending_assignment.roomName,
"userId": pending_assignment.userInfo.id,
"groupId": pending_assignment.groupInfo.id,
"state": "ACCEPTED"
}
assignments["items"].append(assignment)
# ensure payload is correct
payload = ProcessRoomPendingUsers(**assignments)
# send request
pending_processed = await dracoon.nodes.process_pending_assignments(payload)
await dracoon.logout()
if __name__ == '__main__':
asyncio.run(main())