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'))
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
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()
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)
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
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()
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
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()
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()
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()
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()
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()