Events are now sorted by time. Added is_suggested and is_only_for_gm for events
This commit is contained in:
@@ -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 %}
|
||||||
|
|||||||
@@ -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')
|
||||||
|
|||||||
Reference in New Issue
Block a user