Example #1
0
        def _create_nechama_sheet_story(parasha_obj, mustHave=None, **kwargs):
            #todo: grab English sheet and show to English only users
            from sefaria.utils.calendars import make_parashah_response_from_calendar_entry
            cal = make_parashah_response_from_calendar_entry(parasha_obj)[0]

            sheets = db.sheets.find(
                {
                    "status": "public",
                    "group": u"גיליונות נחמה",
                    "tags": parasha_obj["parasha"]
                }, {"id": 1})
            sheets = [s for s in sheets]
            selected = random.sample(sheets, 3)
            if len(selected) < 3:
                return

            mustHave = mustHave or []
            mustHave = mustHave + ["readsHebrew"]

            cls.generate_story(sheet_ids=[s["id"] for s in selected],
                               cozy=True,
                               group_name=u"גיליונות נחמה",
                               title={
                                   "en":
                                   "Nechama on " + cal["displayValue"]["en"],
                                   "he":
                                   u"נחמה על " + cal["displayValue"]["he"]
                               },
                               lead={
                                   "en": "Weekly Torah Portion",
                                   "he": u'פרשת השבוע'
                               },
                               mustHave=mustHave,
                               **kwargs).save()
Example #2
0
        def _create_parasha_topic_story(parasha_obj, mustHave=None, **kwargs):
            from sefaria.model.topic import get_topics
            from sefaria.utils.util import titlecase
            from sefaria.utils.calendars import make_parashah_response_from_calendar_entry

            page = iteration - 1
            topics = get_topics()
            parasha = text.Term.normalize(titlecase(parasha_obj["parasha"]))
            topic = topics.get(parasha)
            related_topics = [
                t for t, x in topic.related_topics[page * k:page * k + k]
                if x > 1
            ]
            if len(related_topics) < k:
                return

            cal = make_parashah_response_from_calendar_entry(parasha_obj)[0]

            cls.generate_story(topics=related_topics,
                               title={
                                   "en":
                                   "Topics in " + cal["displayValue"]["en"],
                                   "he":
                                   u"נושאים ב" + cal["displayValue"]["he"]
                               },
                               lead={
                                   "en": "Weekly Torah Portion",
                                   "he": u'פרשת השבוע'
                               },
                               mustHave=mustHave or [],
                               **kwargs).save()
Example #3
0
        def _create_aliyah_story(parasha_obj, mustHave=None, **kwargs):
            from sefaria.utils.calendars import make_parashah_response_from_calendar_entry, aliyah_ref
            from django.utils import timezone
            from . import schema

            cal = make_parashah_response_from_calendar_entry(parasha_obj)[0]

            isoweekday = timezone.now().isoweekday()
            aliyah = 1 if isoweekday == 7 else isoweekday + 1
            lead = {"en": "Weekly Torah Portion", "he": cal["title"]["he"]}

            if aliyah >= 6:  # Friday
                ref = aliyah_ref(parasha_obj, 6).to(aliyah_ref(parasha_obj,
                                                               7)).normal()
                title = {
                    "en":
                    cal["displayValue"]["en"] + ", Sixth and Seventh Aliyah",
                    "he": cal["displayValue"]["he"] + u" - " + u"שישי ושביעי"
                }
            else:
                ref = aliyah_ref(parasha_obj, aliyah).normal()
                title = {
                    "en":
                    cal["displayValue"]["en"] + ", " +
                    schema.AddressAliyah.en_map[aliyah - 1] + " Aliyah",
                    "he":
                    cal["displayValue"]["he"] + u" - " +
                    schema.AddressAliyah.he_map[aliyah - 1]
                }
            cls._generate_shared_story(ref=ref,
                                       lead=lead,
                                       title=title,
                                       mustHave=mustHave or [],
                                       **kwargs).save()
Example #4
0
        def _create_parasha_sheet_story(parasha_obj, mustHave=None, **kwargs):
            from sefaria.utils.calendars import make_parashah_response_from_calendar_entry
            cal = make_parashah_response_from_calendar_entry(parasha_obj)[0]

            sheet_ids = cls._get_topic_sheet_ids(parasha_obj["parasha"],
                                                 k=k,
                                                 page=iteration - 1)
            if len(sheet_ids) < k:
                return

            mustHave = mustHave or []
            mustHave = mustHave + ["usesSheets"]

            cls.generate_story(sheet_ids=sheet_ids,
                               title={
                                   "en":
                                   "Sheets on " + cal["displayValue"]["en"],
                                   "he":
                                   u"גליונות על " + cal["displayValue"]["he"]
                               },
                               lead={
                                   "en": "Weekly Torah Portion",
                                   "he": u'פרשת השבוע'
                               },
                               mustHave=mustHave,
                               **kwargs).save()
