Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit eccc43f

Browse files
committed
add collection managment, and first pass at permissions
1 parent 2ab8ced commit eccc43f

File tree

3 files changed

+91
-1
lines changed

3 files changed

+91
-1
lines changed

clearblade/Collections.py

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,12 @@ class Collection():
88
def __init__(self, system, authenticatedUser, collectionID="", collectionName=""):
99
if collectionID:
1010
self.url = system.url + '/api/v/1/data/' + collectionID
11+
self.collectionID = collectionID
12+
self.collectionName = None
1113
elif collectionName:
1214
self.url = system.url + '/api/v/1/collection/' + system.systemKey + "/" + collectionName
15+
self.collectionName = collectionName
16+
self.collectionID = None
1317
else:
1418
cbLogs.error("You must supply either a collection name or id.") # beep
1519
exit(-1)
@@ -69,3 +73,37 @@ def updateItems(self, query, data):
6973

7074
def deleteItems(self, query):
7175
return restcall.delete(self.url, headers=self.headers, params={"query": json.dumps(query.filters)}, sslVerify=self.sslVerify)
76+
77+
78+
###########################
79+
# DEVELOPER ENDPOINTS #
80+
###########################
81+
82+
def DEVnewCollection(developer, system, name):
83+
url = system.url + "/admin/collectionmanagement"
84+
data = {
85+
"appID": system.systemKey,
86+
"name": name
87+
}
88+
resp = restcall.post(url, headers=developer.headers, data=data, sslVerify=system.sslVerify)
89+
cbLogs.info("Successfully created collection: " + name)
90+
newCollection = Collection(system, developer, collectionID=resp["collectionID"])
91+
return newCollection
92+
93+
def DEVaddColumnToCollection(developer, system, collection, columnName, columnType):
94+
if not collection.collectionID:
95+
cbLogs.error("You must supply the collection id when adding a column to a collection.")
96+
exit(-1)
97+
url = system.url + "/admin/collectionmanagement"
98+
data = {
99+
"id": collection.collectionID,
100+
"addColumn": {
101+
"id": collection.collectionID,
102+
"name": columnName,
103+
"type": columnType
104+
}
105+
}
106+
resp = restcall.put(url, headers=developer.headers, data=data, sslVerify=system.sslVerify)
107+
cbLogs.info("Successfully added column: " + columnName)
108+
return resp
109+

clearblade/Developers.py

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
11
from __future__ import absolute_import
22
from . import restcall
33
from . import cbLogs
4+
from . import Collections
45
from . import Devices
5-
6+
from . import Permissions
67

78
def registerDev(fname, lname, org, email, password, url="https://platform.clearblade.com"):
89
newDevCredentials = {
@@ -65,6 +66,16 @@ def logout(self):
6566
# ~~~~~~~~~~~~~~~~~~~~~~ #
6667
##########################
6768

69+
#################
70+
# Collections #
71+
#################
72+
73+
def newCollection(self, system, name):
74+
return Collections.DEVnewCollection(self, system, name)
75+
76+
def addColumnToCollection(self, system, collection, columnName, columnType):
77+
return Collections.DEVaddColumnToCollection(self, system, collection, columnName, columnType)
78+
6879
###############
6980
# Devices #
7081
###############
@@ -83,3 +94,11 @@ def updateDevice(self, system, name, updates):
8394

8495
def deleteDevice(self, system, name):
8596
return Devices.DEVdeleteDevice(self, system, name)
97+
98+
#################
99+
# Permissions #
100+
#################
101+
102+
def setPermissionsForCollection(self, system, collection, permissionsLevel, roleName):
103+
return Permissions.DEVsetPermissionsForCollection(self, system, collection, permissionsLevel, roleName)
104+

clearblade/Permissions.py

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
from __future__ import absolute_import
2+
from . import cbLogs
3+
from . import restcall
4+
5+
class Permissions:
6+
READ = 1
7+
CREATE = 2
8+
UPDATE = 4
9+
DELETE = 8
10+
11+
12+
###########################
13+
# DEVELOPER ENDPOINTS #
14+
###########################
15+
16+
def DEVsetPermissionsForCollection(developer, system, collection, permissionsLevel, roleName):
17+
url = system.url + "/admin/user/" + system.systemKey + "/roles"
18+
data = {
19+
"id": roleName,
20+
"changes": {
21+
"collections": [{
22+
"itemInfo": {
23+
"name": collection.collectionName,
24+
"id": collection.collectionID
25+
},
26+
"permissions": permissionsLevel
27+
}]
28+
}
29+
}
30+
resp = restcall.put(url, headers=developer.headers, data=data, sslVerify=system.sslVerify)
31+
cbLogs.info("Successfully updated permissions for role: " + roleName)
32+
return resp
33+

0 commit comments

Comments
 (0)