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