diff --git a/assets/static/beeware.css b/assets/static/beeware.css index d5e35dffc3..9b35ab1d90 100644 --- a/assets/static/beeware.css +++ b/assets/static/beeware.css @@ -625,3 +625,15 @@ body { padding: 0 1em 1em 0em; margin-left: -1em; } + +/*---------------------------------------------------- + Upcoming Event on Homepage + --------------------------------------------------- */ + +.upcoming_event_info { + margin-top: -1rem; +} + +p.upcoming_event_date { + font-size: 110%; +} \ No newline at end of file diff --git a/content/news/events/europython-2025-sprints/contents.lr b/content/news/events/europython-2025-sprints/contents.lr index 689c9ae513..93d5fc5dc2 100644 --- a/content/news/events/europython-2025-sprints/contents.lr +++ b/content/news/events/europython-2025-sprints/contents.lr @@ -7,3 +7,5 @@ event_type: sprint speaker: Russell Keith-Magee --- url: https://ep2025.europython.eu +--- +end_date: 2025-07-20 diff --git a/content/news/events/europython-2025/contents.lr b/content/news/events/europython-2025/contents.lr index 474b062499..91b992bb43 100644 --- a/content/news/events/europython-2025/contents.lr +++ b/content/news/events/europython-2025/contents.lr @@ -10,7 +10,7 @@ In this hands-on tutorial, you'll lean how you can use the BeeWare suite of tool 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. --- -event_type: talk +event_type: tutorial --- speaker: Russell Keith-Magee --- diff --git a/content/news/events/pycon-us-2025-sprints/contents.lr b/content/news/events/pycon-us-2025-sprints/contents.lr index 955609ba2f..998a105a26 100644 --- a/content/news/events/pycon-us-2025-sprints/contents.lr +++ b/content/news/events/pycon-us-2025-sprints/contents.lr @@ -7,3 +7,5 @@ event_type: sprint speaker: Russell Keith-Magee, Malcolm Smith --- url: https://us.pycon.org/2025/ +--- +end_date: 2025-05-21 diff --git a/models/event.ini b/models/event.ini index 501aa57bdd..862b4af688 100644 --- a/models/event.ini +++ b/models/event.ini @@ -32,6 +32,11 @@ label = Event date type = date width = 1/4 +[fields.end_date] +label = Event end date +type = date +width = 1/4 + [fields.talk_title] label = Talk Title type = string diff --git a/templates/event.html b/templates/event.html index 860d114718..6996c9fa0a 100644 --- a/templates/event.html +++ b/templates/event.html @@ -28,7 +28,7 @@

{{ breadcrumbs(this) }}

{{ this.title }} ({{ this.event_type|title }})

-

{{ this.date|datetimeformat("EEEE, MMMM d, YYYY", locale=this.alt)|title }}

+

{{ 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 %}

{% endblock %} @@ -52,7 +52,7 @@

{{ t_what_is_a_sprint }}

{{ t_date|trim }}:
-
{{ this.date|datetimeformat("MMMM d, YYYY", locale=this.alt)|title }}
+
{{ 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 %}
{% if this.event_type == "sprint" %}
{{ t_sprinters|trim }}:
diff --git a/templates/events.html b/templates/events.html index 96053be30a..c410f9e64a 100644 --- a/templates/events.html +++ b/templates/events.html @@ -12,13 +12,22 @@ var today = new Date(); $('.upcoming.event').each(function() { var event_date = new Date($(this).data('date')); - if (event_date >= today) { + var event_end_date = $(this).data('end_date') ? new Date($(this).data('end_date')) : new Date($(this).data('date')); + if (event_date > today || (event_date >= today && event_end_date >= today)) { + $(this).hide(); + } + }); + $('.current.event').each(function() { + var event_date = new Date($(this).data('date')); + var event_end_date = $(this).data('end_date') ? new Date($(this).data('end_date')) : new Date($(this).data('date')); + if ((event_date = today) || (event_date < today && event_end_date >= today)) { $(this).hide(); } }); $('.past.event').each(function() { var event_date = new Date($(this).data('date')); - if (event_date < today) { + var event_end_date = $(this).data('end_date') ? new Date($(this).data('end_date')) : new Date($(this).data('date')); + if (event_date < today || (event_date < today && event_end_date < today) || (event_date < today && event_end_date >= today)) { $(this).hide(); } }); @@ -41,12 +50,18 @@

{{ this.title }}

and use Javascript (which will be evaluated at the time of viewing) to hide any events that shouldn't appear in each list. #}

{{ t_upcoming_events }}

-{% for child in this.children.filter(F.date > today) %} -

{{ child.date|datetimeformat("MMMM d, YYYY", locale=this.alt)|title }} {{ child.title }} ({{ child.event_type|title }})

+{% for child in this.children.order_by("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 %} + {{ child.title }} ({{ child.event_type|title }}) +

{% endfor %}

{{ t_past_events }}

{% for child in this.children %} -

{{ child.date|datetimeformat("MMMM d, YYYY", locale=this.alt)|title }} {{ child.title }} ({{ child.event_type|title }})

+

+ {{ 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 %} + {{ child.title }} ({{ child.event_type|title }})

{% endfor %} {% endblock %} {% block gutter %} diff --git a/templates/home.html b/templates/home.html index cd35cd1555..87b6d43b42 100644 --- a/templates/home.html +++ b/templates/home.html @@ -39,7 +39,21 @@

{{ this.title }}

{% endblock %} {% block body %} - +{% block extra_script %} + +{% endblock %}
@@ -76,20 +90,14 @@

{{ t_latest_news }}


- {% set events = site.query('/news/events', alt=this.alt).filter(F.upcoming==True) %} + {% set events = site.query('/news/events', alt=this.alt).filter(F.date).order_by('date') %} {% if events %}

{{ t_meet_team }}

-