def delete_all_notes_for_user(user): """ helper method to delete all notes for a user, as part of GDPR compliance :param user: The user object associated with the deleted notes :return: response (requests) object Raises: EdxNotesServiceUnavailable - when notes api is not found/misconfigured. """ url = get_internal_endpoint('retire_annotations') headers = { "x-annotator-auth-token": get_edxnotes_id_token(user), } data = { "user": anonymous_id_for_user(user, None) } try: response = requests.post( url=url, headers=headers, data=data, timeout=(settings.EDXNOTES_CONNECT_TIMEOUT, settings.EDXNOTES_READ_TIMEOUT) ) except RequestException: log.error(u"Failed to connect to edx-notes-api: url=%s, params=%s", url, str(headers)) raise EdxNotesServiceUnavailable(_("EdxNotes Service is unavailable. Please try again in a few minutes.")) return response
def send_request(user, course_id, page, page_size, path="", text=None): """ Sends a request to notes api with appropriate parameters and headers. Arguments: user: Current logged in user course_id: Course id page: requested or default page number page_size: requested or default page size path: `search` or `annotations`. This is used to calculate notes api endpoint. text: text to search. Returns: Response received from notes api """ url = get_internal_endpoint(path) params = { "user": anonymous_id_for_user(user, None), "course_id": six.text_type(course_id), "page": page, "page_size": page_size, } if text: params.update({ "text": text, "highlight": True }) try: response = requests.get( url, headers={ "x-annotator-auth-token": get_edxnotes_id_token(user) }, params=params, timeout=(settings.EDXNOTES_CONNECT_TIMEOUT, settings.EDXNOTES_READ_TIMEOUT) ) except RequestException: log.error(u"Failed to connect to edx-notes-api: url=%s, params=%s", url, str(params)) raise EdxNotesServiceUnavailable(_("EdxNotes Service is unavailable. Please try again in a few minutes.")) return response