Series of events

How to create a series of events e.g conference organised in every year?

There’s no special support for this, so you simply create individual events (or clone the previous one so you can keep some things that usually remain the same or similar).

At least in the code there is some support (but I think only available for lectures).
See indico/modules/events/controllers/creation.py:

from indico.modules.events.models.series import EventSeries

and

    if self.event_type == EventType.lecture:
            events = self._create_series(form.data)
            event = events[0]
            if len(events) > 1:
                flash(Markup(render_template('events/series_created_msg.html', events=events)), 'info')

This was introduced in:

commit da037864bee2c49864c13cab3eebc3cb8e50ecae
Author: Adrian Moennich <adrian.moennich@cern.ch>
Date:   Fri Jul 22 18:11:11 2016 +0200

    Add basic lecture series creation

There is a small ‘add occurences’ below the dates.
What is missing is a way to manage the series linking after creation.

Creating an EventSeries and adding it as series to the evetns via indico shell seems to work:

es=EventSeries()
e1 = Event.find_first(id=<id1>)
e2 = Event.find_first(id=<id2>)
e1.series=es
e2.series=es
db.session.commit()

(tested with a meeting, for conferences setting the series also works, but there is currently no rendering in frontend)

you are right, atm there’s no way (besides indico shell) to manage/create such series except when creating multi-occurrence lectures.

And to be really useful with conferences probably the Series model needs some improvement as well, e.g. a name field to enable things like:

MLZ conference Series: Topic1 2019
MLZ conference Series: Topic2 2020

Front end rendering of the series info could be done by an custom template(overriding templates/display/conference/base.html) :

@@ -18,7 +18,7 @@
                                        <img src="{{ event.logo_url }}" alt="{{ event.title }}" border="0" class="confLogo">
                                     </div>
                                 {% endif %}
-                                <span itemprop="title">{{ event.title }}</span>
+                                <span itemprop="title">{{ event.get_verbose_title(show_series_pos=True) }}</span>

or

@@ -38,6 +38,9 @@
                                 {%- trans tz=event.display_tzinfo.zone %}{{ tz }} timezone{% endtrans -%}
                             </div>
                        </div>
   +                       {% if event.series %}
   +                       <div class="series"> {{event.series_pos}}/{{event.series_count}} </div>
   +                       {% endif %}

There is already a related issue. No implementation foreseen for the moment, but if someone wants to help, go for it!