diff --git a/faerun_calendar/static/faerun_calendar/css/main.css b/faerun_calendar/static/faerun_calendar/css/main.css
index 0ff01b7..892148c 100644
--- a/faerun_calendar/static/faerun_calendar/css/main.css
+++ b/faerun_calendar/static/faerun_calendar/css/main.css
@@ -84,3 +84,12 @@ p.event-description {
margin: 0px;
padding: 0px;
}
+
+p.calendar-error {
+ color: Crimson;
+ font-size: 200%;
+}
+
+p.calendar-info {
+ font-size: 200%;
+}
diff --git a/faerun_calendar/templates/faerun_calendar/index.html b/faerun_calendar/templates/faerun_calendar/index.html
index c45e636..c5b2b2a 100644
--- a/faerun_calendar/templates/faerun_calendar/index.html
+++ b/faerun_calendar/templates/faerun_calendar/index.html
@@ -18,6 +18,8 @@
{% elif type == 'day' %}
Календарь — События
Год {{year_data.number}}, {{month_data.name}}, день {{day}}-й
+ {% elif type == 'error' %}
+ Календарь — Ошибка
{% endif %}
@@ -29,7 +31,7 @@
{% endfor %}
{% elif type == 'day' %}
{% if events.count == 0 %}
-
Событий нет
+
Событий нет
{% else %}
{% for event in events %}
@@ -39,6 +41,14 @@
{% endfor %}
{% endif %}
+ {% elif type == 'error' %}
+ {% if error_type == 'year' %}
+
Неверный год
+ {% elif error_type == 'month' %}
+
Неверный месяц
+ {% elif error_type == 'day' %}
+
Неверный день
+ {% endif %}
{% endif %}
diff --git a/faerun_calendar/views.py b/faerun_calendar/views.py
index f62471f..51cf349 100644
--- a/faerun_calendar/views.py
+++ b/faerun_calendar/views.py
@@ -9,38 +9,69 @@ from .models import Event
def day_page(request, year: int, month: int, day: int):
- try:
- year_data = YearData.objects.get(number=year)
- except YearData.DoesNotExist:
- return HttpResponseNotFound('404 Not Found
')
+ params = None
- try:
- year_id = getattr(year_data, 'id')
- except AttributeError:
- return HttpResponseNotFound('404 Not Found
')
+ if not params:
+ try:
+ year_data = YearData.objects.get(number=year)
+ except YearData.DoesNotExist:
+ params = {'type': 'error', 'error_type': 'year'}
- try:
- month_data = MonthData.objects.get(number=month)
- except MonthData.DoesNotExist:
- return HttpResponseNotFound('404 Not Found
')
+ if not params:
+ try:
+ year_id = getattr(year_data, 'id')
+ except AttributeError:
+ params = {'type': 'error', 'error_type': 'year'}
- try:
- month_id = getattr(month_data, 'id')
- except AttributeError:
- return HttpResponseNotFound('404 Not Found
')
+ if not params:
+ try:
+ month_data = MonthData.objects.get(number=month)
+ except MonthData.DoesNotExist:
+ params = {'type': 'error', 'error_type': 'month'}
- try:
- events = Event.objects.filter(year=year_id, month=month_id, day=day)
- except Event.DoesNotExist:
- return HttpResponseNotFound(f'404 Not Found
')
+ if not params:
+ try:
+ month_id = getattr(month_data, 'id')
+ except AttributeError:
+ params = {'type': 'error', 'error_type': 'month'}
- params = {
- 'type': 'day',
- 'year_data': year_data,
- 'month_data': month_data,
- 'day': day,
- 'events': events,
- }
+ if not params:
+ try:
+ events = Event.objects.filter(year=year_id, month=month_id, day=day)
+ except Event.DoesNotExist:
+ params = {'type': 'error', 'error_type': 'events'}
+
+ if not params:
+ try:
+ is_leap = getattr(year_data, 'is_leap')
+ except AttributeError:
+ params = {'type': 'error', 'error_type': 'year'}
+ else:
+ try:
+ is_leap_month = getattr(month_data, 'is_leap_month')
+ except AttributeError:
+ params = {'type': 'error', 'error_type': 'month'}
+ else:
+ if not is_leap and is_leap_month:
+ params = {'type': 'error', 'error_type': 'month'}
+
+ if not params:
+ try:
+ is_oneday = getattr(month_data, 'is_oneday')
+ except AttributeError:
+ params = {'type': 'error', 'error_type': 'month'}
+ else:
+ if is_oneday and day != 1 or not 1 <= day <= 30:
+ params = {'type': 'error', 'error_type': 'day'}
+
+ if not params:
+ params = {
+ 'type': 'day',
+ 'year_data': year_data,
+ 'month_data': month_data,
+ 'day': day,
+ 'events': events,
+ }
return render(request, 'faerun_calendar/index.html', params)