Skip to content

Commit c1e7f5e

Browse files
vvgrem@gmail.comvvgrem@gmail.com
vvgrem@gmail.com
authored and
vvgrem@gmail.com
committed
SharePoint API: improved support for fields namespace (#137)
1 parent 352c94e commit c1e7f5e

File tree

198 files changed

+6572
-4671
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

198 files changed

+6572
-4671
lines changed

examples/directory/import_users.py

+44
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
from faker import Faker
2+
from office365.graph.directory.userProfile import UserProfile
3+
from office365.graph.graph_client import GraphClient
4+
from settings import settings
5+
from tests import random_seed
6+
7+
8+
def acquire_token(auth_ctx):
9+
"""
10+
11+
:type auth_ctx: adal.AuthenticationContext
12+
"""
13+
token = auth_ctx.acquire_token_with_username_password(
14+
'https://graph.microsoft.com',
15+
settings['user_credentials']['username'],
16+
settings['user_credentials']['password'],
17+
settings['client_credentials']['client_id'])
18+
return token
19+
20+
21+
def generate_user_profile():
22+
fake = Faker()
23+
24+
user_json = {
25+
'givenName': fake.name(),
26+
'companyName': fake.company(),
27+
'businessPhones': [fake.phone_number()],
28+
'officeLocation': fake.street_address(),
29+
'city': fake.city(),
30+
'country': fake.country(),
31+
'principalName': "{0}@{1}".format(fake.user_name(), settings['tenant']),
32+
'password': "P@ssw0rd{0}".format(random_seed),
33+
'accountEnabled': True
34+
}
35+
return UserProfile(**user_json)
36+
37+
38+
client = GraphClient(settings['tenant'], acquire_token)
39+
40+
for idx in range(0, 5):
41+
user_profile = generate_user_profile()
42+
user = client.users.add(user_profile)
43+
client.execute_query()
44+
print("{0} user has been created".format(user.properties['userPrincipalName']))

examples/sharepoint/data_generator.py

+2-3
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,11 @@
22
from faker import Faker
33
from office365.runtime.auth.userCredential import UserCredential
44
from office365.sharepoint.client_context import ClientContext
5-
from office365.sharepoint.list_creation_information import ListCreationInformation
6-
from office365.sharepoint.list_template_type import ListTemplateType
5+
from office365.sharepoint.lists.list_creation_information import ListCreationInformation
6+
from office365.sharepoint.lists.list_template_type import ListTemplateType
77

88

99
def ensure_list(web, list_properties):
10-
ctx = web.context
1110
lists = web.lists.filter("Title eq '{0}'".format(list_properties.Title))
1211
ctx.load(lists)
1312
ctx.execute_query()

examples/sharepoint/download_file_from_url.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
import tempfile
33

44
from office365.runtime.auth.userCredential import UserCredential
5-
from office365.sharepoint.file import File
5+
from office365.sharepoint.files.file import File
66
from settings import settings
77

88
abs_file_url = "{site_url}sites/team/Shared Documents/sample.docx".format(site_url=settings.get('url'))

generator/metadata/MicrosoftGraph.xml

+5,819-4,275
Large diffs are not rendered by default.
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
from office365.runtime.client_value_object import ClientValueObject
1+
from office365.runtime.clientValue import ClientValue
22

33

4-
class AuditActivityInitiator(ClientValueObject):
4+
class AuditActivityInitiator(ClientValue):
55
pass

office365/graph/directory/directoryObject.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
from office365.graph.entity import Entity
22
from office365.runtime.client_query import DeleteEntityQuery, UpdateEntityQuery
33
from office365.runtime.client_result import ClientResult
4-
from office365.runtime.serviceOperationQuery import ServiceOperationQuery
4+
from office365.runtime.queries.serviceOperationQuery import ServiceOperationQuery
55

66

77
class DirectoryObject(Entity):

office365/graph/directory/directoryObjectCollection.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
from office365.runtime.client_result import ClientResult
44
from office365.runtime.http.http_method import HttpMethod
55
from office365.runtime.resource_path import ResourcePath
6-
from office365.runtime.serviceOperationQuery import ServiceOperationQuery
6+
from office365.runtime.queries.serviceOperationQuery import ServiceOperationQuery
77

88

99
class DirectoryObjectCollection(ClientObjectCollection):

office365/graph/directory/group.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
from office365.graph.onedrive.siteCollection import SiteCollection
77
from office365.runtime.http.http_method import HttpMethod
88
from office365.runtime.resource_path import ResourcePath
9-
from office365.runtime.serviceOperationQuery import ServiceOperationQuery
9+
from office365.runtime.queries.serviceOperationQuery import ServiceOperationQuery
1010
from office365.graph.teams.team import Team
1111

1212

office365/graph/directory/groupProfile.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
from office365.runtime.client_value_object import ClientValueObject
1+
from office365.runtime.clientValue import ClientValue
22

33

4-
class GroupProfile(ClientValueObject):
4+
class GroupProfile(ClientValue):
55
def __init__(self, name):
66
"""
77

office365/graph/directory/identity.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
from office365.runtime.client_value_object import ClientValueObject
1+
from office365.runtime.clientValue import ClientValue
22

33

4-
class Identity(ClientValueObject):
4+
class Identity(ClientValue):
55
"""The Identity resource represents an identity of an actor. For example, an actor can be a user, device,
66
or application. """
77

office365/graph/directory/identitySet.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
from office365.graph.directory.identity import Identity
2-
from office365.runtime.client_value_object import ClientValueObject
2+
from office365.runtime.clientValue import ClientValue
33

44

5-
class IdentitySet(ClientValueObject):
5+
class IdentitySet(ClientValue):
66
"""The IdentitySet resource is a keyed collection of identity resources. It is used to represent a set of
77
identities associated with various events for an item, such as created by or last modified by. """
88

office365/graph/directory/passwordProfile.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
from office365.runtime.client_value_object import ClientValueObject
1+
from office365.runtime.clientValue import ClientValue
22

33

4-
class PasswordProfile(ClientValueObject):
4+
class PasswordProfile(ClientValue):
55
"""Contains the password profile associated with a user. The passwordProfile property of the user entity is a
66
passwordProfile object. """
77
def __init__(self, password):

office365/graph/directory/user.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
from office365.outlookservices.event_collection import EventCollection
77
from office365.outlookservices.messageCollection import MessageCollection
88
from office365.runtime.resource_path import ResourcePath
9-
from office365.runtime.serviceOperationQuery import ServiceOperationQuery
9+
from office365.runtime.queries.serviceOperationQuery import ServiceOperationQuery
1010

1111

1212
class User(DirectoryObject):

office365/graph/directory/userProfile.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
from office365.graph.directory.passwordProfile import PasswordProfile
2-
from office365.runtime.client_value_object import ClientValueObject
2+
from office365.runtime.clientValue import ClientValue
33

44

5-
class UserProfile(ClientValueObject):
5+
class UserProfile(ClientValue):
66
def __init__(self, principal_name, password, display_name=None, account_enabled=False):
77
"""
88
User profile

office365/graph/one_drive_actions.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
from office365.runtime.client_result import ClientResult
33
from office365.runtime.client_object import ClientObject
44
from office365.graph.resource_path_url import ResourcePathUrl
5-
from office365.runtime.serviceOperationQuery import ServiceOperationQuery
5+
from office365.runtime.queries.serviceOperationQuery import ServiceOperationQuery
66

77

88
class DownloadContentQuery(ServiceOperationQuery):

office365/graph/onedrive/driveItem.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
from office365.runtime.resource_path import ResourcePath
1111
from office365.graph.base_item import BaseItem
1212
from office365.graph.onedrive.listItem import ListItem
13-
from office365.runtime.serviceOperationQuery import ServiceOperationQuery
13+
from office365.runtime.queries.serviceOperationQuery import ServiceOperationQuery
1414
from office365.graph.onedrive.itemReference import ItemReference
1515

1616

office365/graph/onedrive/driveItemUploadableProperties.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
from office365.runtime.client_value_object import ClientValueObject
1+
from office365.runtime.clientValue import ClientValue
22

33

4-
class DriveItemUploadableProperties(ClientValueObject):
4+
class DriveItemUploadableProperties(ClientValue):
55
"""The driveItemUploadableProperties resource represents an item being uploaded when creating an upload session."""
66

77
def __init__(self):

office365/graph/onedrive/driveRecipient.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
from office365.runtime.client_value_object import ClientValueObject
1+
from office365.runtime.clientValue import ClientValue
22

33

4-
class DriveRecipient(ClientValueObject):
4+
class DriveRecipient(ClientValue):
55

66
def __init__(self):
77
super(DriveRecipient, self).__init__()

office365/graph/onedrive/file.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
from office365.runtime.client_value_object import ClientValueObject
1+
from office365.runtime.clientValue import ClientValue
22

33

4-
class File(ClientValueObject):
4+
class File(ClientValue):
55

66
def __init__(self):
77
super(File, self).__init__()

office365/graph/onedrive/fileSystemInfo.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
from office365.runtime.client_value_object import ClientValueObject
1+
from office365.runtime.clientValue import ClientValue
22

33

4-
class FileSystemInfo(ClientValueObject):
4+
class FileSystemInfo(ClientValue):
55
"""The FileSystemInfo resource contains properties that are reported by the device's local file system for the
66
local version of an item. """
77

office365/graph/onedrive/folder.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
from office365.runtime.client_value_object import ClientValueObject
1+
from office365.runtime.clientValue import ClientValue
22

33

4-
class Folder(ClientValueObject):
4+
class Folder(ClientValue):
55

66
def __init__(self):
77
super(Folder, self).__init__()
+2-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
from office365.runtime.client_value_object import ClientValueObject
1+
from office365.runtime.clientValue import ClientValue
22

33

4-
class ItemReference(ClientValueObject):
4+
class ItemReference(ClientValue):
55
"""The ItemReference resource provides information necessary to address a DriveItem via the API."""

office365/graph/onedrive/photo.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
from office365.runtime.client_value_object import ClientValueObject
1+
from office365.runtime.clientValue import ClientValue
22

33

4-
class Photo(ClientValueObject):
4+
class Photo(ClientValue):
55
"""The photo resource provides photo and camera properties, for example, EXIF metadata, on a driveItem."""
66
pass

office365/graph/onedrive/root.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
from office365.runtime.client_value_object import ClientValueObject
1+
from office365.runtime.clientValue import ClientValue
22

33

4-
class Root(ClientValueObject):
4+
class Root(ClientValue):
55
"""Root container """
+2-2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
from office365.runtime.client_value_object import ClientValueObject
1+
from office365.runtime.clientValue import ClientValue
22

33

4-
class SharePointIds(ClientValueObject):
4+
class SharePointIds(ClientValue):
55
"""The SharePointIds resource groups the various identifiers for an item stored in a SharePoint site or OneDrive
66
for Business into a single structure. """

office365/graph/onedrive/siteCollectionType.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
from office365.runtime.client_value_object import ClientValueObject
1+
from office365.runtime.clientValue import ClientValue
22

33

4-
class SiteCollectionType(ClientValueObject):
4+
class SiteCollectionType(ClientValue):
55
"""The siteCollection resource provides more information about a site collection. """
66

77
def __init__(self):

office365/graph/onedrive/uploadSession.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
from office365.runtime.client_value_object import ClientValueObject
1+
from office365.runtime.clientValue import ClientValue
22

33

4-
class UploadSession(ClientValueObject):
4+
class UploadSession(ClientValue):
55
"""The UploadSession resource provides information about how to upload large files to OneDrive, OneDrive for
66
Business, or SharePoint document libraries. """
77

office365/graph/onedrive/video.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
from office365.runtime.client_value_object import ClientValueObject
1+
from office365.runtime.clientValue import ClientValue
22

33

4-
class Video(ClientValueObject):
4+
class Video(ClientValue):
55
"""The Video resource groups video-related data items into a single structure."""
66
pass

office365/graph/teams/team.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
from office365.graph.entity import Entity
22
from office365.runtime.client_query import UpdateEntityQuery
33
from office365.runtime.resource_path import ResourcePath
4-
from office365.runtime.serviceOperationQuery import ServiceOperationQuery
4+
from office365.runtime.queries.serviceOperationQuery import ServiceOperationQuery
55
from office365.graph.teams.channel import Channel
66
from office365.graph.teams.channelCollection import ChannelCollection
77
from office365.graph.teams.teamFunSettings import TeamFunSettings

office365/graph/teams/teamFunSettings.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
from office365.runtime.client_value_object import ClientValueObject
1+
from office365.runtime.clientValue import ClientValue
22

33

4-
class TeamFunSettings(ClientValueObject):
4+
class TeamFunSettings(ClientValue):
55
"""Settings to configure use of Giphy, memes, and stickers in the team."""
66

77
def __init__(self):
+2-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
from office365.runtime.client_value_object import ClientValueObject
1+
from office365.runtime.clientValue import ClientValue
22

33

4-
class TeamGuestSettings(ClientValueObject):
4+
class TeamGuestSettings(ClientValue):
55

66
def __init__(self):
77
super().__init__()

office365/graph/teams/teamMemberSettings.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
from office365.runtime.client_value_object import ClientValueObject
1+
from office365.runtime.clientValue import ClientValue
22

33

4-
class TeamMemberSettings(ClientValueObject):
4+
class TeamMemberSettings(ClientValue):
55
"""Settings to configure whether members can perform certain actions, for example, create channels and add bots,
66
in the team. """
77

office365/graph/teams/teamMessagingSettings.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
from office365.runtime.client_value_object import ClientValueObject
1+
from office365.runtime.clientValue import ClientValue
22

33

4-
class TeamMessagingSettings(ClientValueObject):
4+
class TeamMessagingSettings(ClientValue):
55

66
def __init__(self):
77
super().__init__()

office365/outlookservices/message.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
from office365.outlookservices.item import Item
2-
from office365.runtime.serviceOperationQuery import ServiceOperationQuery
2+
from office365.runtime.queries.serviceOperationQuery import ServiceOperationQuery
33

44

55
class Message(Item):

office365/runtime/client_value_object.py renamed to office365/runtime/clientValue.py

+7-4
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,16 @@
1-
class ClientValueObject(object):
2-
"""Base client value object"""
1+
class ClientValue(object):
2+
"""Represent complex type.
3+
Complex types consist of a list of properties with no key, and can therefore only exist as properties of a
4+
containing entity or as a temporary value
5+
"""
36

47
def __init__(self):
5-
super(ClientValueObject, self).__init__()
8+
super(ClientValue, self).__init__()
69

710
def set_property(self, k, v, persist_changes=True):
811
if hasattr(self, k):
912
prop_type = getattr(self, k)
10-
if isinstance(prop_type, ClientValueObject):
13+
if isinstance(prop_type, ClientValue):
1114
[prop_type.set_property(k, v, persist_changes) for k, v in v.items()]
1215
setattr(self, k, prop_type)
1316
else:
+15
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
from office365.runtime.clientValue import ClientValue
2+
3+
4+
class ClientValueCollection(ClientValue):
5+
6+
def __init__(self):
7+
super().__init__()
8+
self._data = []
9+
10+
def add(self, value):
11+
self._data.append(value)
12+
13+
def __iter__(self):
14+
for item in self._data:
15+
yield item

0 commit comments

Comments
 (0)