Ejemplo n.º 1
0
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
Ejemplo n.º 2
0
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
Ejemplo n.º 3
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
Ejemplo n.º 4
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"}
Ejemplo n.º 5
0
 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()