Exemple #1
0
def process_version_title_change_in_search(ver, **kwargs):
    from sefaria.search import delete_version, index_full_version, get_new_and_current_index_names
    search_index_name = get_new_and_current_index_names()['current']
    search_index_name_merged = get_new_and_current_index_names(merged=True)['current']
    text_index = library.get_index(ver.title)
    delete_version(text_index, kwargs.get("old"), ver.language)
    index_full_version(search_index_name, text_index, kwargs.get("new"), ver.language)
    index_full_version(search_index_name_merged, text_index, kwargs.get("new"), ver.language)
def process_version_title_change_in_search(ver, **kwargs):
    from sefaria.local_settings import SEARCH_INDEX_ON_SAVE
    if SEARCH_INDEX_ON_SAVE:
        from sefaria.search import delete_version, TextIndexer, get_new_and_current_index_names
        search_index_name = get_new_and_current_index_names()['current']
        search_index_name_merged = get_new_and_current_index_names(merged=True)['current']
        text_index = library.get_index(ver.title)
        delete_version(text_index, kwargs.get("old"), ver.language)
        for ref in text_index.all_segment_refs():
            TextIndexer.index_ref(search_index_name, ref, kwargs.get("new"), ver.language, False)
            TextIndexer.index_ref(search_index_name_merged, ref, None, ver.language, True)
Exemple #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})

    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"})
Exemple #4
0
def process_version_title_change_in_search(ver, **kwargs):
    from sefaria.local_settings import SEARCH_INDEX_ON_SAVE
    if SEARCH_INDEX_ON_SAVE:
        from sefaria.search import delete_version, TextIndexer, get_new_and_current_index_names
        search_index_name = get_new_and_current_index_names("text")['current']
        # no reason to deal with merged index since versions don't exist. still leaving this here in case it is necessary
        # search_index_name_merged = get_new_and_current_index_names("merged")['current']
        text_index = library.get_index(ver.title)
        delete_version(text_index, kwargs.get("old"), ver.language)
        for ref in text_index.all_segment_refs():
            TextIndexer.index_ref(search_index_name, ref, kwargs.get("new"), ver.language, False)
Exemple #5
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 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"})
Exemple #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})
	index_name = search.get_new_and_current_index_names()['current']
	search.delete_sheet(index_name, id)

	return jsonResponse({"status": "ok"})
Exemple #7
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 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"})