From a0ba00b23eab3f6bf12d597e379a5b5a544aee71 Mon Sep 17 00:00:00 2001 From: Ruslan Ignatov Date: Tue, 1 Nov 2022 17:39:50 +0300 Subject: [PATCH] Added events on day page --- faerun_calendar/models.py | 2 +- .../static/faerun_calendar/css/main.css | 31 +++++++++++++++ .../templates/faerun_calendar/index.html | 31 ++++++++++++--- faerun_calendar/views.py | 38 +++++++++++++++++-- 4 files changed, 92 insertions(+), 10 deletions(-) diff --git a/faerun_calendar/models.py b/faerun_calendar/models.py index df5f92e..4e0626c 100644 --- a/faerun_calendar/models.py +++ b/faerun_calendar/models.py @@ -52,7 +52,7 @@ class CalendarData(models.Model): class Event(models.Model): - day = models.SmallIntegerField('Number', unique=True, validators=[ + day = models.SmallIntegerField('Number', validators=[ MinValueValidator(1), MaxValueValidator(30), ]) diff --git a/faerun_calendar/static/faerun_calendar/css/main.css b/faerun_calendar/static/faerun_calendar/css/main.css index 1aee7b9..0ff01b7 100644 --- a/faerun_calendar/static/faerun_calendar/css/main.css +++ b/faerun_calendar/static/faerun_calendar/css/main.css @@ -53,3 +53,34 @@ table.month { width: 350px; max-width: 350px; } + +div.event { + border: 1px solid black; + padding: 20px; + margin: 20px; + border-radius: 10px; + width: 100%; +} + +div.event-time { + border: 1px solid black; + border-radius: 3px; + padding: 3px 5px; + margin-right: 15px; + float: left; + font-weight: bold; + background: DeepSkyBlue; + font-size: 150%; +} + +div.event-title { + font-weight: bold; + text-decoration: underline; + font-size: 200%; + margin-bottom: 10px; +} + +p.event-description { + margin: 0px; + padding: 0px; +} diff --git a/faerun_calendar/templates/faerun_calendar/index.html b/faerun_calendar/templates/faerun_calendar/index.html index 10cf9fa..c45e636 100644 --- a/faerun_calendar/templates/faerun_calendar/index.html +++ b/faerun_calendar/templates/faerun_calendar/index.html @@ -12,15 +12,34 @@ {% block content %}
-

Календарь

+ {% if type == 'year' %} +

Календарь

+

{{year_data.number}}

+ {% elif type == 'day' %} +

Календарь — События

+

Год {{year_data.number}}, {{month_data.name}}, день {{day}}-й

+ {% endif %} -

{{year_data.number}}

- {% for month in month_data %} - {% if not month.is_leap_month or year_data.is_leap %} - {% include 'faerun_calendar/month.html' with month=month calendar_data=calendar_data month_days=month_days events=events %} + {% if type == 'year' %} + {% for month in month_data %} + {% if not month.is_leap_month or year_data.is_leap %} + {% include 'faerun_calendar/month.html' with month=month calendar_data=calendar_data month_days=month_days events=events %} + {% endif %} + {% endfor %} + {% elif type == 'day' %} + {% if events.count == 0 %} +

Событий нет

+ {% else %} + {% for event in events %} +
+
{{event.time}}
+
{{event.title}}
+

{{event.description}}

+
+ {% endfor %} {% endif %} - {% endfor %} + {% endif %}
{% endblock %} diff --git a/faerun_calendar/views.py b/faerun_calendar/views.py index 6682466..f62471f 100644 --- a/faerun_calendar/views.py +++ b/faerun_calendar/views.py @@ -9,7 +9,40 @@ from .models import Event def day_page(request, year: int, month: int, day: int): - return HttpResponse(f'{year}.{month}.{day}') + try: + year_data = YearData.objects.get(number=year) + except YearData.DoesNotExist: + return HttpResponseNotFound('

404 Not Found

') + + try: + year_id = getattr(year_data, 'id') + except AttributeError: + return HttpResponseNotFound('

404 Not Found

') + + try: + month_data = MonthData.objects.get(number=month) + except MonthData.DoesNotExist: + return HttpResponseNotFound('

404 Not Found

') + + try: + month_id = getattr(month_data, 'id') + except AttributeError: + return HttpResponseNotFound('

404 Not Found

') + + try: + events = Event.objects.filter(year=year_id, month=month_id, day=day) + except Event.DoesNotExist: + return HttpResponseNotFound(f'

404 Not Found

') + + params = { + 'type': 'day', + 'year_data': year_data, + 'month_data': month_data, + 'day': day, + 'events': events, + } + + return render(request, 'faerun_calendar/index.html', params) def year_page(request, year: int): @@ -23,6 +56,7 @@ def year_page(request, year: int): events = Event.objects.all() params = { + 'type': 'year', 'calendar_data': calendar_data, 'year_data': year_data, 'month_data': month_data, @@ -34,8 +68,6 @@ def year_page(request, year: int): def index(request): - calendar_data = CalendarData.objects.first() - try: current_year = getattr(getattr(CalendarData.objects.first(), 'current_year'), 'number') except AttributeError: