From 25ad6762931b195f2e4d02defdbb300a8420da63 Mon Sep 17 00:00:00 2001 From: Elor Shoshan Date: Thu, 11 Feb 2021 14:02:31 +0200 Subject: [PATCH 01/64] add parasha feature --- app/database/models.py | 9 + app/internal/json_data_loader.py | 1 + app/internal/load_parasha.py | 49 +++++ app/main.py | 9 +- app/resources/parashot.json | 302 +++++++++++++++++++++++++++ app/routers/calendar.py | 14 +- app/routers/calendar_grid.py | 4 +- app/routers/dayview.py | 2 +- app/routers/parasha.py | 14 ++ app/templates/calendar/add_week.html | 11 +- app/templates/calendar/calendar.html | 2 +- app/templates/home.html | 1 - tests/test_parasha.py | 21 ++ 13 files changed, 427 insertions(+), 12 deletions(-) create mode 100644 app/internal/load_parasha.py create mode 100644 app/resources/parashot.json create mode 100644 app/routers/parasha.py create mode 100644 tests/test_parasha.py diff --git a/app/database/models.py b/app/database/models.py index 3e7c1782..79b7d052 100644 --- a/app/database/models.py +++ b/app/database/models.py @@ -176,3 +176,12 @@ def __repr__(self): f'{self.start_day_in_month}/{self.start_month}-' f'{self.end_day_in_month}/{self.end_month}>' ) + +class Parasha(Base): + __tablename__ = "parashot" + + id = Column(Integer, primary_key=True, index=True) + name = Column(String, nullable=False) + hebrew = Column(String, nullable=False) + link = Column(String, nullable=False) + date = Column(DateTime, nullable=False) diff --git a/app/internal/json_data_loader.py b/app/internal/json_data_loader.py index bcf74e7c..913010f2 100644 --- a/app/internal/json_data_loader.py +++ b/app/internal/json_data_loader.py @@ -10,6 +10,7 @@ from app.internal import daily_quotes, zodiac + def get_data_from_json(path: str) -> List[Dict[str, Union[str, int, None]]]: """This function reads all of the data from a specific JSON file. The json file consists of list of dictionaries""" diff --git a/app/internal/load_parasha.py b/app/internal/load_parasha.py new file mode 100644 index 00000000..9829c810 --- /dev/null +++ b/app/internal/load_parasha.py @@ -0,0 +1,49 @@ +import json +from datetime import datetime, date + +from app.database.models import Parasha +from sqlalchemy.orm import Session +from typing import Dict, List, Optional + + +def get_parashot_from_json() -> List[Dict[str, Optional[str]]]: + """Reading all parashot from the a JSON file that have been.copied from: + 'https://www.hebcal.com/hebcal?v=1&cfg=json&maj=on&min=on&mod=on&nx=on&year=now&month=x&ss=on&mf=on&c=on' + '&geo=geoname&geonameid=293397&m=50&s=on'""" + try: + with open('app/resources/parashot.json', encoding='utf-8-sig') as f: + parashot_list = json.load(f) + except (IOError, ValueError): + return [] + return parashot_list + + +def add_parashot_to_db(session: Session) -> None: + """This function reads the parashot and inserts them into the db""" + parashot = get_parashot_from_json() + parashot_objects = [ + Parasha( + name=parasha['name'], + hebrew=parasha['hebrew'], + link=parasha['link'], + date=datetime.strptime(parasha['date'], '%Y-%m-%d').date()) + for parasha in parashot + ] + session.add_all(parashot_objects) + session.commit() + + +def is_parashot_table_empty(session: Session) -> bool: + return session.query(Parasha).count() == 0 + + +def load_parashot(session: Session) -> None: + """loading parashot from file to db """ + if is_parashot_table_empty(session): + add_parashot_to_db(session) + + +def get_weekly_parasha(db_session: Session, date: date) -> Parasha: + """This function return a parashot object""" + date = None + return db_session.query(Parasha) diff --git a/app/main.py b/app/main.py index 08b27769..4b60df3e 100644 --- a/app/main.py +++ b/app/main.py @@ -6,10 +6,10 @@ from app.database import models from app.database.database import engine, get_db from app.dependencies import (logger, MEDIA_PATH, STATIC_PATH, templates) -from app.internal import daily_quotes, json_data_loader +from app.internal import daily_quotes, json_data_loader, load_parasha from app.routers import ( agenda, calendar, categories, dayview, email, - event, invitation, profile, search, telegram, whatsapp + event, invitation, profile, parasha, search, telegram, whatsapp ) from app.telegram.bot import telegram_bot @@ -31,6 +31,8 @@ def create_tables(engine, psql_environment): app.mount("/media", StaticFiles(directory=MEDIA_PATH), name="media") json_data_loader.load_to_db(next(get_db())) +load_parasha.load_parashot(next(get_db())) + app.logger = logger @@ -42,6 +44,7 @@ def create_tables(engine, psql_environment): email.router, event.router, invitation.router, + parasha.router, profile.router, search.router, telegram.router, @@ -63,5 +66,5 @@ async def home(request: Request, db: Session = Depends(get_db)): return templates.TemplateResponse("home.html", { "request": request, "message": "Hello, World!", - "quote": quote + "quote": quote, }) diff --git a/app/resources/parashot.json b/app/resources/parashot.json new file mode 100644 index 00000000..d653bb10 --- /dev/null +++ b/app/resources/parashot.json @@ -0,0 +1,302 @@ +[ + { + "name": "Parashat Vayechi", + "hebrew": "פרשת ויחי", + "link": "https://www.hebcal.com/sedrot/vayechi-20210102?i=on&utm_source=js&utm_medium=api", + "date": "2021-01-02" + }, + { + "name": "Parashat Shemot", + "hebrew": "פרשת שמות", + "link": "https://www.hebcal.com/sedrot/shemot-20210109?i=on&utm_source=js&utm_medium=api", + "date": "2021-01-09" + }, + { + "name": "Parashat Vaera", + "hebrew": "פרשת וארא", + "link": "https://www.hebcal.com/sedrot/vaera-20210116?i=on&utm_source=js&utm_medium=api", + "date": "2021-01-16" + }, + { + "name": "Parashat Bo", + "hebrew": "פרשת בא", + "link": "https://www.hebcal.com/sedrot/bo-20210123?i=on&utm_source=js&utm_medium=api", + "date": "2021-01-23" + }, + { + "name": "Parashat Beshalach", + "hebrew": "פרשת בשלח", + "link": "https://www.hebcal.com/sedrot/beshalach-20210130?i=on&utm_source=js&utm_medium=api", + "date": "2021-01-30" + }, + { + "name": "Parashat Yitro", + "hebrew": "פרשת יתרו", + "link": "https://www.hebcal.com/sedrot/yitro-20210206?i=on&utm_source=js&utm_medium=api", + "date": "2021-02-06" + }, + { + "name": "Parashat Mishpatim", + "hebrew": "פרשת משפטים", + "link": "https://www.hebcal.com/sedrot/mishpatim-20210213?i=on&utm_source=js&utm_medium=api", + "date": "2021-02-13" + }, + { + "name": "Parashat Terumah", + "hebrew": "פרשת תרומה", + "link": "https://www.hebcal.com/sedrot/terumah-20210220?i=on&utm_source=js&utm_medium=api", + "date": "2021-02-20" + }, + { + "name": "Parashat Tetzaveh", + "hebrew": "פרשת תצוה", + "link": "https://www.hebcal.com/sedrot/tetzaveh-20210227?i=on&utm_source=js&utm_medium=api", + "date": "2021-02-27" + }, + { + "name": "Parashat Ki Tisa", + "hebrew": "פרשת כי תשא", + "link": "https://www.hebcal.com/sedrot/ki-tisa-20210306?i=on&utm_source=js&utm_medium=api", + "date": "2021-03-06" + }, + { + "name": "Parashat Vayakhel-Pekudei", + "hebrew": "פרשת ויקהל־פקודי", + "link": "https://www.hebcal.com/sedrot/vayakhel-pekudei-20210313?i=on&utm_source=js&utm_medium=api", + "date": "2021-03-13" + }, + { + "name": "Parashat Vayikra", + "hebrew": "פרשת ויקרא", + "link": "https://www.hebcal.com/sedrot/vayikra-20210320?i=on&utm_source=js&utm_medium=api", + "date": "2021-03-20" + }, + { + "name": "Parashat Tzav", + "hebrew": "פרשת צו", + "link": "https://www.hebcal.com/sedrot/tzav-20210327?i=on&utm_source=js&utm_medium=api", + "date": "2021-03-27" + }, + { + "name": "Parashat Shmini", + "hebrew": "פרשת שמיני", + "link": "https://www.hebcal.com/sedrot/shmini-20210410?i=on&utm_source=js&utm_medium=api", + "date": "2021-04-10" + }, + { + "name": "Parashat Tazria-Metzora", + "hebrew": "פרשת תזריע־מצרע", + "link": "https://www.hebcal.com/sedrot/tazria-metzora-20210417?i=on&utm_source=js&utm_medium=api", + "date": "2021-04-17" + }, + { + "name": "Parashat Achrei Mot-Kedoshim", + "hebrew": "פרשת אחרי מות־קדשים", + "link": "https://www.hebcal.com/sedrot/achrei-mot-kedoshim-20210424?i=on&utm_source=js&utm_medium=api", + "date": "2021-04-24" + }, + { + "name": "Parashat Emor", + "hebrew": "פרשת אמור", + "link": "https://www.hebcal.com/sedrot/emor-20210501?i=on&utm_source=js&utm_medium=api", + "date": "2021-05-01" + }, + { + "name": "Parashat Behar-Bechukotai", + "hebrew": "פרשת בהר־בחקתי", + "link": "https://www.hebcal.com/sedrot/behar-bechukotai-20210508?i=on&utm_source=js&utm_medium=api", + "date": "2021-05-08" + }, + { + "name": "Parashat Bamidbar", + "hebrew": "פרשת במדבר", + "link": "https://www.hebcal.com/sedrot/bamidbar-20210515?i=on&utm_source=js&utm_medium=api", + "date": "2021-05-15" + }, + { + "name": "Parashat Nasso", + "hebrew": "פרשת נשא", + "link": "https://www.hebcal.com/sedrot/nasso-20210522?i=on&utm_source=js&utm_medium=api", + "date": "2021-05-22" + }, + { + "name": "Parashat Beha'alotcha", + "hebrew": "פרשת בהעלתך", + "link": "https://www.hebcal.com/sedrot/behaalotcha-20210529?i=on&utm_source=js&utm_medium=api", + "date": "2021-05-29" + }, + { + "name": "Parashat Sh'lach", + "hebrew": "פרשת שלח־לך", + "link": "https://www.hebcal.com/sedrot/shlach-20210605?i=on&utm_source=js&utm_medium=api", + "date": "2021-06-05" + }, + { + "name": "Parashat Korach", + "hebrew": "פרשת קורח", + "link": "https://www.hebcal.com/sedrot/korach-20210612?i=on&utm_source=js&utm_medium=api", + "date": "2021-06-12" + }, + { + "name": "Parashat Chukat", + "hebrew": "פרשת חקת", + "link": "https://www.hebcal.com/sedrot/chukat-20210619?i=on&utm_source=js&utm_medium=api", + "date": "2021-06-19" + }, + { + "name": "Parashat Balak", + "hebrew": "פרשת בלק", + "link": "https://www.hebcal.com/sedrot/balak-20210626?i=on&utm_source=js&utm_medium=api", + "date": "2021-06-26" + }, + { + "name": "Parashat Pinchas", + "hebrew": "פרשת פינחס", + "link": "https://www.hebcal.com/sedrot/pinchas-20210703?i=on&utm_source=js&utm_medium=api", + "date": "2021-07-03" + }, + { + "name": "Parashat Matot-Masei", + "hebrew":"פרשת מטות־מסעי" , + "link": "https://www.hebcal.com/sedrot/matot-masei-20210710?i=on&utm_source=js&utm_medium=api", + "date": "2021-07-10" + }, + { + "name": "Parashat Devarim", + "hebrew": "פרשת דברים", + "link": "https://www.hebcal.com/sedrot/devarim-20210717?i=on&utm_source=js&utm_medium=api", + "date": "2021-07-17" + }, + { + "name": "Parashat Vaetchanan", + "hebrew": "פרשת ואתחנן", + "link": "https://www.hebcal.com/sedrot/vaetchanan-20210724?i=on&utm_source=js&utm_medium=api", + "date": "2021-07-24" + }, + { + "name": "Parashat Eikev", + "hebrew": "פרשת עקב", + "link": "https://www.hebcal.com/sedrot/eikev-20210731?i=on&utm_source=js&utm_medium=api", + "date": "2021-07-31" + }, + { + "name": "Parashat Re'eh", + "hebrew": "פרשת ראה", + "link": "https://www.hebcal.com/sedrot/reeh-20210807?i=on&utm_source=js&utm_medium=api", + "date": "2021-08-07" + }, + { + "name": "Parashat Shoftim", + "hebrew": "פרשת שופטים", + "link": "https://www.hebcal.com/sedrot/shoftim-20210814?i=on&utm_source=js&utm_medium=api", + "date": "2021-08-14" + }, + { + "name": "Parashat Ki Teitzei", + "hebrew": "פרשת כי־תצא", + "link": "https://www.hebcal.com/sedrot/ki-teitzei-20210821?i=on&utm_source=js&utm_medium=api", + "date": "2021-08-21" + }, + { + "name": "Parashat Ki Tavo", + "hebrew": "פרשת כי־תבוא", + "link": "https://www.hebcal.com/sedrot/ki-tavo-20210828?i=on&utm_source=js&utm_medium=api", + "date": "2021-08-28" + }, + { + "name": "Parashat Nitzavim", + "hebrew": "פרשת נצבים", + "link": "https://www.hebcal.com/sedrot/nitzavim-20210904?i=on&utm_source=js&utm_medium=api", + "date": "2021-09-04" + }, + { + "name": "Parashat Vayeilech", + "hebrew": "פרשת וילך", + "link": "https://www.hebcal.com/sedrot/vayeilech-20210911?i=on&utm_source=js&utm_medium=api", + "date": "2021-09-11" + }, + { + "name": "Parashat Ha'Azinu", + "hebrew": "פרשת האזינו", + "link": "https://www.hebcal.com/sedrot/haazinu-20210918?i=on&utm_source=js&utm_medium=api", + "date": "2021-09-18" + }, + { + "name": "Parashat Bereshit", + "hebrew": "פרשת בראשית", + "link": "https://www.hebcal.com/sedrot/bereshit-20211002?i=on&utm_source=js&utm_medium=api", + "date": "2021-10-02" + }, + { + "name": "Parashat Noach", + "hebrew": "פרשת נח", + "link": "https://www.hebcal.com/sedrot/noach-20211009?i=on&utm_source=js&utm_medium=api", + "date": "2021-10-09" + }, + { + "name": "Parashat Lech-Lecha", + "hebrew": "פרשת לך־לך", + "link": "https://www.hebcal.com/sedrot/lech-lecha-20211016?i=on&utm_source=js&utm_medium=api", + "date": "2021-10-16" + }, + { + "name": "Parashat Vayera", + "hebrew": "פרשת וירא", + "link": "https://www.hebcal.com/sedrot/vayera-20211023?i=on&utm_source=js&utm_medium=api", + "date": "2021-10-23" + }, + { + "name": "Parashat Chayei Sara", + "hebrew": "פרשת חיי שרה", + "link": "https://www.hebcal.com/sedrot/chayei-sara-20211030?i=on&utm_source=js&utm_medium=api", + "date": "2021-10-30" + }, + { + "name": "Parashat Toldot", + "hebrew": "פרשת תולדות", + "link": "https://www.hebcal.com/sedrot/toldot-20211106?i=on&utm_source=js&utm_medium=api", + "date": "2021-11-06" + }, + { + "name": "Parashat Vayetzei", + "hebrew": "פרשת ויצא", + "link": "https://www.hebcal.com/sedrot/vayetzei-20211113?i=on&utm_source=js&utm_medium=api", + "date": "2021-11-13" + }, + { + "name": "Parashat Vayishlach", + "hebrew": "פרשת וישלח", + "link": "https://www.hebcal.com/sedrot/vayishlach-20211120?i=on&utm_source=js&utm_medium=api", + "date": "2021-11-20" + }, + { + "name": "Parashat Vayeshev", + "hebrew": "פרשת וישב", + "link": "https://www.hebcal.com/sedrot/vayeshev-20211127?i=on&utm_source=js&utm_medium=api", + "date": "2021-11-27" + }, + { + "name": "Parashat Miketz", + "hebrew": "פרשת מקץ", + "link": "https://www.hebcal.com/sedrot/miketz-20211204?i=on&utm_source=js&utm_medium=api", + "date": "2021-12-04" + }, + { + "name": "Parashat Vayigash", + "hebrew": "פרשת ויגש", + "link": "https://www.hebcal.com/sedrot/vayigash-20211211?i=on&utm_source=js&utm_medium=api", + "date": "2021-12-11" + }, + { + "name": "Parashat Vayechi", + "hebrew": "פרשת ויחי", + "link": "https://www.hebcal.com/sedrot/vayechi-20211218?i=on&utm_source=js&utm_medium=api", + "date": "2021-12-18" + }, + { + "name": "Parashat Shemot", + "hebrew": "פרשת שמות", + "link": "https://www.hebcal.com/sedrot/shemot-20211225?i=on&utm_source=js&utm_medium=api", + "date": "2021-12-25" + } +] \ No newline at end of file diff --git a/app/routers/calendar.py b/app/routers/calendar.py index 4762e16f..55cfb2f2 100644 --- a/app/routers/calendar.py +++ b/app/routers/calendar.py @@ -1,35 +1,43 @@ from http import HTTPStatus +from app.database.database import get_db from app.dependencies import templates +from app.internal import load_parasha as lp from app.routers import calendar_grid as cg -from fastapi import APIRouter, Request +from fastapi import APIRouter, Request, Depends from fastapi.responses import HTMLResponse from starlette.responses import Response + router = APIRouter( prefix="/calendar/month", tags=["calendar"], responses={404: {"description": "Not found"}}, ) + ADD_DAYS_ON_SCROLL: int = 42 @router.get("/") -async def calendar(request: Request) -> Response: +async def calendar(request: Request, db_session=Depends(get_db)) -> Response: user_local_time = cg.Day.get_user_local_time() day = cg.create_day(user_local_time) + parasha_obj = lp.get_weekly_parasha(db_session, day) + return templates.TemplateResponse( "calendar/calendar.html", { "request": request, "day": day, "week_days": cg.Week.DAYS_OF_THE_WEEK, - "weeks_block": cg.get_month_block(day) + "weeks_block": cg.get_month_block(day), + "parasha": parasha_obj } ) + @router.get("/{date}") async def update_calendar(request: Request, date: str) -> HTMLResponse: last_day = cg.Day.convert_str_to_date(date) diff --git a/app/routers/calendar_grid.py b/app/routers/calendar_grid.py index d8ceba23..de967e08 100644 --- a/app/routers/calendar_grid.py +++ b/app/routers/calendar_grid.py @@ -6,6 +6,7 @@ import pytz + MONTH_BLOCK: int = 6 locale.setlocale(locale.LC_TIME, ("en", "UTF-8")) @@ -63,7 +64,6 @@ def set_id(self) -> str: def get_user_local_time(cls) -> datetime: greenwich = pytz.timezone('GB') return greenwich.localize(datetime.now()) - @classmethod def convert_str_to_date(cls, date_string: str) -> datetime: return datetime.strptime(date_string, '%d-%b-%Y') @@ -145,7 +145,7 @@ def __init__(self, date: datetime): 'text-darkblue', 'background-lightgray' ]), - 'event': 'event', + 'event': 'event dfds fds werew', } def __str__(self) -> str: diff --git a/app/routers/dayview.py b/app/routers/dayview.py index 53fab46f..177eefec 100644 --- a/app/routers/dayview.py +++ b/app/routers/dayview.py @@ -111,5 +111,5 @@ async def dayview(request: Request, date: str, db_session=Depends(get_db)): "events": events_n_attrs, "month": day.strftime("%B").upper(), "day": day.day, - "zodiac": zodiac_obj + "zodiac": zodiac_obj, }) diff --git a/app/routers/parasha.py b/app/routers/parasha.py new file mode 100644 index 00000000..e63652ef --- /dev/null +++ b/app/routers/parasha.py @@ -0,0 +1,14 @@ +from fastapi import APIRouter, Depends, Request +from sqlalchemy.orm import Session + + +from app.database.database import get_db +from app.internal import load_parasha + + + +router = APIRouter() +@router.get("/parasha") + +async def parasha(request: Request, db: Session = Depends(get_db)): + return load_parasha.get_weekly_parasha(db) diff --git a/app/templates/calendar/add_week.html b/app/templates/calendar/add_week.html index 702ee572..c43cd667 100644 --- a/app/templates/calendar/add_week.html +++ b/app/templates/calendar/add_week.html @@ -15,7 +15,16 @@ {% for event in day.events %}
{{event[0]}} {{event[1]}}
{% endfor %} + {% for p in parasha %} + {% if p.date.date() == day.date %} +
+

{{p.name}} / {{p.hebrew}}
+ + פירוט בלינק נפרד על {{p.hebrew}}

+
+ {% endif %} + {% endfor %} {% endfor %} -{% endfor %} \ No newline at end of file +{% endfor %} diff --git a/app/templates/calendar/calendar.html b/app/templates/calendar/calendar.html index d5d95c15..331501b3 100644 --- a/app/templates/calendar/calendar.html +++ b/app/templates/calendar/calendar.html @@ -7,7 +7,7 @@ {% if d == day.sday %}
{{ d.upper() }}
{% else %} -
{{ d.upper() }}
+
{{ d.upper() }}
{% endif %} {% endfor %} diff --git a/app/templates/home.html b/app/templates/home.html index e862867a..9be05e82 100644 --- a/app/templates/home.html +++ b/app/templates/home.html @@ -16,5 +16,4 @@

{{message}}

{% endif %} {% endif %} - {% endblock %} diff --git a/tests/test_parasha.py b/tests/test_parasha.py new file mode 100644 index 00000000..78cbb83d --- /dev/null +++ b/tests/test_parasha.py @@ -0,0 +1,21 @@ +from datetime import date + +from app.internal import load_parasha as lp + + +DATE = date(2021, 3, 22) +EXAMPLE=[{'name': 'Parashat Vayechi', 'hebrew': 'פרשת ויחי', " \ + "'link': 'https://www.hebcal.com/sedrot/vayechi-20210102?i=on&utm_source=js&utm_medium=api', " \ + "'date': '2021-01-02'}] + + +def test_is_parashot_table_empty(): + result = lp.is_parashot_table_empty([]) + assert result == True + + +def test_if_db_correct(EXAMPLE, DATE): + result = lp.get_weekly_parasha(EXAMPLE, DATE) + assert result.name == 'Parashat Vayechi' + assert result.date == '2021-01-02' + assert result.count() == 1 From eaadce0c9482f3d501d39a8e267b2577d9628b35 Mon Sep 17 00:00:00 2001 From: Elor Shoshan Date: Thu, 11 Feb 2021 20:00:48 +0200 Subject: [PATCH 02/64] update --- app/database/models.py | 2 +- app/internal/json_data_loader.py | 1 - app/internal/load_parasha.py | 2 +- app/routers/calendar.py | 4 +--- app/routers/calendar_grid.py | 3 ++- app/routers/parasha.py | 1 - app/templates/partials/calendar/monthly_view/add_week.html | 4 ++-- 7 files changed, 7 insertions(+), 10 deletions(-) diff --git a/app/database/models.py b/app/database/models.py index 02ea046c..0b800191 100644 --- a/app/database/models.py +++ b/app/database/models.py @@ -290,7 +290,7 @@ class Parasha(Base): id = Column(Integer, primary_key=True, index=True) name = Column(String, nullable=False) - hebrew = Column(String, nullable=False) + hebrew_name = Column(String, nullable=False) link = Column(String, nullable=False) date = Column(DateTime, nullable=False) diff --git a/app/internal/json_data_loader.py b/app/internal/json_data_loader.py index a7185b07..84ce778b 100644 --- a/app/internal/json_data_loader.py +++ b/app/internal/json_data_loader.py @@ -9,7 +9,6 @@ from app.internal import daily_quotes, zodiac - def get_data_from_json(path: str) -> List[Dict[str, Union[str, int, None]]]: """This function reads all of the data from a specific JSON file. The json file consists of list of dictionaries""" diff --git a/app/internal/load_parasha.py b/app/internal/load_parasha.py index 9829c810..df4f9cc6 100644 --- a/app/internal/load_parasha.py +++ b/app/internal/load_parasha.py @@ -24,7 +24,7 @@ def add_parashot_to_db(session: Session) -> None: parashot_objects = [ Parasha( name=parasha['name'], - hebrew=parasha['hebrew'], + hebrew_name=parasha['hebrew'], link=parasha['link'], date=datetime.strptime(parasha['date'], '%Y-%m-%d').date()) for parasha in parashot diff --git a/app/routers/calendar.py b/app/routers/calendar.py index 5eeb6f5e..4c17b018 100644 --- a/app/routers/calendar.py +++ b/app/routers/calendar.py @@ -24,7 +24,6 @@ async def calendar(request: Request, db_session=Depends(get_db)) -> Response: user_local_time = cg.Day.get_user_local_time() day = cg.create_day(user_local_time) - print(day) parasha_obj = lp.get_weekly_parasha(db_session, day) return templates.TemplateResponse( @@ -39,12 +38,11 @@ async def calendar(request: Request, db_session=Depends(get_db)) -> Response: ) - @router.get("/{date}") async def update_calendar(request: Request, date: str) -> HTMLResponse: last_day = cg.Day.convert_str_to_date(date) next_weeks = cg.create_weeks(cg.get_n_days(last_day, ADD_DAYS_ON_SCROLL)) template = templates.get_template( - 'partials/calendar/monthly_view/add_week.html', ) + 'partials/calendar/monthly_view/add_week.html') content = template.render(weeks_block=next_weeks) return HTMLResponse(content=content, status_code=HTTPStatus.OK) diff --git a/app/routers/calendar_grid.py b/app/routers/calendar_grid.py index 378f10b5..c44c7b6c 100644 --- a/app/routers/calendar_grid.py +++ b/app/routers/calendar_grid.py @@ -64,6 +64,7 @@ def set_id(self) -> str: def get_user_local_time(cls) -> datetime: greenwich = pytz.timezone('GB') return greenwich.localize(datetime.now()) + @classmethod def convert_str_to_date(cls, date_string: str) -> datetime: return datetime.strptime(date_string, '%d-%b-%Y') @@ -145,7 +146,7 @@ def __init__(self, date: datetime): 'text-darkblue', 'background-lightgray' ]), - 'event': 'event dfds fds werew', + 'event': 'event', } def __str__(self) -> str: diff --git a/app/routers/parasha.py b/app/routers/parasha.py index 6bd49f2d..d04fdead 100644 --- a/app/routers/parasha.py +++ b/app/routers/parasha.py @@ -6,7 +6,6 @@ from app.internal import load_parasha - router = APIRouter() @router.get("/parasha") diff --git a/app/templates/partials/calendar/monthly_view/add_week.html b/app/templates/partials/calendar/monthly_view/add_week.html index c88eabd4..dc765e72 100644 --- a/app/templates/partials/calendar/monthly_view/add_week.html +++ b/app/templates/partials/calendar/monthly_view/add_week.html @@ -18,9 +18,9 @@ {% for p in parasha %} {% if p.date.date() == day.date %}
-

{{p.name}} / {{p.hebrew}}
+

{{p.name}} / {{p.hebrew_name}}
- פירוט בלינק נפרד על {{p.hebrew}}

+ פירוט בלינק נפרד על {{p.hebrew_name}}

{% endif %} {% endfor %} From 407d6924c2a7b734f04d247a96cea670223aa2e9 Mon Sep 17 00:00:00 2001 From: Elor Shoshan Date: Sat, 13 Feb 2021 15:56:30 +0200 Subject: [PATCH 03/64] ines starting --- app/internal/load_parasha.py | 32 +++++++++++++++++++++----------- app/main.py | 2 +- app/routers/calendar.py | 2 +- tests/test_parasha.py | 12 ++---------- 4 files changed, 25 insertions(+), 23 deletions(-) diff --git a/app/internal/load_parasha.py b/app/internal/load_parasha.py index df4f9cc6..21f3022d 100644 --- a/app/internal/load_parasha.py +++ b/app/internal/load_parasha.py @@ -7,9 +7,24 @@ def get_parashot_from_json() -> List[Dict[str, Optional[str]]]: - """Reading all parashot from the a JSON file that have been.copied from: - 'https://www.hebcal.com/hebcal?v=1&cfg=json&maj=on&min=on&mod=on&nx=on&year=now&month=x&ss=on&mf=on&c=on' - '&geo=geoname&geonameid=293397&m=50&s=on'""" + """Reading all parashot from the a JSON file that have been copied from: + 'https://www.hebcal.com/hebcal?v=1&cfg=json&maj=on&min=on&mod=on&nx=on&year=now&month=x&ss=on' + '&mf=on&c=on&geo=geoname&geonameid=293397&m=50&s=on' + Each year the Json file will need to be re-updated according to this API in this way: + + def relevent_details(p): + parashot_dict = {'name': p['title'], 'hebrew': p['hebrew'], 'link': p['link'], 'date': p['date']} + return parashot_dict + + + def get_all_parashot(): + r = requests.get('https://www.hebcal.com/hebcal?v=1&cfg=json&maj=on&min=on&mod=on&nx=on&year=now&month=x&ss=on' + '&mf=on&c=on&geo=geoname&geonameid=293397&m=50&s=on') + items = r.json()['items'] + all_para = list(filter(lambda i: 'Parashat' in i['title'], items)) + return [relevent_details(p) for p in all_para] + """ + try: with open('app/resources/parashot.json', encoding='utf-8-sig') as f: parashot_list = json.load(f) @@ -33,17 +48,12 @@ def add_parashot_to_db(session: Session) -> None: session.commit() -def is_parashot_table_empty(session: Session) -> bool: - return session.query(Parasha).count() == 0 - - -def load_parashot(session: Session) -> None: +def load_parashot_if_table_empty(session: Session) -> None: """loading parashot from file to db """ - if is_parashot_table_empty(session): + if session.query(Parasha).count() == 0: add_parashot_to_db(session) -def get_weekly_parasha(db_session: Session, date: date) -> Parasha: +def get_weekly_parasha(db_session: Session) -> Parasha: """This function return a parashot object""" - date = None return db_session.query(Parasha) diff --git a/app/main.py b/app/main.py index 5218d844..a736e390 100644 --- a/app/main.py +++ b/app/main.py @@ -31,7 +31,7 @@ def create_tables(engine, psql_environment): json_data_loader.load_to_db(next(get_db())) -load_parasha.load_parashot(next(get_db())) +load_parasha.load_parashot_if_table_empty(next(get_db())) # This MUST come before the app.routers imports. set_ui_language() diff --git a/app/routers/calendar.py b/app/routers/calendar.py index 4c17b018..8a6d3ca9 100644 --- a/app/routers/calendar.py +++ b/app/routers/calendar.py @@ -24,7 +24,7 @@ async def calendar(request: Request, db_session=Depends(get_db)) -> Response: user_local_time = cg.Day.get_user_local_time() day = cg.create_day(user_local_time) - parasha_obj = lp.get_weekly_parasha(db_session, day) + parasha_obj = lp.get_weekly_parasha(db_session) return templates.TemplateResponse( "calendar_monthly_view.html", diff --git a/tests/test_parasha.py b/tests/test_parasha.py index 78cbb83d..3802d0f4 100644 --- a/tests/test_parasha.py +++ b/tests/test_parasha.py @@ -1,21 +1,13 @@ -from datetime import date - from app.internal import load_parasha as lp -DATE = date(2021, 3, 22) EXAMPLE=[{'name': 'Parashat Vayechi', 'hebrew': 'פרשת ויחי', " \ "'link': 'https://www.hebcal.com/sedrot/vayechi-20210102?i=on&utm_source=js&utm_medium=api', " \ "'date': '2021-01-02'}] -def test_is_parashot_table_empty(): - result = lp.is_parashot_table_empty([]) - assert result == True - - -def test_if_db_correct(EXAMPLE, DATE): - result = lp.get_weekly_parasha(EXAMPLE, DATE) +def test_if_db_correct(EXAMPLE): + result = lp.get_weekly_parasha(EXAMPLE) assert result.name == 'Parashat Vayechi' assert result.date == '2021-01-02' assert result.count() == 1 From 3ea2768e255b17c79f02bcb80cc3976742c597bc Mon Sep 17 00:00:00 2001 From: Elor Shoshan Date: Sat, 13 Feb 2021 16:03:28 +0200 Subject: [PATCH 04/64] dd space --- tests/test_parasha.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/test_parasha.py b/tests/test_parasha.py index 3802d0f4..87a1a94e 100644 --- a/tests/test_parasha.py +++ b/tests/test_parasha.py @@ -1,7 +1,7 @@ from app.internal import load_parasha as lp -EXAMPLE=[{'name': 'Parashat Vayechi', 'hebrew': 'פרשת ויחי', " \ +EXAMPLE= [{'name': 'Parashat Vayechi', 'hebrew': 'פרשת ויחי', " \ "'link': 'https://www.hebcal.com/sedrot/vayechi-20210102?i=on&utm_source=js&utm_medium=api', " \ "'date': '2021-01-02'}] From c3aa08a786371233849bb6787d9fc9be4a788d87 Mon Sep 17 00:00:00 2001 From: Elor Shoshan Date: Sat, 13 Feb 2021 16:38:51 +0200 Subject: [PATCH 05/64] fix farts of flake8 --- app/database/models.py | 1 + app/internal/load_parasha.py | 2 +- app/main.py | 10 +++------- app/routers/calendar.py | 1 - tests/test_parasha.py | 6 +++--- 5 files changed, 8 insertions(+), 12 deletions(-) diff --git a/app/database/models.py b/app/database/models.py index 154a3869..89b6de77 100644 --- a/app/database/models.py +++ b/app/database/models.py @@ -285,6 +285,7 @@ def __repr__(self): f'{self.end_day_in_month}/{self.end_month}>' ) + class Parasha(Base): __tablename__ = "parashot" diff --git a/app/internal/load_parasha.py b/app/internal/load_parasha.py index 21f3022d..d79d2cc0 100644 --- a/app/internal/load_parasha.py +++ b/app/internal/load_parasha.py @@ -1,5 +1,5 @@ import json -from datetime import datetime, date +from datetime import datetime from app.database.models import Parasha from sqlalchemy.orm import Session diff --git a/app/main.py b/app/main.py index a736e390..3dceab34 100644 --- a/app/main.py +++ b/app/main.py @@ -3,11 +3,11 @@ from sqlalchemy.orm import Session from app import config -from app.config import PSQL_ENVIRONMENT from app.database import engine, models from app.dependencies import get_db, logger, MEDIA_PATH, STATIC_PATH, templates from app.internal import daily_quotes, json_data_loader, load_parasha from app.internal.languages import set_ui_language +from app.routers.salary import routes as salary def create_tables(engine, psql_environment): @@ -29,7 +29,6 @@ def create_tables(engine, psql_environment): app.logger = logger - json_data_loader.load_to_db(next(get_db())) load_parasha.load_parashot_if_table_empty(next(get_db())) # This MUST come before the app.routers imports. @@ -38,11 +37,8 @@ def create_tables(engine, psql_environment): from app.routers import ( # noqa: E402 agenda, calendar, categories, celebrity, currency, dayview, - email, event, four_o_four, invitation,parasha, profile, search, - weekview, telegram, whatsapp, -) -from app.routers.salary import routes as salary - + email, event, four_o_four, invitation, parasha, profile, search, + weekview, telegram, whatsapp) routers_to_include = [ diff --git a/app/routers/calendar.py b/app/routers/calendar.py index 8a6d3ca9..7add72af 100644 --- a/app/routers/calendar.py +++ b/app/routers/calendar.py @@ -9,7 +9,6 @@ from starlette.responses import Response - router = APIRouter( prefix="/calendar/month", tags=["calendar"], diff --git a/tests/test_parasha.py b/tests/test_parasha.py index 87a1a94e..c9cf7960 100644 --- a/tests/test_parasha.py +++ b/tests/test_parasha.py @@ -1,13 +1,13 @@ from app.internal import load_parasha as lp -EXAMPLE= [{'name': 'Parashat Vayechi', 'hebrew': 'פרשת ויחי', " \ +EXAMPLE = [{'name': 'Parashat Vayechi', 'hebrew': 'פרשת ויחי', " \ "'link': 'https://www.hebcal.com/sedrot/vayechi-20210102?i=on&utm_source=js&utm_medium=api', " \ "'date': '2021-01-02'}] def test_if_db_correct(EXAMPLE): result = lp.get_weekly_parasha(EXAMPLE) - assert result.name == 'Parashat Vayechi' - assert result.date == '2021-01-02' + assert result.name == 'Parashat Vayechi' + assert result.date == '2021-01-02' assert result.count() == 1 From 819f2b25eb8763be6d8d360b003ac478e535c5d6 Mon Sep 17 00:00:00 2001 From: Elor Shoshan Date: Sat, 13 Feb 2021 16:49:15 +0200 Subject: [PATCH 06/64] edit --- app/internal/load_parasha.py | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/app/internal/load_parasha.py b/app/internal/load_parasha.py index d79d2cc0..67cf1a08 100644 --- a/app/internal/load_parasha.py +++ b/app/internal/load_parasha.py @@ -8,18 +8,19 @@ def get_parashot_from_json() -> List[Dict[str, Optional[str]]]: """Reading all parashot from the a JSON file that have been copied from: - 'https://www.hebcal.com/hebcal?v=1&cfg=json&maj=on&min=on&mod=on&nx=on&year=now&month=x&ss=on' - '&mf=on&c=on&geo=geoname&geonameid=293397&m=50&s=on' + 'https://www.hebcal.com/hebcal?v=1&cfg=json&maj=on&min=on&mod=on&nx=on&year=now&month=x&ss=on + &mf=on&c=on&geo=geoname&geonameid=293397&m=50&s=on' Each year the Json file will need to be re-updated according to this API in this way: def relevent_details(p): - parashot_dict = {'name': p['title'], 'hebrew': p['hebrew'], 'link': p['link'], 'date': p['date']} + parashot_dict = {'name': p['title'], 'hebrew': p['hebrew'], + 'link': p['link'], 'date': p['date']} return parashot_dict def get_all_parashot(): - r = requests.get('https://www.hebcal.com/hebcal?v=1&cfg=json&maj=on&min=on&mod=on&nx=on&year=now&month=x&ss=on' - '&mf=on&c=on&geo=geoname&geonameid=293397&m=50&s=on') + r = requests.get('https://www.hebcal.com/hebcal?v=1&cfg=json&maj=on&min=on&mod=on + &nx=on&year=now&month=x&ss=on&mf=on&c=on&geo=geoname&geonameid=293397&m=50&s=on') items = r.json()['items'] all_para = list(filter(lambda i: 'Parashat' in i['title'], items)) return [relevent_details(p) for p in all_para] @@ -37,12 +38,13 @@ def add_parashot_to_db(session: Session) -> None: """This function reads the parashot and inserts them into the db""" parashot = get_parashot_from_json() parashot_objects = [ - Parasha( - name=parasha['name'], - hebrew_name=parasha['hebrew'], - link=parasha['link'], - date=datetime.strptime(parasha['date'], '%Y-%m-%d').date()) - for parasha in parashot + Parasha( + name=parasha['name'], + hebrew_name=parasha['hebrew'], + link=parasha['link'], + date=datetime.strptime(parasha['date'], '%Y-%m-%d').date() + ) + for parasha in parashot ] session.add_all(parashot_objects) session.commit() From e5bfc8717182bfe841020d70c737a7e6a1430200 Mon Sep 17 00:00:00 2001 From: Elor Shoshan Date: Sat, 13 Feb 2021 16:58:54 +0200 Subject: [PATCH 07/64] edit --- app/routers/parasha.py | 1 - 1 file changed, 1 deletion(-) diff --git a/app/routers/parasha.py b/app/routers/parasha.py index d04fdead..ce7df6fb 100644 --- a/app/routers/parasha.py +++ b/app/routers/parasha.py @@ -8,6 +8,5 @@ router = APIRouter() @router.get("/parasha") - async def parasha(request: Request, db: Session = Depends(get_db)): return load_parasha.get_weekly_parasha(db) From 75805fc6d0079bfb936a070ec8c94e47ef1d9221 Mon Sep 17 00:00:00 2001 From: Elor Shoshan Date: Sat, 13 Feb 2021 17:11:54 +0200 Subject: [PATCH 08/64] edit5 --- app/internal/load_parasha.py | 8 +++++--- app/routers/parasha.py | 2 ++ 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/app/internal/load_parasha.py b/app/internal/load_parasha.py index 67cf1a08..e6cc40cf 100644 --- a/app/internal/load_parasha.py +++ b/app/internal/load_parasha.py @@ -10,7 +10,8 @@ def get_parashot_from_json() -> List[Dict[str, Optional[str]]]: """Reading all parashot from the a JSON file that have been copied from: 'https://www.hebcal.com/hebcal?v=1&cfg=json&maj=on&min=on&mod=on&nx=on&year=now&month=x&ss=on &mf=on&c=on&geo=geoname&geonameid=293397&m=50&s=on' - Each year the Json file will need to be re-updated according to this API in this way: + Each year the Json file will need to be re-updated + according to this API in this way: def relevent_details(p): parashot_dict = {'name': p['title'], 'hebrew': p['hebrew'], @@ -19,8 +20,9 @@ def relevent_details(p): def get_all_parashot(): - r = requests.get('https://www.hebcal.com/hebcal?v=1&cfg=json&maj=on&min=on&mod=on - &nx=on&year=now&month=x&ss=on&mf=on&c=on&geo=geoname&geonameid=293397&m=50&s=on') + r = requests.get('https://www.hebcal.com/hebcal?v=1&cfg=json& + maj=on&min=on&mod=on&nx=on&year=now&month=x&ss=on&mf=on&c=on& + geo=geoname&geonameid=293397&m=50&s=on') items = r.json()['items'] all_para = list(filter(lambda i: 'Parashat' in i['title'], items)) return [relevent_details(p) for p in all_para] diff --git a/app/routers/parasha.py b/app/routers/parasha.py index ce7df6fb..9f1f727f 100644 --- a/app/routers/parasha.py +++ b/app/routers/parasha.py @@ -7,6 +7,8 @@ router = APIRouter() + + @router.get("/parasha") async def parasha(request: Request, db: Session = Depends(get_db)): return load_parasha.get_weekly_parasha(db) From 91fff6f46f84f35b03e779d7e4adb6faff2f4577 Mon Sep 17 00:00:00 2001 From: Elor Shoshan Date: Sat, 13 Feb 2021 17:18:21 +0200 Subject: [PATCH 09/64] edit6 --- tests/test_parasha.py | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/tests/test_parasha.py b/tests/test_parasha.py index c9cf7960..375ff404 100644 --- a/tests/test_parasha.py +++ b/tests/test_parasha.py @@ -1,13 +1,11 @@ from app.internal import load_parasha as lp -EXAMPLE = [{'name': 'Parashat Vayechi', 'hebrew': 'פרשת ויחי', " \ - "'link': 'https://www.hebcal.com/sedrot/vayechi-20210102?i=on&utm_source=js&utm_medium=api', " \ - "'date': '2021-01-02'}] - - -def test_if_db_correct(EXAMPLE): - result = lp.get_weekly_parasha(EXAMPLE) +def test_if_db_correct(): + example = [{'name': 'Parashat Vayechi', 'hebrew': 'פרשת ויחי', " \ + "'link': 'https://www.hebcal.com/sedrot/vayechi-20210102?i=on&utm_source=js&utm_medium=api', " \ + "'date': '2021-01-02'}] + result = lp.get_weekly_parasha(example) assert result.name == 'Parashat Vayechi' assert result.date == '2021-01-02' assert result.count() == 1 From 161cb9825ccfd44f9d4eb9ad9b1ebfaa92cc9830 Mon Sep 17 00:00:00 2001 From: Elor Shoshan Date: Sat, 13 Feb 2021 21:00:48 +0200 Subject: [PATCH 10/64] edit api --- app/internal/load_parasha.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/app/internal/load_parasha.py b/app/internal/load_parasha.py index e6cc40cf..cc2ee6aa 100644 --- a/app/internal/load_parasha.py +++ b/app/internal/load_parasha.py @@ -8,8 +8,9 @@ def get_parashot_from_json() -> List[Dict[str, Optional[str]]]: """Reading all parashot from the a JSON file that have been copied from: - 'https://www.hebcal.com/hebcal?v=1&cfg=json&maj=on&min=on&mod=on&nx=on&year=now&month=x&ss=on - &mf=on&c=on&geo=geoname&geonameid=293397&m=50&s=on' + 'https://www.hebcal.com/hebcal?v=1&cfg=json&maj=on&min=on&mod=on& + nx=on&year=now&month=x&ss=on&mf=on&c=on& + geo=geoname&geonameid=293397&m=50&s=on&d=on&D=on' Each year the Json file will need to be re-updated according to this API in this way: @@ -22,7 +23,7 @@ def relevent_details(p): def get_all_parashot(): r = requests.get('https://www.hebcal.com/hebcal?v=1&cfg=json& maj=on&min=on&mod=on&nx=on&year=now&month=x&ss=on&mf=on&c=on& - geo=geoname&geonameid=293397&m=50&s=on') + geo=geoname&geonameid=293397&m=50&s=on&d=on&D=on') items = r.json()['items'] all_para = list(filter(lambda i: 'Parashat' in i['title'], items)) return [relevent_details(p) for p in all_para] From 91b9fe3a611667926780c1947d9881cd215533b6 Mon Sep 17 00:00:00 2001 From: Elor Shoshan Date: Sun, 14 Feb 2021 13:58:59 +0200 Subject: [PATCH 11/64] edit by yam --- app/routers/calendar.py | 20 ++++---- .../calendar/monthly_view/add_week.html | 12 ++--- tests/test_calendar_grid.py | 51 ++++++++++--------- 3 files changed, 42 insertions(+), 41 deletions(-) diff --git a/app/routers/calendar.py b/app/routers/calendar.py index 7add72af..15aa7e80 100644 --- a/app/routers/calendar.py +++ b/app/routers/calendar.py @@ -2,8 +2,8 @@ from app.dependencies import get_db, templates -from app.internal import load_parasha as lp -from app.routers import calendar_grid as cg +from app.internal import load_parasha +from app.routers import calendar_grid from fastapi import APIRouter, Request, Depends from fastapi.responses import HTMLResponse from starlette.responses import Response @@ -21,26 +21,26 @@ @router.get("/") async def calendar(request: Request, db_session=Depends(get_db)) -> Response: - user_local_time = cg.Day.get_user_local_time() - day = cg.create_day(user_local_time) - parasha_obj = lp.get_weekly_parasha(db_session) + user_local_time = calendar_grid.Day.get_user_local_time() + day = calendar_grid.create_day(user_local_time) + parasha_obj = load_parasha.get_weekly_parasha(db_session) return templates.TemplateResponse( "calendar_monthly_view.html", { "request": request, "day": day, - "week_days": cg.Week.DAYS_OF_THE_WEEK, - "weeks_block": cg.get_month_block(day), - "parasha": parasha_obj + "week_days": calendar_grid.Week.DAYS_OF_THE_WEEK, + "weeks_block": calendar_grid.get_month_block(day), + "parashot": parasha_obj } ) @router.get("/{date}") async def update_calendar(request: Request, date: str) -> HTMLResponse: - last_day = cg.Day.convert_str_to_date(date) - next_weeks = cg.create_weeks(cg.get_n_days(last_day, ADD_DAYS_ON_SCROLL)) + last_day = calendar_grid.Day.convert_str_to_date(date) + next_weeks = calendar_grid.create_weeks(calendar_grid.get_n_days(last_day, ADD_DAYS_ON_SCROLL)) template = templates.get_template( 'partials/calendar/monthly_view/add_week.html') content = template.render(weeks_block=next_weeks) diff --git a/app/templates/partials/calendar/monthly_view/add_week.html b/app/templates/partials/calendar/monthly_view/add_week.html index dc765e72..893a72ec 100644 --- a/app/templates/partials/calendar/monthly_view/add_week.html +++ b/app/templates/partials/calendar/monthly_view/add_week.html @@ -15,12 +15,12 @@ {% for event in day.events %}
{{ event[0] }} {{ event[1] }}
{% endfor %} - {% for p in parasha %} - {% if p.date.date() == day.date %} -
-

