Events are now sorted by time. Added is_suggested and is_only_for_gm for events

This commit is contained in:
2022-11-02 10:19:40 +03:00
parent f066d10d93
commit 29871e5155
4 changed files with 54 additions and 23 deletions
+2
View File
@@ -61,6 +61,8 @@ class Event(models.Model):
time = models.TimeField('Time') time = models.TimeField('Time')
title = models.CharField('Title', max_length=250) title = models.CharField('Title', max_length=250)
description = models.TextField('Description', max_length=2500) description = models.TextField('Description', max_length=2500)
is_suggested = models.BooleanField('IsSuggested')
is_only_for_gm = models.BooleanField('IsOnlyForGm')
def __str__(self): def __str__(self):
return f'({self.day}, {self.time}, {self.title})' return f'({self.day}, {self.time}, {self.title})'
@@ -42,7 +42,9 @@ table.month td.current a {
color: white; color: white;
} }
div.calendar { div.calendar,
div.calendar-events,
div.calendar-error {
display: flex; display: flex;
flex-flow: row wrap; flex-flow: row wrap;
justify-content: space-around; justify-content: space-around;
@@ -54,7 +56,9 @@ table.month {
max-width: 350px; max-width: 350px;
} }
div.event { div.event,
div.event-gm,
div.event-suggested {
border: 1px solid black; border: 1px solid black;
padding: 20px; padding: 20px;
margin: 20px; margin: 20px;
@@ -62,6 +66,18 @@ div.event {
width: 100%; 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 { div.event-time {
border: 1px solid black; border: 1px solid black;
border-radius: 3px; border-radius: 3px;
@@ -86,7 +102,7 @@ p.event-description {
} }
p.calendar-error { p.calendar-error {
color: Crimson; color: crimson;
font-size: 200%; font-size: 200%;
} }
@@ -15,33 +15,42 @@
{% if type == 'year' %} {% if type == 'year' %}
<h1 class="title">Календарь</h1> <h1 class="title">Календарь</h1>
<h2 class="year">{{year_data.number}}</h2> <h2 class="year">{{year_data.number}}</h2>
{% elif type == 'day' %}
<h1 class="title">Календарь — События</h1>
<h2 class="year">Год {{year_data.number}}, {{month_data.name}}, день {{day}}-й</h2>
{% elif type == 'error' %}
<h1 class="title">Календарь — Ошибка</h1>
{% endif %}
<div class="calendar"> <div class="calendar">
{% if type == 'year' %}
{% for month in month_data %} {% for month in month_data %}
{% if not month.is_leap_month or year_data.is_leap %} {% 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 %} {% include 'faerun_calendar/month.html' with month=month calendar_data=calendar_data month_days=month_days events=events %}
{% endif %} {% endif %}
{% endfor %} {% endfor %}
</div>
{% elif type == 'day' %} {% elif type == 'day' %}
<h1 class="title">Календарь — События</h1>
<h2 class="year">Год {{year_data.number}}, {{month_data.name}}, день {{day}}-й</h2>
<div class="calendar-events">
{% if events.count == 0 %} {% if events.count == 0 %}
<p class="calendar-info">Событий нет</p> <p class="calendar-info">Событий нет</p>
{% else %} {% else %}
{% for event in events %} {% for event in events %}
{% if event.is_suggested %}
<div class="event-suggested">
{% elif event.is_only_for_gm %}
<div class="event-gm">
{% else %}
<div class="event"> <div class="event">
{% endif %}
<div class="event-time">{{event.time}}</div> <div class="event-time">{{event.time}}</div>
<div class="event-title">{{event.title}}</div> <div class="event-title">{{event.title}}</div>
<p class="event-description">{{event.description}}</p> <p class="event-description">{{event.description}}</p>
</div> </div>
{% endfor %} {% endfor %}
{% endif %} {% endif %}
</div>
{% elif type == 'error' %} {% elif type == 'error' %}
<h1 class="title">Календарь — Ошибка</h1>
<div class="calendar-error">
{% if error_type == 'year' %} {% if error_type == 'year' %}
<p class="calendar-error">Неверный год</p> <p class="calendar-error">Неверный год</p>
{% elif error_type == 'month' %} {% elif error_type == 'month' %}
@@ -49,7 +58,7 @@
{% elif error_type == 'day' %} {% elif error_type == 'day' %}
<p class="calendar-error">Неверный день</p> <p class="calendar-error">Неверный день</p>
{% endif %} {% endif %}
{% endif %}
</div> </div>
{% endif %}
</div> </div>
{% endblock %} {% endblock %}
+11 -7
View File
@@ -1,5 +1,4 @@
from django.shortcuts import render from django.shortcuts import render
from django.http import HttpResponse
from django.http import HttpResponseNotFound from django.http import HttpResponseNotFound
from .models import YearData from .models import YearData
@@ -11,6 +10,9 @@ from .models import Event
def day_page(request, year: int, month: int, day: int): def day_page(request, year: int, month: int, day: int):
params = None params = None
select_suggested = False
select_only_for_gm = False
if not params: if not params:
try: try:
year_data = YearData.objects.get(number=year) year_data = YearData.objects.get(number=year)
@@ -35,12 +37,6 @@ def day_page(request, year: int, month: int, day: int):
except AttributeError: except AttributeError:
params = {'type': 'error', 'error_type': 'month'} 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: if not params:
try: try:
is_leap = getattr(year_data, 'is_leap') 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: if not is_leap and is_leap_month:
params = {'type': 'error', 'error_type': '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: if not params:
try: try:
is_oneday = getattr(month_data, 'is_oneday') is_oneday = getattr(month_data, 'is_oneday')