269 lines
No EOL
8.4 KiB
Python
269 lines
No EOL
8.4 KiB
Python
"""
|
|
SharePoint method module.
|
|
Handles SharePoint operations using the SharePoint service.
|
|
"""
|
|
|
|
import logging
|
|
from typing import Dict, Any, List, Optional
|
|
from datetime import datetime
|
|
|
|
from modules.interfaces.interfaceSharepoint import SharepointService
|
|
from modules.methods.methodBase import MethodBase, MethodResult, action
|
|
|
|
logger = logging.getLogger(__name__)
|
|
|
|
class MethodSharepoint(MethodBase):
|
|
"""SharePoint method implementation"""
|
|
|
|
def __init__(self, serviceContainer):
|
|
"""Initialize the SharePoint method"""
|
|
super().__init__(serviceContainer)
|
|
self.sharepointService = SharepointService(serviceContainer)
|
|
|
|
@action
|
|
async def search(self, parameters: Dict[str, Any], authData: Optional[Dict[str, Any]] = None) -> MethodResult:
|
|
"""
|
|
Search SharePoint content
|
|
|
|
Args:
|
|
parameters:
|
|
query: Search query
|
|
siteId: Site ID to search in
|
|
contentType: Content type to search for
|
|
maxResults: Maximum number of results
|
|
"""
|
|
try:
|
|
query = parameters["query"]
|
|
siteId = parameters.get("siteId")
|
|
contentType = parameters.get("contentType")
|
|
maxResults = parameters.get("maxResults", 10)
|
|
|
|
# Search content
|
|
results = await self.sharepointService.searchContent(
|
|
query=query,
|
|
siteId=siteId,
|
|
contentType=contentType,
|
|
maxResults=maxResults
|
|
)
|
|
|
|
return self._createResult(
|
|
success=True,
|
|
data={
|
|
"query": query,
|
|
"siteId": siteId,
|
|
"contentType": contentType,
|
|
"results": results
|
|
}
|
|
)
|
|
|
|
except Exception as e:
|
|
logger.error(f"Error searching SharePoint: {str(e)}")
|
|
return self._createResult(
|
|
success=False,
|
|
data={"error": str(e)}
|
|
)
|
|
|
|
@action
|
|
async def read(self, parameters: Dict[str, Any], authData: Optional[Dict[str, Any]] = None) -> MethodResult:
|
|
"""
|
|
Read SharePoint item
|
|
|
|
Args:
|
|
parameters:
|
|
itemId: ID of the item to read
|
|
siteId: Site ID containing the item
|
|
listId: List ID containing the item
|
|
"""
|
|
try:
|
|
itemId = parameters["itemId"]
|
|
siteId = parameters.get("siteId")
|
|
listId = parameters.get("listId")
|
|
|
|
# Read item
|
|
item = await self.sharepointService.readItem(
|
|
itemId=itemId,
|
|
siteId=siteId,
|
|
listId=listId
|
|
)
|
|
|
|
return self._createResult(
|
|
success=True,
|
|
data={
|
|
"itemId": itemId,
|
|
"siteId": siteId,
|
|
"listId": listId,
|
|
"item": item
|
|
}
|
|
)
|
|
|
|
except Exception as e:
|
|
logger.error(f"Error reading SharePoint item: {str(e)}")
|
|
return self._createResult(
|
|
success=False,
|
|
data={"error": str(e)}
|
|
)
|
|
|
|
@action
|
|
async def write(self, parameters: Dict[str, Any], authData: Optional[Dict[str, Any]] = None) -> MethodResult:
|
|
"""
|
|
Write SharePoint item
|
|
|
|
Args:
|
|
parameters:
|
|
siteId: Site ID to write to
|
|
listId: List ID to write to
|
|
item: Item data to write
|
|
"""
|
|
try:
|
|
siteId = parameters["siteId"]
|
|
listId = parameters["listId"]
|
|
item = parameters["item"]
|
|
|
|
# Write item
|
|
itemId = await self.sharepointService.writeItem(
|
|
siteId=siteId,
|
|
listId=listId,
|
|
item=item
|
|
)
|
|
|
|
return self._createResult(
|
|
success=True,
|
|
data={
|
|
"siteId": siteId,
|
|
"listId": listId,
|
|
"itemId": itemId
|
|
}
|
|
)
|
|
|
|
except Exception as e:
|
|
logger.error(f"Error writing SharePoint item: {str(e)}")
|
|
return self._createResult(
|
|
success=False,
|
|
data={"error": str(e)}
|
|
)
|
|
|
|
@action
|
|
async def readList(self, parameters: Dict[str, Any], authData: Optional[Dict[str, Any]] = None) -> MethodResult:
|
|
"""
|
|
Read SharePoint list
|
|
|
|
Args:
|
|
parameters:
|
|
listId: ID of the list to read
|
|
siteId: Site ID containing the list
|
|
query: Query to filter items
|
|
maxResults: Maximum number of results
|
|
"""
|
|
try:
|
|
listId = parameters["listId"]
|
|
siteId = parameters.get("siteId")
|
|
query = parameters.get("query")
|
|
maxResults = parameters.get("maxResults", 100)
|
|
|
|
# Read list
|
|
items = await self.sharepointService.readList(
|
|
listId=listId,
|
|
siteId=siteId,
|
|
query=query,
|
|
maxResults=maxResults
|
|
)
|
|
|
|
return self._createResult(
|
|
success=True,
|
|
data={
|
|
"listId": listId,
|
|
"siteId": siteId,
|
|
"items": items
|
|
}
|
|
)
|
|
|
|
except Exception as e:
|
|
logger.error(f"Error reading SharePoint list: {str(e)}")
|
|
return self._createResult(
|
|
success=False,
|
|
data={"error": str(e)}
|
|
)
|
|
|
|
@action
|
|
async def writeList(self, parameters: Dict[str, Any], authData: Optional[Dict[str, Any]] = None) -> MethodResult:
|
|
"""
|
|
Write multiple items to SharePoint list
|
|
|
|
Args:
|
|
parameters:
|
|
siteId: Site ID to write to
|
|
listId: List ID to write to
|
|
items: List of item data to write
|
|
"""
|
|
try:
|
|
siteId = parameters["siteId"]
|
|
listId = parameters["listId"]
|
|
items = parameters["items"]
|
|
|
|
# Write items
|
|
itemIds = await self.sharepointService.writeList(
|
|
siteId=siteId,
|
|
listId=listId,
|
|
items=items
|
|
)
|
|
|
|
return self._createResult(
|
|
success=True,
|
|
data={
|
|
"siteId": siteId,
|
|
"listId": listId,
|
|
"itemIds": itemIds
|
|
}
|
|
)
|
|
|
|
except Exception as e:
|
|
logger.error(f"Error writing SharePoint list: {str(e)}")
|
|
return self._createResult(
|
|
success=False,
|
|
data={"error": str(e)}
|
|
)
|
|
|
|
@action
|
|
async def createList(self, parameters: Dict[str, Any], authData: Optional[Dict[str, Any]] = None) -> MethodResult:
|
|
"""
|
|
Create SharePoint list
|
|
|
|
Args:
|
|
parameters:
|
|
siteId: Site ID to create list in
|
|
name: Name of the list
|
|
description: List description
|
|
template: List template
|
|
fields: List field definitions
|
|
"""
|
|
try:
|
|
siteId = parameters["siteId"]
|
|
name = parameters["name"]
|
|
description = parameters.get("description")
|
|
template = parameters.get("template", "genericList")
|
|
fields = parameters.get("fields", [])
|
|
|
|
# Create list
|
|
listId = await self.sharepointService.createList(
|
|
siteId=siteId,
|
|
name=name,
|
|
description=description,
|
|
template=template,
|
|
fields=fields
|
|
)
|
|
|
|
return self._createResult(
|
|
success=True,
|
|
data={
|
|
"siteId": siteId,
|
|
"listId": listId,
|
|
"name": name
|
|
}
|
|
)
|
|
|
|
except Exception as e:
|
|
logger.error(f"Error creating SharePoint list: {str(e)}")
|
|
return self._createResult(
|
|
success=False,
|
|
data={"error": str(e)}
|
|
) |