diff --git a/faerun_calendar/models.py b/faerun_calendar/models.py index 4e0626c..090a3ea 100644 --- a/faerun_calendar/models.py +++ b/faerun_calendar/models.py @@ -61,6 +61,8 @@ class Event(models.Model): time = models.TimeField('Time') title = models.CharField('Title', max_length=250) description = models.TextField('Description', max_length=2500) + is_suggested = models.BooleanField('IsSuggested') + is_only_for_gm = models.BooleanField('IsOnlyForGm') def __str__(self): return f'({self.day}, {self.time}, {self.title})' diff --git a/faerun_calendar/static/faerun_calendar/css/main.css b/faerun_calendar/static/faerun_calendar/css/main.css index 892148c..b78c831 100644 --- a/faerun_calendar/static/faerun_calendar/css/main.css +++ b/faerun_calendar/static/faerun_calendar/css/main.css @@ -42,7 +42,9 @@ table.month td.current a { color: white; } -div.calendar { +div.calendar, +div.calendar-events, +div.calendar-error { display: flex; flex-flow: row wrap; justify-content: space-around; @@ -54,7 +56,9 @@ table.month { max-width: 350px; } -div.event { +div.event, +div.event-gm, +div.event-suggested { border: 1px solid black; padding: 20px; margin: 20px; @@ -62,6 +66,18 @@ div.event { width: 100%; } +div.event { + border: 1px solid black; +} + +div.event-gm { + border: 2px solid BlueViolet; +} + +div.event-suggested { + border: 2px solid crimson; +} + div.event-time { border: 1px solid black; border-radius: 3px; @@ -86,7 +102,7 @@ p.event-description { } p.calendar-error { - color: Crimson; + color: crimson; font-size: 200%; } diff --git a/faerun_calendar/templates/faerun_calendar/index.html b/faerun_calendar/templates/faerun_calendar/index.html index c5b2b2a..a1cb4c6 100644 --- a/faerun_calendar/templates/faerun_calendar/index.html +++ b/faerun_calendar/templates/faerun_calendar/index.html @@ -15,33 +15,42 @@ {% if type == 'year' %}

Календарь

{{year_data.number}}

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

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

-

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

- {% elif type == 'error' %} -

Календарь — Ошибка

- {% endif %} -
- {% 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' %} +
+ {% elif type == 'day' %} +

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

+

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

+ +
{% if events.count == 0 %}

Событий нет

{% else %} {% for event in events %} -
+ {% if event.is_suggested %} +
+ {% elif event.is_only_for_gm %} +
+ {% else %} +
+ {% endif %} +
{{event.time}}
{{event.title}}

{{event.description}}

{% endfor %} {% endif %} - {% elif type == 'error' %} +
+ {% elif type == 'error' %} +

Календарь — Ошибка

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

Неверный год

{% elif error_type == 'month' %} @@ -49,7 +58,7 @@ {% elif error_type == 'day' %}

Неверный день

{% endif %} - {% endif %} -
+
+ {% endif %}
{% endblock %} diff --git a/faerun_calendar/views.py b/faerun_calendar/views.py index 51cf349..723087d 100644 --- a/faerun_calendar/views.py +++ b/faerun_calendar/views.py @@ -1,5 +1,4 @@ from django.shortcuts import render -from django.http import HttpResponse from django.http import HttpResponseNotFound from .models import YearData @@ -11,6 +10,9 @@ from .models import Event def day_page(request, year: int, month: int, day: int): params = None + select_suggested = False + select_only_for_gm = False + if not params: try: year_data = YearData.objects.get(number=year) @@ -35,12 +37,6 @@ def day_page(request, year: int, month: int, day: int): except AttributeError: params = {'type': 'error', 'error_type': 'month'} - 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') @@ -55,6 +51,14 @@ def day_page(request, year: int, month: int, day: int): if not is_leap and is_leap_month: params = {'type': 'error', 'error_type': 'month'} + if not params: + try: + events = Event.objects.filter(year=year_id, month=month_id, day=day, + is_suggested=select_suggested, is_only_for_gm=select_only_for_gm + ).order_by('time') + except Event.DoesNotExist: + params = {'type': 'error', 'error_type': 'events'} + if not params: try: is_oneday = getattr(month_data, 'is_oneday')