コード例 #1
0
ファイル: views.py プロジェクト: wolfkevin/Sefaria-Project
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"})
コード例 #2
0
ファイル: views.py プロジェクト: shaneerosen/Sefaria-Project
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"})
コード例 #3
0
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"})
コード例 #4
0
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"})
コード例 #5
0
ファイル: views.py プロジェクト: Sefaria/Sefaria-Project
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"})
コード例 #6
0
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"})