def delete_sheet_api(request, sheet_id): """ Deletes sheet with id, only if the requester is the sheet owner. """ import sefaria.search as search id = int(sheet_id) sheet = db.sheets.find_one({"id": id}) if not sheet: return jsonResponse({"error": "Sheet %d not found." % id}) if request.user.id != sheet["owner"]: return jsonResponse( {"error": "Only the sheet owner may delete a sheet."}) db.sheets.remove({"id": id}) try: es_index_name = search.get_new_and_current_index_names( "sheet")['current'] search.delete_sheet(es_index_name, id) except NewConnectionError as e: logger.warn( "Failed to connect to elastic search server on sheet delete.") return jsonResponse({"status": "ok"})
def delete_sheet_api(request, sheet_id): """ Deletes sheet with id, only if the requester is the sheet owner. """ import sefaria.search as search id = int(sheet_id) sheet = db.sheets.find_one({"id": id}) if not sheet: return jsonResponse({"error": "Sheet %d not found." % id}) if not request.user.is_authenticated: key = request.POST.get("apikey") if not key: return jsonResponse({ "error": "You must be logged in or use an API key to delete a sheet." }) apikey = db.apikeys.find_one({"key": key}) if not apikey: return jsonResponse({"error": "Unrecognized API key."}) else: apikey = None if apikey: user = User.objects.get(id=apikey["uid"]) else: user = request.user if user.id != sheet["owner"]: return jsonResponse( {"error": "Only the sheet owner may delete a sheet."}) db.sheets.remove({"id": id}) process_sheet_deletion_in_collections(id) process_sheet_deletion_in_notifications(id) try: es_index_name = search.get_new_and_current_index_names( "sheet")['current'] search.delete_sheet(es_index_name, id) except NewConnectionError as e: logger.warn( "Failed to connect to elastic search server on sheet delete.") except AuthorizationException as e: logger.warn( "Failed to connect to elastic search server on sheet delete.") return jsonResponse({"status": "ok"})
def delete_sheet_api(request, sheet_id): """ Deletes sheet with id, only if the requester is the sheet owner. """ import sefaria.search as search id = int(sheet_id) sheet = db.sheets.find_one({"id": id}) if not sheet: return jsonResponse({"error": "Sheet %d not found." % id}) if request.user.id != sheet["owner"]: return jsonResponse({"error": "Only the sheet owner may delete a sheet."}) db.sheets.remove({"id": id}) search.delete_sheet(id) return jsonResponse({"status": "ok"})
def delete_sheet_api(request, sheet_id): """ Deletes sheet with id, only if the requester is the sheet owner. """ import sefaria.search as search id = int(sheet_id) sheet = db.sheets.find_one({"id": id}) if not sheet: return jsonResponse({"error": "Sheet %d not found." % id}) if request.user.id != sheet["owner"]: return jsonResponse({"error": "Only the sheet owner may delete a sheet."}) db.sheets.remove({"id": id}) index_name = search.get_new_and_current_index_names()['current'] search.delete_sheet(index_name, id) return jsonResponse({"status": "ok"})
def delete_sheet_api(request, sheet_id): """ Deletes sheet with id, only if the requester is the sheet owner. """ import sefaria.search as search id = int(sheet_id) sheet = db.sheets.find_one({"id": id}) if not sheet: return jsonResponse({"error": "Sheet %d not found." % id}) if not request.user.is_authenticated: key = request.POST.get("apikey") if not key: return jsonResponse({"error": "You must be logged in or use an API key to delete a sheet."}) apikey = db.apikeys.find_one({"key": key}) if not apikey: return jsonResponse({"error": "Unrecognized API key."}) else: apikey = None if apikey: user = User.objects.get(id=apikey["uid"]) else: user = request.user if user.id != sheet["owner"]: return jsonResponse({"error": "Only the sheet owner may delete a sheet."}) db.sheets.remove({"id": id}) try: es_index_name = search.get_new_and_current_index_names("sheet")['current'] search.delete_sheet(es_index_name, id) except NewConnectionError as e: logger.warn("Failed to connect to elastic search server on sheet delete.") return jsonResponse({"status": "ok"})
def delete_sheet_api(request, sheet_id): """ Deletes sheet with id, only if the requester is the sheet owner. """ import sefaria.search as search id = int(sheet_id) sheet = db.sheets.find_one({"id": id}) if not sheet: return jsonResponse({"error": "Sheet %d not found." % id}) if request.user.id != sheet["owner"]: return jsonResponse({"error": "Only the sheet owner may delete a sheet."}) db.sheets.remove({"id": id}) try: es_index_name = search.get_new_and_current_index_names()['current'] search.delete_sheet(es_index_name, id) except NewConnectionError as e: logger.warn("Failed to connect to elastic search server on sheet delete.") return jsonResponse({"status": "ok"})