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)