From 91a73aacff28c1e466b07a273c43438f84a53cba Mon Sep 17 00:00:00 2001 From: nadav pesach Date: Mon, 8 Feb 2021 17:17:37 +0200 Subject: [PATCH 01/17] feat: busiest day of the week graph --- app/routers/agenda.py | 15 +++++++++++ app/static/graph.js | 47 ++++++++++++++++++++++++++++++++ app/templates/agenda.html | 56 ++++++++++++++++++++++----------------- 3 files changed, 94 insertions(+), 24 deletions(-) create mode 100644 app/static/graph.js diff --git a/app/routers/agenda.py b/app/routers/agenda.py index 35a032e0..fd83b38c 100644 --- a/app/routers/agenda.py +++ b/app/routers/agenda.py @@ -1,5 +1,6 @@ from collections import defaultdict from datetime import date, timedelta +import json from typing import Optional, Tuple from fastapi import APIRouter, Depends, Request @@ -47,15 +48,29 @@ def agenda( db, user_id, start_date, end_date ) events = defaultdict(list) + for event_obj in events_objects: event_duration = agenda_events.get_time_delta_string( event_obj.start, event_obj.end ) events[event_obj.start.date()].append((event_obj, event_duration)) + + start_date_graph, end_date_graph = calc_dates_range_for_agenda( + start_date, end_date, 7 + ) + + events_objects_for_graph = agenda_events.get_events_per_dates( + db, user_id, start_date_graph, end_date_graph + ) + events_for_graph = {str(start_date_graph + timedelta(i)): 0 for i in range(8)} + + for event_obj in events_objects_for_graph: + events_for_graph[str(event_obj.start.date())] += 1 return templates.TemplateResponse("agenda.html", { "request": request, "events": events, + "events_for_graph": json.dumps(events_for_graph), "start_date": start_date, "end_date": end_date, }) diff --git a/app/static/graph.js b/app/static/graph.js new file mode 100644 index 00000000..95afa054 --- /dev/null +++ b/app/static/graph.js @@ -0,0 +1,47 @@ +function makeGraph(events) { + events = JSON.parse(events); + + const ctx = document.getElementById("myChart"); + ctx.style.backgroundColor = "rgba(255, 255, 255, 1)"; + const myChart = new Chart(ctx, { + type: "bar", + data: { + labels: Object.keys(events), + datasets: [{ + label: "# Events", + data: Object.values(events), + backgroundColor: [ + "rgba(255, 99, 132, 0.2)", + "rgba(54, 162, 235, 0.2)", + "rgba(255, 206, 86, 0.2)", + "rgba(75, 192, 192, 0.2)", + "rgba(153, 102, 255, 0.2)", + "rgba(255, 159, 64, 0.2)", + "rgba(200, 130, 40, 0.2)", + "rgba(255, 99, 132, 0.2)" + ], + borderColor: [ + "rgba(255, 99, 132, 1)", + "rgba(54, 162, 235, 1)", + "rgba(255, 206, 86, 1)", + "rgba(75, 192, 192, 1)", + "rgba(153, 102, 255, 1)", + "rgba(255, 159, 64, 1)", + "rgba(200, 130, 64, 1)", + "rgba(255, 99, 132, 1)" + ], + borderWidth: 1 + }] + } + }); +} + +function addEventsAfterPageLoaded() { + const element = document.getElementsByClassName("graph")[0]; + element.addEventListener("click", function() { + let eventsPerDateData = element.name; + makeGraph(eventsPerDateData); + }, false); +} + +document.addEventListener("DOMContentLoaded", addEventsAfterPageLoaded); \ No newline at end of file diff --git a/app/templates/agenda.html b/app/templates/agenda.html index 70563c60..9f32839b 100644 --- a/app/templates/agenda.html +++ b/app/templates/agenda.html @@ -1,13 +1,7 @@ -{% extends "base.html" %} - -{% block head %} -{{ super() }} - -{% endblock %} - -{% block content %} +{% extends "base.html" %} {% block head %} {{ super() }} + {% endblock %} {% block content %}
-
+



@@ -25,28 +19,42 @@
Next Month
+
+ +
{% if start_date > end_date %} -

Start date is greater than end date

+

Start date is greater than end date

{% elif events | length == 0 %} -

No events found...

+

No events found...

{% elif start_date == end_date %} -

{{ start_date.strftime("%d/%m/%Y") }}