Example #5
0
        def _create_parasha_verse_commentator_story(parasha_obj, mustHave=None, **kwargs):
            from sefaria.utils.calendars import make_parashah_response_from_calendar_entry
            from . import ref_data

            mustHave = mustHave or []

            cal = make_parashah_response_from_calendar_entry(parasha_obj)[0]
            parasha_ref = text.Ref(parasha_obj["ref"])

            top_ref = ref_data.RefDataSet.from_ref(parasha_ref).nth_ref(iteration)

            commentary_ref = random_commentary_on(top_ref)
            if not commentary_ref:
                return

            if not commentary_ref.is_text_translated():
                mustHave += ["readsHebrew"]
            commentator = commentary_ref.index.collective_title

            cls.generate_story(
                refs = [top_ref.normal(), commentary_ref.normal()],
                title={"en": commentator + " on " + cal["displayValue"]["en"], "he": hebrew_term(commentator) + " על " + cal["displayValue"]["he"]},
                lead={"en": "Weekly Torah Portion", "he": 'פרשת השבוע'},
                mustHave=mustHave,
                **kwargs
            ).save()
Example #6
0
    def generate_parasha_topics_story(cls, parasha_obj, mustHave, iteration, k,
                                      **kwargs):
        from sefaria.utils.calendars import make_parashah_response_from_calendar_entry
        from sefaria.helper.topic import get_topic_by_parasha
        from sefaria.model.topic import Topic
        page = iteration - 1
        topic = get_topic_by_parasha(parasha_obj["parasha"])
        if not topic:
            return
        link_set = topic.link_set(_class='intraTopic', page=page, limit=k)
        related_topics = list(
            filter(None, [Topic.init(l.topic) for l in link_set]))
        if len(related_topics) < k:
            return

        cal = make_parashah_response_from_calendar_entry(parasha_obj)[0]

        return cls.generate_story(topics=related_topics,
                                  title={
                                      "en":
                                      "Topics in " + cal["displayValue"]["en"],
                                      "he":
                                      "נושאים ב" + cal["displayValue"]["he"]
                                  },
                                  lead={
                                      "en": "Weekly Torah Portion",
                                      "he": 'פרשת השבוע'
                                  },
                                  mustHave=mustHave or [],
                                  **kwargs)
Example #7
0
 def _create_parasha_story(parasha_obj, mustHave=None, **kwargs):
     from sefaria.utils.calendars import make_parashah_response_from_calendar_entry
     cal = make_parashah_response_from_calendar_entry(parasha_obj)[0]
     cls._generate_shared_story(ref=cal["ref"],
                                lead=cal["title"],
                                title=cal["displayValue"],
                                mustHave=mustHave or [],
                                **kwargs).save()
Example #8
0
        def _create_parasha_verse_connection_story(parasha_obj,
                                                   mustHave=None,
                                                   **kwargs):
            from sefaria.utils.calendars import make_parashah_response_from_calendar_entry
            from . import ref_data

            mustHave = mustHave or []

            cal = make_parashah_response_from_calendar_entry(parasha_obj)[0]
            parasha_ref = text.Ref(parasha_obj["ref"])

            top_ref = ref_data.RefDataSet.from_ref(parasha_ref).nth_ref(
                iteration)

            connection_refs = [
                l.ref_opposite(top_ref) for l in filter(
                    lambda x: x.type != "commentary", top_ref.linkset())
            ]

            connection_ref = None
            while connection_ref is None:
                connection_ref = random.choice(connection_refs)
                category = connection_ref.index.categories[0]
                if category == "Tanakh" or category == "Reference":  # Quoting commentary isn't best for this
                    connection_ref = None
                    continue
                if not connection_ref.is_text_translated():
                    mustHave += ["readsHebrew"]

            cls.generate_story(
                refs=[top_ref.normal(),
                      connection_ref.normal()],
                title={
                    "en":
                    category + " on " + cal["displayValue"]["en"],
                    "he":
                    hebrew_term(category) + u" על " + cal["displayValue"]["he"]
                },
                lead={
                    "en": "Weekly Torah Portion",
                    "he": u'פרשת השבוע'
                },
                mustHave=mustHave,
                **kwargs).save()