def delete_list_item(web_url, ctx_auth, list_title, item_id): """Delete list item example""" request = ClientRequest(web_url, ctx_auth) request_url = "{0}/_api/web/lists/getbyTitle('{1}')/items({2})".format( web_url, list_title, item_id) print "Deleting list item..." headers = {'IF-MATCH': '*', 'X-HTTP-Method': 'DELETE'} request.execute_query_direct(request_url=request_url, headers=headers) print "Task has been successfully [deleted]"
def update_list_item(web_url, ctx_auth, list_title, item_id): """Update list item example""" request = ClientRequest(web_url, ctx_auth) request_url = "{0}/_api/web/lists/getbyTitle('{1}')/items({2})".format(web_url, list_title, item_id) print("Updating list item...") item_payload = {'__metadata': {'type': 'SP.Data.TasksListItem'}, 'Title': 'New Task (updated)'} headers = { 'IF-MATCH': '*', 'X-HTTP-Method': 'MERGE' } request.execute_query_direct(request_url=request_url, headers=headers, data=item_payload) print("Task has been successfully [updated]")
def read_list_items(web_url, ctx_auth, list_title): """Read list items example""" request = ClientRequest(web_url, ctx_auth) request_url = "{0}/_api/web/lists/getbyTitle('{1}')/items".format(web_url, list_title) # Web resource endpoint print("Retrieving list items from List {0}".format(list_title)) data = request.execute_query_direct(request_url=request_url) for item in data['d']['results']: print("Item title: {0}".format(item["Title"]))
def create_list_item(web_url, ctx_auth, list_title): """Create list item example""" request = ClientRequest(web_url, ctx_auth) request_url = "{0}/_api/web/lists/getbyTitle('{1}')/items".format(web_url, list_title) # Web resource endpoint print("Creating list item...") item_payload = {'__metadata': {'type': 'SP.Data.TasksListItem'}, 'Title': 'New Task'} data = request.execute_query_direct(request_url=request_url, data=item_payload) print("Task {0} has been successfully [created]".format(data['d']['Title'])) return data['d']
def handle(self): email, password = self.email, self.password authentication_context = AuthenticationContext(settings.SHAREPOINT_URL) authentication_context.acquire_token_for_user(email, password) if not authentication_context.get_last_error(): request = ClientRequest(authentication_context) os.makedirs(settings.BIOS_ROOT, exist_ok=True) for bio in self._get_bios_list( authentication_context, settings.BIOS_URL ): if not 'template' in bio.lower(): options = RequestOptions( '{0}mexico/Shared Documents/Resumes/{1}'.format( settings.SHAREPOINT_URL, bio ) ) options.set_header('Accept', 'application/json') options.set_header('Content-Type', 'application/json') data = request.execute_query_direct(options) docx = open('{0}/{1}'.format( settings.BIOS_ROOT, bio.replace( "a%C3%A1", "á" ).replace( "e%CC%81", "é" ).replace( "i%C3%AD", "í" ).replace( "o%C3%B3", "ó" ).replace( "u%C3%BA", "ú" ).replace( "%C3%91", "Ñ" ).replace( "A%C3%81", "Á" ).replace( "E%C3%89", "É" ).replace( "I%C3%8D", "Í" ).replace( "O%C3%93", "Ó" ).replace( "U%C3%9A", "Ú" ) ), "wb") docx.write(data.content) docx.close() else: self.error = authentication_context.get_last_error()
def _get_bios_list(self, authentication_context, url, first_last=None): request = ClientRequest(authentication_context) options = RequestOptions(url) options.set_header('Accept', 'application/json') options.set_header('Content-Type', 'application/json') data = request.execute_query_direct(options) resumes = set() last = '' lasts = [] for count, part in enumerate(list(str(data.content).split('.docx'))[:-1]): if 'bio' in part.lower(): try: last = part.rsplit('file=')[1] + '.docx' lasts.append(last) last = ( last ).replace( '%20', ' ' ).replace( '%C3%B1', 'ñ' ) resumes.add(last) except: pass if self.global_last: try: while self.global_last == lasts.pop(): pass except: return set() last = self.global_last = lasts.pop() else: self.global_last = lasts.pop() url = '{0}{1}{2}{3}'.format( settings.SHAREPOINT_URL, settings.SHAREPOINT_PREFIX, self.global_last, settings.SHAREPOINT_SUFFIX ) return resumes.union( self._get_bios_list(authentication_context, url, last) )
from office365.runtime.auth.authentication_context import AuthenticationContext from office365.runtime.client_request import ClientRequest from office365.runtime.utilities.request_options import RequestOptions from settings import settings import json if __name__ == '__main__': context_auth = AuthenticationContext(url=settings['url']) if context_auth.acquire_token_for_user(username=settings['username'], password=settings['password']): """Read Web client object""" request = ClientRequest(settings['url'], context_auth) options = RequestOptions("{0}/_api/web/".format(settings['url'])) options.set_header('Accept', 'application/json') options.set_header('Content-Type', 'application/json') data = request.execute_query_direct(options) s = json.loads(data.content) web_title = s['Title'] print "Web title: " + web_title else: print context_auth.get_last_error()