Esempio n. 1
0
def test_index_regex():
    assert Ref('Otzar Midrashim').regex(
    ) == prepare_index_regex_for_dependency_process(
        library.get_index('Otzar Midrashim'))
    assert Ref('Zohar').regex() == prepare_index_regex_for_dependency_process(
        library.get_index('Zohar'))
    assert Ref(
        'Genesis').regex() == prepare_index_regex_for_dependency_process(
            library.get_index('Genesis'))
    assert Ref('Rashi on Exodus').regex(
    ) == prepare_index_regex_for_dependency_process(
        library.get_index('Rashi on Exodus'))
Esempio n. 2
0
def dep_counts(name, indx):
    def construct_query(attribute, queries):
        query_list = [{attribute: {'$regex': query}} for query in queries]
        return {'$or': query_list}

    from sefaria.model.text import prepare_index_regex_for_dependency_process
    patterns = prepare_index_regex_for_dependency_process(indx, as_list=True)
    patterns = [
        pattern.replace(re.escape(indx.title), re.escape(name))
        for pattern in patterns
    ]

    ret = {
        'version title exact match':
        model.VersionSet({
            "title": name
        }, sort=[('title', 1)]).count(),
        'history title exact match':
        model.HistorySet({
            "title": name
        }, sort=[('title', 1)]).count(),
        'note match ':
        model.NoteSet(construct_query("ref", patterns),
                      sort=[('ref', 1)]).count(),
        'link match ':
        model.LinkSet(construct_query("refs", patterns)).count(),
        'history refs match ':
        model.HistorySet(construct_query("ref", patterns),
                         sort=[('ref', 1)]).count(),
        'history new refs match ':
        model.HistorySet(construct_query("new.refs", patterns),
                         sort=[('new.refs', 1)]).count()
    }

    return ret
Esempio n. 3
0
def process_index_title_change_in_history(indx, **kwargs):
    print "Cascading History {} to {}".format(kwargs['old'], kwargs['new'])
    """
    Update all history entries which reference 'old' to 'new'.
    """
    from sefaria.model.text import prepare_index_regex_for_dependency_process
    pattern = prepare_index_regex_for_dependency_process(indx)
    pattern = pattern.replace(re.escape(indx.title), re.escape(kwargs["old"]))
    title_pattern = ur'(^{}$)'.format(re.escape(kwargs["old"]))

    text_hist = HistorySet({"ref": {"$regex": pattern}})
    print "Cascading Text History {} to {}".format(kwargs['old'], kwargs['new'])
    for h in text_hist:
        h.ref = h.ref.replace(kwargs["old"], kwargs["new"], 1)
        h.save()

    link_hist = HistorySet({"new.refs": {"$regex": pattern}})
    print "Cascading Link History {} to {}".format(kwargs['old'], kwargs['new'])
    for h in link_hist:
        h.new["refs"] = [r.replace(kwargs["old"], kwargs["new"], 1) for r in h.new["refs"]]
        h.save()

    note_hist = HistorySet({"new.ref": {"$regex": pattern}})
    print "Cascading Note History {} to {}".format(kwargs['old'], kwargs['new'])
    for h in note_hist:
        h.new["ref"] = h.new["ref"].replace(kwargs["old"], kwargs["new"], 1)
        h.save()

    title_hist = HistorySet({"title": {"$regex": title_pattern}})
    print "Cascading Index History {} to {}".format(kwargs['old'], kwargs['new'])
    for h in title_hist:
        h.title = h.title.replace(kwargs["old"], kwargs["new"], 1)
        h.save()
Esempio n. 4
0
def test_index_regex():
    assert Ref('Otzar Midrashim').regex() == prepare_index_regex_for_dependency_process(library.get_index('Otzar Midrashim'))
    assert Ref('Zohar').regex() == prepare_index_regex_for_dependency_process(library.get_index('Zohar'))
    assert Ref('Genesis').regex() == prepare_index_regex_for_dependency_process(library.get_index('Genesis'))
    assert Ref('Rashi on Exodus').regex() == prepare_index_regex_for_dependency_process(library.get_index('Rashi on Exodus'))

    assert Ref('Otzar Midrashim').regex(as_list=True) == prepare_index_regex_for_dependency_process(
        library.get_index('Otzar Midrashim'), as_list=True)
    assert Ref('Zohar').regex(as_list=True) == prepare_index_regex_for_dependency_process(library.get_index('Zohar'), as_list=True)
    assert Ref('Genesis').regex(as_list=True) == prepare_index_regex_for_dependency_process(library.get_index('Genesis'), as_list=True)
    assert Ref('Rashi on Exodus').regex(as_list=True) == prepare_index_regex_for_dependency_process(
        library.get_index('Rashi on Exodus'), as_list=True)