+

{{ start_date.strftime("%d/%m/%Y") }}

{% else %} -

{{ start_date.strftime("%d/%m/%Y") }} - {{end_date.strftime("%d/%m/%Y") }}

+

{{ start_date.strftime("%d/%m/%Y") }} - {{end_date.strftime("%d/%m/%Y") }}

{% endif %} -
- -
- {% for events_date, events_list in events.items() %} -
{{ events_date.strftime("%d/%m/%Y") }}
- {% for event in events_list %} -
{{ event[0].start.time().strftime("%H:%M") }} - {{ event[0].title }} , duration: {{ event[1] }}
- {% endfor %} - {% endfor %} -
+
+
+ {% for events_date, events_list in events.items() %} +
{{ events_date.strftime("%d/%m/%Y") }}
+ {% for event in events_list %} +
{{ event[0].start.time().strftime("%H:%M") }} - {{ event[0].title }} , duration: {{ event[1] }}
+ {% endfor %} {% endfor %} +
+ +
+
+ + +
+ +
+
-{% endblock %} +
+
+ +
+{% endblock %} \ No newline at end of file From 16ece2a9d05e846abb8513b13891dea7a441e6c3 Mon Sep 17 00:00:00 2001 From: nadav pesach Date: Mon, 8 Feb 2021 18:30:29 +0200 Subject: [PATCH 02/17] git add --- app/routers/agenda.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/app/routers/agenda.py b/app/routers/agenda.py index 820abc89..0dd51525 100644 --- a/app/routers/agenda.py +++ b/app/routers/agenda.py @@ -54,15 +54,16 @@ def agenda( event_obj.start, event_obj.end ) events[event_obj.start.date()].append((event_obj, event_duration)) - + start_date_graph, end_date_graph = calc_dates_range_for_agenda( start_date, end_date, 7 - ) + ) events_objects_for_graph = agenda_events.get_events_per_dates( db, user_id, start_date_graph, end_date_graph - ) - events_for_graph = {str(start_date_graph + timedelta(i)): 0 for i in range(8)} + ) + events_for_graph = { + str(start_date_graph + timedelta(i)): 0 for i in range(8)} for event_obj in events_objects_for_graph: events_for_graph[str(event_obj.start.date())] += 1 From fe478cfcdb12937de3aa5399b98666bfb14e9656 Mon Sep 17 00:00:00 2001 From: nadav pesach Date: Mon, 8 Feb 2021 20:16:38 +0200 Subject: [PATCH 03/17] test fix --- app/routers/agenda.py | 27 +++++++++++++-------------- tests/test_agenda_route.py | 2 +- 2 files changed, 14 insertions(+), 15 deletions(-) diff --git a/app/routers/agenda.py b/app/routers/agenda.py index 0dd51525..30f1756e 100644 --- a/app/routers/agenda.py +++ b/app/routers/agenda.py @@ -40,6 +40,18 @@ def agenda( """Route for the agenda page, using dates range or exact amount of days.""" user_id = 1 # there is no user session yet, so I use user id- 1. + + start_date_graph, end_date_graph = calc_dates_range_for_agenda(0, 0, 7) + + events_objects_for_graph = agenda_events.get_events_per_dates( + db, user_id, start_date_graph, end_date_graph + ) + events_for_graph = { + str(start_date_graph + timedelta(i)): 0 for i in range(8)} + + for event_obj in events_objects_for_graph: + events_for_graph[str(event_obj.start.date())] += 1 + start_date, end_date = calc_dates_range_for_agenda( start_date, end_date, days ) @@ -55,23 +67,10 @@ def agenda( ) events[event_obj.start.date()].append((event_obj, event_duration)) - start_date_graph, end_date_graph = calc_dates_range_for_agenda( - start_date, end_date, 7 - ) - - events_objects_for_graph = agenda_events.get_events_per_dates( - db, user_id, start_date_graph, end_date_graph - ) - events_for_graph = { - str(start_date_graph + timedelta(i)): 0 for i in range(8)} - - for event_obj in events_objects_for_graph: - events_for_graph[str(event_obj.start.date())] += 1 - return templates.TemplateResponse("agenda.html", { "request": request, "events": events, - "events_for_graph": json.dumps(events_for_graph), "start_date": start_date, "end_date": end_date, + "events_for_graph": json.dumps(events_for_graph), }) diff --git a/tests/test_agenda_route.py b/tests/test_agenda_route.py index 1bd6682b..c3c633be 100644 --- a/tests/test_agenda_route.py +++ b/tests/test_agenda_route.py @@ -86,7 +86,7 @@ def test_agenda_between_two_dates( assert b"event 5" in resp.content assert b"event 6" not in resp.content - def test_agenda_start_bigger_than_end(self, agenda_test_client): + def test_agenda_start_bigger_than_end(self, agenda_test_client, session): start_date = self.today_date.date() end_date = (self.today_date - timedelta(days=2)).date() resp = agenda_test_client.get( From 7897f9112123d5bc14351c193d58f9f4f823c18e Mon Sep 17 00:00:00 2001 From: nadav pesach Date: Tue, 9 Feb 2021 13:52:45 +0200 Subject: [PATCH 04/17] git issus --- app/routers/agenda.py | 10 ++++++---- app/static/graph.js | 4 ++-- app/templates/agenda.html | 1 - app/templates/base.html | 2 ++ 4 files changed, 10 insertions(+), 7 deletions(-) diff --git a/app/routers/agenda.py b/app/routers/agenda.py index 30f1756e..5ec2f309 100644 --- a/app/routers/agenda.py +++ b/app/routers/agenda.py @@ -41,15 +41,17 @@ def agenda( user_id = 1 # there is no user session yet, so I use user id- 1. - start_date_graph, end_date_graph = calc_dates_range_for_agenda(0, 0, 7) + get_a_week_int = 6 + start_date_graph, end_date_graph = calc_dates_range_for_agenda( + 0, 0, get_a_week_int) - events_objects_for_graph = agenda_events.get_events_per_dates( + events_this_week = agenda_events.get_events_per_dates( db, user_id, start_date_graph, end_date_graph ) events_for_graph = { - str(start_date_graph + timedelta(i)): 0 for i in range(8)} + str(start_date_graph + timedelta(i)): 0 for i in range(get_a_week_int + 1)} - for event_obj in events_objects_for_graph: + for event_obj in events_this_week: events_for_graph[str(event_obj.start.date())] += 1 start_date, end_date = calc_dates_range_for_agenda( diff --git a/app/static/graph.js b/app/static/graph.js index 95afa054..6bd590ae 100644 --- a/app/static/graph.js +++ b/app/static/graph.js @@ -1,4 +1,4 @@ -function makeGraph(events) { +function busiestDayOfTheWeekGraph(events) { events = JSON.parse(events); const ctx = document.getElementById("myChart"); @@ -40,7 +40,7 @@ function addEventsAfterPageLoaded() { const element = document.getElementsByClassName("graph")[0]; element.addEventListener("click", function() { let eventsPerDateData = element.name; - makeGraph(eventsPerDateData); + busiestDayOfTheWeekGraph(eventsPerDateData); }, false); } diff --git a/app/templates/agenda.html b/app/templates/agenda.html index eb7179b8..4ceef730 100644 --- a/app/templates/agenda.html +++ b/app/templates/agenda.html @@ -50,7 +50,6 @@

{{ start_date.strftime("%d/%m/%Y") }} - {{end_date.strftime("%d/%m/%Y") }}
-
diff --git a/app/templates/base.html b/app/templates/base.html index ce47969d..6aabf809 100644 --- a/app/templates/base.html +++ b/app/templates/base.html @@ -55,6 +55,8 @@ + + \ No newline at end of file From 0a5f18a0397c20ff6948c5c07252ef56d11b5d3a Mon Sep 17 00:00:00 2001 From: nadav pesach Date: Tue, 9 Feb 2021 13:58:36 +0200 Subject: [PATCH 05/17] fix issues --- app/routers/agenda.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/routers/agenda.py b/app/routers/agenda.py index 5ec2f309..44e30924 100644 --- a/app/routers/agenda.py +++ b/app/routers/agenda.py @@ -49,7 +49,8 @@ def agenda( db, user_id, start_date_graph, end_date_graph ) events_for_graph = { - str(start_date_graph + timedelta(i)): 0 for i in range(get_a_week_int + 1)} + str(start_date_graph + + timedelta(i)): 0 for i in range(get_a_week_int + 1)} for event_obj in events_this_week: events_for_graph[str(event_obj.start.date())] += 1 From 01941689672d1630dc851989fa234d8e0d06761d Mon Sep 17 00:00:00 2001 From: nadav pesach Date: Tue, 9 Feb 2021 14:05:53 +0200 Subject: [PATCH 06/17] fix datetime in event --- app/routers/event.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/routers/event.py b/app/routers/event.py index c4b2c44b..600bf381 100644 --- a/app/routers/event.py +++ b/app/routers/event.py @@ -1,6 +1,6 @@ from datetime import datetime from operator import attrgetter -from typing import Any, Dict, List, Optional +from typing import Any, Dict, datetime, List, Optional from fastapi import APIRouter, Depends, HTTPException, Request from loguru import logger From e5c5db0c8ed48c773469edc09e69d1561d999842 Mon Sep 17 00:00:00 2001 From: nadav pesach Date: Tue, 9 Feb 2021 14:14:37 +0200 Subject: [PATCH 07/17] gix --- app/routers/event.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/routers/event.py b/app/routers/event.py index 3cea1aac..7bd87f0d 100644 --- a/app/routers/event.py +++ b/app/routers/event.py @@ -1,6 +1,6 @@ -from datetime import datetime as dt +from datetime import datetime from operator import attrgetter -from typing import Any, Dict, datetime, List, Optional +from typing import Any, Dict, List, Optional from fastapi import APIRouter, Depends, HTTPException, Request from sqlalchemy.exc import SQLAlchemyError From e01dac80e7bae93d7ca208fcc2bd42f9b0e670c5 Mon Sep 17 00:00:00 2001 From: nadav pesach Date: Tue, 9 Feb 2021 14:17:02 +0200 Subject: [PATCH 08/17] fix --- app/routers/event.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/routers/event.py b/app/routers/event.py index 7bd87f0d..a1e3fd3e 100644 --- a/app/routers/event.py +++ b/app/routers/event.py @@ -1,6 +1,6 @@ from datetime import datetime from operator import attrgetter -from typing import Any, Dict, List, Optional +from typing import Any, Dict, datetime, List, Optional from fastapi import APIRouter, Depends, HTTPException, Request from sqlalchemy.exc import SQLAlchemyError From 10df159eb49a73f16101ad27098c1147cb77016a Mon Sep 17 00:00:00 2001 From: nadav pesach Date: Tue, 9 Feb 2021 14:19:50 +0200 Subject: [PATCH 09/17] fix... --- app/routers/event.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/routers/event.py b/app/routers/event.py index a1e3fd3e..3cea1aac 100644 --- a/app/routers/event.py +++ b/app/routers/event.py @@ -1,4 +1,4 @@ -from datetime import datetime +from datetime import datetime as dt from operator import attrgetter from typing import Any, Dict, datetime, List, Optional From d3803bd08e77116d77699fe2c42af16d89d0db2c Mon Sep 17 00:00:00 2001 From: nadav pesach Date: Tue, 9 Feb 2021 14:28:05 +0200 Subject: [PATCH 10/17] fix? --- app/routers/event.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/routers/event.py b/app/routers/event.py index 3cea1aac..3b631546 100644 --- a/app/routers/event.py +++ b/app/routers/event.py @@ -1,6 +1,6 @@ from datetime import datetime as dt from operator import attrgetter -from typing import Any, Dict, datetime, List, Optional +from typing import Any, Dict, List, Optional from fastapi import APIRouter, Depends, HTTPException, Request from sqlalchemy.exc import SQLAlchemyError @@ -299,4 +299,4 @@ def add_new_event(values: dict, db: Session) -> Optional[Event]: return new_event except (AssertionError, AttributeError, TypeError) as e: logger.exception(e) - return None + return None \ No newline at end of file From ee2d9e71464f79a0ff68f0ee4781fa1fe421e685 Mon Sep 17 00:00:00 2001 From: nadav pesach Date: Tue, 9 Feb 2021 14:32:53 +0200 Subject: [PATCH 11/17] fix dt --- app/routers/event.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/routers/event.py b/app/routers/event.py index 3b631546..dd20ef6f 100644 --- a/app/routers/event.py +++ b/app/routers/event.py @@ -273,7 +273,7 @@ def delete_event(event_id: int, url="/calendar", status_code=status.HTTP_200_OK) -def is_date_before(start_time: datetime, end_time: datetime) -> bool: +def is_date_before(start_time: dt, end_time: dt) -> bool: """Check if the start_date is smaller then the end_time""" try: return start_time < end_time @@ -299,4 +299,4 @@ def add_new_event(values: dict, db: Session) -> Optional[Event]: return new_event except (AssertionError, AttributeError, TypeError) as e: logger.exception(e) - return None \ No newline at end of file + return None From 25a0caf0b6e55da78cd0e86ea128b79b23654417 Mon Sep 17 00:00:00 2001 From: nadav pesach Date: Wed, 17 Feb 2021 11:07:21 +0200 Subject: [PATCH 12/17] fix issues --- app/internal/agenda_events.py | 22 +++++++++++++++++++++- app/routers/agenda.py | 20 ++++---------------- app/static/graph.js | 6 ++++-- app/templates/agenda.html | 4 ++-- app/templates/base.html | 1 + tests/test_agenda_internal.py | 7 +++++++ 6 files changed, 39 insertions(+), 21 deletions(-) diff --git a/app/internal/agenda_events.py b/app/internal/agenda_events.py index f3c79d9b..0678e90e 100644 --- a/app/internal/agenda_events.py +++ b/app/internal/agenda_events.py @@ -1,5 +1,5 @@ from datetime import date, timedelta -from typing import List, Optional, Union, Iterator +from typing import Dict, List, Optional, Union, Iterator import arrow from sqlalchemy.orm import Session @@ -7,6 +7,7 @@ from app.database.models import Event from app.routers.event import sort_by_date from app.routers.user import get_all_user_events +from app.routers import agenda def get_events_per_dates( @@ -67,3 +68,22 @@ def filter_dates( event for event in events if start <= event.start.date() <= end ) + + +def make_dict_for_graph_data(db: Session, user_id: int) -> Dict: + """create a dict with number of events per day for current week""" + WEEK_DAYS = 6 + start_date, end_date = agenda.calc_dates_range_for_agenda( + 0, 0, WEEK_DAYS) + + events_this_week = get_events_per_dates( + db, user_id, start_date, end_date + ) + events_for_graph = { + str(start_date + timedelta(i)): 0 for i in range(WEEK_DAYS + 1) + } + + for event_obj in events_this_week: + event_date = event_obj.start.date() + events_for_graph[str(event_date)] += 1 + return events_for_graph diff --git a/app/routers/agenda.py b/app/routers/agenda.py index 44e30924..df877d5c 100644 --- a/app/routers/agenda.py +++ b/app/routers/agenda.py @@ -41,20 +41,6 @@ def agenda( user_id = 1 # there is no user session yet, so I use user id- 1. - get_a_week_int = 6 - start_date_graph, end_date_graph = calc_dates_range_for_agenda( - 0, 0, get_a_week_int) - - events_this_week = agenda_events.get_events_per_dates( - db, user_id, start_date_graph, end_date_graph - ) - events_for_graph = { - str(start_date_graph + - timedelta(i)): 0 for i in range(get_a_week_int + 1)} - - for event_obj in events_this_week: - events_for_graph[str(event_obj.start.date())] += 1 - start_date, end_date = calc_dates_range_for_agenda( start_date, end_date, days ) @@ -69,11 +55,13 @@ def agenda( event_obj.start, event_obj.end ) events[event_obj.start.date()].append((event_obj, event_duration)) - + events_for_graph = json.dumps( + agenda_events.make_dict_for_graph_data(db, user_id) + ) return templates.TemplateResponse("agenda.html", { "request": request, "events": events, "start_date": start_date, "end_date": end_date, - "events_for_graph": json.dumps(events_for_graph), + "events_for_graph": events_for_graph, }) diff --git a/app/static/graph.js b/app/static/graph.js index 6bd590ae..7a6eea41 100644 --- a/app/static/graph.js +++ b/app/static/graph.js @@ -1,15 +1,17 @@ function busiestDayOfTheWeekGraph(events) { events = JSON.parse(events); + const data = Object.values(events); + const labels = Object.keys(events); const ctx = document.getElementById("myChart"); ctx.style.backgroundColor = "rgba(255, 255, 255, 1)"; const myChart = new Chart(ctx, { type: "bar", data: { - labels: Object.keys(events), + labels: labels, datasets: [{ label: "# Events", - data: Object.values(events), + data: data, backgroundColor: [ "rgba(255, 99, 132, 0.2)", "rgba(54, 162, 235, 0.2)", diff --git a/app/templates/agenda.html b/app/templates/agenda.html index 4ceef730..eb7ff673 100644 --- a/app/templates/agenda.html +++ b/app/templates/agenda.html @@ -46,12 +46,12 @@

{{ start_date.strftime("%d/%m/%Y") }} - {{end_date.strftime("%d/%m/%Y") }} - +
- +
diff --git a/app/templates/base.html b/app/templates/base.html index 6aabf809..404c4d1f 100644 --- a/app/templates/base.html +++ b/app/templates/base.html @@ -56,6 +56,7 @@ + diff --git a/tests/test_agenda_internal.py b/tests/test_agenda_internal.py index 0188aa47..c37e104f 100644 --- a/tests/test_agenda_internal.py +++ b/tests/test_agenda_internal.py @@ -44,3 +44,10 @@ def test_get_events_per_dates_failure(self, yesterday_event, session): end=date.today(), ) assert list(events) == [] + + def test_make_dict_for_graph_data(self, today_event, session): + events_for_graph = agenda_events.make_dict_for_graph_data( + session, + user_id=today_event.owner_id, + ) + assert isinstance(events_for_graph, dict) From 4fcf042c9176dd5887dca44d653788efb22a8c1c Mon Sep 17 00:00:00 2001 From: nadav pesach Date: Wed, 17 Feb 2021 12:17:02 +0200 Subject: [PATCH 13/17] fix graph --- app/static/graph.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/static/graph.js b/app/static/graph.js index 7a6eea41..0a2b7daf 100644 --- a/app/static/graph.js +++ b/app/static/graph.js @@ -1,6 +1,6 @@ function busiestDayOfTheWeekGraph(events) { events = JSON.parse(events); - + const data = Object.values(events); const labels = Object.keys(events); const ctx = document.getElementById("myChart"); From d512159e004604c4136f7bd281c247f8da446963 Mon Sep 17 00:00:00 2001 From: nadav pesach Date: Thu, 18 Feb 2021 14:02:32 +0200 Subject: [PATCH 14/17] small fix --- app/internal/agenda_events.py | 2 +- app/templates/agenda.html | 1 - app/templates/base.html | 1 - 3 files changed, 1 insertion(+), 3 deletions(-) diff --git a/app/internal/agenda_events.py b/app/internal/agenda_events.py index 0ad743e1..63abad87 100644 --- a/app/internal/agenda_events.py +++ b/app/internal/agenda_events.py @@ -92,7 +92,7 @@ def get_events_in_time_frame( yield from filter_dates(events, start_date, end_date) -def make_dict_for_graph_data(db: Session, user_id: int) -> Dict: +def make_dict_for_graph_data(db: Session, user_id: int) -> Dict[str, int]: """create a dict with number of events per day for current week""" WEEK_DAYS = 6 start_date, end_date = agenda.calc_dates_range_for_agenda( diff --git a/app/templates/agenda.html b/app/templates/agenda.html index 4e8cdad1..693c5eee 100644 --- a/app/templates/agenda.html +++ b/app/templates/agenda.html @@ -69,5 +69,4 @@

{{ start_date.strftime("%d/%m/%Y") }} - {{ end_date.strftime("%d/ {% endfor %}

-

{% endblock %} \ No newline at end of file diff --git a/app/templates/base.html b/app/templates/base.html index 2b0f34fd..9061f3f1 100644 --- a/app/templates/base.html +++ b/app/templates/base.html @@ -76,7 +76,6 @@ - \ No newline at end of file From fa528d0973a5eef38b97a519ac9fb5afbe5bce61 Mon Sep 17 00:00:00 2001 From: nadav pesach Date: Sat, 20 Feb 2021 15:28:47 +0200 Subject: [PATCH 15/17] small fix --- app/internal/agenda_events.py | 20 +++++++++++++------- tests/test_agenda_internal.py | 16 ++++++++++++++++ 2 files changed, 29 insertions(+), 7 deletions(-) diff --git a/app/internal/agenda_events.py b/app/internal/agenda_events.py index 63abad87..05724fec 100644 --- a/app/internal/agenda_events.py +++ b/app/internal/agenda_events.py @@ -1,6 +1,6 @@ import datetime from datetime import date, timedelta -from typing import Dict, Iterator, List, Optional, Union +from typing import Dict, Iterator, List, Optional, Tuple, Union import arrow from sqlalchemy.orm import Session @@ -92,18 +92,24 @@ def get_events_in_time_frame( yield from filter_dates(events, start_date, end_date) -def make_dict_for_graph_data(db: Session, user_id: int) -> Dict[str, int]: - """create a dict with number of events per day for current week""" - WEEK_DAYS = 6 - start_date, end_date = agenda.calc_dates_range_for_agenda( - 0, 0, WEEK_DAYS) +def get_events_for_the_week(db: Session, user_id: int + ) -> Tuple[Union[Iterator[Event], list], Dict]: + WEEK_DAYS = 7 + start_date = date.today() + end_date = start_date + timedelta(days=WEEK_DAYS - 1) events_this_week = get_events_per_dates( db, user_id, start_date, end_date ) events_for_graph = { - str(start_date + timedelta(i)): 0 for i in range(WEEK_DAYS + 1) + str(start_date + timedelta(i)): 0 for i in range(WEEK_DAYS) } + return events_this_week, events_for_graph + + +def make_dict_for_graph_data(db: Session, user_id: int) -> Dict[str, int]: + """create a dict with number of events per day for current week""" + events_this_week, events_for_graph = get_events_for_the_week(db, user_id) for event_obj in events_this_week: event_date = event_obj.start.date() diff --git a/tests/test_agenda_internal.py b/tests/test_agenda_internal.py index d7d6f4ec..f8fc0329 100644 --- a/tests/test_agenda_internal.py +++ b/tests/test_agenda_internal.py @@ -51,3 +51,19 @@ def test_make_dict_for_graph_data(self, today_event, session): user_id=today_event.owner_id, ) assert isinstance(events_for_graph, dict) + + def test_get_events_for_the_week_success(self, today_event, session): + events, events_for_graph = agenda_events.events_for_the_week( + session, + user_id=today_event.owner_id, + ) + assert isinstance(events_for_graph, dict) + assert list(events) == [today_event] + + def test_get_events_for_the_week_failure(self, yesterday_event, session): + events, events_for_graph = agenda_events.events_for_the_week( + session, + user_id=yesterday_event.owner_id, + ) + assert list(events) == [] + assert isinstance(events_for_graph, dict) From 4662dab7d7d913121f40a8137c923e6bb4a16b8f Mon Sep 17 00:00:00 2001 From: nadav pesach Date: Sat, 20 Feb 2021 15:38:12 +0200 Subject: [PATCH 16/17] small fix --- app/internal/agenda_events.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/app/internal/agenda_events.py b/app/internal/agenda_events.py index 05724fec..ccd4bb23 100644 --- a/app/internal/agenda_events.py +++ b/app/internal/agenda_events.py @@ -8,7 +8,6 @@ from app.database.models import Event from app.routers.event import sort_by_date from app.routers.user import get_all_user_events -from app.routers import agenda def get_events_per_dates( @@ -93,7 +92,7 @@ def get_events_in_time_frame( def get_events_for_the_week(db: Session, user_id: int - ) -> Tuple[Union[Iterator[Event], list], Dict]: + ) -> Tuple[Union[Iterator[Event], list], Dict]: WEEK_DAYS = 7 start_date = date.today() end_date = start_date + timedelta(days=WEEK_DAYS - 1) From 5906a2a1a504fbbcaaf735b40666731de040bbc1 Mon Sep 17 00:00:00 2001 From: nadav pesach Date: Sat, 20 Feb 2021 15:42:40 +0200 Subject: [PATCH 17/17] fix name --- tests/test_agenda_internal.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/test_agenda_internal.py b/tests/test_agenda_internal.py index f8fc0329..8f38153d 100644 --- a/tests/test_agenda_internal.py +++ b/tests/test_agenda_internal.py @@ -53,7 +53,7 @@ def test_make_dict_for_graph_data(self, today_event, session): assert isinstance(events_for_graph, dict) def test_get_events_for_the_week_success(self, today_event, session): - events, events_for_graph = agenda_events.events_for_the_week( + events, events_for_graph = agenda_events.get_events_for_the_week( session, user_id=today_event.owner_id, ) @@ -61,7 +61,7 @@ def test_get_events_for_the_week_success(self, today_event, session): assert list(events) == [today_event] def test_get_events_for_the_week_failure(self, yesterday_event, session): - events, events_for_graph = agenda_events.events_for_the_week( + events, events_for_graph = agenda_events.get_events_for_the_week( session, user_id=yesterday_event.owner_id, )