110 lines
3.9 KiB
Python
110 lines
3.9 KiB
Python
import requests
|
|
import os
|
|
import msal
|
|
from office365.sharepoint.client_context import ClientContext
|
|
from office365.runtime.auth.user_credential import UserCredential
|
|
from office365.runtime.auth.client_credential import ClientCredential
|
|
|
|
|
|
|
|
class SharepointManager:
|
|
def __init__(self, site, userSharepoint, passwordSharepoint):#,client_id,tenant_id,client_secret):
|
|
self.site = site
|
|
self.userSharepoint = userSharepoint
|
|
self.passwordSharepoint = passwordSharepoint
|
|
#self.client_id = client_id
|
|
#self.tenant_id = tenant_id
|
|
#self.client_secret = client_secret
|
|
|
|
#print(self.client_secret)
|
|
|
|
|
|
def uploadFile2(self, task, sharepoint_path):
|
|
self._connect2()
|
|
file_name = os.path.basename(task.docsend_Path)
|
|
|
|
with open(task.docsend_Path, "rb") as file_content:
|
|
folder = self.ctx.web.get_folder_by_server_relative_url(sharepoint_path)
|
|
upload = folder.upload_file(file_name, file_content.read()) # solo prepara la query
|
|
self.ctx.execute_query() # ejecuta en el contexto
|
|
print(f"✅ Archivo {file_name} subido a {upload.serverRelativeUrl}")
|
|
|
|
self._disconnect()
|
|
|
|
def _connect2(self):
|
|
#"""Conexión a SharePoint con access_token"""
|
|
#token = self._get_token()
|
|
#self.ctx = ClientContext(self.site).with_access_token(token)
|
|
#self.ctx.load(self.ctx.web)
|
|
#self.ctx.execute_query()
|
|
|
|
self.ctx = ClientContext(self.site).with_credentials(ClientCredential(self.client_id, self.client_secret))
|
|
self.ctx.load(self.ctx.web)
|
|
self.ctx.execute_query()
|
|
|
|
|
|
def _connect(self):
|
|
# 👇 Nada de AuthenticationContext aquí
|
|
self.ctx = ClientContext(self.site).with_credentials(
|
|
UserCredential(self.userSharepoint, self.passwordSharepoint)
|
|
)
|
|
self.ctx.load(self.ctx.web)
|
|
self.ctx.execute_query()
|
|
|
|
def _disconnect(self):
|
|
self.ctx = None
|
|
|
|
def uploadFile(self, task, sharepoint_path):
|
|
self._connect()
|
|
file_name = os.path.basename(task.docsend_Path)
|
|
with open(task.docsend_Path, "rb") as file_content:
|
|
response = (
|
|
self.ctx.web.get_folder_by_server_relative_url(sharepoint_path)
|
|
.upload_file(file_name, file_content.read())
|
|
.execute_query()
|
|
)
|
|
print(f"Archivo {file_name} subido a {response.serverRelativeUrl}")
|
|
self._disconnect()
|
|
|
|
|
|
def uploadFile2(self, task, sharepoint_path):
|
|
"""Subida con MSAL (App Registration)"""
|
|
self._connect2()
|
|
file_name = os.path.basename(task.docsend_Path)
|
|
|
|
with open(task.docsend_Path, "rb") as file_content:
|
|
folder = self.ctx.web.get_folder_by_server_relative_url(sharepoint_path)
|
|
upload = folder.upload_file(file_name, file_content.read())
|
|
self.ctx.execute_query()
|
|
print(f"✅ Archivo {file_name} subido a {upload.serverRelativeUrl}")
|
|
|
|
self._disconnect()
|
|
|
|
def uploadFileTemp(self, task, data):
|
|
self._connect()
|
|
file_name = os.path.basename(task.docsend_Path)
|
|
with open(task.docsend_Path, "rb") as file_content:
|
|
response = (
|
|
self.ctx.web.get_folder_by_server_relative_url(data[6])
|
|
.upload_file(file_name, file_content.read())
|
|
.execute_query()
|
|
)
|
|
print(f"Archivo {file_name} subido a {response.serverRelativeUrl}")
|
|
self._disconnect()
|
|
|
|
def dropFilesFolder(self, data):
|
|
self._connect()
|
|
folder = (
|
|
self.ctx.web.get_folder_by_server_relative_url(data[6])
|
|
.expand(["Files"])
|
|
.get()
|
|
.execute_query()
|
|
)
|
|
for file in folder.files:
|
|
print(f"Eliminando archivo: {file.name}")
|
|
file.delete_object()
|
|
self.ctx.execute_query()
|
|
self._disconnect()
|
|
|
|
|