Esempio n. 5
0
def dep_counts(name):
    from sefaria.model.text import prepare_index_regex_for_dependency_process
    pattern = prepare_index_regex_for_dependency_process(indx)
    ret = {
        'version title exact match': model.VersionSet({"title": name}).count(),
        'history title exact match': model.HistorySet({"title": name}).count(),
        'note match ': model.NoteSet({"ref": {"$regex": pattern}}).count(),
        'link match ': model.LinkSet({"refs": {"$regex": pattern}}).count(),
        'history refs match ': model.HistorySet({"ref": {"$regex": pattern}}).count(),
        'history new refs match ': model.HistorySet({"new.refs": {"$regex": pattern}}).count()
    }

    return ret
Esempio n. 6
0
def process_index_title_change_in_history(indx, **kwargs):
    def construct_query(attribute, queries):
        query_list = [{attribute: {'$regex': query}} for query in queries]
        return {'$or': query_list}

    print "Cascading History {} to {}".format(kwargs['old'], kwargs['new'])
    """
    Update all history entries which reference 'old' to 'new'.
    """
    from sefaria.model.text import prepare_index_regex_for_dependency_process
    queries = prepare_index_regex_for_dependency_process(indx, as_list=True)
    queries = [
        query.replace(re.escape(indx.title), re.escape(kwargs["old"]))
        for query in queries
    ]
    title_pattern = ur'(^{}$)'.format(re.escape(kwargs["old"]))

    text_hist = HistorySet(construct_query('ref', queries), sort=[('ref', 1)])
    print "Cascading Text History {} to {}".format(kwargs['old'],
                                                   kwargs['new'])
    for h in text_hist:
        h.ref = h.ref.replace(kwargs["old"], kwargs["new"], 1)
        h.save()

    link_hist = HistorySet(construct_query("new.refs", queries),
                           sort=[('new.refs', 1)])
    print "Cascading Link History {} to {}".format(kwargs['old'],
                                                   kwargs['new'])
    for h in link_hist:
        h.new["refs"] = [
            r.replace(kwargs["old"], kwargs["new"], 1) for r in h.new["refs"]
        ]
        h.save()

    note_hist = HistorySet(construct_query("new.ref", queries),
                           sort=[('new.ref', 1)])
    print "Cascading Note History {} to {}".format(kwargs['old'],
                                                   kwargs['new'])
    for h in note_hist:
        h.new["ref"] = h.new["ref"].replace(kwargs["old"], kwargs["new"], 1)
        h.save()

    title_hist = HistorySet({"title": {
        "$regex": title_pattern
    }},
                            sort=[('title', 1)])
    print "Cascading Index History {} to {}".format(kwargs['old'],
                                                    kwargs['new'])
    for h in title_hist:
        h.title = h.title.replace(kwargs["old"], kwargs["new"], 1)
        h.save()
Esempio n. 7
0
def dep_counts(name, indx):

    def construct_query(attribute, queries):
        query_list = [{attribute: {'$regex': query}} for query in queries]
        return {'$or': query_list}

    from sefaria.model.text import prepare_index_regex_for_dependency_process
    patterns = prepare_index_regex_for_dependency_process(indx, as_list=True)
    patterns = [pattern.replace(re.escape(indx.title), re.escape(name)) for pattern in patterns]

    ret = {
        'version title exact match': model.VersionSet({"title": name}, sort=[('title', 1)]).count(),
        'history title exact match': model.HistorySet({"title": name}, sort=[('title', 1)]).count(),
        'note match ': model.NoteSet(construct_query("ref", patterns), sort=[('ref', 1)]).count(),
        'link match ': model.LinkSet(construct_query("refs", patterns)).count(),
        'history refs match ': model.HistorySet(construct_query("ref", patterns), sort=[('ref', 1)]).count(),
        'history new refs match ': model.HistorySet(construct_query("new.refs", patterns), sort=[('new.refs', 1)]).count()
    }

    return ret