{{p.name}} / {{p.hebrew_name}}
- - פירוט בלינק נפרד על {{p.hebrew_name}}

+ {% for parasha in parashot %} + {% if parasha.date.date() == day.date %} +
+

{{parasha.name}} / {{parasha.hebrew_name}}
+ + פירוט בלינק נפרד על {{parasha.hebrew_name}}

{% endif %} {% endfor %} diff --git a/tests/test_calendar_grid.py b/tests/test_calendar_grid.py index b75bbab4..2747f0d5 100644 --- a/tests/test_calendar_grid.py +++ b/tests/test_calendar_grid.py @@ -1,19 +1,20 @@ import datetime -import app.routers.calendar_grid as cg +from app.routers import calendar_grid + DATE = datetime.date(1988, 5, 3) -DAY = cg.Day(datetime.date(1988, 5, 3)) -WEEKEND = cg.DayWeekend(datetime.date(2021, 1, 23)) +DAY = calendar_grid.Day(datetime.date(1988, 5, 3)) +WEEKEND = calendar_grid.DayWeekend(datetime.date(2021, 1, 23)) N_DAYS = 3 N_DAYS_BEFORE = datetime.date(1988, 4, 30) NEXT_N_DAYS = [ - cg.Day(datetime.date(1988, 5, 4)), - cg.Day(datetime.date(1988, 5, 5)), - cg.Day(datetime.date(1988, 5, 6)) + calendar_grid.Day(datetime.date(1988, 5, 4)), + calendar_grid.Day(datetime.date(1988, 5, 5)), + calendar_grid.Day(datetime.date(1988, 5, 6)) ] -DAY_TYPES = [cg.Day, cg.DayWeekend, cg.Today, cg.FirstDayMonth] -WEEK_DAYS = cg.Week.WEEK_DAYS +DAY_TYPES = [calendar_grid.Day, calendar_grid.DayWeekend, calendar_grid.Today, calendar_grid.FirstDayMonth] +WEEK_DAYS = calendar_grid.Week.WEEK_DAYS class TestCalendarGrid: @@ -39,56 +40,56 @@ def test_create_day(): } for i, value in enumerate(dates_to_check.values()): - assert isinstance(cg.create_day(value), DAY_TYPES[i]) + assert isinstance(calendar_grid.create_day(value), DAY_TYPES[i]) @staticmethod def test_get_next_date(): - next_day_generator = cg.get_next_date(DATE) + next_day_generator = calendar_grid.get_next_date(DATE) next_day = next(next_day_generator, None) - next_day_check = cg.Day(DATE + datetime.timedelta(days=1)) + next_day_check = calendar_grid.Day(DATE + datetime.timedelta(days=1)) assert next_day - assert isinstance(next_day, cg.Day) + assert isinstance(next_day, calendar_grid.Day) assert next_day.date == next_day_check.date @staticmethod def test_get_date_before_n_days(): - assert cg.get_date_before_n_days(DATE, N_DAYS) == N_DAYS_BEFORE + assert calendar_grid.get_date_before_n_days(DATE, N_DAYS) == N_DAYS_BEFORE @staticmethod def test_get_first_day_month_block(Calendar): assert ( - cg.get_first_day_month_block(DATE) + calendar_grid.get_first_day_month_block(DATE) == next(Calendar.itermonthdates(DATE.year, DATE.month)) ) @staticmethod def test_get_n_days(): - next_n_dates = cg.get_n_days(DATE, N_DAYS) + next_n_dates = calendar_grid.get_n_days(DATE, N_DAYS) for i in range(N_DAYS): assert next(next_n_dates).date == NEXT_N_DAYS[i].date @staticmethod def test_create_weeks(): - week = cg.create_weeks(NEXT_N_DAYS, cg.Week.WEEK_DAYS) + week = calendar_grid.create_weeks(NEXT_N_DAYS, calendar_grid.Week.WEEK_DAYS) assert week - assert isinstance(week[0], cg.Week) - assert isinstance(week[0].days[0], cg.Day) + assert isinstance(week[0], calendar_grid.Week) + assert isinstance(week[0].days[0], calendar_grid.Day) assert len(week) == 1 and len(week[0].days) == 3 @staticmethod def test_get_month_block(Calendar): - month_weeks = cg.create_weeks( + month_weeks = calendar_grid.create_weeks( Calendar.itermonthdates(1988, 5), WEEK_DAYS) - get_block = cg.get_month_block(cg.Day(DATE), n=len(month_weeks)) + get_block = calendar_grid.get_month_block(calendar_grid.Day(DATE), n=len(month_weeks)) for i in range(len(month_weeks)): - for j in range(cg.Week.WEEK_DAYS): + for j in range(calendar_grid.Week.WEEK_DAYS): assert get_block[i].days[j].date == month_weeks[i].days[j] @staticmethod def test_get_user_local_time(): time_string = "%b%w%Y" - server_time = cg.Day.get_user_local_time() + server_time = calendar_grid.Day.get_user_local_time() server_time_check = datetime.datetime.today() assert server_time assert server_time.strftime( @@ -96,8 +97,8 @@ def test_get_user_local_time(): @staticmethod def test_is_weekend(): - assert not cg.Day.is_weekend(DATE) - assert cg.Day.is_weekend(WEEKEND.date) + assert not calendar_grid.Day.is_weekend(DATE) + assert calendar_grid.Day.is_weekend(WEEKEND.date) @staticmethod def test_display_day(): @@ -113,4 +114,4 @@ def test_display_str(): @staticmethod def test_create_week_object(): - assert cg.Week(NEXT_N_DAYS) + assert calendar_grid.Week(NEXT_N_DAYS) From 0ab998e2314d8581c9a38d8588843119dfd64c06 Mon Sep 17 00:00:00 2001 From: Elor Shoshan Date: Sun, 14 Feb 2021 14:14:37 +0200 Subject: [PATCH 12/64] edit flake8 --- app/routers/calendar.py | 3 ++- tests/test_calendar_grid.py | 13 +++++++++---- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/app/routers/calendar.py b/app/routers/calendar.py index 15aa7e80..7c7f6595 100644 --- a/app/routers/calendar.py +++ b/app/routers/calendar.py @@ -40,7 +40,8 @@ async def calendar(request: Request, db_session=Depends(get_db)) -> Response: @router.get("/{date}") async def update_calendar(request: Request, date: str) -> HTMLResponse: last_day = calendar_grid.Day.convert_str_to_date(date) - next_weeks = calendar_grid.create_weeks(calendar_grid.get_n_days(last_day, ADD_DAYS_ON_SCROLL)) + next_weeks = calendar_grid.create_weeks( + calendar_grid.get_n_days(last_day, ADD_DAYS_ON_SCROLL)) template = templates.get_template( 'partials/calendar/monthly_view/add_week.html') content = template.render(weeks_block=next_weeks) diff --git a/tests/test_calendar_grid.py b/tests/test_calendar_grid.py index 2747f0d5..4bccaf32 100644 --- a/tests/test_calendar_grid.py +++ b/tests/test_calendar_grid.py @@ -13,7 +13,8 @@ calendar_grid.Day(datetime.date(1988, 5, 5)), calendar_grid.Day(datetime.date(1988, 5, 6)) ] -DAY_TYPES = [calendar_grid.Day, calendar_grid.DayWeekend, calendar_grid.Today, calendar_grid.FirstDayMonth] +DAY_TYPES = [calendar_grid.Day, calendar_grid.DayWeekend, + calendar_grid.Today, calendar_grid.FirstDayMonth] WEEK_DAYS = calendar_grid.Week.WEEK_DAYS @@ -53,7 +54,8 @@ def test_get_next_date(): @staticmethod def test_get_date_before_n_days(): - assert calendar_grid.get_date_before_n_days(DATE, N_DAYS) == N_DAYS_BEFORE + assert calendar_grid.get_date_before_n_days\ + (DATE, N_DAYS) == N_DAYS_BEFORE @staticmethod def test_get_first_day_month_block(Calendar): @@ -70,7 +72,9 @@ def test_get_n_days(): @staticmethod def test_create_weeks(): - week = calendar_grid.create_weeks(NEXT_N_DAYS, calendar_grid.Week.WEEK_DAYS) + week = calendar_grid.create_weeks( + NEXT_N_DAYS,calendar_grid.Week.WEEK_DAYS + ) assert week assert isinstance(week[0], calendar_grid.Week) assert isinstance(week[0].days[0], calendar_grid.Day) @@ -80,7 +84,8 @@ def test_create_weeks(): def test_get_month_block(Calendar): month_weeks = calendar_grid.create_weeks( Calendar.itermonthdates(1988, 5), WEEK_DAYS) - get_block = calendar_grid.get_month_block(calendar_grid.Day(DATE), n=len(month_weeks)) + get_block = calendar_grid.get_month_block( + calendar_grid.Day(DATE), n=len(month_weeks)) for i in range(len(month_weeks)): for j in range(calendar_grid.Week.WEEK_DAYS): From e53c37d720e302fd244af8c021b97027340b3ab3 Mon Sep 17 00:00:00 2001 From: Elor Shoshan Date: Sun, 14 Feb 2021 14:20:23 +0200 Subject: [PATCH 13/64] edit flake8 --- tests/test_calendar_grid.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tests/test_calendar_grid.py b/tests/test_calendar_grid.py index 4bccaf32..a887f57c 100644 --- a/tests/test_calendar_grid.py +++ b/tests/test_calendar_grid.py @@ -54,8 +54,8 @@ def test_get_next_date(): @staticmethod def test_get_date_before_n_days(): - assert calendar_grid.get_date_before_n_days\ - (DATE, N_DAYS) == N_DAYS_BEFORE + assert calendar_grid.get_date_before_n_days( + DATE, N_DAYS) == N_DAYS_BEFORE @staticmethod def test_get_first_day_month_block(Calendar): @@ -73,7 +73,7 @@ def test_get_n_days(): @staticmethod def test_create_weeks(): week = calendar_grid.create_weeks( - NEXT_N_DAYS,calendar_grid.Week.WEEK_DAYS + NEXT_N_DAYS, calendar_grid.Week.WEEK_DAYS ) assert week assert isinstance(week[0], calendar_grid.Week) From 2f7b60abcec0b17d2de146c78435f8a896092ec5 Mon Sep 17 00:00:00 2001 From: Elor Shoshan Date: Sun, 14 Feb 2021 14:27:16 +0200 Subject: [PATCH 14/64] edit flake8 --- tests/test_parasha.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/test_parasha.py b/tests/test_parasha.py index 375ff404..cd3e6c8e 100644 --- a/tests/test_parasha.py +++ b/tests/test_parasha.py @@ -1,11 +1,11 @@ -from app.internal import load_parasha as lp +from app.internal import load_parasha def test_if_db_correct(): example = [{'name': 'Parashat Vayechi', 'hebrew': 'פרשת ויחי', " \ "'link': 'https://www.hebcal.com/sedrot/vayechi-20210102?i=on&utm_source=js&utm_medium=api', " \ "'date': '2021-01-02'}] - result = lp.get_weekly_parasha(example) + result = load_parasha.get_weekly_parasha(example) assert result.name == 'Parashat Vayechi' assert result.date == '2021-01-02' assert result.count() == 1 From 433539fefaf0f5b01c050c8eb2b5f4990369dc5c Mon Sep 17 00:00:00 2001 From: Elor Shoshan Date: Sun, 14 Feb 2021 14:50:32 +0200 Subject: [PATCH 15/64] edit flake8 --- tests/test_parasha.py | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/tests/test_parasha.py b/tests/test_parasha.py index cd3e6c8e..d2a328ae 100644 --- a/tests/test_parasha.py +++ b/tests/test_parasha.py @@ -1,10 +1,12 @@ from app.internal import load_parasha - +from app.database.models import Parasha def test_if_db_correct(): - example = [{'name': 'Parashat Vayechi', 'hebrew': 'פרשת ויחי', " \ - "'link': 'https://www.hebcal.com/sedrot/vayechi-20210102?i=on&utm_source=js&utm_medium=api', " \ - "'date': '2021-01-02'}] + example = Parasha( + 0,'Parashat Vayechi', 'פרשת ויחי', + 'https://www.hebcal.com/sedrot/vayechi-20210102?i=on&utm_source=js&utm_medium=api', + '2021-01-02' + ) result = load_parasha.get_weekly_parasha(example) assert result.name == 'Parashat Vayechi' assert result.date == '2021-01-02' From 58988ba8587d314ab2696ec4672ccc0ebb824452 Mon Sep 17 00:00:00 2001 From: Elor Shoshan Date: Sun, 14 Feb 2021 14:59:18 +0200 Subject: [PATCH 16/64] edit pytest --- tests/test_parasha.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/tests/test_parasha.py b/tests/test_parasha.py index d2a328ae..5cf12d3e 100644 --- a/tests/test_parasha.py +++ b/tests/test_parasha.py @@ -1,12 +1,13 @@ from app.internal import load_parasha from app.database.models import Parasha + def test_if_db_correct(): example = Parasha( - 0,'Parashat Vayechi', 'פרשת ויחי', - 'https://www.hebcal.com/sedrot/vayechi-20210102?i=on&utm_source=js&utm_medium=api', - '2021-01-02' - ) + 0, 'Parashat Vayechi', 'פרשת ויחי', + 'https://www.hebcal.com/sedrot/vayechi-20210102?' + 'i=on&utm_source=js&utm_medium=api', + '2021-01-02') result = load_parasha.get_weekly_parasha(example) assert result.name == 'Parashat Vayechi' assert result.date == '2021-01-02' From eca6849faad024ad210bea04263482bb37879064 Mon Sep 17 00:00:00 2001 From: Elor Shoshan Date: Mon, 15 Feb 2021 22:32:58 +0200 Subject: [PATCH 17/64] edit flake8 --- app/main.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/app/main.py b/app/main.py index 026caebc..ef4dac05 100644 --- a/app/main.py +++ b/app/main.py @@ -46,11 +46,10 @@ def create_tables(engine, psql_environment): agenda, calendar, categories, celebrity, currency, dayview, email, event, export, four_o_four, invitation, login, logout, parasha, profile, - register, search, telegram, user, weekview, whatsapp, + register, search, telegram , user, weekview, whatsapp, ) - @app.get("/docs", include_in_schema=False) async def custom_swagger_ui_html(): return get_swagger_ui_html( From 032e204167d5bdca333f5a9b5262eb107e94df80 Mon Sep 17 00:00:00 2001 From: Elor Shoshan Date: Mon, 15 Feb 2021 22:35:33 +0200 Subject: [PATCH 18/64] edit flake8 --- app/main.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/main.py b/app/main.py index ef4dac05..e96a9265 100644 --- a/app/main.py +++ b/app/main.py @@ -46,7 +46,7 @@ def create_tables(engine, psql_environment): agenda, calendar, categories, celebrity, currency, dayview, email, event, export, four_o_four, invitation, login, logout, parasha, profile, - register, search, telegram , user, weekview, whatsapp, + register, search, telegram, user, weekview, whatsapp ) From 05bf66f68bef688b5e00cb8b2f11cdede9edb3e2 Mon Sep 17 00:00:00 2001 From: Elor Shoshan Date: Tue, 16 Feb 2021 17:21:32 +0200 Subject: [PATCH 19/64] edit after flake8 --- app/routers/calendar.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/routers/calendar.py b/app/routers/calendar.py index 6472bdfd..aee14278 100644 --- a/app/routers/calendar.py +++ b/app/routers/calendar.py @@ -40,7 +40,8 @@ async def update_calendar( request: Request, date: str, days: int ) -> HTMLResponse: last_day = calendar_grid.Day.convert_str_to_date(date) - next_weeks = calendar_grid.create_weeks(calendar_grid.get_n_days(last_day, days)) + next_weeks = calendar_grid.create_weeks( + calendar_grid.get_n_days(last_day, days)) template = templates.get_template( 'partials/calendar/monthly_view/add_week.html') content = template.render(weeks_block=next_weeks) From 497a365e3f9739ece4e9654f48eccaef9253b60e Mon Sep 17 00:00:00 2001 From: Elor Shoshan Date: Tue, 16 Feb 2021 17:54:50 +0200 Subject: [PATCH 20/64] edit after pytest --- app/internal/load_parasha.py | 2 +- app/routers/calendar.py | 1 - tests/test_parasha.py | 13 ++++++------- 3 files changed, 7 insertions(+), 9 deletions(-) diff --git a/app/internal/load_parasha.py b/app/internal/load_parasha.py index cc2ee6aa..21f0c1ac 100644 --- a/app/internal/load_parasha.py +++ b/app/internal/load_parasha.py @@ -61,4 +61,4 @@ def load_parashot_if_table_empty(session: Session) -> None: def get_weekly_parasha(db_session: Session) -> Parasha: """This function return a parashot object""" - return db_session.query(Parasha) + return db_session.query(Parasha).all() diff --git a/app/routers/calendar.py b/app/routers/calendar.py index aee14278..27ed32da 100644 --- a/app/routers/calendar.py +++ b/app/routers/calendar.py @@ -22,7 +22,6 @@ async def calendar(request: Request, db_session=Depends(get_db)) -> Response: user_local_time = calendar_grid.Day.get_user_local_time() day = calendar_grid.create_day(user_local_time) parasha_obj = load_parasha.get_weekly_parasha(db_session) - return templates.TemplateResponse( "calendar_monthly_view.html", { diff --git a/tests/test_parasha.py b/tests/test_parasha.py index 5cf12d3e..b628f6c7 100644 --- a/tests/test_parasha.py +++ b/tests/test_parasha.py @@ -1,14 +1,13 @@ from app.internal import load_parasha -from app.database.models import Parasha +from sqlalchemy.orm import Session def test_if_db_correct(): - example = Parasha( - 0, 'Parashat Vayechi', 'פרשת ויחי', + first_parasha =[0, 'Parashat Vayechi', 'פרשת ויחי', 'https://www.hebcal.com/sedrot/vayechi-20210102?' 'i=on&utm_source=js&utm_medium=api', - '2021-01-02') - result = load_parasha.get_weekly_parasha(example) - assert result.name == 'Parashat Vayechi' - assert result.date == '2021-01-02' + '2021-01-02'] + result = load_parasha.get_weekly_parasha(Session)[0] + assert result.name == first_parasha[1] + assert result.date == first_parasha[5] assert result.count() == 1 From 18ed51d3f6f4a9968dc3c0c7ebbfede798b6d0d2 Mon Sep 17 00:00:00 2001 From: Elor Shoshan Date: Tue, 16 Feb 2021 17:59:13 +0200 Subject: [PATCH 21/64] edit after pytest --- tests/test_parasha.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/tests/test_parasha.py b/tests/test_parasha.py index b628f6c7..4feb7a70 100644 --- a/tests/test_parasha.py +++ b/tests/test_parasha.py @@ -3,10 +3,10 @@ def test_if_db_correct(): - first_parasha =[0, 'Parashat Vayechi', 'פרשת ויחי', - 'https://www.hebcal.com/sedrot/vayechi-20210102?' - 'i=on&utm_source=js&utm_medium=api', - '2021-01-02'] + first_parasha = [0, 'Parashat Vayechi', 'פרשת ויחי', + 'https://www.hebcal.com/sedrot/vayechi-20210102?', + 'i=on&utm_source=js&utm_medium=api', + '2021-01-02'] result = load_parasha.get_weekly_parasha(Session)[0] assert result.name == first_parasha[1] assert result.date == first_parasha[5] From 8d7a6c158850624f860c5cdcc403a11f1e894e3f Mon Sep 17 00:00:00 2001 From: Elor Shoshan Date: Tue, 16 Feb 2021 18:27:11 +0200 Subject: [PATCH 22/64] edit after pytest --- app/internal/load_parasha.py | 1 + tests/test_parasha.py | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/app/internal/load_parasha.py b/app/internal/load_parasha.py index 21f0c1ac..b1621651 100644 --- a/app/internal/load_parasha.py +++ b/app/internal/load_parasha.py @@ -61,4 +61,5 @@ def load_parashot_if_table_empty(session: Session) -> None: def get_weekly_parasha(db_session: Session) -> Parasha: """This function return a parashot object""" + print(db_session.query(Parasha).all()[0].name) return db_session.query(Parasha).all() diff --git a/tests/test_parasha.py b/tests/test_parasha.py index 4feb7a70..d5dbc90e 100644 --- a/tests/test_parasha.py +++ b/tests/test_parasha.py @@ -8,6 +8,6 @@ def test_if_db_correct(): 'i=on&utm_source=js&utm_medium=api', '2021-01-02'] result = load_parasha.get_weekly_parasha(Session)[0] - assert result.name == first_parasha[1] - assert result.date == first_parasha[5] + assert result.name is first_parasha[1] + assert result.date is first_parasha[5] assert result.count() == 1 From b072699a2ce137877d9cf48cf085cf77bbec4d60 Mon Sep 17 00:00:00 2001 From: Elor Shoshan Date: Tue, 16 Feb 2021 18:37:56 +0200 Subject: [PATCH 23/64] edit after pytest --- tests/test_parasha.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/test_parasha.py b/tests/test_parasha.py index d5dbc90e..729d8e10 100644 --- a/tests/test_parasha.py +++ b/tests/test_parasha.py @@ -2,12 +2,12 @@ from sqlalchemy.orm import Session -def test_if_db_correct(): +def test_if_db_correct(session: Session): first_parasha = [0, 'Parashat Vayechi', 'פרשת ויחי', 'https://www.hebcal.com/sedrot/vayechi-20210102?', 'i=on&utm_source=js&utm_medium=api', '2021-01-02'] - result = load_parasha.get_weekly_parasha(Session)[0] + result = load_parasha.get_weekly_parasha(session)[0] assert result.name is first_parasha[1] assert result.date is first_parasha[5] assert result.count() == 1 From 60386ce69e719f961f91fa39ca757c99a458d5ce Mon Sep 17 00:00:00 2001 From: Elor Shoshan Date: Tue, 16 Feb 2021 18:43:25 +0200 Subject: [PATCH 24/64] edit after pytest --- app/internal/load_parasha.py | 1 - 1 file changed, 1 deletion(-) diff --git a/app/internal/load_parasha.py b/app/internal/load_parasha.py index b1621651..21f0c1ac 100644 --- a/app/internal/load_parasha.py +++ b/app/internal/load_parasha.py @@ -61,5 +61,4 @@ def load_parashot_if_table_empty(session: Session) -> None: def get_weekly_parasha(db_session: Session) -> Parasha: """This function return a parashot object""" - print(db_session.query(Parasha).all()[0].name) return db_session.query(Parasha).all() From 2044f70eaf35cc5b1d796f98512fd26cebf35fbe Mon Sep 17 00:00:00 2001 From: Elor Shoshan Date: Tue, 16 Feb 2021 18:51:35 +0200 Subject: [PATCH 25/64] edit after pytest --- tests/test_parasha.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/tests/test_parasha.py b/tests/test_parasha.py index 729d8e10..3b245a0e 100644 --- a/tests/test_parasha.py +++ b/tests/test_parasha.py @@ -7,7 +7,8 @@ def test_if_db_correct(session: Session): 'https://www.hebcal.com/sedrot/vayechi-20210102?', 'i=on&utm_source=js&utm_medium=api', '2021-01-02'] - result = load_parasha.get_weekly_parasha(session)[0] - assert result.name is first_parasha[1] - assert result.date is first_parasha[5] - assert result.count() == 1 + + result = load_parasha.get_weekly_parasha(session) + assert result[0].name is first_parasha[1] + assert result[0].date is first_parasha[5] + From 992841ab2baee644141d8eced079ed4ab54626d0 Mon Sep 17 00:00:00 2001 From: Elor Shoshan Date: Tue, 16 Feb 2021 19:58:29 +0200 Subject: [PATCH 26/64] edit after pytest --- tests/test_parasha.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/tests/test_parasha.py b/tests/test_parasha.py index 3b245a0e..fdc4d023 100644 --- a/tests/test_parasha.py +++ b/tests/test_parasha.py @@ -7,8 +7,6 @@ def test_if_db_correct(session: Session): 'https://www.hebcal.com/sedrot/vayechi-20210102?', 'i=on&utm_source=js&utm_medium=api', '2021-01-02'] - result = load_parasha.get_weekly_parasha(session) assert result[0].name is first_parasha[1] assert result[0].date is first_parasha[5] - From f588ded28e3bc2387ffa1fc816be899460485db1 Mon Sep 17 00:00:00 2001 From: Elor Shoshan Date: Tue, 16 Feb 2021 20:03:39 +0200 Subject: [PATCH 27/64] edit after pytest --- tests/test_parasha.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tests/test_parasha.py b/tests/test_parasha.py index fdc4d023..ebe22982 100644 --- a/tests/test_parasha.py +++ b/tests/test_parasha.py @@ -7,6 +7,6 @@ def test_if_db_correct(session: Session): 'https://www.hebcal.com/sedrot/vayechi-20210102?', 'i=on&utm_source=js&utm_medium=api', '2021-01-02'] - result = load_parasha.get_weekly_parasha(session) - assert result[0].name is first_parasha[1] - assert result[0].date is first_parasha[5] + result = load_parasha.get_weekly_parasha(session).first() + assert result.name is first_parasha[1] + assert result.date is first_parasha[5] From 76472c127ba7cdb717fa3c53269436552a6d6594 Mon Sep 17 00:00:00 2001 From: Elor Shoshan Date: Tue, 16 Feb 2021 20:12:29 +0200 Subject: [PATCH 28/64] edit after pytest --- tests/test_parasha.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/tests/test_parasha.py b/tests/test_parasha.py index ebe22982..b54350cf 100644 --- a/tests/test_parasha.py +++ b/tests/test_parasha.py @@ -1,12 +1,13 @@ +from app.dependencies import get_db from app.internal import load_parasha -from sqlalchemy.orm import Session +from fastapi import Depends -def test_if_db_correct(session: Session): +def test_if_db_correct(): first_parasha = [0, 'Parashat Vayechi', 'פרשת ויחי', 'https://www.hebcal.com/sedrot/vayechi-20210102?', 'i=on&utm_source=js&utm_medium=api', '2021-01-02'] - result = load_parasha.get_weekly_parasha(session).first() + result = load_parasha.get_weekly_parasha(Depends(get_db)) assert result.name is first_parasha[1] assert result.date is first_parasha[5] From 1a2ba6904f145f908a5dc84c73eb94e88bbfbafd Mon Sep 17 00:00:00 2001 From: Elor Shoshan Date: Tue, 16 Feb 2021 20:22:01 +0200 Subject: [PATCH 29/64] edit after pytest --- tests/test_parasha.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/tests/test_parasha.py b/tests/test_parasha.py index b54350cf..9a8f8906 100644 --- a/tests/test_parasha.py +++ b/tests/test_parasha.py @@ -1,13 +1,14 @@ from app.dependencies import get_db from app.internal import load_parasha from fastapi import Depends +from sqlalchemy.orm import Session -def test_if_db_correct(): +def test_if_db_correct(db_session : Session = Depends(get_db)): first_parasha = [0, 'Parashat Vayechi', 'פרשת ויחי', 'https://www.hebcal.com/sedrot/vayechi-20210102?', 'i=on&utm_source=js&utm_medium=api', '2021-01-02'] - result = load_parasha.get_weekly_parasha(Depends(get_db)) + result = load_parasha.get_weekly_parasha(db_session)[0] assert result.name is first_parasha[1] assert result.date is first_parasha[5] From c4c7227fa21205d3df294fd6f0aee3408cf1742e Mon Sep 17 00:00:00 2001 From: Elor Shoshan Date: Tue, 16 Feb 2021 20:24:41 +0200 Subject: [PATCH 30/64] edit after pytest --- tests/test_parasha.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/test_parasha.py b/tests/test_parasha.py index 9a8f8906..7cdf15ea 100644 --- a/tests/test_parasha.py +++ b/tests/test_parasha.py @@ -4,7 +4,7 @@ from sqlalchemy.orm import Session -def test_if_db_correct(db_session : Session = Depends(get_db)): +def test_if_db_correct(db_session: Session = Depends(get_db)): first_parasha = [0, 'Parashat Vayechi', 'פרשת ויחי', 'https://www.hebcal.com/sedrot/vayechi-20210102?', 'i=on&utm_source=js&utm_medium=api', From 3042a61dccacd6dcc34bce849cb74742c76c3539 Mon Sep 17 00:00:00 2001 From: Elor Shoshan Date: Tue, 16 Feb 2021 23:43:00 +0200 Subject: [PATCH 31/64] check --- app/internal/json_data_loader.py | 2 +- app/internal/load_parasha.py | 2 +- app/main.py | 1 - tests/test_parasha.py | 12 ++++++++---- 4 files changed, 10 insertions(+), 7 deletions(-) diff --git a/app/internal/json_data_loader.py b/app/internal/json_data_loader.py index 84ce778b..76f05544 100644 --- a/app/internal/json_data_loader.py +++ b/app/internal/json_data_loader.py @@ -13,7 +13,7 @@ def get_data_from_json(path: str) -> List[Dict[str, Union[str, int, None]]]: """This function reads all of the data from a specific JSON file. The json file consists of list of dictionaries""" try: - with open(path, 'r') as f: + with open(path, 'r', encoding='utf-8-sig') as f: json_content_list = json.load(f) except (IOError, ValueError): file_name = os.path.basename(path) diff --git a/app/internal/load_parasha.py b/app/internal/load_parasha.py index 21f0c1ac..e9556812 100644 --- a/app/internal/load_parasha.py +++ b/app/internal/load_parasha.py @@ -55,7 +55,7 @@ def add_parashot_to_db(session: Session) -> None: def load_parashot_if_table_empty(session: Session) -> None: """loading parashot from file to db """ - if session.query(Parasha).count() == 0: + if session.query(Parasha).first() is None: add_parashot_to_db(session) diff --git a/app/main.py b/app/main.py index 51ba7f44..dd549b58 100644 --- a/app/main.py +++ b/app/main.py @@ -106,7 +106,6 @@ async def home(request: Request, db: Session = Depends(get_db)): quote = daily_quotes.quote_per_day(db) return templates.TemplateResponse("index.html", { "request": request, - "message": "Hello, World!", "quote": quote, }) diff --git a/tests/test_parasha.py b/tests/test_parasha.py index 7cdf15ea..11622ae1 100644 --- a/tests/test_parasha.py +++ b/tests/test_parasha.py @@ -5,10 +5,14 @@ def test_if_db_correct(db_session: Session = Depends(get_db)): - first_parasha = [0, 'Parashat Vayechi', 'פרשת ויחי', - 'https://www.hebcal.com/sedrot/vayechi-20210102?', - 'i=on&utm_source=js&utm_medium=api', - '2021-01-02'] + first_parasha = [ + 0, + 'Parashat Vayechi', + 'פרשת ויחי', + 'https://www.hebcal.com/sedrot/vayechi-20210102?' + 'i=on&utm_source=js&utm_medium=api', + '2021-01-02' + ] result = load_parasha.get_weekly_parasha(db_session)[0] assert result.name is first_parasha[1] assert result.date is first_parasha[5] From 8fbee77f101a84087bc81aa82523f4913d061fa4 Mon Sep 17 00:00:00 2001 From: Elor Shoshan Date: Wed, 17 Feb 2021 00:36:04 +0200 Subject: [PATCH 32/64] edit after comments --- app/internal/json_data_loader.py | 26 ++++++++++++- app/internal/load_parasha.py | 64 -------------------------------- app/internal/weekly_parasha.py | 26 +++++++++++++ app/main.py | 6 +-- app/routers/calendar.py | 4 +- app/routers/parasha.py | 14 ------- tests/test_parasha.py | 26 ++++++------- 7 files changed, 65 insertions(+), 101 deletions(-) delete mode 100644 app/internal/load_parasha.py create mode 100644 app/internal/weekly_parasha.py delete mode 100644 app/routers/parasha.py diff --git a/app/internal/json_data_loader.py b/app/internal/json_data_loader.py index 76f05544..6e286722 100644 --- a/app/internal/json_data_loader.py +++ b/app/internal/json_data_loader.py @@ -5,8 +5,8 @@ from loguru import logger from sqlalchemy.orm import Session -from app.database.models import Base, Quote, Zodiac -from app.internal import daily_quotes, zodiac +from app.database.models import Base, Quote, Zodiac, Parasha +from app.internal import daily_quotes, zodiac, weekly_parasha def get_data_from_json(path: str) -> List[Dict[str, Union[str, int, None]]]: @@ -54,3 +54,25 @@ def load_to_db(session) -> None: """The quotes JSON file content is copied from the free API: 'https://type.fit/api/quotes'. I saved the content so the API won't be called every time the app is initialized.""" + load_data( + session, 'app/resources/parashot.json', + Parasha, weekly_parasha.create_parasha_object) + """The quotes JSON file content is copied from the free API: + 'https://www.hebcal.com/hebcal?v=1&cfg=json&maj=on&min=on& + mod=on&nx=on&year=now&month=x&ss=on&mf=on&c=on&geo=geoname + &geonameid=293397&m=50&s=on&d=on&D=on'. + Each year the Json file will need to be re-updated + according to this API in this way: + + def relevent_details(p): + parashot_dict = {'name': p['title'], 'hebrew': p['hebrew'], + 'link': p['link'], 'date': p['date']} + return parashot_dict + + + def get_all_parashot(API): + r = requests.get(API) + items = r.json()['items'] + all_para = list(filter(lambda i: 'Parashat' in i['title'], items)) + return [relevent_details(p) for p in all_para] + """ diff --git a/app/internal/load_parasha.py b/app/internal/load_parasha.py deleted file mode 100644 index e9556812..00000000 --- a/app/internal/load_parasha.py +++ /dev/null @@ -1,64 +0,0 @@ -import json -from datetime import datetime - -from app.database.models import Parasha -from sqlalchemy.orm import Session -from typing import Dict, List, Optional - - -def get_parashot_from_json() -> List[Dict[str, Optional[str]]]: - """Reading all parashot from the a JSON file that have been copied from: - 'https://www.hebcal.com/hebcal?v=1&cfg=json&maj=on&min=on&mod=on& - nx=on&year=now&month=x&ss=on&mf=on&c=on& - geo=geoname&geonameid=293397&m=50&s=on&d=on&D=on' - Each year the Json file will need to be re-updated - according to this API in this way: - - def relevent_details(p): - parashot_dict = {'name': p['title'], 'hebrew': p['hebrew'], - 'link': p['link'], 'date': p['date']} - return parashot_dict - - - def get_all_parashot(): - r = requests.get('https://www.hebcal.com/hebcal?v=1&cfg=json& - maj=on&min=on&mod=on&nx=on&year=now&month=x&ss=on&mf=on&c=on& - geo=geoname&geonameid=293397&m=50&s=on&d=on&D=on') - items = r.json()['items'] - all_para = list(filter(lambda i: 'Parashat' in i['title'], items)) - return [relevent_details(p) for p in all_para] - """ - - try: - with open('app/resources/parashot.json', encoding='utf-8-sig') as f: - parashot_list = json.load(f) - except (IOError, ValueError): - return [] - return parashot_list - - -def add_parashot_to_db(session: Session) -> None: - """This function reads the parashot and inserts them into the db""" - parashot = get_parashot_from_json() - parashot_objects = [ - Parasha( - name=parasha['name'], - hebrew_name=parasha['hebrew'], - link=parasha['link'], - date=datetime.strptime(parasha['date'], '%Y-%m-%d').date() - ) - for parasha in parashot - ] - session.add_all(parashot_objects) - session.commit() - - -def load_parashot_if_table_empty(session: Session) -> None: - """loading parashot from file to db """ - if session.query(Parasha).first() is None: - add_parashot_to_db(session) - - -def get_weekly_parasha(db_session: Session) -> Parasha: - """This function return a parashot object""" - return db_session.query(Parasha).all() diff --git a/app/internal/weekly_parasha.py b/app/internal/weekly_parasha.py new file mode 100644 index 00000000..185352a6 --- /dev/null +++ b/app/internal/weekly_parasha.py @@ -0,0 +1,26 @@ +from datetime import datetime +from typing import Dict, Optional, List + +from fastapi import APIRouter, Depends, Request +from sqlalchemy.orm import Session + +from app.database.models import Parasha + + +router = APIRouter() + + +def create_parasha_object(parashot_fields: Dict[str, Optional[str]]) -> Parasha: + """This function create a quote object from given fields dictionary. + It is used for adding the data from the json into the db""" + return Parasha( + name=parashot_fields['name'], + hebrew_name=parashot_fields['hebrew'], + link=parashot_fields['link'], + date=datetime.strptime(parashot_fields['date'], '%Y-%m-%d').date() + ) + + +def get_all_parahot_list(db_session: Session) -> List[Dict[str, Optional[str]]]: + """This function return all parashot object in list""" + return db_session.query(Parasha).all() diff --git a/app/main.py b/app/main.py index dd549b58..69acc91d 100644 --- a/app/main.py +++ b/app/main.py @@ -1,7 +1,7 @@ from app import config from app.database import engine, models from app.dependencies import get_db, logger, MEDIA_PATH, STATIC_PATH, templates -from app.internal import daily_quotes, json_data_loader, load_parasha +from app.internal import daily_quotes, json_data_loader from app.internal.languages import set_ui_language from app.internal.security.ouath2 import auth_exception_handler from app.utils.extending_openapi import custom_openapi @@ -37,7 +37,6 @@ def create_tables(engine, psql_environment): app.add_exception_handler(HTTP_401_UNAUTHORIZED, auth_exception_handler) json_data_loader.load_to_db(next(get_db())) -load_parasha.load_parashot_if_table_empty(next(get_db())) # This MUST come before the app.routers imports. set_ui_language() @@ -45,7 +44,7 @@ def create_tables(engine, psql_environment): about_us, agenda, calendar, categories, celebrity, currency, dayview, email, event, export, four_o_four, - google_connect, invitation, login, logout, parasha, + google_connect, invitation, login, logout, profile, register, search, telegram, user, weekview, whatsapp, ) @@ -84,7 +83,6 @@ async def swagger_ui_redirect(): invitation.router, login.router, logout.router, - parasha.router, profile.router, register.router, salary.router, diff --git a/app/routers/calendar.py b/app/routers/calendar.py index 27ed32da..d7a3815c 100644 --- a/app/routers/calendar.py +++ b/app/routers/calendar.py @@ -2,7 +2,7 @@ from app.dependencies import get_db, templates -from app.internal import load_parasha +from app.internal import weekly_parasha from app.routers import calendar_grid from fastapi import APIRouter, Request, Depends from fastapi.responses import HTMLResponse @@ -21,7 +21,7 @@ async def calendar(request: Request, db_session=Depends(get_db)) -> Response: user_local_time = calendar_grid.Day.get_user_local_time() day = calendar_grid.create_day(user_local_time) - parasha_obj = load_parasha.get_weekly_parasha(db_session) + parasha_obj = weekly_parasha.get_all_parahot_list(db_session) return templates.TemplateResponse( "calendar_monthly_view.html", { diff --git a/app/routers/parasha.py b/app/routers/parasha.py deleted file mode 100644 index 9f1f727f..00000000 --- a/app/routers/parasha.py +++ /dev/null @@ -1,14 +0,0 @@ -from fastapi import APIRouter, Depends, Request -from sqlalchemy.orm import Session - - -from app.dependencies import get_db -from app.internal import load_parasha - - -router = APIRouter() - - -@router.get("/parasha") -async def parasha(request: Request, db: Session = Depends(get_db)): - return load_parasha.get_weekly_parasha(db) diff --git a/tests/test_parasha.py b/tests/test_parasha.py index 11622ae1..5a75aed2 100644 --- a/tests/test_parasha.py +++ b/tests/test_parasha.py @@ -1,18 +1,14 @@ -from app.dependencies import get_db -from app.internal import load_parasha -from fastapi import Depends -from sqlalchemy.orm import Session +from app.internal import weekly_parasha -def test_if_db_correct(db_session: Session = Depends(get_db)): - first_parasha = [ - 0, - 'Parashat Vayechi', - 'פרשת ויחי', - 'https://www.hebcal.com/sedrot/vayechi-20210102?' +def test_create_parasha_object(): + parashot_fields = { + 'name': 'Parashat Vayechi', + 'hebrew_name': 'פרשת ויחי', + 'link': 'https://www.hebcal.com/sedrot/vayechi-20210102?' 'i=on&utm_source=js&utm_medium=api', - '2021-01-02' - ] - result = load_parasha.get_weekly_parasha(db_session)[0] - assert result.name is first_parasha[1] - assert result.date is first_parasha[5] + 'date': '2021-01-02' + } + result = weekly_parasha.create_parasha_object(parashot_fields) + assert result.name == 'Parashat Vayechi' + assert result.date == '2021-01-02' From 2c166248022c08197902763fcf5b5c79ed0286c6 Mon Sep 17 00:00:00 2001 From: Elor Shoshan Date: Wed, 17 Feb 2021 00:41:08 +0200 Subject: [PATCH 33/64] edit after flake8 --- app/internal/weekly_parasha.py | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/app/internal/weekly_parasha.py b/app/internal/weekly_parasha.py index 185352a6..9558e687 100644 --- a/app/internal/weekly_parasha.py +++ b/app/internal/weekly_parasha.py @@ -1,7 +1,7 @@ from datetime import datetime from typing import Dict, Optional, List -from fastapi import APIRouter, Depends, Request +from fastapi import APIRouter from sqlalchemy.orm import Session from app.database.models import Parasha @@ -10,8 +10,9 @@ router = APIRouter() -def create_parasha_object(parashot_fields: Dict[str, Optional[str]]) -> Parasha: - """This function create a quote object from given fields dictionary. +def create_parasha_object(parashot_fields: Dict[str, Optional[str]])\ + -> Parasha: + """This function create a parasha object from given fields dictionary. It is used for adding the data from the json into the db""" return Parasha( name=parashot_fields['name'], @@ -21,6 +22,7 @@ def create_parasha_object(parashot_fields: Dict[str, Optional[str]]) -> Parasha: ) -def get_all_parahot_list(db_session: Session) -> List[Dict[str, Optional[str]]]: +def get_all_parahot_list(db_session: Session) \ + -> List[Dict[str, Optional[str]]]: """This function return all parashot object in list""" return db_session.query(Parasha).all() From e08ee634b402a38d001d3fb310d9d78103c44e43 Mon Sep 17 00:00:00 2001 From: Elor Shoshan Date: Wed, 17 Feb 2021 00:48:01 +0200 Subject: [PATCH 34/64] edit after pytest --- tests/{test_parasha.py => test_weekly_parasha.py} | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) rename tests/{test_parasha.py => test_weekly_parasha.py} (90%) diff --git a/tests/test_parasha.py b/tests/test_weekly_parasha.py similarity index 90% rename from tests/test_parasha.py rename to tests/test_weekly_parasha.py index 5a75aed2..376df234 100644 --- a/tests/test_parasha.py +++ b/tests/test_weekly_parasha.py @@ -4,7 +4,7 @@ def test_create_parasha_object(): parashot_fields = { 'name': 'Parashat Vayechi', - 'hebrew_name': 'פרשת ויחי', + 'hebrew': 'פרשת ויחי', 'link': 'https://www.hebcal.com/sedrot/vayechi-20210102?' 'i=on&utm_source=js&utm_medium=api', 'date': '2021-01-02' From 900d4c59e5778d9e65549f47979dd569ca9d5315 Mon Sep 17 00:00:00 2001 From: Elor Shoshan Date: Wed, 17 Feb 2021 00:52:56 +0200 Subject: [PATCH 35/64] edit after pytest --- tests/test_weekly_parasha.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/tests/test_weekly_parasha.py b/tests/test_weekly_parasha.py index 376df234..583f4adf 100644 --- a/tests/test_weekly_parasha.py +++ b/tests/test_weekly_parasha.py @@ -1,3 +1,6 @@ +from datetime import datetime + + from app.internal import weekly_parasha @@ -11,4 +14,4 @@ def test_create_parasha_object(): } result = weekly_parasha.create_parasha_object(parashot_fields) assert result.name == 'Parashat Vayechi' - assert result.date == '2021-01-02' + assert result.date == datetime.date(2021, 1, 2) From d734bc1a792cb3b8826fca6ea50a0482f80be431 Mon Sep 17 00:00:00 2001 From: Elor Shoshan Date: Wed, 17 Feb 2021 00:59:02 +0200 Subject: [PATCH 36/64] edit after pytest --- tests/test_weekly_parasha.py | 1 - 1 file changed, 1 deletion(-) diff --git a/tests/test_weekly_parasha.py b/tests/test_weekly_parasha.py index 583f4adf..a5c416e6 100644 --- a/tests/test_weekly_parasha.py +++ b/tests/test_weekly_parasha.py @@ -14,4 +14,3 @@ def test_create_parasha_object(): } result = weekly_parasha.create_parasha_object(parashot_fields) assert result.name == 'Parashat Vayechi' - assert result.date == datetime.date(2021, 1, 2) From bee1cbc83e01d4a113c2c35fc4fb7c6774a7393d Mon Sep 17 00:00:00 2001 From: Elor Shoshan Date: Wed, 17 Feb 2021 01:03:40 +0200 Subject: [PATCH 37/64] edit after pytest --- tests/test_weekly_parasha.py | 3 --- 1 file changed, 3 deletions(-) diff --git a/tests/test_weekly_parasha.py b/tests/test_weekly_parasha.py index a5c416e6..a01b4d92 100644 --- a/tests/test_weekly_parasha.py +++ b/tests/test_weekly_parasha.py @@ -1,6 +1,3 @@ -from datetime import datetime - - from app.internal import weekly_parasha From f5b83685cf7738a7010285ffebbfd76ed58c43f7 Mon Sep 17 00:00:00 2001 From: Elor Shoshan Date: Wed, 17 Feb 2021 01:41:33 +0200 Subject: [PATCH 38/64] edit after pytest --- app/database/models.py | 21 +++++++++++++++++++++ app/internal/json_data_loader.py | 17 +---------------- 2 files changed, 22 insertions(+), 16 deletions(-) diff --git a/app/database/models.py b/app/database/models.py index e29fcfbf..6872b210 100644 --- a/app/database/models.py +++ b/app/database/models.py @@ -334,6 +334,27 @@ def __repr__(self): class Parasha(Base): + """Each year the Json file will need to be re-updated + according to this API in this way: + + def relevent_details(parasha): + parashot_dict = { + 'name': parasha['title'], + 'hebrew': parasha['hebrew'], + 'link': parasha['link'], + 'date': parasha['date']} + return parashot_dict + + + def get_all_parashot(): + request = requests.get( + 'https://www.hebcal.com/hebcal?v=1&cfg=json&maj=on& + min=on&mod=on&nx=on&year=now&month=x&ss=on&mf=on& + c=on&geo=geoname&geonameid=293397&m=50&s=on&d=on&D=on') + items = request.json()['items'] + [relevent_details(p) for parasha in items + if 'Parashat' in parasha['title]]? + """ __tablename__ = "parashot" id = Column(Integer, primary_key=True, index=True) diff --git a/app/internal/json_data_loader.py b/app/internal/json_data_loader.py index 6e286722..7d99a041 100644 --- a/app/internal/json_data_loader.py +++ b/app/internal/json_data_loader.py @@ -60,19 +60,4 @@ def load_to_db(session) -> None: """The quotes JSON file content is copied from the free API: 'https://www.hebcal.com/hebcal?v=1&cfg=json&maj=on&min=on& mod=on&nx=on&year=now&month=x&ss=on&mf=on&c=on&geo=geoname - &geonameid=293397&m=50&s=on&d=on&D=on'. - Each year the Json file will need to be re-updated - according to this API in this way: - - def relevent_details(p): - parashot_dict = {'name': p['title'], 'hebrew': p['hebrew'], - 'link': p['link'], 'date': p['date']} - return parashot_dict - - - def get_all_parashot(API): - r = requests.get(API) - items = r.json()['items'] - all_para = list(filter(lambda i: 'Parashat' in i['title'], items)) - return [relevent_details(p) for p in all_para] - """ + &geonameid=293397&m=50&s=on&d=on&D=on'.""" From 48b3c623f04205a94b58f7524edbdd0123b4bcf8 Mon Sep 17 00:00:00 2001 From: Elor Shoshan Date: Wed, 17 Feb 2021 03:36:24 +0200 Subject: [PATCH 39/64] edit after flake8 --- app/database/models.py | 5 +++-- app/internal/json_data_loader.py | 3 ++- app/internal/weekly_parasha.py | 7 +------ 3 files changed, 6 insertions(+), 9 deletions(-) diff --git a/app/database/models.py b/app/database/models.py index 6872b210..9345608d 100644 --- a/app/database/models.py +++ b/app/database/models.py @@ -334,7 +334,8 @@ def __repr__(self): class Parasha(Base): - """Each year the Json file will need to be re-updated + """ + Each year the Json file will need to be re-updated according to this API in this way: def relevent_details(parasha): @@ -353,7 +354,7 @@ def get_all_parashot(): c=on&geo=geoname&geonameid=293397&m=50&s=on&d=on&D=on') items = request.json()['items'] [relevent_details(p) for parasha in items - if 'Parashat' in parasha['title]]? + if 'Parashat' in parasha['title]] """ __tablename__ = "parashot" diff --git a/app/internal/json_data_loader.py b/app/internal/json_data_loader.py index 7d99a041..1145aa93 100644 --- a/app/internal/json_data_loader.py +++ b/app/internal/json_data_loader.py @@ -57,7 +57,8 @@ def load_to_db(session) -> None: load_data( session, 'app/resources/parashot.json', Parasha, weekly_parasha.create_parasha_object) - """The quotes JSON file content is copied from the free API: + """The parashot and hebrew_view JSON files content + is copied from the free API: 'https://www.hebcal.com/hebcal?v=1&cfg=json&maj=on&min=on& mod=on&nx=on&year=now&month=x&ss=on&mf=on&c=on&geo=geoname &geonameid=293397&m=50&s=on&d=on&D=on'.""" diff --git a/app/internal/weekly_parasha.py b/app/internal/weekly_parasha.py index 9558e687..81072504 100644 --- a/app/internal/weekly_parasha.py +++ b/app/internal/weekly_parasha.py @@ -1,13 +1,8 @@ from datetime import datetime from typing import Dict, Optional, List -from fastapi import APIRouter -from sqlalchemy.orm import Session - from app.database.models import Parasha - - -router = APIRouter() +from sqlalchemy.orm import Session def create_parasha_object(parashot_fields: Dict[str, Optional[str]])\ From bd77d765474cf533243d1dbf12f7a336c951e4fa Mon Sep 17 00:00:00 2001 From: Elor Shoshan Date: Thu, 18 Feb 2021 14:41:17 +0200 Subject: [PATCH 40/64] edit after pull --- app/database/models.py | 10 +++++----- app/internal/weekly_parasha.py | 4 ++-- .../partials/calendar/monthly_view/add_week.html | 3 ++- 3 files changed, 9 insertions(+), 8 deletions(-) diff --git a/app/database/models.py b/app/database/models.py index 9345608d..17a23afb 100644 --- a/app/database/models.py +++ b/app/database/models.py @@ -131,14 +131,14 @@ class Category(Base): user_id = Column(Integer, ForeignKey("users.id"), nullable=False) @staticmethod - def create(db_session: Session, name: str, color: str, + def create(session: Session, name: str, color: str, user_id: int) -> Category: try: category = Category(name=name, color=color, user_id=user_id) - db_session.add(category) - db_session.flush() - db_session.commit() - db_session.refresh(category) + session.add(category) + session.flush() + session.commit() + session.refresh(category) except (SQLAlchemyError, IntegrityError) as e: logger.error(f"Failed to create category: {e}") raise e diff --git a/app/internal/weekly_parasha.py b/app/internal/weekly_parasha.py index 81072504..a95e50e0 100644 --- a/app/internal/weekly_parasha.py +++ b/app/internal/weekly_parasha.py @@ -17,7 +17,7 @@ def create_parasha_object(parashot_fields: Dict[str, Optional[str]])\ ) -def get_all_parahot_list(db_session: Session) \ +def get_all_parahot_list(session: Session) \ -> List[Dict[str, Optional[str]]]: """This function return all parashot object in list""" - return db_session.query(Parasha).all() + return session.query(Parasha).all() diff --git a/app/templates/partials/calendar/monthly_view/add_week.html b/app/templates/partials/calendar/monthly_view/add_week.html index 893a72ec..acb0509d 100644 --- a/app/templates/partials/calendar/monthly_view/add_week.html +++ b/app/templates/partials/calendar/monthly_view/add_week.html @@ -20,7 +20,8 @@

{{parasha.name}} / {{parasha.hebrew_name}}
- פירוט בלינק נפרד על {{parasha.hebrew_name}}

+ {{ gettext(" פירוט בלינק נפרד על %(parashah)s", + parashah=parasha.hebrew_name) }}

{% endif %} {% endfor %} From c4093e1df7fd8bc8db2290c93edd3d70cb5a402a Mon Sep 17 00:00:00 2001 From: Elor Shoshan Date: Fri, 19 Feb 2021 14:11:33 +0200 Subject: [PATCH 41/64] edit after pull --- app/internal/json_data_loader.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/internal/json_data_loader.py b/app/internal/json_data_loader.py index 405a9da4..6b7d4ff6 100644 --- a/app/internal/json_data_loader.py +++ b/app/internal/json_data_loader.py @@ -93,7 +93,7 @@ def _get_data_from_json(path: str) -> List[Dict[str, Any]]: A list of dictionary objects. """ try: - with open(path, 'r', encoding='utf-8-sig') as json_file: + with open(path, 'r') as json_file: json_content = json.load(json_file) except (IOError, ValueError): file_name = os.path.basename(path) From ba8d8402fefe07e86487ab97703ce1c136ee80e7 Mon Sep 17 00:00:00 2001 From: Elor Shoshan Date: Fri, 19 Feb 2021 14:14:14 +0200 Subject: [PATCH 42/64] edit after pull --- app/internal/json_data_loader.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/internal/json_data_loader.py b/app/internal/json_data_loader.py index 6b7d4ff6..4e5856dd 100644 --- a/app/internal/json_data_loader.py +++ b/app/internal/json_data_loader.py @@ -100,4 +100,4 @@ def _get_data_from_json(path: str) -> List[Dict[str, Any]]: logger.exception( f"An error occurred during reading of json file: {file_name}") return [] - return json_content \ No newline at end of file + return json_content From 35722bc67d730e44253395484f51e988a27c4aa7 Mon Sep 17 00:00:00 2001 From: Elor Shoshan Date: Fri, 19 Feb 2021 14:38:37 +0200 Subject: [PATCH 43/64] edit after pull --- app/internal/json_data_loader.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/app/internal/json_data_loader.py b/app/internal/json_data_loader.py index 4e5856dd..a92cc8ab 100644 --- a/app/internal/json_data_loader.py +++ b/app/internal/json_data_loader.py @@ -11,6 +11,7 @@ def load_to_database(session: Session) -> None: """Loads data from JSON data files into the database. + On startup, data from the JSON files should be added to the database and not be accessed from a network call for each request as it is costly. @@ -21,6 +22,7 @@ def load_to_database(session: Session) -> None: 'https://www.hebcal.com/hebcal?v=1&cfg=json&maj=on&min=on& mod=on&nx=on&year=now&month=x&ss=on&mf=on&c=on&geo=geoname &geonameid=293397&m=50&s=on&d=on&D=on'. + Args: session: The database connection. """ @@ -74,9 +76,11 @@ def _insert_into_database( def _is_table_empty(session: Session, table: Base) -> bool: """Returns True if the table is empty. + Args: session: The database connection. table: A model entity table. + Returns: True if the table is empty, otherwise returns False. """ @@ -85,10 +89,13 @@ def _is_table_empty(session: Session, table: Base) -> bool: def _get_data_from_json(path: str) -> List[Dict[str, Any]]: """Returns a list of dictionary objects. + Reads the data from a specific JSON file and converts the data into a list of dictionary items. + Args: path: The file path. + Returns: A list of dictionary objects. """ From c6c01fb0e8213153a09934fdfcf5210512a077d3 Mon Sep 17 00:00:00 2001 From: Elor Shoshan Date: Fri, 19 Feb 2021 14:43:36 +0200 Subject: [PATCH 44/64] edit after pull --- app/internal/json_data_loader.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/internal/json_data_loader.py b/app/internal/json_data_loader.py index a92cc8ab..6c99da0b 100644 --- a/app/internal/json_data_loader.py +++ b/app/internal/json_data_loader.py @@ -80,7 +80,7 @@ def _is_table_empty(session: Session, table: Base) -> bool: Args: session: The database connection. table: A model entity table. - + Returns: True if the table is empty, otherwise returns False. """ From 535844ebb1e80cc6fad79ac3451fe32dc4ca6197 Mon Sep 17 00:00:00 2001 From: Elor Shoshan Date: Fri, 19 Feb 2021 17:02:17 +0200 Subject: [PATCH 45/64] edit after pull --- app/internal/json_data_loader.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/internal/json_data_loader.py b/app/internal/json_data_loader.py index 6c99da0b..6e6496f4 100644 --- a/app/internal/json_data_loader.py +++ b/app/internal/json_data_loader.py @@ -100,7 +100,7 @@ def _get_data_from_json(path: str) -> List[Dict[str, Any]]: A list of dictionary objects. """ try: - with open(path, 'r') as json_file: + with open(path, 'r', encoding='utf-8-sig') as json_file: json_content = json.load(json_file) except (IOError, ValueError): file_name = os.path.basename(path) From d116f25539b272905ffc6d8f0bbb27880ad87940 Mon Sep 17 00:00:00 2001 From: Elor Shoshan Date: Sun, 21 Feb 2021 03:48:30 +0200 Subject: [PATCH 46/64] edit --- app/internal/weekly_parasha.py | 15 +++- app/routers/calendar.py | 9 +-- app/routers/dayview.py | 7 +- app/static/dayview.css | 24 ++++++ app/templates/calendar/add_week.html | 21 ----- app/templates/calendar/calendar.html | 19 ----- app/templates/calendar/layout.html | 81 ------------------- app/templates/calendar_day_view.html | 8 ++ .../calendar/monthly_view/add_week.html | 10 --- 9 files changed, 51 insertions(+), 143 deletions(-) delete mode 100644 app/templates/calendar/add_week.html delete mode 100644 app/templates/calendar/calendar.html delete mode 100644 app/templates/calendar/layout.html diff --git a/app/internal/weekly_parasha.py b/app/internal/weekly_parasha.py index a95e50e0..d30e7121 100644 --- a/app/internal/weekly_parasha.py +++ b/app/internal/weekly_parasha.py @@ -17,7 +17,14 @@ def create_parasha_object(parashot_fields: Dict[str, Optional[str]])\ ) -def get_all_parahot_list(session: Session) \ - -> List[Dict[str, Optional[str]]]: - """This function return all parashot object in list""" - return session.query(Parasha).all() +def get_parasha_object(session: Session, date: datetime) -> Parasha: + """Returns the parasha object for the specific day. + Args: + session: The database connection. + date: The requested date. + Returns: + A HebrewView object. + """ + for parasha in session.query(Parasha).all(): + if parasha.date == date: + return parasha diff --git a/app/routers/calendar.py b/app/routers/calendar.py index d7a3815c..09b26d5d 100644 --- a/app/routers/calendar.py +++ b/app/routers/calendar.py @@ -1,10 +1,9 @@ from http import HTTPStatus -from app.dependencies import get_db, templates -from app.internal import weekly_parasha +from app.dependencies import templates from app.routers import calendar_grid -from fastapi import APIRouter, Request, Depends +from fastapi import APIRouter, Request from fastapi.responses import HTMLResponse from starlette.responses import Response @@ -18,10 +17,9 @@ @router.get("/") -async def calendar(request: Request, db_session=Depends(get_db)) -> Response: +async def calendar(request: Request) -> Response: user_local_time = calendar_grid.Day.get_user_local_time() day = calendar_grid.create_day(user_local_time) - parasha_obj = weekly_parasha.get_all_parahot_list(db_session) return templates.TemplateResponse( "calendar_monthly_view.html", { @@ -29,7 +27,6 @@ async def calendar(request: Request, db_session=Depends(get_db)) -> Response: "day": day, "week_days": calendar_grid.Week.DAYS_OF_THE_WEEK, "weeks_block": calendar_grid.get_month_block(day), - "parashot": parasha_obj } ) diff --git a/app/routers/dayview.py b/app/routers/dayview.py index 6b4f887e..2ed6c39c 100644 --- a/app/routers/dayview.py +++ b/app/routers/dayview.py @@ -6,7 +6,7 @@ from app.database.models import Event, User from app.dependencies import get_db, templates -from app.internal import zodiac +from app.internal import zodiac, weekly_parasha from app.routers.user import get_all_user_events router = APIRouter() @@ -165,7 +165,7 @@ async def dayview( view="day", ): # TODO: add a login session - user = session.query(User).filter_by(username="test_username").first() + user = session.query(User).filter_by(username="new_user").first() if not user: error_message = "User not found." raise HTTPException( @@ -177,6 +177,8 @@ async def dayview( except ValueError as err: raise HTTPException(status_code=404, detail=f"{err}") zodiac_obj = zodiac.get_zodiac_of_day(session, day) + parasha_obj = weekly_parasha.get_parasha_object(session, day) + print(parasha_obj) events_n_attrs = get_events_and_attributes( day=day, session=session, @@ -198,5 +200,6 @@ async def dayview( "day": day.day, "zodiac": zodiac_obj, "view": view, + "parasha": parasha_obj }, ) diff --git a/app/static/dayview.css b/app/static/dayview.css index 4b13cbb6..05e2d22a 100644 --- a/app/static/dayview.css +++ b/app/static/dayview.css @@ -164,3 +164,27 @@ body { width: 1.2rem; height: 1.2rem; } + +.parashot { + position: absolute; + right: 1.2rem; + top: 10rem; + padding-right: var(--space_xs); + padding-left: var(--space_xs); + padding-bottom: var(--space_xxs); + border: solid 0.1px var(--primary); + background-color: var(--surface-variant); + box-shadow: 1px 1px 2px #999; + line-height: 1.2; + height: 6rem; + width: 5.2rem; + align-items: center; + justify-content: center; + font-weight: bold; + font-size: 0.65rem; +} + +.parashot a { + background-color:powderblue; + font-size: 0.55rem; +} \ No newline at end of file diff --git a/app/templates/calendar/add_week.html b/app/templates/calendar/add_week.html deleted file mode 100644 index 702ee572..00000000 --- a/app/templates/calendar/add_week.html +++ /dev/null @@ -1,21 +0,0 @@ -{% for week in weeks_block %} -
- {% for day in week.days %} -
-
-
{{day}}
- -
- {% for devent in day.dailyevents %} -
-
{{devent[0]}}
-
{{devent[1]}}
-
- {% endfor %} - {% for event in day.events %} -
{{event[0]}} {{event[1]}}
- {% endfor %} -
- {% endfor %} -
-{% endfor %} \ No newline at end of file diff --git a/app/templates/calendar/calendar.html b/app/templates/calendar/calendar.html deleted file mode 100644 index d5d95c15..00000000 --- a/app/templates/calendar/calendar.html +++ /dev/null @@ -1,19 +0,0 @@ -{% extends 'calendar/layout.html' %} - -{% block main %} -
-
- {% for d in week_days %} - {% if d == day.sday %} -
{{ d.upper() }}
- {% else %} -
{{ d.upper() }}
- {% endif %} - {% endfor %} -
-
- {% include 'calendar/add_week.html' %} -
-
-
-{% endblock %} \ No newline at end of file diff --git a/app/templates/calendar/layout.html b/app/templates/calendar/layout.html deleted file mode 100644 index 90a320ec..00000000 --- a/app/templates/calendar/layout.html +++ /dev/null @@ -1,81 +0,0 @@ - - - - - - - - - - - - - - - - - - Calendar - - - -
- -
-
FEATURE NAME
-
-
-
-
-
{{day.display()}}
-
Location 0oc 00:00
-
- -
-
- {% block main %} {% endblock %} -
-
-
- - - \ No newline at end of file diff --git a/app/templates/calendar_day_view.html b/app/templates/calendar_day_view.html index ba681c9f..e7e21903 100644 --- a/app/templates/calendar_day_view.html +++ b/app/templates/calendar_day_view.html @@ -19,6 +19,14 @@ {% else %} {{day}} / {{month}} {% endif %} + {% if parasha %} +
+ פרשת השבוע: + {{parasha.hebrew_name}}
+ {{parasha.name}}
+ {{ gettext(" פירוט בלינק נפרד על %(parashah)s", parashah=parasha.hebrew_name) }} +
+ {% endif %}
{% for event in all_day_events %} diff --git a/app/templates/partials/calendar/monthly_view/add_week.html b/app/templates/partials/calendar/monthly_view/add_week.html index acb0509d..a53a7f4a 100644 --- a/app/templates/partials/calendar/monthly_view/add_week.html +++ b/app/templates/partials/calendar/monthly_view/add_week.html @@ -15,16 +15,6 @@ {% for event in day.events %}
{{ event[0] }} {{ event[1] }}
{% endfor %} - {% for parasha in parashot %} - {% if parasha.date.date() == day.date %} - - {% endif %} - {% endfor %}
{% endfor %} From 1d50cb1d1a28e50a821845422490d7c369e3be1d Mon Sep 17 00:00:00 2001 From: Elor Shoshan Date: Sun, 21 Feb 2021 03:51:47 +0200 Subject: [PATCH 47/64] edit --- app/internal/weekly_parasha.py | 2 +- app/routers/dayview.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/app/internal/weekly_parasha.py b/app/internal/weekly_parasha.py index d30e7121..27f86391 100644 --- a/app/internal/weekly_parasha.py +++ b/app/internal/weekly_parasha.py @@ -1,5 +1,5 @@ from datetime import datetime -from typing import Dict, Optional, List +from typing import Dict, Optional from app.database.models import Parasha from sqlalchemy.orm import Session diff --git a/app/routers/dayview.py b/app/routers/dayview.py index 2ed6c39c..723d409f 100644 --- a/app/routers/dayview.py +++ b/app/routers/dayview.py @@ -165,7 +165,7 @@ async def dayview( view="day", ): # TODO: add a login session - user = session.query(User).filter_by(username="new_user").first() + user = session.query(User).filter_by(username="test_username").first() if not user: error_message = "User not found." raise HTTPException( From 4c16f614ddc356d9fb2e48eaeec0f6685806a675 Mon Sep 17 00:00:00 2001 From: Elor Shoshan Date: Sun, 21 Feb 2021 16:54:40 +0200 Subject: [PATCH 48/64] edit --- requirements.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/requirements.txt b/requirements.txt index 0079077f..92b44bda 100644 --- a/requirements.txt +++ b/requirements.txt @@ -99,6 +99,7 @@ pycparser==2.20 pydantic==1.7.3 pyflakes==2.2.0 PyJWT==2.0.0 +pyluach==1.2.1 pyparsing==2.4.7 pytest==6.2.1 pytest-asyncio==0.12.0 From 17340f895b2ba1e3dc35f9395dcd75475c0aebc2 Mon Sep 17 00:00:00 2001 From: Elor Shoshan Date: Sun, 21 Feb 2021 17:36:21 +0200 Subject: [PATCH 49/64] edit --- app/database/models.py | 23 ----- app/internal/weekly_parasha.py | 43 +++++++++- app/resources/parashot.json | 150 +++++++++++---------------------- app/routers/dayview.py | 5 +- 4 files changed, 94 insertions(+), 127 deletions(-) diff --git a/app/database/models.py b/app/database/models.py index 523e1d8a..6d2b34f4 100644 --- a/app/database/models.py +++ b/app/database/models.py @@ -386,35 +386,12 @@ def __repr__(self): class Parasha(Base): - """ - Each year the Json file will need to be re-updated - according to this API in this way: - - def relevent_details(parasha): - parashot_dict = { - 'name': parasha['title'], - 'hebrew': parasha['hebrew'], - 'link': parasha['link'], - 'date': parasha['date']} - return parashot_dict - - def get_all_parashot(): - request = requests.get( - 'https://www.hebcal.com/hebcal?v=1&cfg=json&maj=on& - min=on&mod=on&nx=on&year=now&month=x&ss=on&mf=on& - c=on&geo=geoname&geonameid=293397&m=50&s=on&d=on&D=on') - items = request.json()['items'] - [relevent_details(p) for parasha in items - if 'Parashat' in parasha['title]] - """ - __tablename__ = "parashot" id = Column(Integer, primary_key=True, index=True) name = Column(String, nullable=False) hebrew_name = Column(String, nullable=False) link = Column(String, nullable=False) - date = Column(DateTime, nullable=False) class Joke(Base): diff --git a/app/internal/weekly_parasha.py b/app/internal/weekly_parasha.py index 27f86391..80824a43 100644 --- a/app/internal/weekly_parasha.py +++ b/app/internal/weekly_parasha.py @@ -1,5 +1,7 @@ from datetime import datetime from typing import Dict, Optional +from pyluach import dates, hebrewcal, parshios + from app.database.models import Parasha from sqlalchemy.orm import Session @@ -13,18 +15,57 @@ def create_parasha_object(parashot_fields: Dict[str, Optional[str]])\ name=parashot_fields['name'], hebrew_name=parashot_fields['hebrew'], link=parashot_fields['link'], - date=datetime.strptime(parashot_fields['date'], '%Y-%m-%d').date() ) def get_parasha_object(session: Session, date: datetime) -> Parasha: """Returns the parasha object for the specific day. + Args: session: The database connection. date: The requested date. + Returns: A HebrewView object. """ + for parasha in session.query(Parasha).all(): if parasha.date == date: return parasha + + +def get_parasha_only_to_saturday(date: datetime) -> Optional[str]: + """Returns the parasha name if the date is Saturday. + + Args: + date: The requested date. + + Returns: + If the date is Saturday, return the parasha name, + else return None. + """ + + date_split = str(date).split('-') + new_date_format = [int(x) for x in date_split] + gregorian_date = dates.GregorianDate(new_date_format[0], new_date_format[1], new_date_format[2]) + if gregorian_date == gregorian_date.shabbos(): + return parshios.getparsha_string(gregorian_date) + + +def get_parasha_object(session: Session, date: datetime) -> Parasha: + """Returns the parasha object for the specific day. + + Args: + session: The database connection. + date: The requested date. + + Returns: + A HebrewView object. + """ + + parasha_name = get_parasha_only_to_saturday(date) + if parasha_name is None: + return None + for parasha in session.query(Parasha).all(): + if parasha_name in parasha.name: + return parasha diff --git a/app/resources/parashot.json b/app/resources/parashot.json index d653bb10..38e05d3f 100644 --- a/app/resources/parashot.json +++ b/app/resources/parashot.json @@ -2,301 +2,251 @@ { "name": "Parashat Vayechi", "hebrew": "פרשת ויחי", - "link": "https://www.hebcal.com/sedrot/vayechi-20210102?i=on&utm_source=js&utm_medium=api", - "date": "2021-01-02" + "link": "https://www.hebcal.com/sedrot/vayechi-20210102?i=on&utm_source=js&utm_medium=api" }, { "name": "Parashat Shemot", "hebrew": "פרשת שמות", - "link": "https://www.hebcal.com/sedrot/shemot-20210109?i=on&utm_source=js&utm_medium=api", - "date": "2021-01-09" + "link": "https://www.hebcal.com/sedrot/shemot-20210109?i=on&utm_source=js&utm_medium=api" }, { "name": "Parashat Vaera", "hebrew": "פרשת וארא", - "link": "https://www.hebcal.com/sedrot/vaera-20210116?i=on&utm_source=js&utm_medium=api", - "date": "2021-01-16" + "link": "https://www.hebcal.com/sedrot/vaera-20210116?i=on&utm_source=js&utm_medium=api" }, { "name": "Parashat Bo", "hebrew": "פרשת בא", - "link": "https://www.hebcal.com/sedrot/bo-20210123?i=on&utm_source=js&utm_medium=api", - "date": "2021-01-23" + "link": "https://www.hebcal.com/sedrot/bo-20210123?i=on&utm_source=js&utm_medium=api" }, { "name": "Parashat Beshalach", "hebrew": "פרשת בשלח", - "link": "https://www.hebcal.com/sedrot/beshalach-20210130?i=on&utm_source=js&utm_medium=api", - "date": "2021-01-30" + "link": "https://www.hebcal.com/sedrot/beshalach-20210130?i=on&utm_source=js&utm_medium=api" }, { "name": "Parashat Yitro", "hebrew": "פרשת יתרו", - "link": "https://www.hebcal.com/sedrot/yitro-20210206?i=on&utm_source=js&utm_medium=api", - "date": "2021-02-06" + "link": "https://www.hebcal.com/sedrot/yitro-20210206?i=on&utm_source=js&utm_medium=api" }, { "name": "Parashat Mishpatim", "hebrew": "פרשת משפטים", - "link": "https://www.hebcal.com/sedrot/mishpatim-20210213?i=on&utm_source=js&utm_medium=api", - "date": "2021-02-13" + "link": "https://www.hebcal.com/sedrot/mishpatim-20210213?i=on&utm_source=js&utm_medium=api" }, { "name": "Parashat Terumah", "hebrew": "פרשת תרומה", - "link": "https://www.hebcal.com/sedrot/terumah-20210220?i=on&utm_source=js&utm_medium=api", - "date": "2021-02-20" + "link": "https://www.hebcal.com/sedrot/terumah-20210220?i=on&utm_source=js&utm_medium=api" }, { "name": "Parashat Tetzaveh", "hebrew": "פרשת תצוה", - "link": "https://www.hebcal.com/sedrot/tetzaveh-20210227?i=on&utm_source=js&utm_medium=api", - "date": "2021-02-27" + "link": "https://www.hebcal.com/sedrot/tetzaveh-20210227?i=on&utm_source=js&utm_medium=api" }, { "name": "Parashat Ki Tisa", "hebrew": "פרשת כי תשא", - "link": "https://www.hebcal.com/sedrot/ki-tisa-20210306?i=on&utm_source=js&utm_medium=api", - "date": "2021-03-06" + "link": "https://www.hebcal.com/sedrot/ki-tisa-20210306?i=on&utm_source=js&utm_medium=api" }, { "name": "Parashat Vayakhel-Pekudei", "hebrew": "פרשת ויקהל־פקודי", - "link": "https://www.hebcal.com/sedrot/vayakhel-pekudei-20210313?i=on&utm_source=js&utm_medium=api", - "date": "2021-03-13" + "link": "https://www.hebcal.com/sedrot/vayakhel-pekudei-20210313?i=on&utm_source=js&utm_medium=api" }, { "name": "Parashat Vayikra", "hebrew": "פרשת ויקרא", - "link": "https://www.hebcal.com/sedrot/vayikra-20210320?i=on&utm_source=js&utm_medium=api", - "date": "2021-03-20" + "link": "https://www.hebcal.com/sedrot/vayikra-20210320?i=on&utm_source=js&utm_medium=api" }, { "name": "Parashat Tzav", "hebrew": "פרשת צו", - "link": "https://www.hebcal.com/sedrot/tzav-20210327?i=on&utm_source=js&utm_medium=api", - "date": "2021-03-27" + "link": "https://www.hebcal.com/sedrot/tzav-20210327?i=on&utm_source=js&utm_medium=api" }, { "name": "Parashat Shmini", "hebrew": "פרשת שמיני", - "link": "https://www.hebcal.com/sedrot/shmini-20210410?i=on&utm_source=js&utm_medium=api", - "date": "2021-04-10" + "link": "https://www.hebcal.com/sedrot/shmini-20210410?i=on&utm_source=js&utm_medium=api" }, { "name": "Parashat Tazria-Metzora", "hebrew": "פרשת תזריע־מצרע", - "link": "https://www.hebcal.com/sedrot/tazria-metzora-20210417?i=on&utm_source=js&utm_medium=api", - "date": "2021-04-17" + "link": "https://www.hebcal.com/sedrot/tazria-metzora-20210417?i=on&utm_source=js&utm_medium=api" }, { "name": "Parashat Achrei Mot-Kedoshim", "hebrew": "פרשת אחרי מות־קדשים", - "link": "https://www.hebcal.com/sedrot/achrei-mot-kedoshim-20210424?i=on&utm_source=js&utm_medium=api", - "date": "2021-04-24" + "link": "https://www.hebcal.com/sedrot/achrei-mot-kedoshim-20210424?i=on&utm_source=js&utm_medium=api" }, { "name": "Parashat Emor", "hebrew": "פרשת אמור", - "link": "https://www.hebcal.com/sedrot/emor-20210501?i=on&utm_source=js&utm_medium=api", - "date": "2021-05-01" + "link": "https://www.hebcal.com/sedrot/emor-20210501?i=on&utm_source=js&utm_medium=api" }, { "name": "Parashat Behar-Bechukotai", "hebrew": "פרשת בהר־בחקתי", - "link": "https://www.hebcal.com/sedrot/behar-bechukotai-20210508?i=on&utm_source=js&utm_medium=api", - "date": "2021-05-08" + "link": "https://www.hebcal.com/sedrot/behar-bechukotai-20210508?i=on&utm_source=js&utm_medium=api" }, { "name": "Parashat Bamidbar", "hebrew": "פרשת במדבר", - "link": "https://www.hebcal.com/sedrot/bamidbar-20210515?i=on&utm_source=js&utm_medium=api", - "date": "2021-05-15" + "link": "https://www.hebcal.com/sedrot/bamidbar-20210515?i=on&utm_source=js&utm_medium=api" }, { "name": "Parashat Nasso", "hebrew": "פרשת נשא", - "link": "https://www.hebcal.com/sedrot/nasso-20210522?i=on&utm_source=js&utm_medium=api", - "date": "2021-05-22" + "link": "https://www.hebcal.com/sedrot/nasso-20210522?i=on&utm_source=js&utm_medium=api" }, { "name": "Parashat Beha'alotcha", "hebrew": "פרשת בהעלתך", - "link": "https://www.hebcal.com/sedrot/behaalotcha-20210529?i=on&utm_source=js&utm_medium=api", - "date": "2021-05-29" + "link": "https://www.hebcal.com/sedrot/behaalotcha-20210529?i=on&utm_source=js&utm_medium=api" }, { "name": "Parashat Sh'lach", "hebrew": "פרשת שלח־לך", - "link": "https://www.hebcal.com/sedrot/shlach-20210605?i=on&utm_source=js&utm_medium=api", - "date": "2021-06-05" + "link": "https://www.hebcal.com/sedrot/shlach-20210605?i=on&utm_source=js&utm_medium=api" }, { "name": "Parashat Korach", "hebrew": "פרשת קורח", - "link": "https://www.hebcal.com/sedrot/korach-20210612?i=on&utm_source=js&utm_medium=api", - "date": "2021-06-12" + "link": "https://www.hebcal.com/sedrot/korach-20210612?i=on&utm_source=js&utm_medium=api" }, { "name": "Parashat Chukat", "hebrew": "פרשת חקת", - "link": "https://www.hebcal.com/sedrot/chukat-20210619?i=on&utm_source=js&utm_medium=api", - "date": "2021-06-19" + "link": "https://www.hebcal.com/sedrot/chukat-20210619?i=on&utm_source=js&utm_medium=api" }, { "name": "Parashat Balak", "hebrew": "פרשת בלק", - "link": "https://www.hebcal.com/sedrot/balak-20210626?i=on&utm_source=js&utm_medium=api", - "date": "2021-06-26" + "link": "https://www.hebcal.com/sedrot/balak-20210626?i=on&utm_source=js&utm_medium=api" }, { "name": "Parashat Pinchas", "hebrew": "פרשת פינחס", - "link": "https://www.hebcal.com/sedrot/pinchas-20210703?i=on&utm_source=js&utm_medium=api", - "date": "2021-07-03" + "link": "https://www.hebcal.com/sedrot/pinchas-20210703?i=on&utm_source=js&utm_medium=api" }, { "name": "Parashat Matot-Masei", "hebrew":"פרשת מטות־מסעי" , - "link": "https://www.hebcal.com/sedrot/matot-masei-20210710?i=on&utm_source=js&utm_medium=api", - "date": "2021-07-10" + "link": "https://www.hebcal.com/sedrot/matot-masei-20210710?i=on&utm_source=js&utm_medium=api" }, { "name": "Parashat Devarim", "hebrew": "פרשת דברים", - "link": "https://www.hebcal.com/sedrot/devarim-20210717?i=on&utm_source=js&utm_medium=api", - "date": "2021-07-17" + "link": "https://www.hebcal.com/sedrot/devarim-20210717?i=on&utm_source=js&utm_medium=api" }, { "name": "Parashat Vaetchanan", "hebrew": "פרשת ואתחנן", - "link": "https://www.hebcal.com/sedrot/vaetchanan-20210724?i=on&utm_source=js&utm_medium=api", - "date": "2021-07-24" + "link": "https://www.hebcal.com/sedrot/vaetchanan-20210724?i=on&utm_source=js&utm_medium=api" }, { "name": "Parashat Eikev", "hebrew": "פרשת עקב", - "link": "https://www.hebcal.com/sedrot/eikev-20210731?i=on&utm_source=js&utm_medium=api", - "date": "2021-07-31" + "link": "https://www.hebcal.com/sedrot/eikev-20210731?i=on&utm_source=js&utm_medium=api" }, { "name": "Parashat Re'eh", "hebrew": "פרשת ראה", - "link": "https://www.hebcal.com/sedrot/reeh-20210807?i=on&utm_source=js&utm_medium=api", - "date": "2021-08-07" + "link": "https://www.hebcal.com/sedrot/reeh-20210807?i=on&utm_source=js&utm_medium=api" }, { "name": "Parashat Shoftim", "hebrew": "פרשת שופטים", - "link": "https://www.hebcal.com/sedrot/shoftim-20210814?i=on&utm_source=js&utm_medium=api", - "date": "2021-08-14" + "link": "https://www.hebcal.com/sedrot/shoftim-20210814?i=on&utm_source=js&utm_medium=api" }, { "name": "Parashat Ki Teitzei", "hebrew": "פרשת כי־תצא", - "link": "https://www.hebcal.com/sedrot/ki-teitzei-20210821?i=on&utm_source=js&utm_medium=api", - "date": "2021-08-21" + "link": "https://www.hebcal.com/sedrot/ki-teitzei-20210821?i=on&utm_source=js&utm_medium=api" }, { "name": "Parashat Ki Tavo", "hebrew": "פרשת כי־תבוא", - "link": "https://www.hebcal.com/sedrot/ki-tavo-20210828?i=on&utm_source=js&utm_medium=api", - "date": "2021-08-28" + "link": "https://www.hebcal.com/sedrot/ki-tavo-20210828?i=on&utm_source=js&utm_medium=api" }, { "name": "Parashat Nitzavim", "hebrew": "פרשת נצבים", - "link": "https://www.hebcal.com/sedrot/nitzavim-20210904?i=on&utm_source=js&utm_medium=api", - "date": "2021-09-04" + "link": "https://www.hebcal.com/sedrot/nitzavim-20210904?i=on&utm_source=js&utm_medium=api" }, { "name": "Parashat Vayeilech", "hebrew": "פרשת וילך", - "link": "https://www.hebcal.com/sedrot/vayeilech-20210911?i=on&utm_source=js&utm_medium=api", - "date": "2021-09-11" + "link": "https://www.hebcal.com/sedrot/vayeilech-20210911?i=on&utm_source=js&utm_medium=api" }, { "name": "Parashat Ha'Azinu", "hebrew": "פרשת האזינו", - "link": "https://www.hebcal.com/sedrot/haazinu-20210918?i=on&utm_source=js&utm_medium=api", - "date": "2021-09-18" + "link": "https://www.hebcal.com/sedrot/haazinu-20210918?i=on&utm_source=js&utm_medium=api" }, { "name": "Parashat Bereshit", "hebrew": "פרשת בראשית", - "link": "https://www.hebcal.com/sedrot/bereshit-20211002?i=on&utm_source=js&utm_medium=api", - "date": "2021-10-02" + "link": "https://www.hebcal.com/sedrot/bereshit-20211002?i=on&utm_source=js&utm_medium=api" }, { "name": "Parashat Noach", "hebrew": "פרשת נח", - "link": "https://www.hebcal.com/sedrot/noach-20211009?i=on&utm_source=js&utm_medium=api", - "date": "2021-10-09" + "link": "https://www.hebcal.com/sedrot/noach-20211009?i=on&utm_source=js&utm_medium=api" }, { "name": "Parashat Lech-Lecha", "hebrew": "פרשת לך־לך", - "link": "https://www.hebcal.com/sedrot/lech-lecha-20211016?i=on&utm_source=js&utm_medium=api", - "date": "2021-10-16" + "link": "https://www.hebcal.com/sedrot/lech-lecha-20211016?i=on&utm_source=js&utm_medium=api" }, { "name": "Parashat Vayera", "hebrew": "פרשת וירא", - "link": "https://www.hebcal.com/sedrot/vayera-20211023?i=on&utm_source=js&utm_medium=api", - "date": "2021-10-23" + "link": "https://www.hebcal.com/sedrot/vayera-20211023?i=on&utm_source=js&utm_medium=api" }, { "name": "Parashat Chayei Sara", "hebrew": "פרשת חיי שרה", - "link": "https://www.hebcal.com/sedrot/chayei-sara-20211030?i=on&utm_source=js&utm_medium=api", - "date": "2021-10-30" + "link": "https://www.hebcal.com/sedrot/chayei-sara-20211030?i=on&utm_source=js&utm_medium=api" }, { "name": "Parashat Toldot", "hebrew": "פרשת תולדות", - "link": "https://www.hebcal.com/sedrot/toldot-20211106?i=on&utm_source=js&utm_medium=api", - "date": "2021-11-06" + "link": "https://www.hebcal.com/sedrot/toldot-20211106?i=on&utm_source=js&utm_medium=api" }, { "name": "Parashat Vayetzei", "hebrew": "פרשת ויצא", - "link": "https://www.hebcal.com/sedrot/vayetzei-20211113?i=on&utm_source=js&utm_medium=api", - "date": "2021-11-13" + "link": "https://www.hebcal.com/sedrot/vayetzei-20211113?i=on&utm_source=js&utm_medium=api" }, { "name": "Parashat Vayishlach", "hebrew": "פרשת וישלח", - "link": "https://www.hebcal.com/sedrot/vayishlach-20211120?i=on&utm_source=js&utm_medium=api", - "date": "2021-11-20" + "link": "https://www.hebcal.com/sedrot/vayishlach-20211120?i=on&utm_source=js&utm_medium=api" }, { "name": "Parashat Vayeshev", "hebrew": "פרשת וישב", - "link": "https://www.hebcal.com/sedrot/vayeshev-20211127?i=on&utm_source=js&utm_medium=api", - "date": "2021-11-27" + "link": "https://www.hebcal.com/sedrot/vayeshev-20211127?i=on&utm_source=js&utm_medium=api" }, { "name": "Parashat Miketz", "hebrew": "פרשת מקץ", - "link": "https://www.hebcal.com/sedrot/miketz-20211204?i=on&utm_source=js&utm_medium=api", - "date": "2021-12-04" + "link": "https://www.hebcal.com/sedrot/miketz-20211204?i=on&utm_source=js&utm_medium=api" }, { "name": "Parashat Vayigash", "hebrew": "פרשת ויגש", - "link": "https://www.hebcal.com/sedrot/vayigash-20211211?i=on&utm_source=js&utm_medium=api", - "date": "2021-12-11" + "link": "https://www.hebcal.com/sedrot/vayigash-20211211?i=on&utm_source=js&utm_medium=api" }, { "name": "Parashat Vayechi", "hebrew": "פרשת ויחי", - "link": "https://www.hebcal.com/sedrot/vayechi-20211218?i=on&utm_source=js&utm_medium=api", - "date": "2021-12-18" + "link": "https://www.hebcal.com/sedrot/vayechi-20211218?i=on&utm_source=js&utm_medium=api" }, { "name": "Parashat Shemot", "hebrew": "פרשת שמות", - "link": "https://www.hebcal.com/sedrot/shemot-20211225?i=on&utm_source=js&utm_medium=api", - "date": "2021-12-25" + "link": "https://www.hebcal.com/sedrot/shemot-20211225?i=on&utm_source=js&utm_medium=api" } ] \ No newline at end of file diff --git a/app/routers/dayview.py b/app/routers/dayview.py index 723d409f..f4560040 100644 --- a/app/routers/dayview.py +++ b/app/routers/dayview.py @@ -165,7 +165,7 @@ async def dayview( view="day", ): # TODO: add a login session - user = session.query(User).filter_by(username="test_username").first() + user = session.query(User).filter_by(username="new_user").first() if not user: error_message = "User not found." raise HTTPException( @@ -177,8 +177,7 @@ async def dayview( except ValueError as err: raise HTTPException(status_code=404, detail=f"{err}") zodiac_obj = zodiac.get_zodiac_of_day(session, day) - parasha_obj = weekly_parasha.get_parasha_object(session, day) - print(parasha_obj) + parasha_obj = weekly_parasha.get_parasha_object(session, day.date()) events_n_attrs = get_events_and_attributes( day=day, session=session, From 4ee3bebb56e6d8909789a2bfd4d7df9803485c39 Mon Sep 17 00:00:00 2001 From: Elor Shoshan Date: Sun, 21 Feb 2021 17:36:46 +0200 Subject: [PATCH 50/64] edit --- app/routers/dayview.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/routers/dayview.py b/app/routers/dayview.py index f4560040..02309970 100644 --- a/app/routers/dayview.py +++ b/app/routers/dayview.py @@ -165,7 +165,7 @@ async def dayview( view="day", ): # TODO: add a login session - user = session.query(User).filter_by(username="new_user").first() + user = session.query(User).filter_by(username="test_username").first() if not user: error_message = "User not found." raise HTTPException( From 66dc75ef53d582681100d9e0d7ea01a54c35dcb1 Mon Sep 17 00:00:00 2001 From: Elor Shoshan Date: Sun, 21 Feb 2021 18:07:29 +0200 Subject: [PATCH 51/64] edit --- app/internal/json_data_loader.py | 2 +- app/internal/weekly_parasha.py | 25 ++++++------------------- app/routers/calendar.py | 2 +- app/routers/dayview.py | 6 +++--- app/static/dayview.css | 2 +- app/templates/calendar_day_view.html | 5 ++--- 6 files changed, 14 insertions(+), 28 deletions(-) diff --git a/app/internal/json_data_loader.py b/app/internal/json_data_loader.py index 07aed87c..5173cc60 100644 --- a/app/internal/json_data_loader.py +++ b/app/internal/json_data_loader.py @@ -6,7 +6,7 @@ from sqlalchemy.orm import Session from app.database.models import Base, Joke, Quote, Parasha, Zodiac -from app.internal import daily_quotes, jokes, zodiac, weekly_parasha +from app.internal import daily_quotes, jokes, weekly_parasha, zodiac def load_to_database(session: Session) -> None: diff --git a/app/internal/weekly_parasha.py b/app/internal/weekly_parasha.py index 80824a43..0db09035 100644 --- a/app/internal/weekly_parasha.py +++ b/app/internal/weekly_parasha.py @@ -1,7 +1,6 @@ from datetime import datetime from typing import Dict, Optional -from pyluach import dates, hebrewcal, parshios - +from pyluach import dates, parshios from app.database.models import Parasha from sqlalchemy.orm import Session @@ -18,22 +17,6 @@ def create_parasha_object(parashot_fields: Dict[str, Optional[str]])\ ) -def get_parasha_object(session: Session, date: datetime) -> Parasha: - """Returns the parasha object for the specific day. - - Args: - session: The database connection. - date: The requested date. - - Returns: - A HebrewView object. - """ - - for parasha in session.query(Parasha).all(): - if parasha.date == date: - return parasha - - def get_parasha_only_to_saturday(date: datetime) -> Optional[str]: """Returns the parasha name if the date is Saturday. @@ -47,7 +30,11 @@ def get_parasha_only_to_saturday(date: datetime) -> Optional[str]: date_split = str(date).split('-') new_date_format = [int(x) for x in date_split] - gregorian_date = dates.GregorianDate(new_date_format[0], new_date_format[1], new_date_format[2]) + gregorian_date = dates.GregorianDate( + new_date_format[0], + new_date_format[1], + new_date_format[2] + ) if gregorian_date == gregorian_date.shabbos(): return parshios.getparsha_string(gregorian_date) diff --git a/app/routers/calendar.py b/app/routers/calendar.py index 09b26d5d..02c37885 100644 --- a/app/routers/calendar.py +++ b/app/routers/calendar.py @@ -1,8 +1,8 @@ from http import HTTPStatus - from app.dependencies import templates from app.routers import calendar_grid + from fastapi import APIRouter, Request from fastapi.responses import HTMLResponse from starlette.responses import Response diff --git a/app/routers/dayview.py b/app/routers/dayview.py index 02309970..0f8b6dff 100644 --- a/app/routers/dayview.py +++ b/app/routers/dayview.py @@ -6,7 +6,7 @@ from app.database.models import Event, User from app.dependencies import get_db, templates -from app.internal import zodiac, weekly_parasha +from app.internal import weekly_parasha, zodiac from app.routers.user import get_all_user_events router = APIRouter() @@ -165,7 +165,7 @@ async def dayview( view="day", ): # TODO: add a login session - user = session.query(User).filter_by(username="test_username").first() + user = session.query(User).filter_by(username="test_usename").first() if not user: error_message = "User not found." raise HTTPException( @@ -199,6 +199,6 @@ async def dayview( "day": day.day, "zodiac": zodiac_obj, "view": view, - "parasha": parasha_obj + "parasha": parasha_obj, }, ) diff --git a/app/static/dayview.css b/app/static/dayview.css index 05e2d22a..b53459ae 100644 --- a/app/static/dayview.css +++ b/app/static/dayview.css @@ -185,6 +185,6 @@ body { } .parashot a { - background-color:powderblue; + background-color: powderblue; font-size: 0.55rem; } \ No newline at end of file diff --git a/app/templates/calendar_day_view.html b/app/templates/calendar_day_view.html index e7e21903..0831f8b2 100644 --- a/app/templates/calendar_day_view.html +++ b/app/templates/calendar_day_view.html @@ -21,9 +21,8 @@ {% endif %} {% if parasha %}
- פרשת השבוע: - {{parasha.hebrew_name}}
- {{parasha.name}}
+ {{ gettext(" פרשת השבוע: %(hebrew)s", hebrew=parasha.hebrew_name) }} +
{{ gettext("%(name)s", name=parasha.name) }} {{ gettext(" פירוט בלינק נפרד על %(parashah)s", parashah=parasha.hebrew_name) }}
{% endif %} From 21b8033813f4edc26728c781e8beef89ea134be2 Mon Sep 17 00:00:00 2001 From: Elor Shoshan Date: Sun, 21 Feb 2021 18:14:40 +0200 Subject: [PATCH 52/64] edit --- app/routers/dayview.py | 2 +- tests/test_weekly_parasha.py | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/app/routers/dayview.py b/app/routers/dayview.py index 0f8b6dff..81b3254c 100644 --- a/app/routers/dayview.py +++ b/app/routers/dayview.py @@ -165,7 +165,7 @@ async def dayview( view="day", ): # TODO: add a login session - user = session.query(User).filter_by(username="test_usename").first() + user = session.query(User).filter_by(username="test_username").first() if not user: error_message = "User not found." raise HTTPException( diff --git a/tests/test_weekly_parasha.py b/tests/test_weekly_parasha.py index a01b4d92..0163bb6b 100644 --- a/tests/test_weekly_parasha.py +++ b/tests/test_weekly_parasha.py @@ -7,7 +7,6 @@ def test_create_parasha_object(): 'hebrew': 'פרשת ויחי', 'link': 'https://www.hebcal.com/sedrot/vayechi-20210102?' 'i=on&utm_source=js&utm_medium=api', - 'date': '2021-01-02' } result = weekly_parasha.create_parasha_object(parashot_fields) assert result.name == 'Parashat Vayechi' From 66b44577e699747a21ae9be64f4458b65559b779 Mon Sep 17 00:00:00 2001 From: Elor Shoshan Date: Sun, 21 Feb 2021 18:15:55 +0200 Subject: [PATCH 53/64] edit --- tests/test_weekly_parasha.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/test_weekly_parasha.py b/tests/test_weekly_parasha.py index 0163bb6b..e95fcee3 100644 --- a/tests/test_weekly_parasha.py +++ b/tests/test_weekly_parasha.py @@ -6,7 +6,7 @@ def test_create_parasha_object(): 'name': 'Parashat Vayechi', 'hebrew': 'פרשת ויחי', 'link': 'https://www.hebcal.com/sedrot/vayechi-20210102?' - 'i=on&utm_source=js&utm_medium=api', + 'i=on&utm_source=js&utm_medium=api' } result = weekly_parasha.create_parasha_object(parashot_fields) assert result.name == 'Parashat Vayechi' From fdc021907fd1e1c057b973c72d72edfda89b0654 Mon Sep 17 00:00:00 2001 From: Elor Shoshan Date: Sun, 21 Feb 2021 18:26:02 +0200 Subject: [PATCH 54/64] edit --- app/internal/weekly_parasha.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/app/internal/weekly_parasha.py b/app/internal/weekly_parasha.py index 0db09035..b3f13657 100644 --- a/app/internal/weekly_parasha.py +++ b/app/internal/weekly_parasha.py @@ -6,8 +6,7 @@ from sqlalchemy.orm import Session -def create_parasha_object(parashot_fields: Dict[str, Optional[str]])\ - -> Parasha: +def create_parasha_object(parashot_fields: Dict[str, str]) -> Parasha: """This function create a parasha object from given fields dictionary. It is used for adding the data from the json into the db""" return Parasha( From 60ce6cec5368da465eba6f4ff6ca80e4b5d35b8e Mon Sep 17 00:00:00 2001 From: Elor Shoshan Date: Tue, 23 Feb 2021 15:42:11 +0200 Subject: [PATCH 55/64] edit --- app/internal/json_data_loader.py | 2 +- app/internal/weekly_parasha.py | 9 ++------- app/routers/audio.py | 2 +- app/templates/calendar_day_view.html | 4 ++-- 4 files changed, 6 insertions(+), 11 deletions(-) diff --git a/app/internal/json_data_loader.py b/app/internal/json_data_loader.py index 5173cc60..4198357e 100644 --- a/app/internal/json_data_loader.py +++ b/app/internal/json_data_loader.py @@ -107,7 +107,7 @@ def _get_data_from_json(path: str) -> List[Dict[str, Any]]: A list of dictionary objects. """ try: - with open(path, 'r', encoding='utf-8-sig') as json_file: + with open(path, 'r', encoding='utf-8') as json_file: json_content = json.load(json_file) except (IOError, ValueError): file_name = os.path.basename(path) diff --git a/app/internal/weekly_parasha.py b/app/internal/weekly_parasha.py index b3f13657..098763b0 100644 --- a/app/internal/weekly_parasha.py +++ b/app/internal/weekly_parasha.py @@ -26,14 +26,9 @@ def get_parasha_only_to_saturday(date: datetime) -> Optional[str]: If the date is Saturday, return the parasha name, else return None. """ - date_split = str(date).split('-') new_date_format = [int(x) for x in date_split] - gregorian_date = dates.GregorianDate( - new_date_format[0], - new_date_format[1], - new_date_format[2] - ) + gregorian_date = dates.GregorianDate(*new_date_format) if gregorian_date == gregorian_date.shabbos(): return parshios.getparsha_string(gregorian_date) @@ -47,8 +42,8 @@ def get_parasha_object(session: Session, date: datetime) -> Parasha: Returns: A HebrewView object. + IF the specific day in not Saturday, it return None. """ - parasha_name = get_parasha_only_to_saturday(date) if parasha_name is None: return None diff --git a/app/routers/audio.py b/app/routers/audio.py index 827f67ca..05372169 100644 --- a/app/routers/audio.py +++ b/app/routers/audio.py @@ -16,7 +16,7 @@ DEFAULT_SFX_VOL, ) from app.dependencies import SOUNDS_PATH, get_db, templates -from app.internal.security.dependancies import current_user +from app.internal.security.dependencies import current_user from fastapi import APIRouter, Depends, Form, Request from sqlalchemy.orm.session import Session from starlette.responses import RedirectResponse diff --git a/app/templates/calendar_day_view.html b/app/templates/calendar_day_view.html index 0831f8b2..f99bdbea 100644 --- a/app/templates/calendar_day_view.html +++ b/app/templates/calendar_day_view.html @@ -21,8 +21,8 @@ {% endif %} {% if parasha %}
- {{ gettext(" פרשת השבוע: %(hebrew)s", hebrew=parasha.hebrew_name) }} -
{{ gettext("%(name)s", name=parasha.name) }} + {{ gettext(" פרשת השבוע: %(hebrew)s", hebrew=parasha.name) }} +
{{ gettext("%(name)s", name=parasha.hebrew_name) }} {{ gettext(" פירוט בלינק נפרד על %(parashah)s", parashah=parasha.hebrew_name) }}
{% endif %} From ee9faf714393b593b3108d75eee5f81db61b5d68 Mon Sep 17 00:00:00 2001 From: Elor Shoshan Date: Tue, 23 Feb 2021 15:55:17 +0200 Subject: [PATCH 56/64] edit --- app/internal/json_data_loader.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/app/internal/json_data_loader.py b/app/internal/json_data_loader.py index 808578b0..e76fc17a 100644 --- a/app/internal/json_data_loader.py +++ b/app/internal/json_data_loader.py @@ -6,8 +6,12 @@ from sqlalchemy.orm import Session -from app.database.models import Base, InternationalDays, Joke, Quote, Parasha, Zodiac -from app.internal import daily_quotes, international_days, jokes, weekly_parasha, zodiac +from app.database.models import ( + Base, InternationalDays, Joke, Quote, Parasha, Zodiac +) +from app.internal import ( + daily_quotes, international_days, jokes, weekly_parasha, zodiac +) def load_to_database(session: Session) -> None: From 59c61e61fbbd113caeb3d72fb8e5a1e6260a51e4 Mon Sep 17 00:00:00 2001 From: Elor Shoshan Date: Tue, 23 Feb 2021 16:38:20 +0200 Subject: [PATCH 57/64] edit --- app/templates/calendar_day_view.html | 142 +++++++++++---------------- 1 file changed, 57 insertions(+), 85 deletions(-) diff --git a/app/templates/calendar_day_view.html b/app/templates/calendar_day_view.html index 278169a7..0c134dbd 100644 --- a/app/templates/calendar_day_view.html +++ b/app/templates/calendar_day_view.html @@ -1,106 +1,78 @@ {% extends "partials/calendar/calendar_base.html" %} {% block body %}
- -
- {% if view == 'day' %} - - {{month}} - {{day}} - {% if zodiac %} -
- zodiac sign -
- {% endif %} - {% else %} - {{day}} / {{month}} - {% endif %} -
- {% if international_day %} -
- The International days are: "{{ international_day.international_day }}" + +
+ {% if view == 'day' %} + + {{month}} + {{day}} + {% if zodiac %} +
+ zodiac sign
{% endif %} - {% else %} - {{day}} / {{month}} - {% endif %} {% if parasha %} -
+
{{ gettext(" פרשת השבוע: %(hebrew)s", hebrew=parasha.name) }}
{{ gettext("%(name)s", name=parasha.hebrew_name) }} {{ gettext(" פירוט בלינק נפרד על %(parashah)s", parashah=parasha.hebrew_name) }} -
+
+ {% endif %} + {% else %} + {{day}} / {{month}} {% endif %}
-
- {% for event in all_day_events %} -

{{ event.title }}

+
+
+ {% for hour in range(25)%} +
+
+ {% if view == 'day'%} + {% set hour = hour|string() %} + {{hour.zfill(2)}}:00 + {% endif %} +
+
+
{% endfor %}
-
-
- {% for hour in range(25)%} -
-
- {% if view == 'day'%} - {% set hour = hour|string() %} - {{hour.zfill(2)}}:00 - {% endif %} -
-
-
- {% endfor %} +
+ {% for event, attr in events %} +
+
+

{{ event.title }}

+ {% if attr.total_time_visible %} +

{{attr.total_time}}

+ {% endif %}
-
- {% for event, attr in events %} -
-
-

{{ - event.title }}

- {% if attr.total_time_visible %} -

- {{attr.total_time}}

- {% endif %} -
-
- - - -
-
- {% endfor %} +
+ + +
+
+ {% endfor %}
- {% if view == 'day'%} - - {% endif %} +
+ {% if view == 'day'%} + + {% endif %}
-{% if view == 'day'%} -
{% endif %} +{% if view == 'day'%}
{% endif %} - + {% endblock body %} \ No newline at end of file From a3099f4901165445172c7ffff28e386d5fd2aec3 Mon Sep 17 00:00:00 2001 From: Elor Shoshan Date: Tue, 23 Feb 2021 19:41:26 +0200 Subject: [PATCH 58/64] edit --- app/internal/json_data_loader.py | 11 ++++++----- app/templates/calendar_day_view.html | 2 +- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/app/internal/json_data_loader.py b/app/internal/json_data_loader.py index e76fc17a..b2a09ea8 100644 --- a/app/internal/json_data_loader.py +++ b/app/internal/json_data_loader.py @@ -9,6 +9,7 @@ from app.database.models import ( Base, InternationalDays, Joke, Quote, Parasha, Zodiac ) +from app.config import RESOURCES_DIR from app.internal import ( daily_quotes, international_days, jokes, weekly_parasha, zodiac ) @@ -33,35 +34,35 @@ def load_to_database(session: Session) -> None: """ _insert_into_database( session, - 'app/resources/zodiac.json', + RESOURCES_DIR / "zodiac.json", Zodiac, zodiac.get_zodiac, ) _insert_into_database( session, - 'app/resources/quotes.json', + RESOURCES_DIR / "quotes.json", Quote, daily_quotes.get_quote, ) _insert_into_database( session, - 'app/resources/parashot.json', + RESOURCES_DIR / "parashot.json", Parasha, weekly_parasha.create_parasha_object, ) _insert_into_database( session, - 'app/resources/international_days.json', + RESOURCES_DIR / "international_days.json", InternationalDays, international_days.get_international_day, ) _insert_into_database( session, - 'app/resources/jokes.json', + RESOURCES_DIR / "jokes.json", Joke, jokes.get_joke, ) diff --git a/app/templates/calendar_day_view.html b/app/templates/calendar_day_view.html index 0c134dbd..1e47a7d3 100644 --- a/app/templates/calendar_day_view.html +++ b/app/templates/calendar_day_view.html @@ -18,7 +18,7 @@ {% endif %} {% if parasha %}
- {{ gettext(" פרשת השבוע: %(hebrew)s", hebrew=parasha.name) }} + {{ gettext(" :פרשת השבוע %(hebrew)s", hebrew=parasha.name) }}
{{ gettext("%(name)s", name=parasha.hebrew_name) }} {{ gettext(" פירוט בלינק נפרד על %(parashah)s", parashah=parasha.hebrew_name) }}
From 4729f2792ac50dec15e06b787b8df918880e1212 Mon Sep 17 00:00:00 2001 From: Elor Shoshan Date: Thu, 25 Feb 2021 00:47:03 +0200 Subject: [PATCH 59/64] Details Message --- app/internal/weekly_parasha.py | 1 + app/templates/calendar_day_view.html | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/app/internal/weekly_parasha.py b/app/internal/weekly_parasha.py index 098763b0..db57334d 100644 --- a/app/internal/weekly_parasha.py +++ b/app/internal/weekly_parasha.py @@ -3,6 +3,7 @@ from pyluach import dates, parshios from app.database.models import Parasha + from sqlalchemy.orm import Session diff --git a/app/templates/calendar_day_view.html b/app/templates/calendar_day_view.html index 1e47a7d3..785d2e74 100644 --- a/app/templates/calendar_day_view.html +++ b/app/templates/calendar_day_view.html @@ -18,9 +18,9 @@ {% endif %} {% if parasha %}
- {{ gettext(" :פרשת השבוע %(hebrew)s", hebrew=parasha.name) }} + {{ gettext(" Weekly Torah Portion: %(hebrew)s", hebrew=parasha.name) }}
{{ gettext("%(name)s", name=parasha.hebrew_name) }} - {{ gettext(" פירוט בלינק נפרד על %(parashah)s", parashah=parasha.hebrew_name) }} + {{ gettext(" Detailing in a separate link on %(parashah)s", parashah=parasha.hebrew_name) }}
{% endif %} {% else %} From 122574fda1542604b534b0b4325e41253c9245e9 Mon Sep 17 00:00:00 2001 From: Elor Shoshan Date: Thu, 25 Feb 2021 23:52:55 +0200 Subject: [PATCH 60/64] fix: style improvements --- app/internal/weekly_parasha.py | 14 +++++++------- app/routers/dayview.py | 7 +++---- tests/test_weekly_parasha.py | 10 +++++----- 3 files changed, 15 insertions(+), 16 deletions(-) diff --git a/app/internal/weekly_parasha.py b/app/internal/weekly_parasha.py index db57334d..7f3f6f09 100644 --- a/app/internal/weekly_parasha.py +++ b/app/internal/weekly_parasha.py @@ -1,19 +1,19 @@ from datetime import datetime from typing import Dict, Optional + from pyluach import dates, parshios +from sqlalchemy.orm import Session from app.database.models import Parasha -from sqlalchemy.orm import Session - def create_parasha_object(parashot_fields: Dict[str, str]) -> Parasha: """This function create a parasha object from given fields dictionary. It is used for adding the data from the json into the db""" return Parasha( - name=parashot_fields['name'], - hebrew_name=parashot_fields['hebrew'], - link=parashot_fields['link'], + name=parashot_fields["name"], + hebrew_name=parashot_fields["hebrew"], + link=parashot_fields["link"], ) @@ -27,14 +27,14 @@ def get_parasha_only_to_saturday(date: datetime) -> Optional[str]: If the date is Saturday, return the parasha name, else return None. """ - date_split = str(date).split('-') + date_split = str(date).split("-") new_date_format = [int(x) for x in date_split] gregorian_date = dates.GregorianDate(*new_date_format) if gregorian_date == gregorian_date.shabbos(): return parshios.getparsha_string(gregorian_date) -def get_parasha_object(session: Session, date: datetime) -> Parasha: +def get_parasha_object(session: Session, date: datetime) -> Optional[Parasha]: """Returns the parasha object for the specific day. Args: diff --git a/app/routers/dayview.py b/app/routers/dayview.py index 21013df8..29d77ecd 100644 --- a/app/routers/dayview.py +++ b/app/routers/dayview.py @@ -4,12 +4,11 @@ from fastapi import APIRouter, Depends, HTTPException, Request -from app.database.models import Event, User +from app.database.models import Event from app.dependencies import get_db, templates from app.internal import international_days, weekly_parasha, zodiac from app.internal.security.dependencies import current_user - -# from app.internal.security.schema import CurrentUser +from app.internal.security.schema import CurrentUser from app.routers.user import get_all_user_events router = APIRouter() @@ -193,7 +192,7 @@ async def dayview( date: str, view="day", session=Depends(get_db), - user: User = Depends(current_user), + user: CurrentUser = Depends(current_user), ): try: day = datetime.strptime(date, "%Y-%m-%d") diff --git a/tests/test_weekly_parasha.py b/tests/test_weekly_parasha.py index e95fcee3..8a45267b 100644 --- a/tests/test_weekly_parasha.py +++ b/tests/test_weekly_parasha.py @@ -3,10 +3,10 @@ def test_create_parasha_object(): parashot_fields = { - 'name': 'Parashat Vayechi', - 'hebrew': 'פרשת ויחי', - 'link': 'https://www.hebcal.com/sedrot/vayechi-20210102?' - 'i=on&utm_source=js&utm_medium=api' + "name": "Parashat Vayechi", + "hebrew": "פרשת ויחי", + "link": "https://www.hebcal.com/sedrot/vayechi-20210102?" + "i=on&utm_source=js&utm_medium=api", } result = weekly_parasha.create_parasha_object(parashot_fields) - assert result.name == 'Parashat Vayechi' + assert result.name == "Parashat Vayechi" From 1421c1995ec48935a8d11ac3f32050c6da9324ff Mon Sep 17 00:00:00 2001 From: Elor Shoshan Date: Fri, 26 Feb 2021 00:02:36 +0200 Subject: [PATCH 61/64] fix: style improvements --- app/templates/calendar_day_view.html | 1 + 1 file changed, 1 insertion(+) diff --git a/app/templates/calendar_day_view.html b/app/templates/calendar_day_view.html index 0430e9f5..23dea041 100644 --- a/app/templates/calendar_day_view.html +++ b/app/templates/calendar_day_view.html @@ -28,6 +28,7 @@
{{ gettext("%(name)s", name=parasha.hebrew_name) }} {{ gettext(" Detailing in a separate link on %(parashah)s", parashah=parasha.hebrew_name) }}
+ {% endif %} {% else %} {{day}} / {{month}} {% endif %} From 52df059f6d4a941adf0600c51bf7f36cd52cb3b7 Mon Sep 17 00:00:00 2001 From: Elor Shoshan Date: Fri, 26 Feb 2021 21:23:31 +0200 Subject: [PATCH 62/64] fix: improvments --- app/internal/weekly_parasha.py | 4 +--- app/templates/calendar_day_view.html | 11 ++++++----- 2 files changed, 7 insertions(+), 8 deletions(-) diff --git a/app/internal/weekly_parasha.py b/app/internal/weekly_parasha.py index 7f3f6f09..fad1dc6a 100644 --- a/app/internal/weekly_parasha.py +++ b/app/internal/weekly_parasha.py @@ -48,6 +48,4 @@ def get_parasha_object(session: Session, date: datetime) -> Optional[Parasha]: parasha_name = get_parasha_only_to_saturday(date) if parasha_name is None: return None - for parasha in session.query(Parasha).all(): - if parasha_name in parasha.name: - return parasha + return session.query(Parasha).filter_by(name=parasha_name).first() diff --git a/app/templates/calendar_day_view.html b/app/templates/calendar_day_view.html index 23dea041..1b0104d0 100644 --- a/app/templates/calendar_day_view.html +++ b/app/templates/calendar_day_view.html @@ -26,7 +26,7 @@
{{ gettext(" Weekly Torah Portion: %(hebrew)s", hebrew=parasha.name) }}
{{ gettext("%(name)s", name=parasha.hebrew_name) }} - {{ gettext(" Detailing in a separate link on %(parashah)s", parashah=parasha.hebrew_name) }} + {{ gettext("Detailing in a separate link on %(parashah)s", parashah=parasha.hebrew_name) }}
{% endif %} {% else %} @@ -35,9 +35,10 @@
{% for event in all_day_events %} - {{ event.title }}    + {{ event.title + }}    {% endfor %} -
+
{% if international_day %}
The International days are: "{{ international_day.international_day }}" @@ -58,12 +59,12 @@ {% endfor %}
- {% if current_time.is_viewed %} + {% if current_time.is_viewed %}
- {% endif %} + {% endif %}
{% for event, attr in events_and_attrs %} From 09aceb1925f6a195517f214ba78898eeb5dad756 Mon Sep 17 00:00:00 2001 From: Elor Shoshan Date: Fri, 26 Feb 2021 21:37:37 +0200 Subject: [PATCH 63/64] fix: improvments --- app/routers/dayview.py | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/app/routers/dayview.py b/app/routers/dayview.py index 27125cd5..31458827 100644 --- a/app/routers/dayview.py +++ b/app/routers/dayview.py @@ -212,10 +212,8 @@ async def dayview( current_time_with_attrs = CurrentTimeAttributes(date=day) inter_day = international_days.get_international_day_per_day(session, day) tasks = ( - session.query(Task) - .filter(Task.owner_id == user.user_id) - .filter(Task.date == day.date()) - .order_by(Task.time) + session.query(Task).filter(Task.owner_id == user.user_id).filter( + Task.date == day.date()).order_by(Task.time) ) month = day.strftime("%B").upper() return templates.TemplateResponse( From 6d430edb9857b8f639c70811a31df24592bc7d3d Mon Sep 17 00:00:00 2001 From: Elor Shoshan Date: Mon, 1 Mar 2021 14:05:34 +0200 Subject: [PATCH 64/64] fix: styling --- app/internal/json_data_loader.py | 4 ++-- app/templates/calendar_day_view.html | 7 ++++--- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/app/internal/json_data_loader.py b/app/internal/json_data_loader.py index b2a09ea8..9c5ee271 100644 --- a/app/internal/json_data_loader.py +++ b/app/internal/json_data_loader.py @@ -7,11 +7,11 @@ from app.database.models import ( - Base, InternationalDays, Joke, Quote, Parasha, Zodiac + Base, InternationalDays, Joke, Quote, Parasha, Zodiac, ) from app.config import RESOURCES_DIR from app.internal import ( - daily_quotes, international_days, jokes, weekly_parasha, zodiac + daily_quotes, international_days, jokes, weekly_parasha, zodiac, ) diff --git a/app/templates/calendar_day_view.html b/app/templates/calendar_day_view.html index d50c1c96..b4e5045b 100644 --- a/app/templates/calendar_day_view.html +++ b/app/templates/calendar_day_view.html @@ -23,9 +23,10 @@ {% endif %} {% if parasha %}
- {{ gettext(" Weekly Torah Portion: %(hebrew)s", hebrew=parasha.name) }} -
{{ gettext("%(name)s", name=parasha.hebrew_name) }} - {{ gettext("Detailing in a separate link on %(parashah)s", parashah=parasha.hebrew_name) }} + {{ gettext(" Weekly Torah Portion: %(hebrew)s", hebrew=parasha.name) }}
{{ gettext("%(name)s", + name=parasha.hebrew_name) }} + {{ gettext("Detailing in a separate link on %(parashah)s", + parashah=parasha.hebrew_name) }}
{% endif %} {% else %}