Skip to content

Commit 0676002

Browse files
vvgrem@gmail.comvvgrem@gmail.com
authored andcommitted
SharePoint API: support for userprofiles namespace
1 parent 5f6cc74 commit 0676002

25 files changed

+167
-28
lines changed
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
<AppPermissionRequests AllowAppOnlyPolicy="true">
22
<AppPermissionRequest Scope="http://sharepoint/content/sitecollection" Right="FullControl" />
33
<AppPermissionRequest Scope="http://sharepoint/search" Right="QueryAsUserIgnoreAppPrincipal"/>
4+
<AppPermissionRequest Scope="http://sharepoint/social/tenant" Right="FullControl" />
45
</AppPermissionRequests>

examples/teams/send_message.py

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
import msal
2+
3+
from office365.teams.itemBody import ItemBody
4+
from settings import settings
5+
from office365.graph_client import GraphClient
6+
7+
8+
def acquire_token_by_username_password():
9+
"""
10+
Acquire token via MSAL
11+
12+
"""
13+
authority_url = 'https://login.microsoftonline.com/{0}'.format(settings.get('tenant'))
14+
app = msal.PublicClientApplication(
15+
authority=authority_url,
16+
client_id=settings.get('client_credentials').get('client_id')
17+
)
18+
result = app.acquire_token_by_username_password(username=settings.get('user_credentials').get("username"),
19+
password=settings.get('user_credentials').get("password"),
20+
scopes=["https://graph.microsoft.com/.default"])
21+
return result
22+
23+
24+
client = GraphClient(acquire_token_by_username_password)
25+
teams_result = client.me.joinedTeams.get().execute_query()
26+
if len(teams_result) > 0:
27+
target_team = teams_result[1]
28+
29+
messages = target_team.primaryChannel.messages.get().execute_query()
30+
print(messages)
31+
32+
#item_body = ItemBody("Hello world!")
33+
#message = target_team.primaryChannel.messages.add(item_body).execute_query()
34+
#print(message.web_url)
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
1-
from office365.onedrive.driveItem import DriveItem
21
from office365.resource_path_url import ResourcePathUrl
32
from office365.runtime.queries.service_operation_query import ServiceOperationQuery
43

54

65
class UploadContentQuery(ServiceOperationQuery):
76
def __init__(self, parent_entity, name, content):
7+
from office365.onedrive.driveItem import DriveItem
88
return_type = DriveItem(parent_entity.context, ResourcePathUrl(name, parent_entity.resource_path))
99
super(UploadContentQuery, self).__init__(return_type, "content", None, content, None, return_type)

office365/directory/directoryAudit.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
from office365.entity import Entity
2+
3+
4+
class DirectoryAudit(Entity):
5+
pass

office365/directory/directoryObjectCollection.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,9 @@ def __init__(self, context, resource_path=None):
1313
super(DirectoryObjectCollection, self).__init__(context, DirectoryObject, resource_path)
1414

1515
def get(self):
16+
"""
17+
:rtype: DirectoryObjectCollection
18+
"""
1619
return super(DirectoryObjectCollection, self).get()
1720

1821
def __getitem__(self, key):

office365/directory/user.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
from office365.directory.directoryObject import DirectoryObject
22
from office365.directory.directoryObjectCollection import DirectoryObjectCollection
3-
from office365.directory.groupCollection import GroupCollection
43
from office365.onedrive.drive import Drive
54
from office365.outlookservices.contact_collection import ContactCollection
65
from office365.outlookservices.event_collection import EventCollection
76
from office365.outlookservices.messageCollection import MessageCollection
87
from office365.runtime.queries.service_operation_query import ServiceOperationQuery
98
from office365.runtime.resource_path import ResourcePath
9+
from office365.teams.teamCollection import TeamCollection
1010

1111

1212
class User(DirectoryObject):
@@ -69,7 +69,7 @@ def joinedTeams(self):
6969
if self.is_property_available('joinedTeams'):
7070
return self.properties['joinedTeams']
7171
else:
72-
return GroupCollection(self.context, ResourcePath("joinedTeams", self.resource_path))
72+
return TeamCollection(self.context, ResourcePath("joinedTeams", self.resource_path))
7373

7474
@property
7575
def memberOf(self):

office365/onedrive/baseItemVersion.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
from office365.entity import Entity
2+
3+
4+
class BaseItemVersion(Entity):
5+
pass

office365/onedrive/driveItem.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -109,8 +109,9 @@ def resumable_upload(self, source_path, chunk_size=1000000):
109109
:param str source_path: Local file path
110110
:param int chunk_size: chunk size
111111
"""
112-
uploader = ResumableFileUpload(self, source_path, chunk_size)
113-
return uploader.drive_item
112+
upload_query = ResumableFileUpload(self, source_path, chunk_size)
113+
self.context.add_query(upload_query)
114+
return upload_query.return_type
114115

115116
def create_upload_session(self, item):
116117
"""Creates a temporary storage location where the bytes of the file will be saved until the complete file is
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
from office365.entity import Entity
1+
from office365.onedrive.baseItemVersion import BaseItemVersion
22

33

4-
class DriveItemVersion(Entity):
4+
class DriveItemVersion(BaseItemVersion):
55
pass

0 commit comments

Comments
 (0)