Esempio n. 8
0
def process_index_title_change_in_history(indx, **kwargs):
    print "Cascading History {} to {}".format(kwargs['old'], kwargs['new'])
    """
    Update all history entries which reference 'old' to 'new'.
    """
    from sefaria.model.text import prepare_index_regex_for_dependency_process
    pattern = prepare_index_regex_for_dependency_process(indx)
    pattern = pattern.replace(re.escape(indx.title), re.escape(kwargs["old"]))
    title_pattern = ur'(^{}$)'.format(re.escape(kwargs["old"]))

    text_hist = HistorySet({"ref": {"$regex": pattern}})
    print "Cascading Text History {} to {}".format(kwargs['old'],
                                                   kwargs['new'])
    for h in text_hist:
        h.ref = h.ref.replace(kwargs["old"], kwargs["new"], 1)
        h.save()

    link_hist = HistorySet({"new.refs": {"$regex": pattern}})
    print "Cascading Link History {} to {}".format(kwargs['old'],
                                                   kwargs['new'])
    for h in link_hist:
        h.new["refs"] = [
            r.replace(kwargs["old"], kwargs["new"], 1) for r in h.new["refs"]
        ]
        h.save()

    note_hist = HistorySet({"new.ref": {"$regex": pattern}})
    print "Cascading Note History {} to {}".format(kwargs['old'],
                                                   kwargs['new'])
    for h in note_hist:
        h.new["ref"] = h.new["ref"].replace(kwargs["old"], kwargs["new"], 1)
        h.save()

    title_hist = HistorySet({"title": {"$regex": title_pattern}})
    print "Cascading Index History {} to {}".format(kwargs['old'],
                                                    kwargs['new'])
    for h in title_hist:
        h.title = h.title.replace(kwargs["old"], kwargs["new"], 1)
        h.save()
Esempio n. 9
0
def process_index_title_change_in_history(indx, **kwargs):

    def construct_query(attribute, queries):
        query_list = [{attribute: {'$regex': query}} for query in queries]
        return {'$or': query_list}

    print "Cascading History {} to {}".format(kwargs['old'], kwargs['new'])
    """
    Update all history entries which reference 'old' to 'new'.
    """
    from sefaria.model.text import prepare_index_regex_for_dependency_process
    queries = prepare_index_regex_for_dependency_process(indx, as_list=True)
    queries = [query.replace(re.escape(indx.title), re.escape(kwargs["old"])) for query in queries]
    title_pattern = ur'(^{}$)'.format(re.escape(kwargs["old"]))

    text_hist = HistorySet(construct_query('ref', queries),  sort=[('ref', 1)])
    print "Cascading Text History {} to {}".format(kwargs['old'], kwargs['new'])
    for h in text_hist:
        h.ref = h.ref.replace(kwargs["old"], kwargs["new"], 1)
        h.save()

    link_hist = HistorySet(construct_query("new.refs", queries), sort=[('new.refs', 1)])
    print "Cascading Link History {} to {}".format(kwargs['old'], kwargs['new'])
    for h in link_hist:
        h.new["refs"] = [r.replace(kwargs["old"], kwargs["new"], 1) for r in h.new["refs"]]
        h.save()

    note_hist = HistorySet(construct_query("new.ref", queries), sort=[{'new.ref', 1}])
    print "Cascading Note History {} to {}".format(kwargs['old'], kwargs['new'])
    for h in note_hist:
        h.new["ref"] = h.new["ref"].replace(kwargs["old"], kwargs["new"], 1)
        h.save()

    title_hist = HistorySet({"title": {"$regex": title_pattern}}, sort=[('title', 1)])
    print "Cascading Index History {} to {}".format(kwargs['old'], kwargs['new'])
    for h in title_hist:
        h.title = h.title.replace(kwargs["old"], kwargs["new"], 1)
        h.save()
Esempio n. 10
0
def process_index_delete_in_links(indx, **kwargs):
    from sefaria.model.text import prepare_index_regex_for_dependency_process
    pattern = prepare_index_regex_for_dependency_process(indx)
    LinkSet({"refs": {"$regex": pattern}}).delete()
Esempio n. 11
0
def process_index_delete_in_links(indx, **kwargs):
    from sefaria.model.text import prepare_index_regex_for_dependency_process
    pattern = prepare_index_regex_for_dependency_process(indx)
    LinkSet({"refs": {"$regex": pattern}}).delete()
Esempio n. 12
0
def process_index_delete_in_translation_requests(indx, **kwargs):
    from sefaria.model.text import prepare_index_regex_for_dependency_process
    pattern = prepare_index_regex_for_dependency_process(indx)
    TranslationRequestSet({"refs": {"$regex": pattern}}).delete()
def process_index_delete_in_translation_requests(indx, **kwargs):
    from sefaria.model.text import prepare_index_regex_for_dependency_process
    pattern = prepare_index_regex_for_dependency_process(indx)
    TranslationRequestSet({"refs": {"$regex": pattern}}).delete()