Skip to content

Commit 1a59dd1

Browse files
authored
Upcoming events features and fixes. (#626)
Corrects the display of upcoming events over all the website.
1 parent 0220f7e commit 1a59dd1

9 files changed

Lines changed: 71 additions & 25 deletions

File tree

assets/static/beeware.css

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -625,3 +625,15 @@ body {
625625
padding: 0 1em 1em 0em;
626626
margin-left: -1em;
627627
}
628+
629+
/*----------------------------------------------------
630+
Upcoming Event on Homepage
631+
--------------------------------------------------- */
632+
633+
.upcoming_event_info {
634+
margin-top: -1rem;
635+
}
636+
637+
p.upcoming_event_date {
638+
font-size: 110%;
639+
}

content/news/events/europython-2025-sprints/contents.lr

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,3 +7,5 @@ event_type: sprint
77
speaker: Russell Keith-Magee
88
---
99
url: https://ep2025.europython.eu
10+
---
11+
end_date: 2025-07-20

content/news/events/europython-2025/contents.lr

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ In this hands-on tutorial, you'll lean how you can use the BeeWare suite of tool
1010

1111
No experience with mobile or desktop app development is required; a basic familiarity with Python is all you need. By the end of the tutorial, you'll have an app running on your own phone, written entirely by you, using nothing but Python.
1212
---
13-
event_type: talk
13+
event_type: tutorial
1414
---
1515
speaker: Russell Keith-Magee
1616
---

content/news/events/pycon-us-2025-sprints/contents.lr

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,3 +7,5 @@ event_type: sprint
77
speaker: Russell Keith-Magee, Malcolm Smith
88
---
99
url: https://us.pycon.org/2025/
10+
---
11+
end_date: 2025-05-21

models/event.ini

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,11 @@ label = Event date
3232
type = date
3333
width = 1/4
3434

35+
[fields.end_date]
36+
label = Event end date
37+
type = date
38+
width = 1/4
39+
3540
[fields.talk_title]
3641
label = Talk Title
3742
type = string

templates/event.html

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@
2828
<div class="container">
2929
<p>{{ breadcrumbs(this) }}</p>
3030
<h1>{{ this.title }} ({{ this.event_type|title }})</h1>
31-
<p>{{ this.date|datetimeformat("EEEE, MMMM d, YYYY", locale=this.alt)|title }}</p>
31+
<p>{{ this.date|datetimeformat("EEEE, MMMM d, YYYY", locale=this.alt)|title }} {% if this.end_date %} - {{this.end_date|datetimeformat("EEEE, MMMM d, YYYY", locale=this.alt)|title}}{% endif %}</p>
3232
</div>
3333
</div>
3434
{% endblock %}
@@ -52,7 +52,7 @@ <h3>{{ t_what_is_a_sprint }}</h3>
5252
<div class="col-sm-12 col-md-4 gutter">
5353
<dl>
5454
<dt>{{ t_date|trim }}:</dt>
55-
<dd>{{ this.date|datetimeformat("MMMM d, YYYY", locale=this.alt)|title }}</dd>
55+
<dd>{{ this.date|datetimeformat("MMMM d, YYYY", locale=this.alt)|title }}{% if this.end_date %} - {{this.end_date|datetimeformat("MMMM d, YYYY", locale=this.alt)|title}}{% endif %}</dd>
5656

5757
{% if this.event_type == "sprint" %}
5858
<dt>{{ t_sprinters|trim }}:</dt>

templates/events.html

Lines changed: 20 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12,13 +12,22 @@
1212
var today = new Date();
1313
$('.upcoming.event').each(function() {
1414
var event_date = new Date($(this).data('date'));
15-
if (event_date >= today) {
15+
var event_end_date = $(this).data('end_date') ? new Date($(this).data('end_date')) : new Date($(this).data('date'));
16+
if (event_date > today || (event_date >= today && event_end_date >= today)) {
17+
$(this).hide();
18+
}
19+
});
20+
$('.current.event').each(function() {
21+
var event_date = new Date($(this).data('date'));
22+
var event_end_date = $(this).data('end_date') ? new Date($(this).data('end_date')) : new Date($(this).data('date'));
23+
if ((event_date = today) || (event_date < today && event_end_date >= today)) {
1624
$(this).hide();
1725
}
1826
});
1927
$('.past.event').each(function() {
2028
var event_date = new Date($(this).data('date'));
21-
if (event_date < today) {
29+
var event_end_date = $(this).data('end_date') ? new Date($(this).data('end_date')) : new Date($(this).data('date'));
30+
if (event_date < today || (event_date < today && event_end_date < today) || (event_date < today && event_end_date >= today)) {
2231
$(this).hide();
2332
}
2433
});
@@ -41,12 +50,18 @@ <h1>{{ this.title }}</h1>
4150
and use Javascript (which will be evaluated at the time of viewing) to
4251
hide any events that shouldn't appear in each list. #}
4352
<h2>{{ t_upcoming_events }}</h2>
44-
{% for child in this.children.filter(F.date > today) %}
45-
<p class="{% if child.date < today %}past {% endif %}event" data-date="{{ child.date }}">{{ child.date|datetimeformat("MMMM d, YYYY", locale=this.alt)|title }} <a href="{{ child|url(alt=this.alt) }}">{{ child.title }} ({{ child.event_type|title }})</a></p>
53+
{% for child in this.children.order_by("date") %}
54+
<p class="{% if (child.date < today and child.end_date is not defined) or (child.date < today and child.end_date < today) %}past {% endif %}event" data-date="{{ child.date }}" data-end-date="{{ child.end_date }}">
55+
{{ child.date|datetimeformat("MMMM d, YYYY", locale=this.alt)|title }}{% if child.end_date %} - {{child.end_date|datetimeformat("MMMM d, YYYY", locale=this.alt)|title}}{% endif %}
56+
<a href="{{ child|url(alt=this.alt) }}">{{ child.title }} ({{ child.event_type|title }})</a>
57+
</p>
4658
{% endfor %}
4759
<h2>{{ t_past_events }}</h2>
4860
{% for child in this.children %}
49-
<p class="{% if child.date >= today %}upcoming {% endif %}event" data-date="{{ child.date }}">{{ child.date|datetimeformat("MMMM d, YYYY", locale=this.alt)|title }} <a href="{{ child|url(alt=this.alt) }}">{{ child.title }} ({{ child.event_type|title }})</a></p>
61+
<p class="{% if (child.date > today and child.end_date is not defined) or (child.date >= today and child.end_date >= today) %}upcoming
62+
{% elif (child.date == today and child.end_date is not defined) or (child.date < today and child.end_date is defined and child.end_date >= today) %}current {% endif %}event" data-date="{{ child.date }}" data-end-date="{{ child.end_date }}">
63+
{{ child.date|datetimeformat("MMMM d, YYYY", locale=this.alt)|title }}{% if child.end_date %} - {{child.end_date|datetimeformat("MMMM d, YYYY", locale=this.alt)|title}}{% endif %}
64+
<a href="{{ child|url(alt=this.alt) }}">{{ child.title }} ({{ child.event_type|title }})</a></p>
5065
{% endfor %}
5166
{% endblock %}
5267
{% block gutter %}

templates/home.html

Lines changed: 22 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,21 @@ <h2 class="display-2">{{ this.title }}</h2>
3939
{% endblock %}
4040

4141
{% block body %}
42-
42+
{% block extra_script %}
43+
<script>
44+
(function() {
45+
var today = new Date();
46+
$('.upcoming.event').each(function() {
47+
var event_date = new Date($(this).data('date'));
48+
var event_end_date = $(this).data('end-date') ? new Date($(this).data('end-date')) : new Date($(this).data('date'));
49+
$(this).hide();
50+
if (event_date >= today || (event_date >= today && event_end_date >= today) || (event_date < today && event_end_date >= today)) {
51+
$(this).show();
52+
}
53+
});
54+
})();
55+
</script>
56+
{% endblock %}
4357
<!-- MD and Larger Project List -->
4458
<div class="row">
4559
<div class="col-sm-7 mr-auto">
@@ -76,20 +90,14 @@ <h3><a href="{{ '/news/buzz/'|url(alt=this.alt) }}">{{ t_latest_news }}</a></h3>
7690

7791
<hr/>
7892

79-
{% set events = site.query('/news/events', alt=this.alt).filter(F.upcoming==True) %}
93+
{% set events = site.query('/news/events', alt=this.alt).filter(F.date).order_by('date') %}
8094
{% if events %}
8195
<h3><a href="{{ '/news/events/'|url(alt=this.alt) }}">{{ t_meet_team }}</a></h3>
8296

83-
<div id="carousel-events" class="carousel slide" data-ride="carousel">
84-
<ol class="carousel-indicators">
85-
{% for event in events %}
86-
<li data-target="#carousel-events" data-slide-to="{{ loop.index0 }} "{% if loop.index0 == 0 %} class="active"{% endif %}></li>
87-
{% endfor %}
88-
</ol>
89-
<div class="carousel-inner" role="listbox">
9097
{% for event in events %}
91-
<div class="carousel-item{% if loop.index0 == 0 %} active{% endif %}">
92-
<h4><a href="{{ event|url(alt=this.alt) }}">{{ event.title }}</a></h4>
98+
<div class="upcoming event" data-date="{{ event.date }}" data-end-date="{{ event.end_date }}">
99+
<h5><a href="{{ event|url(alt=this.alt) }}">{{ event.title }}</a></h5>
100+
<div class="upcoming_event_info">
93101
{% if event.event_type == "keynote" %}
94102
{{ event.speaker[0] }} {{ t_keynoting }}
95103
{% elif event.event_type == "talk" %}
@@ -102,11 +110,11 @@ <h4><a href="{{ event|url(alt=this.alt) }}">{{ event.title }}</a></h4>
102110
{{ t_sprinting }}
103111
{% else %} <br>
104112
{% endif %}
105-
<p>{{ event.date.strftime("%d %B %Y") }}</p>
113+
<p class="upcoming_event_date">{{ event.date|datetimeformat("MMMM d, YYYY", locale=this.alt)|title }}{% if event.end_date %} - {{event.end_date|datetimeformat("MMMM d, YYYY", locale=this.alt)|title}}{% endif %}</p>
114+
</div>
106115
</div>
107116
{% endfor %}
108-
</div>
109-
</div>
117+
110118

111119
<hr/>
112120
{% endif %}

templates/news.html

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,14 +8,16 @@
88
{% block title %}{{ this.title }}{% endblock %}
99
{% block body %}
1010
{% set blog = site.query('/news/buzz', alt=this.alt).all() %}
11-
{% set events = site.query('/news/events', alt=this.alt).filter(F.upcoming == True) %}
11+
{% set events = site.query('/news/events', alt=this.alt).filter(F.date).order_by("date") %}
1212
{% block extra_script %}
1313
<script>
1414
(function() {
1515
var today = new Date();
1616
$('.upcoming.event').each(function() {
1717
var event_date = new Date($(this).data('date'));
18-
if (event_date >= today) {
18+
var event_end_date = $(this).data('end-date') ? new Date($(this).data('end-date')) : new Date($(this).data('date'));
19+
$(this).hide();
20+
if (event_date >= today || (event_date >= today && event_end_date >= today) || (event_date < today && event_end_date >= today)) {
1921
$(this).show();
2022
}
2123
});
@@ -43,7 +45,7 @@ <h3><a href="{{ child|url(alt=this.alt) }}">{{ child.title }}</a></h3>
4345
{{ this.gutter }}
4446
<ul>
4547
{% for child in events %}
46-
<li class="upcoming event" data-date="{{ child.date }}">{{ child.date.strftime("%-d %B %Y") }}: <a href="{{ child|url(alt=this.alt) }}">{{ child.title }} {{ child.event_type}}</a></li>
48+
<li class="upcoming event" data-date="{{ child.date }}" data-end-date="{{ child.end_date }}">{{ child.date|datetimeformat("MMMM d, YYYY", locale=this.alt)|title }}{% if child.end_date %} - {{child.end_date|datetimeformat("MMMM d, YYYY", locale=this.alt)|title}}{% endif %}: <a href="{{ child|url(alt=this.alt) }}">{{ child.title }} {{ child.event_type}}</a></li>
4749
{% endfor %}
4850
</ul>
4951
</div>

0 commit comments

Comments
 (0)