def test_version_word_count(): #simple assert model.Version().load({ "title": "Genesis", "language": "he", "versionTitle": "Tanach with Ta'amei Hamikra" }).word_count() == 20813 assert model.Version().load({ "title": "Rashi on Shabbat", "language": "he" }).word_count() > 0 #complex assert model.Version().load({ "title": "Pesach Haggadah", "language": "he" }).word_count() > 0 assert model.Version().load({ "title": "Orot", "language": "he" }).word_count() > 0 assert model.Version().load({ "title": "Ephod Bad on Pesach Haggadah" }).word_count() > 0 #sets assert model.VersionSet({ "title": { "$regex": "Haggadah" } }).word_count() > 200000
def test_index_delete(): #Simple Text ti = "Test Del" i = model.Index({ "title": ti, "heTitle": "כבכב", "titleVariants": [ti], "sectionNames": ["Chapter", "Paragraph"], "categories": ["Musar"], "lengths": [50, 501] }).save() new_version1 = model.Version({ "chapter": i.nodes.create_skeleton(), "versionTitle": "Version 1 TEST", "versionSource": "blabla", "language": "he", "title": i.title }) new_version1.chapter = [[''], [''], ["לה לה לה לא חשוב על מה"]] new_version1.save() new_version2 = model.Version({ "chapter": i.nodes.create_skeleton(), "versionTitle": "Version 2 TEST", "versionSource": "blabla", "language": "en", "title": i.title }) new_version2.chapter = [[], ["Hello goodbye bla bla blah"], []] new_version2.save() i.delete() assert model.Index().load({'title': ti}) is None assert model.VersionSet({'title': ti}).count() == 0
def test_index_delete(): #Simple Text ti = "Test Del" model.IndexSet({"title": ti}).delete() model.VersionSet({"title": ti}).delete() i = model.Index({ "title": ti, "heTitle": u"כבכב", "titleVariants": [ti], "sectionNames": ["Chapter", "Paragraph"], "categories": ["Musar"], "lengths": [50, 501] }).save() new_version1 = model.Version( { "chapter": i.nodes.create_skeleton(), "versionTitle": "Version 1 TEST", "versionSource": "blabla", "language": "he", "title": i.title } ) new_version1.chapter = [[u''],[u''],[u"לה לה לה לא חשוב על מה"]] new_version1.save() new_version2 = model.Version( { "chapter": i.nodes.create_skeleton(), "versionTitle": "Version 2 TEST", "versionSource": "blabla", "language": "en", "title": i.title } ) new_version2.chapter = [[],["Hello goodbye bla bla blah"],[]] new_version2.save() i.delete() assert model.Index().load({'title': ti}) is None assert model.VersionSet({'title':ti}).count() == 0 #Commentator from sefaria.helper.text import create_commentator_and_commentary_version commentator_name = "Commentator Del" he_commentator_name = u"פרשנדנן" base_book = 'Genesis' base_book2 = 'Pesach Haggadah' model.IndexSet({"title": commentator_name}).delete() model.VersionSet({"title": commentator_name + " on " + base_book}).delete() model.VersionSet({"title": commentator_name + " on " + base_book2}).delete() create_commentator_and_commentary_version(commentator_name, base_book, 'he', 'test', 'test', he_commentator_name) create_commentator_and_commentary_version(commentator_name, base_book2, 'he', 'test', 'test', he_commentator_name) ci = model.Index().load({'title': commentator_name}).delete() assert model.Index().load({'title': commentator_name}) is None assert model.VersionSet({'title':{'$regex': commentator_name}}).count() == 0
def merge_text_versions(version1, version2, text_title, language, warn=False): """ Merges the contents of two distinct text versions. version2 is merged into version1 then deleted. Preference is giving to version1 - if both versions contain content for a given segment, only the content of version1 will be retained. History entries are rewritten for version2. NOTE: the history of that results will be incorrect for any case where the content of version2 is overwritten - the history of those overwritten edits will remain. To end with a perfectly accurate history, history items for segments which have been overwritten would need to be identified and deleted. """ v1 = model.Version().load({ "title": text_title, "versionTitle": version1, "language": language }) if not v1: return {"error": "Version not found: %s" % version1} v2 = model.Version().load({ "title": text_title, "versionTitle": version2, "language": language }) if not v2: return {"error": "Version not found: %s" % version2} if warn and versions_overlap(v1.chapter, v2.chapter): print "WARNING - %s & %s have overlapping content. Aborting." % ( version1, version2) merged_text, sources = merge_translations([v1.chapter, v2.chapter], [version1, version2]) v1.chapter = merged_text v1.save() update_version_title_in_history(version2, version1, text_title, language) v2.delete() return {"status": "ok"}
def setup_class(cls): cls.simpleIndex = model.Index({ "title": cls.simpleIndexTitle, "heTitle": "בלה1", "titleVariants": [cls.simpleIndexTitle], "sectionNames": ["Chapter", "Paragraph"], "categories": ["Musar"], "lengths": [50, 501] }).save() cls.simpleVersion = model.Version({ "chapter": cls.simpleIndex.nodes.create_skeleton(), "versionTitle": "Version 1 TEST", "versionSource": "blabla", "language": "he", "title": cls.simpleIndexTitle }) cls.simpleVersion.chapter = [['1'], ['2'], ["original text", "2nd"]] cls.simpleVersion.save() cls.complexIndex = model.Index({ "title": cls.complexIndexTitle, "heTitle": "2בלה", "titleVariants": [cls.complexIndexTitle], "schema": { "nodes": [{ "nodes": [{ "nodeType": "JaggedArrayNode", "depth": 2, "sectionNames": ["Chapter", "Paragraph"], "addressTypes": ["Integer", "Integer"], "titles": [{ "text": "Node 2", "lang": "en", "primary": True }, { "text": "Node 2 he", "lang": "he", "primary": True }], "key": "Node 2" }], "titles": [{ "text": "Node 1", "lang": "en", "primary": True }, { "text": "Node 1 he", "lang": "he", "primary": True }], "key": "Node 1" }, { "nodeType": "JaggedArrayNode", "depth": 1, "sectionNames": ["Paragraph"], "addressTypes": ["Integer"], "titles": [{ "text": "Node 3", "lang": "en", "primary": True }, { "text": "Node 3 he", "lang": "he", "primary": True }], "key": "Node 3" }], "titles": [{ "text": cls.complexIndexTitle, "lang": "en", "primary": True }, { "text": cls.complexIndexTitle + "he", "lang": "he", "primary": True }], "key": cls.complexIndexTitle }, "categories": ["Musar"] }).save() cls.complexVersion = model.Version({ "chapter": cls.complexIndex.nodes.create_skeleton(), "versionTitle": "Version 2 TEST", "versionSource": "blabla", "language": "en", "title": cls.complexIndexTitle }) cls.complexVersion.chapter = { "Node 1": { "Node 2": [['yo'], ['', 'blah'], ["original text", "2nd"]] }, "Node 3": ['1', '2', '3', '4'] } cls.complexVersion.save()