Skip to content

Commit 671e177

Browse files
committed
#787: expose file_name parameter for copyto and copyto_using_path methods
1 parent b2139c8 commit 671e177

File tree

6 files changed

+31
-10
lines changed

6 files changed

+31
-10
lines changed
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
"""
2+
Demonstrates how to copy a file within a site
3+
"""
4+
from office365.sharepoint.client_context import ClientContext
5+
from tests import test_team_site_url, test_user_credentials
6+
7+
ctx = ClientContext(test_team_site_url).with_credentials(test_user_credentials)
8+
9+
file_from = ctx.web.get_file_by_server_relative_url(
10+
"Shared Documents/Financial Sample.xlsx"
11+
)
12+
folder_to_url = "Shared Documents/archive"
13+
new_filename = "Financial 2023.xlsx"
14+
file_to = file_from.copyto(folder_to_url, True, new_filename).execute_query()
15+
print("File copied into '{0}'".format(file_to.serverRelativeUrl))

examples/sharepoint/folders/copy_folder_using_path.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,8 @@
1111
folder_from = ctx.web.default_document_library().root_folder.add(
1212
create_unique_name("from")
1313
)
14+
15+
1416
# folder_to = ctx.web.default_document_library().root_folder.add(create_unique_name("to"))
1517
folder_to_url = "Shared Documents/Archive/2001/01"
1618

examples/sharepoint/sharing/share_folder.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,4 +12,4 @@
1212
shared_folder = ctx.web.get_folder_by_guest_url(
1313
result.value.sharingLinkInfo.Url
1414
).execute_query()
15-
print(shared_folder.unique_id)
15+
print(shared_folder)

office365/sharepoint/files/file.py

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ def __repr__(self):
6565
return self.serverRelativeUrl or self.unique_id or self.entity_type_name
6666

6767
def __str__(self):
68-
return self.name
68+
return self.name or self.entity_type_name
6969

7070
@staticmethod
7171
def from_url(abs_url):
@@ -254,20 +254,23 @@ def deny(self, comment):
254254
self.context.add_query(qry)
255255
return self
256256

257-
def copyto(self, destination, overwrite=False):
258-
# type: (Folder|str, bool) -> File
257+
def copyto(self, destination, overwrite=False, file_name=None):
258+
# type: (Folder|str, bool, str) -> "File"
259259
"""Copies the file to the destination URL.
260260
261261
:param office365.sharepoint.folders.folder.Folder or str destination: Specifies the destination folder or
262262
folder server relative url where to copy a file.
263263
:param bool overwrite: Specifies whether a file with the same name is overwritten.
264+
:param str file_name: A new file name
264265
"""
265266
return_type = File(self.context)
266267
self.parent_collection.add_child(return_type)
267268

268269
def _copyto(destination_folder):
269270
# type: (Folder) -> None
270-
file_path = "/".join([str(destination_folder.serverRelativeUrl), self.name])
271+
file_path = "/".join(
272+
[str(destination_folder.serverRelativeUrl), file_name or self.name]
273+
)
271274
return_type.set_property("ServerRelativeUrl", file_path)
272275

273276
params = {"strNewUrl": file_path, "boverwrite": overwrite}
@@ -283,14 +286,15 @@ def _source_file_resolved():
283286
self.ensure_properties(["ServerRelativeUrl", "Name"], _source_file_resolved)
284287
return return_type
285288

286-
def copyto_using_path(self, destination, overwrite=False):
289+
def copyto_using_path(self, destination, overwrite=False, file_name=None):
287290
"""
288291
Copies the file to the destination path. Server MUST overwrite an existing file of the same name
289292
if overwrite is true.
290293
291294
:param bool overwrite: Specifies whether a file with the same name is overwritten.
292295
:param office365.sharepoint.folders.folder.Folder or str destination: Specifies the destination folder or
293296
folder server relative url where to copy a file.
297+
:param str file_name: New file name
294298
"""
295299

296300
return_type = File(self.context)
@@ -299,7 +303,7 @@ def copyto_using_path(self, destination, overwrite=False):
299303
def _copyto_using_path(destination_folder):
300304
# type: (Folder) -> None
301305
file_path = "/".join(
302-
[str(destination_folder.server_relative_path), self.name]
306+
[str(destination_folder.server_relative_path), file_name or self.name]
303307
)
304308
return_type.set_property("ServerRelativePath", file_path)
305309

office365/sharepoint/webs/web.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1204,7 +1204,7 @@ def get_folder_by_guest_url(self, guest_url):
12041204
12051205
:param str guest_url: The tokenized sharing link URL for the folder.
12061206
"""
1207-
return_type = Folder(self.context)
1207+
return_type = Folder(self.context, parent_collection=self.folders)
12081208
payload = {"guestUrl": guest_url}
12091209
qry = ServiceOperationQuery(
12101210
self, "GetFolderByGuestUrl", None, payload, None, return_type
@@ -1228,7 +1228,7 @@ def get_folder_by_guest_url_extended(
12281228
:param bool ensure_access: Indicates if the request to the tokenized sharing link grants perpetual access to
12291229
the calling user.
12301230
"""
1231-
return_type = Folder(self.context)
1231+
return_type = Folder(self.context, parent_collection=self.folders)
12321232
payload = {
12331233
"guestUrl": guest_url,
12341234
"requestSettings": SharingLinkAccessRequest(ensure_access, password),

tests/sharepoint/test_roles.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
class TestRoles(SPTestCase):
88
target_object = None # type: RoleDefinition
9-
role_name = "Create and Manage Alerts 12"
9+
role_name = "Create and Manage Alerts 123"
1010

1111
def test1_create_role(self):
1212
permissions = BasePermissions()

0 commit comments

Comments
 (0)