Skip to content

Commit 0b5bf48

Browse files
committed
bump version to 0.1.4 and enhance folder creation method in SharePoint service
1 parent 3bd022d commit 0b5bf48

File tree

2 files changed

+33
-14
lines changed

2 files changed

+33
-14
lines changed

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[project]
22
name = "office365-service"
3-
version = "0.1.3"
3+
version = "0.1.4"
44
description = "Add your description here"
55
readme = "README.md"
66
authors = [

src/office365_service/sharepoint_service.py

Lines changed: 32 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -140,24 +140,44 @@ def listar_pastas(self, pasta_pai: Folder | str):
140140
return folders
141141

142142
@handle_sharepoint_errors()
143-
def criar_pasta(self, pasta_pai: Folder | str, nome_nova_pasta: str):
144-
"""Cria uma nova pasta se ela ainda não existir."""
143+
def criar_pasta(self, pasta_pai: Folder | str, nome_pasta: str):
144+
"""
145+
Cria uma nova pasta no Sharepoint, suportando criação de subpastas com "/"
146+
147+
Args:
148+
pasta_pai: Caminho ou objeto Folder onde a nova pasta será criada
149+
nome_pasta: Nome da nova pasta a ser criada, pode incluir "/" para criar subpastas
150+
151+
Returns:
152+
O objeto da pasta criada
153+
154+
Raises:
155+
Exception: Se a pasta pai não for encontrada
156+
"""
145157
if isinstance(pasta_pai, str):
146158
pasta = self.obter_pasta(pasta_pai)
147159
if pasta is None:
148-
raise FileNotFoundError(f"A pasta pai '{pasta_pai}' não foi encontrada.")
160+
raise Exception(f"Pasta {pasta_pai} não encontrada")
149161
pasta_pai = pasta
150162

151-
# Verifica se a pasta já existe para evitar erro
152-
pastas_existentes = self.listar_pastas(pasta_pai)
153-
for p in pastas_existentes:
154-
if p.name == nome_nova_pasta:
155-
print(f"Pasta '{nome_nova_pasta}' já existe.")
156-
return p
163+
if "/" in nome_pasta:
164+
path_parts = nome_pasta.split("/")
165+
current_folder = pasta_pai
157166

158-
print(f"Criando pasta '{nome_nova_pasta}'...")
159-
nova_pasta = pasta_pai.folders.add(nome_nova_pasta).execute_query()
160-
return nova_pasta
167+
for part in path_parts:
168+
if part:
169+
current_folder = self.criar_pasta(current_folder, part)
170+
171+
return current_folder
172+
else:
173+
subpastas = self.listar_pastas(pasta_pai)
174+
pasta = next((subpasta for subpasta in subpastas if nome_pasta in str(subpasta.name)), None)
175+
if pasta is not None:
176+
return pasta
177+
print("Criando pasta {0}...".format(nome_pasta))
178+
pasta = pasta_pai.folders.add(nome_pasta)
179+
pasta.execute_query()
180+
return pasta
161181

162182
@handle_sharepoint_errors()
163183
def baixar_arquivo(self, arquivo_sp: File | str, caminho_download: str):
@@ -207,7 +227,6 @@ def mover_arquivo(self, arquivo_origem: File, pasta_destino: Folder | str):
207227

208228
return novo_arquivo
209229

210-
211230
@handle_sharepoint_errors()
212231
def copiar_arquivo(self, arquivo_origem: File, pasta_destino: Folder | str):
213232
"""Copia um arquivo para outra pasta."""

0 commit comments

Comments
 (0)