Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

Docs Getindico Io en Latest

Download as pdf or txt
Download as pdf or txt
You are on page 1of 494

Indico Documentation

Release 3.2-dev

Indico Team

Feb 16, 2022


Contents

1 Installation 3
1.1 Installation guides . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

2 Configuration 47
2.1 Configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47

3 Building 65
3.1 Building . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65

4 Search 67
4.1 Search . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67

5 Plugins 75
5.1 Extending Indico with plugins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75

6 HTTP API 93
6.1 Indico - HTTP API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93

7 API reference 121


7.1 API reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121

8 What’s New 353


8.1 Changelog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 353

9 Indices and tables 385

10 Contact 387
10.1 Contact . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 387

Python Module Index 389

Index 393

i
ii
Indico Documentation, Release 3.2-dev

The effortless open source tool for event organization, archival and collaboration.

Welcome to Indico’s documentation. This documentation is split into several parts, from installing Indico to developing
Indico plugins. To dive into the internals of Indico, check out the API documentation. Read more about Indico in our
official website.

Contents 1
Indico Documentation, Release 3.2-dev

2 Contents
CHAPTER 1

Installation

To simply install and use Indico, follow the production installation instructions. For those who are interested in
developing new features and plugins for Indico, check out the development installation instructions.

1.1 Installation guides

To simply install and use Indico, follow the production installation instructions. For those who are interested in
developing new features and plugins for Indico, check out the development installation instructions.

1.1.1 Production

We provide guides to install Indico on CentOS and Debian systems. While other distributions are not officially sup-
ported, they should work fine, but the installation steps (especially package names) may need some slight adjustments.
Our guides cover a single-machine installation where Indico, Celery, Redis and PostgreSQL run on the same machine.
This should be fine for almost all Indico instances, but adapting the steps to multiple machines is not particularly hard
either.

CentOS / CC7

Except for minor differences, these guides apply to vanilla CentOS 7/8 and also the CERN flavor of CentOS 7, CC7
(CentOS CERN 7).
We have not tested the installation guides with CentOS Stream 8, as there are no up to date official Postgres packages
available yet.

Warning: CentOS 8 is only supported with nginx, as some important packages (mod_xsendfile and
mod_proxy_uwsgi) are not (yet?) available for CentOS 8 in first-party repos. Once they are in EPEL, there is
a good chance the guide will work as expected.

3
Indico Documentation, Release 3.2-dev

nginx

Note: Please note that you must use Apache if you intend to use SSO using Shibboleth. If that’s not the case because
you do not use SSO at all or use e.g. OAuth, OIDC or SAML without Shibboleth, we recommend using nginx.

1. Enable EPEL

yum install -y epel-release

Note: If you use CC7, EPEL is already enabled and this step is not necessary

2. Install Packages

If you are on CentOS 7, edit /etc/yum.repos.d/CentOS-Base.repo and add exclude=postgresql*


to the [base] and [updates] sections, as described in the PostgreSQL wiki and then run these commands:

yum install -y centos-release-scl


yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/
˓→pgdg-redhat-repo-latest.noarch.rpm

If you are on CentOS 8, run this instead:

dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-8-x86_64/


˓→pgdg-redhat-repo-latest.noarch.rpm

dnf -qy module disable postgresql


yum config-manager --set-enabled powertools

Now install all the required packages:

yum install -y postgresql13 postgresql13-server postgresql13-libs postgresql13-devel


˓→postgresql13-contrib

yum install -y git gcc make redis nginx


yum install -y libjpeg-turbo-devel libxslt-devel libxml2-devel libffi-devel pcre-
˓→devel libyaml-devel zlib-devel bzip2 bzip2-devel readline-devel sqlite sqlite-devel

˓→openssl-devel xz xz-devel findutils libuuid-devel

/usr/pgsql-13/bin/postgresql-13-setup initdb
systemctl start postgresql-13.service redis.service

3. Create a Database

We create a user and database for indico and enable the necessary Postgres extensions (which can only be done by the
Postgres superuser)

su - postgres -c 'createuser indico'


su - postgres -c 'createdb -O indico indico'
su - postgres -c 'psql indico -c "CREATE EXTENSION unaccent; CREATE EXTENSION pg_trgm;
˓→"'

4 Chapter 1. Installation
Indico Documentation, Release 3.2-dev

Warning: Do not forget to setup a cronjob that creates regular database backups once you start using Indico in
production!

4. Configure uWSGI & nginx

The default uWSGI and nginx configuration files should work fine in most cases.
cat > /etc/uwsgi-indico.ini <<'EOF'
[uwsgi]
uid = indico
gid = nginx
umask = 027

processes = 4
enable-threads = true
chmod-socket = 770
socket = /opt/indico/web/uwsgi.sock
stats = /opt/indico/web/uwsgi-stats.sock
protocol = uwsgi

master = true
auto-procname = true
procname-prefix-spaced = indico
disable-logging = true

single-interpreter = true

touch-reload = /opt/indico/web/indico.wsgi
wsgi-file = /opt/indico/web/indico.wsgi
virtualenv = /opt/indico/.venv

vacuum = true
buffer-size = 20480
memory-report = true
max-requests = 2500
harakiri = 900
harakiri-verbose = true
reload-on-rss = 2048
evil-reload-on-rss = 8192
EOF

We also need a systemd unit to start uWSGI.


cat > /etc/systemd/system/indico-uwsgi.service <<'EOF'
[Unit]
Description=Indico uWSGI
After=network.target

[Service]
ExecStart=/opt/indico/.venv/bin/uwsgi --ini /etc/uwsgi-indico.ini
ExecReload=/bin/kill -HUP $MAINPID
Restart=always
SyslogIdentifier=indico-uwsgi
User=indico
Group=nginx
(continues on next page)

1.1. Installation guides 5


Indico Documentation, Release 3.2-dev

(continued from previous page)


UMask=0027
Type=notify
NotifyAccess=all
KillMode=mixed
KillSignal=SIGQUIT
TimeoutStopSec=300

[Install]
WantedBy=multi-user.target
EOF

Note: Replace YOURHOSTNAME in the next file with the hostname on which your Indico instance should be available,
e.g. indico.yourdomain.com

cat > /etc/nginx/conf.d/indico.conf <<'EOF'


server {
listen 80;
listen [::]:80;
server_name YOURHOSTNAME;
return 301 https://$server_name$request_uri;
}

server {
listen *:443 ssl http2;
listen [::]:443 ssl http2 default ipv6only=on;
server_name YOURHOSTNAME;

ssl_certificate /etc/ssl/indico/indico.crt;
ssl_certificate_key /etc/ssl/indico/indico.key;
ssl_dhparam /etc/ssl/indico/ffdhe2048;

ssl_session_timeout 1d;
ssl_session_cache shared:SSL:10m;
ssl_session_tickets off;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-
˓→SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-

˓→CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-

˓→AES256-GCM-SHA384;

ssl_prefer_server_ciphers off;

access_log /opt/indico/log/nginx/access.log combined;


error_log /opt/indico/log/nginx/error.log;

if ($host != $server_name) {
rewrite ^/(.*) https://$server_name/$1 permanent;
}

location /.xsf/indico/ {
internal;
alias /opt/indico/;
}

location ~ ^/(images|fonts)(.*)/(.+?)(__v[0-9a-f]+)?\.([^.]+)$ {
(continues on next page)

6 Chapter 1. Installation
Indico Documentation, Release 3.2-dev

(continued from previous page)


alias /opt/indico/web/static/$1$2/$3.$5;
access_log off;
}

location ~ ^/(css|dist|images|fonts)/(.*)$ {
alias /opt/indico/web/static/$1/$2;
access_log off;
}

location /robots.txt {
alias /opt/indico/web/static/robots.txt;
access_log off;
}

location / {
root /var/empty/nginx;
include /etc/nginx/uwsgi_params;
uwsgi_pass unix:/opt/indico/web/uwsgi.sock;
uwsgi_param UWSGI_SCHEME $scheme;
uwsgi_read_timeout 15m;
uwsgi_buffers 32 32k;
uwsgi_busy_buffers_size 128k;
uwsgi_hide_header X-Sendfile;
client_max_body_size 1G;
}
}
EOF

5. Create a TLS Certificate

First, create the folders for the certificate/key and set restrictive permissions on them:
mkdir /etc/ssl/indico
chown root:root /etc/ssl/indico/
chmod 700 /etc/ssl/indico

We also use a strong set of pre-generated DH params (ffdhe2048 from RFC7919) as suggested in Mozilla’s TLS config
recommendations:
cat > /etc/ssl/indico/ffdhe2048 <<'EOF'
-----BEGIN DH PARAMETERS-----
MIIBCAKCAQEA//////////+t+FRYortKmq/cViAnPTzx2LnFg84tNpWp4TZBFGQz
+8yTnc4kmz75fS/jY2MMddj2gbICrsRhetPfHtXV/WVhJDP1H18GbtCFY2VVPe0a
87VXE15/V8k1mE8McODmi3fipona8+/och3xWKE2rec1MKzKT0g6eXq8CrGCsyT7
YdEIqUuyyOP7uWrat2DX9GgdT0Kj3jlN9K5W7edjcrsZCwenyO4KbXCeAvzhzffi
7MA0BM0oNC9hkXL+nOmFg/+OTxIy7vKBg8P+OxtMb61zO7X8vC7CIAXFjvGDfRaD
ssbzSibBsu/6iGtCOGEoXJf//////////wIBAg==
-----END DH PARAMETERS-----
EOF

If you are just trying out Indico you can simply use a self-signed certificate (your browser will show a warning which
you will have to confirm when accessing your Indico instance for the first time).

Note: Do not forget to replace YOURHOSTNAME with the same value you used above

1.1. Installation guides 7


Indico Documentation, Release 3.2-dev

openssl req -x509 -nodes -newkey rsa:4096 -subj /CN=YOURHOSTNAME -keyout /etc/ssl/
˓→indico/indico.key -out /etc/ssl/indico/indico.crt

While a self-signed certificate works for testing, it is not suitable for a production system. You can either buy a
certificate from any commercial certification authority or get a free one from Let’s Encrypt.

Note: There’s an optional step later in this guide to get a certificate from Let’s Encrypt. We can’t do it right now since
the nginx config references a directory yet to be created, which prevents nginx from starting.

6. Configure SELinux

Indico works fine with SELinux enabled, but you need to load a custom SELinux module to tell SELinux about
Indico’s files and how they should be handled.

cat > /tmp/indico.cil <<'EOF'


; define custom type that logrotate can access
(type indico_log_t)
(typeattributeset file_type (indico_log_t))
(typeattributeset logfile (indico_log_t))
(roletype object_r indico_log_t)

; allow logrotate to reload systemd services


(allow logrotate_t init_t (service (start)))
(allow logrotate_t policykit_t (dbus (send_msg)))
(allow policykit_t logrotate_t (dbus (send_msg)))

; make sure the uwsgi socket is writable by the webserver


(typetransition unconfined_service_t usr_t sock_file "uwsgi.sock" httpd_sys_rw_
˓→content_t)

(filecon "/opt/indico/web/uwsgi\.sock" socket (system_u object_r httpd_sys_rw_content_


˓→t ((s0)(s0))))

; set proper types for our log dirs


(filecon "/opt/indico/log(/.*)?" any (system_u object_r indico_log_t ((s0)(s0))))
(filecon "/opt/indico/log/nginx(/.*)?" any (system_u object_r httpd_log_t ((s0)(s0))))
EOF
semodule -i /tmp/indico.cil

7. Install Indico

Celery runs as a background daemon. Add a systemd unit file for it:

cat > /etc/systemd/system/indico-celery.service <<'EOF'


[Unit]
Description=Indico Celery
After=network.target

[Service]
ExecStart=/opt/indico/.venv/bin/indico celery worker -B
Restart=always
SyslogIdentifier=indico-celery
User=indico
(continues on next page)

8 Chapter 1. Installation
Indico Documentation, Release 3.2-dev

(continued from previous page)


Group=nginx
UMask=0027
Type=simple
KillMode=mixed
TimeoutStopSec=300

[Install]
WantedBy=multi-user.target
EOF

systemctl daemon-reload

Now create a user that will be used to run Indico and switch to it:

useradd -rm -g nginx -d /opt/indico -s /bin/bash indico


su - indico

The first thing to do is installing pyenv - we use it to install the latest Python version as not all Linux distributions
include it and like this Indico can benefit from the latest Python features.

curl -L https://github.com/pyenv/pyenv-installer/raw/master/bin/pyenv-installer | bash

cat >> ~/.bashrc <<'EOF'


export PATH="/opt/indico/.pyenv/bin:$PATH"
eval "$(pyenv init --path)"
eval "$(pyenv init -)"
EOF

source ~/.bashrc

You are now ready to install Python 3.9:


Run pyenv install --list | egrep '^\s*3\.9\.' to check for the latest available version and then
install it and set it as the active Python version (replace x in both lines).

pyenv install 3.9.x


pyenv global 3.9.x

This may take a while since pyenv needs to compile the specified Python version. Once done, you may want to use
python -V to confirm that you are indeed using the version you just installed.
You are now ready to install Indico:

python -m venv --upgrade-deps --prompt indico ~/.venv


source ~/.venv/bin/activate
export PATH="$PATH:/usr/pgsql-13/bin"
echo 'source ~/.venv/bin/activate' >> ~/.bashrc
pip install wheel
pip install uwsgi
pip install indico

8. Configure Indico

Once Indico is installed, you can run the configuration wizard. You can keep the defaults for most options, but make
sure to use https://YOURHOSTNAME when prompted for the Indico URL. Also specify valid email addresses when

1.1. Installation guides 9


Indico Documentation, Release 3.2-dev

asked and enter a valid SMTP server Indico can use to send emails. When asked for the default timezone make sure
this is the main time zone used in your Indico instance.

indico setup wizard

Now finish setting up the directory structure and permissions:

mkdir ~/log/nginx
chmod go-rwx ~/* ~/.[^.]*
chmod 710 ~/ ~/archive ~/cache ~/log ~/tmp
chmod 750 ~/web ~/.venv
chmod g+w ~/log/nginx
restorecon -R ~/
echo -e "\nSTATIC_FILE_METHOD = ('xaccelredirect', {'/opt/indico': '/.xsf/indico'})" >
˓→> ~/etc/indico.conf

9. Create database schema

Finally you can create the database schema and switch back to root:

indico db prepare
exit

10. Launch Indico

You can now start Indico and set it up to start automatically when the server is rebooted:

systemctl restart nginx.service indico-celery.service indico-uwsgi.service


systemctl enable nginx.service postgresql-13.service redis.service indico-celery.
˓→service indico-uwsgi.service

11. Open the Firewall

firewall-cmd --permanent --add-port 443/tcp --add-port 80/tcp


firewall-cmd --reload

Note: This is only needed if you use CC7 as CentOS 7/8 have no firewall enabled by default

12. Optional: Get a Certificate from Let’s Encrypt

To avoid ugly TLS warnings in your browsers, the easiest option is to get a free certificate from Let’s Encrypt. We
also enable the cronjob to renew it automatically:

yum install -y python-certbot-nginx


certbot --nginx --rsa-key-size 4096 --no-redirect --staple-ocsp -d YOURHOSTNAME
rm -rf /etc/ssl/indico
systemctl start certbot-renew.timer
systemctl enable certbot-renew.timer

10 Chapter 1. Installation
Indico Documentation, Release 3.2-dev

13. Create an Indico user

Access https://YOURHOSTNAME in your browser and follow the steps displayed there to create your initial user.

14. Install TeXLive

Follow the LaTeX install guide to install TeXLive so Indico can generate PDF files in various places.

Apache

Warning: CentOS 8 with Apache is not supported, as some important packages (mod_xsendfile and
mod_proxy_uwsgi) are not (yet?) available for CentOS 8 in first-party repos. Once they are in EPEL, there is
a good chance this guide will work as expected.

1. Enable EPEL

yum install -y epel-release

Note: If you use CC7, EPEL is already enabled and this step is not necessary

2. Install Packages

If you are on CentOS 7, edit /etc/yum.repos.d/CentOS-Base.repo and add exclude=postgresql*


to the [base] and [updates] sections, as described in the PostgreSQL wiki and then run these commands:

yum install -y centos-release-scl


yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/
˓→pgdg-redhat-repo-latest.noarch.rpm

If you are on CentOS 8, run this instead:

dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-8-x86_64/


˓→pgdg-redhat-repo-latest.noarch.rpm

dnf -qy module disable postgresql


yum config-manager --set-enabled powertools

yum install -y postgresql13 postgresql13-server postgresql13-libs postgresql13-devel


˓→postgresql13-contrib

yum install -y git gcc make redis httpd mod_proxy_uwsgi mod_ssl mod_xsendfile
yum install -y libjpeg-turbo-devel libxslt-devel libxml2-devel libffi-devel pcre-
˓→devel libyaml-devel zlib-devel bzip2 bzip2-devel readline-devel sqlite sqlite-devel

˓→openssl-devel xz xz-devel findutils libuuid-devel

/usr/pgsql-13/bin/postgresql-13-setup initdb
systemctl start postgresql-13.service redis.service

1.1. Installation guides 11


Indico Documentation, Release 3.2-dev

3. Create a Database

We create a user and database for indico and enable the necessary Postgres extensions (which can only be done by the
Postgres superuser)
su - postgres -c 'createuser indico'
su - postgres -c 'createdb -O indico indico'
su - postgres -c 'psql indico -c "CREATE EXTENSION unaccent; CREATE EXTENSION pg_trgm;
˓→"'

Warning: Do not forget to setup a cronjob that creates regular database backups once you start using Indico in
production!

4. Configure uWSGI & Apache

The default uWSGI and Apache configuration files should work fine in most cases.
cat > /etc/uwsgi-indico.ini <<'EOF'
[uwsgi]
uid = indico
gid = apache
umask = 027

processes = 4
enable-threads = true
socket = 127.0.0.1:8008
stats = /opt/indico/web/uwsgi-stats.sock
protocol = uwsgi

master = true
auto-procname = true
procname-prefix-spaced = indico
disable-logging = true

single-interpreter = true

touch-reload = /opt/indico/web/indico.wsgi
wsgi-file = /opt/indico/web/indico.wsgi
virtualenv = /opt/indico/.venv

vacuum = true
buffer-size = 20480
memory-report = true
max-requests = 2500
harakiri = 900
harakiri-verbose = true
reload-on-rss = 2048
evil-reload-on-rss = 8192
EOF

We also need a systemd unit to start uWSGI.


cat > /etc/systemd/system/indico-uwsgi.service <<'EOF'
[Unit]
(continues on next page)

12 Chapter 1. Installation
Indico Documentation, Release 3.2-dev

(continued from previous page)


Description=Indico uWSGI
After=network.target

[Service]
ExecStart=/opt/indico/.venv/bin/uwsgi --ini /etc/uwsgi-indico.ini
ExecReload=/bin/kill -HUP $MAINPID
Restart=always
SyslogIdentifier=indico-uwsgi
User=indico
Group=apache
UMask=0027
Type=notify
NotifyAccess=all
KillMode=mixed
KillSignal=SIGQUIT
TimeoutStopSec=300

[Install]
WantedBy=multi-user.target
EOF

Note: Replace YOURHOSTNAME in the next files with the hostname on which your Indico instance should be avail-
able, e.g. indico.yourdomain.com

cat > /etc/httpd/conf.d/indico-sslredir.conf <<'EOF'


<VirtualHost *:80>
ServerName YOURHOSTNAME
RewriteEngine On
RewriteRule ^(.*)$ https://%{HTTP_HOST}$1 [R=301,L]
</VirtualHost>
EOF

cat > /etc/httpd/conf.d/indico.conf <<'EOF'


<VirtualHost *:443>
ServerName YOURHOSTNAME
DocumentRoot "/var/empty/apache"

SSLEngine on
SSLCertificateFile /etc/ssl/indico/indico.crt
SSLCertificateChainFile /etc/ssl/indico/indico.crt
SSLCertificateKeyFile /etc/ssl/indico/indico.key

SSLProtocol all -SSLv3 -TLSv1 -TLSv1.1


SSLCipherSuite ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-
˓→SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-

˓→CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-

˓→AES256-GCM-SHA384

SSLHonorCipherOrder off
SSLSessionTickets off

XSendFile on
XSendFilePath /opt/indico
CustomLog /opt/indico/log/apache/access.log combined
ErrorLog /opt/indico/log/apache/error.log
(continues on next page)

1.1. Installation guides 13


Indico Documentation, Release 3.2-dev

(continued from previous page)


LogLevel error
ServerSignature Off

<If "%{HTTP_HOST} != 'YOURHOSTNAME'">


Redirect 301 / https://YOURHOSTNAME/
</If>

AliasMatch "^/(images|fonts)(.*)/(.+?)(__v[0-9a-f]+)?\.([^.]+)$" "/opt/indico/web/


˓→ static/$1$2/$3.$5"
AliasMatch "^/(css|dist|images|fonts)/(.*)$" "/opt/indico/web/static/$1/$2"
Alias /robots.txt /opt/indico/web/static/robots.txt

SetEnv UWSGI_SCHEME https


ProxyPass / uwsgi://127.0.0.1:8008/

<Directory /opt/indico>
AllowOverride None
Require all granted
</Directory>
</VirtualHost>
EOF

Now enable the uwsgi proxy module in apache:

echo 'LoadModule proxy_uwsgi_module modules/mod_proxy_uwsgi.so' > /etc/httpd/conf.


˓→modules.d/proxy_uwsgi.conf

5. Create a TLS Certificate

First, create the folders for the certificate/key and set restrictive permissions on them:

mkdir /etc/ssl/indico
chown root:root /etc/ssl/indico/
chmod 700 /etc/ssl/indico

If you are just trying out Indico you can simply use a self-signed certificate (your browser will show a warning which
you will have to confirm when accessing your Indico instance for the first time).

Note: Do not forget to replace YOURHOSTNAME with the same value you used above

openssl req -x509 -nodes -newkey rsa:4096 -subj /CN=YOURHOSTNAME -keyout /etc/ssl/
˓→indico/indico.key -out /etc/ssl/indico/indico.crt

While a self-signed certificate works for testing, it is not suitable for a production system. You can either buy a
certificate from any commercial certification authority or get a free one from Let’s Encrypt.

Note: There’s an optional step later in this guide to get a certificate from Let’s Encrypt. We can’t do it right now since
the Apache config references a directory yet to be created, which prevents Apache from starting.

14 Chapter 1. Installation
Indico Documentation, Release 3.2-dev

6. Configure SELinux

Indico works fine with SELinux enabled, but you need to load a custom SELinux module to tell SELinux about
Indico’s files and how they should be handled.

cat > /tmp/indico.cil <<'EOF'


; define custom type that logrotate can access
(type indico_log_t)
(typeattributeset file_type (indico_log_t))
(typeattributeset logfile (indico_log_t))
(roletype object_r indico_log_t)

; allow logrotate to reload systemd services


(allow logrotate_t init_t (service (start)))
(allow logrotate_t policykit_t (dbus (send_msg)))
(allow policykit_t logrotate_t (dbus (send_msg)))

; make sure the uwsgi socket is writable by the webserver


(typetransition unconfined_service_t usr_t sock_file "uwsgi.sock" httpd_sys_rw_
˓→content_t)

(filecon "/opt/indico/web/uwsgi\.sock" socket (system_u object_r httpd_sys_rw_content_


˓→t ((s0)(s0))))

; set proper types for our log dirs


(filecon "/opt/indico/log(/.*)?" any (system_u object_r indico_log_t ((s0)(s0))))
(filecon "/opt/indico/log/apache(/.*)?" any (system_u object_r httpd_log_t
˓→((s0)(s0))))

EOF
semodule -i /tmp/indico.cil

7. Install Indico

Celery runs as a background daemon. Add a systemd unit file for it:

cat > /etc/systemd/system/indico-celery.service <<'EOF'


[Unit]
Description=Indico Celery
After=network.target

[Service]
ExecStart=/opt/indico/.venv/bin/indico celery worker -B
Restart=always
SyslogIdentifier=indico-celery
User=indico
Group=apache
UMask=0027
Type=simple
KillMode=mixed
TimeoutStopSec=300

[Install]
WantedBy=multi-user.target
EOF

systemctl daemon-reload

1.1. Installation guides 15


Indico Documentation, Release 3.2-dev

Now create a user that will be used to run Indico and switch to it:
useradd -rm -g apache -d /opt/indico -s /bin/bash indico
su - indico

The first thing to do is installing pyenv - we use it to install the latest Python version as not all Linux distributions
include it and like this Indico can benefit from the latest Python features.
curl -L https://github.com/pyenv/pyenv-installer/raw/master/bin/pyenv-installer | bash

cat >> ~/.bashrc <<'EOF'


export PATH="/opt/indico/.pyenv/bin:$PATH"
eval "$(pyenv init --path)"
eval "$(pyenv init -)"
EOF

source ~/.bashrc

You are now ready to install Python 3.9:


Run pyenv install --list | egrep '^\s*3\.9\.' to check for the latest available version and then
install it and set it as the active Python version (replace x in both lines).
pyenv install 3.9.x
pyenv global 3.9.x

This may take a while since pyenv needs to compile the specified Python version. Once done, you may want to use
python -V to confirm that you are indeed using the version you just installed.
You are now ready to install Indico:
python -m venv --upgrade-deps --prompt indico ~/.venv
source ~/.venv/bin/activate
export PATH="$PATH:/usr/pgsql-13/bin"
echo 'source ~/.venv/bin/activate' >> ~/.bashrc
pip install wheel
pip install uwsgi
pip install indico

8. Configure Indico

Once Indico is installed, you can run the configuration wizard. You can keep the defaults for most options, but make
sure to use https://YOURHOSTNAME when prompted for the Indico URL. Also specify valid email addresses when
asked and enter a valid SMTP server Indico can use to send emails. When asked for the default timezone make sure
this is the main time zone used in your Indico instance.
indico setup wizard

Now finish setting up the directory structure and permissions:


mkdir ~/log/apache
chmod go-rwx ~/* ~/.[^.]*
chmod 710 ~/ ~/archive ~/cache ~/log ~/tmp
chmod 750 ~/web ~/.venv
chmod g+w ~/log/apache
restorecon -R ~/
echo -e "\nSTATIC_FILE_METHOD = 'xsendfile'" >> ~/etc/indico.conf

16 Chapter 1. Installation
Indico Documentation, Release 3.2-dev

9. Create database schema

Finally you can create the database schema and switch back to root:

indico db prepare
exit

10. Launch Indico

You can now start Indico and set it up to start automatically when the server is rebooted:

systemctl restart httpd.service indico-celery.service indico-uwsgi.service


systemctl enable httpd.service postgresql-13.service redis.service indico-celery.
˓→service indico-uwsgi.service

11. Open the Firewall

firewall-cmd --permanent --add-port 443/tcp --add-port 80/tcp


firewall-cmd --reload

Note: This is only needed if you use CC7 as CentOS 7/8 have no firewall enabled by default

12. Optional: Get a Certificate from Let’s Encrypt

To avoid ugly TLS warnings in your browsers, the easiest option is to get a free certificate from Let’s Encrypt. We
also enable the cronjob to renew it automatically:

yum install -y python-certbot-apache


certbot --apache --rsa-key-size 4096 --no-redirect --staple-ocsp -d YOURHOSTNAME
rm -rf /etc/ssl/indico
systemctl start certbot-renew.timer
systemctl enable certbot-renew.timer

13. Create an Indico user

Access https://YOURHOSTNAME in your browser and follow the steps displayed there to create your initial user.

14. Install TeXLive

Follow the LaTeX install guide to install TeXLive so Indico can generate PDF files in various places.

Optional: Shibboleth

If your organization uses Shibboleth/SAML-based SSO, follow these steps to use it in Indico:

1.1. Installation guides 17


Indico Documentation, Release 3.2-dev

1. Install Shibboleth

Add the Shibboleth yum repository:

Note: If you use CC7, Shibboleth is already available and there is no need to add the repo manually.

If you use CentOS 7:


curl -fsSL -o /etc/yum.repos.d/shibboleth.repo 'https://shibboleth.net/cgi-bin/sp_
˓→repo.cgi?platform=CentOS_7'

If you use CentOS 8:


curl -fsSL -o /etc/yum.repos.d/shibboleth.repo 'https://shibboleth.net/cgi-bin/sp_
˓→repo.cgi?platform=CentOS_8'

Now install Shibboleth itself. When prompted to accept the GPG key of the Shibboleth yum repo, confirm the prompt.
setsebool httpd_can_network_connect 1
yum install -y shibboleth xmltooling-schemas opensaml-schemas

2. Configure Shibboleth

This is outside the scope of this documentation and depends on your environment (Shibboleth, SAML, ADFS, etc).
Please contact whoever runs your SSO infrastructure if you need assistance.

3. Enable Shibboleth in Apache

Add the following code to your /etc/httpd/conf.d/indico.conf right before the AliasMatch lines:
<LocationMatch "^(/Shibboleth\.sso|/login/shib-sso/shibboleth)">
AuthType shibboleth
ShibRequestSetting requireSession 1
ShibExportAssertion Off
Require valid-user
</LocationMatch>

4. Enable Shibboleth in Indico

Add the following code to your /opt/indico/etc/indico.conf:


# SSO
AUTH_PROVIDERS = {
'shib-sso': {
'type': 'shibboleth',
'title': 'SSO',
'attrs_prefix': 'ADFS_',
'callback_uri': '/login/shib-sso/shibboleth',
# 'logout_uri': 'https://login.yourcompany.tld/logout'
}
}
(continues on next page)

18 Chapter 1. Installation
Indico Documentation, Release 3.2-dev

(continued from previous page)


IDENTITY_PROVIDERS = {
'shib-sso': {
'type': 'shibboleth',
'title': 'SSO',
'identifier_field': 'ADFS_LOGIN',
'mapping': {
'affiliation': 'ADFS_HOMEINSTITUTE',
'first_name': 'ADFS_FIRSTNAME',
'last_name': 'ADFS_LASTNAME',
'email': 'ADFS_EMAIL',
'phone': 'ADFS_PHONENUMBER'
},
'trusted_email': True
}
}

The values for attrs_prefix, mapping and identifier_field may be different in your environment. Un-
comment and set logout_uri if your SSO infrastructure provides a logout URL (usually used to log you out from
all applications).
If you only want to use SSO, without allowing people to login locally using username/password, disable it by setting
LOCAL_IDENTITIES = False in indico.conf.

Warning: We assume that emails received from SSO are already validated. If this is not the case, make sure
to disable trusted_email which will require email validation in Indico when logging in for the first time.
Otherwise people could take over the account of someone else by using their email address!

Note: The example config is rather simple and only accesses data from SSO during login. This is not sufficient
for advanced features such as automatic synchronization of names, affiliations and phone numbers or using centrally
managed groups. To use these features, you need to use e.g. the LDAP identity provider and use the information
received via SSO to retrieve the user details from LDAP. If you need assistance with this, feel free to ask us on IRC
(#indico @ Libera.Chat) or the forum.

Note: Please note that you must use Apache if you intend to use SSO using Shibboleth. If that’s not the case because
you do not use SSO at all or use e.g. OAuth, OIDC or SAML without Shibboleth, we recommend using nginx.

Debian / Ubuntu

Except for minor differences, this guide applies to both Debian and Ubuntu. It has been tested with Debian 10 (Buster)
and Ubuntu 20.04 (Focal).

Warning: Older distributions may work, but they are unsupported. We do not recommend using those unless
you have a strong reason for it and the necessary system administration knowledge to know how to deal with
compatibility issues should any arise.

nginx

1.1. Installation guides 19


Indico Documentation, Release 3.2-dev

Note: Please note that you must use Apache if you intend to use SSO using Shibboleth. If that’s not the case because
you do not use SSO at all or use e.g. OAuth, OIDC or SAML without Shibboleth, we recommend using nginx.

1. Install Packages

PostgreSQL and nginx are installed from their upstream repos to get much more recent versions.

apt install -y lsb-release wget curl gnupg


echo "deb http://apt.postgresql.org/pub/repos/apt/ $(lsb_release -cs)-pgdg main" > /
˓→etc/apt/sources.list.d/pgdg.list

echo "deb http://nginx.org/packages/$(lsb_release -is | tr '[:upper:]' '[:lower:]')/


˓→$(lsb_release -cs) nginx" > /etc/apt/sources.list.d/nginx.list

wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | apt-key add -


wget --quiet -O - https://nginx.org/keys/nginx_signing.key | apt-key add -
apt update
apt install -y --install-recommends postgresql-13 libpq-dev nginx libxslt1-dev
˓→libxml2-dev libffi-dev libpcre3-dev libyaml-dev libssl-dev zlib1g-dev libbz2-dev

˓→libreadline-dev libsqlite3-dev libncurses5-dev libncursesw5-dev xz-utils liblzma-

˓→dev uuid-dev build-essential redis-server

If you use Debian, run this command:

apt install -y libjpeg62-turbo-dev

If you use Ubuntu, run this instead:

apt install -y libjpeg-turbo8-dev zlib1g-dev

Afterwards, make sure the services you just installed are running:

systemctl start postgresql.service redis-server.service

2. Create a Database

Let’s create a user and database for indico and enable the necessary Postgres extensions (which can only be done by
the Postgres superuser).

su - postgres -c 'createuser indico'


su - postgres -c 'createdb -O indico indico'
su - postgres -c 'psql indico -c "CREATE EXTENSION unaccent; CREATE EXTENSION pg_trgm;
˓→"'

Warning: Do not forget to setup a cronjob that creates regular database backups once you start using Indico in
production!

3. Configure uWSGI & nginx

The default uWSGI and nginx configuration files should work fine in most cases.

20 Chapter 1. Installation
Indico Documentation, Release 3.2-dev

cat > /etc/uwsgi-indico.ini <<'EOF'


[uwsgi]
uid = indico
gid = nginx
umask = 027

processes = 4
enable-threads = true
chmod-socket = 770
chown-socket = indico:nginx
socket = /opt/indico/web/uwsgi.sock
stats = /opt/indico/web/uwsgi-stats.sock
protocol = uwsgi

master = true
auto-procname = true
procname-prefix-spaced = indico
disable-logging = true

single-interpreter = true

touch-reload = /opt/indico/web/indico.wsgi
wsgi-file = /opt/indico/web/indico.wsgi
virtualenv = /opt/indico/.venv

vacuum = true
buffer-size = 20480
memory-report = true
max-requests = 2500
harakiri = 900
harakiri-verbose = true
reload-on-rss = 2048
evil-reload-on-rss = 8192
EOF

We also need a systemd unit to start uWSGI.

cat > /etc/systemd/system/indico-uwsgi.service <<'EOF'


[Unit]
Description=Indico uWSGI
After=network.target

[Service]
ExecStart=/opt/indico/.venv/bin/uwsgi --ini /etc/uwsgi-indico.ini
ExecReload=/bin/kill -HUP $MAINPID
Restart=always
SyslogIdentifier=indico-uwsgi
User=indico
Group=nginx
UMask=0027
Type=notify
NotifyAccess=all
KillMode=mixed
KillSignal=SIGQUIT
TimeoutStopSec=300

[Install]
(continues on next page)

1.1. Installation guides 21


Indico Documentation, Release 3.2-dev

(continued from previous page)


WantedBy=multi-user.target
EOF

Note: Replace YOURHOSTNAME in the next file with the hostname on which your Indico instance should be available,
e.g. indico.yourdomain.com

cat > /etc/nginx/conf.d/indico.conf <<'EOF'


server {
listen 80;
listen [::]:80;
server_name YOURHOSTNAME;
return 301 https://$server_name$request_uri;
}

server {
listen *:443 ssl http2;
listen [::]:443 ssl http2 default ipv6only=on;
server_name YOURHOSTNAME;

ssl_certificate /etc/ssl/indico/indico.crt;
ssl_certificate_key /etc/ssl/indico/indico.key;
ssl_dhparam /etc/ssl/indico/ffdhe2048;

ssl_session_timeout 1d;
ssl_session_cache shared:SSL:10m;
ssl_session_tickets off;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-
˓→SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-

˓→CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-

˓→AES256-GCM-SHA384;

ssl_prefer_server_ciphers off;

access_log /opt/indico/log/nginx/access.log combined;


error_log /opt/indico/log/nginx/error.log;

if ($host != $server_name) {
rewrite ^/(.*) https://$server_name/$1 permanent;
}

location /.xsf/indico/ {
internal;
alias /opt/indico/;
}

location ~ ^/(images|fonts)(.*)/(.+?)(__v[0-9a-f]+)?\.([^.]+)$ {
alias /opt/indico/web/static/$1$2/$3.$5;
access_log off;
}

location ~ ^/(css|dist|images|fonts)/(.*)$ {
alias /opt/indico/web/static/$1/$2;
access_log off;
}
(continues on next page)

22 Chapter 1. Installation
Indico Documentation, Release 3.2-dev

(continued from previous page)

location /robots.txt {
alias /opt/indico/web/static/robots.txt;
access_log off;
}

location / {
root /var/empty/nginx;
include /etc/nginx/uwsgi_params;
uwsgi_pass unix:/opt/indico/web/uwsgi.sock;
uwsgi_param UWSGI_SCHEME $scheme;
uwsgi_read_timeout 15m;
uwsgi_buffers 32 32k;
uwsgi_busy_buffers_size 128k;
uwsgi_hide_header X-Sendfile;
client_max_body_size 1G;
}
}
EOF

4. Create a TLS Certificate

First, create the folders for the certificate/key and set restrictive permissions on them:

mkdir /etc/ssl/indico
chown root:root /etc/ssl/indico/
chmod 700 /etc/ssl/indico

We also use a strong set of pre-generated DH params (ffdhe2048 from RFC7919) as suggested in Mozilla’s TLS config
recommendations:

cat > /etc/ssl/indico/ffdhe2048 <<'EOF'


-----BEGIN DH PARAMETERS-----
MIIBCAKCAQEA//////////+t+FRYortKmq/cViAnPTzx2LnFg84tNpWp4TZBFGQz
+8yTnc4kmz75fS/jY2MMddj2gbICrsRhetPfHtXV/WVhJDP1H18GbtCFY2VVPe0a
87VXE15/V8k1mE8McODmi3fipona8+/och3xWKE2rec1MKzKT0g6eXq8CrGCsyT7
YdEIqUuyyOP7uWrat2DX9GgdT0Kj3jlN9K5W7edjcrsZCwenyO4KbXCeAvzhzffi
7MA0BM0oNC9hkXL+nOmFg/+OTxIy7vKBg8P+OxtMb61zO7X8vC7CIAXFjvGDfRaD
ssbzSibBsu/6iGtCOGEoXJf//////////wIBAg==
-----END DH PARAMETERS-----
EOF

If you are just trying out Indico you can simply use a self-signed certificate (your browser will show a warning which
you will have to confirm when accessing your Indico instance for the first time).

Note: Do not forget to replace YOURHOSTNAME with the same value you used above

openssl req -x509 -nodes -newkey rsa:4096 -subj /CN=YOURHOSTNAME -keyout /etc/ssl/
˓→indico/indico.key -out /etc/ssl/indico/indico.crt

While a self-signed certificate works for testing, it is not suitable for a production system. You can either buy a
certificate from any commercial certification authority or get a free one from Let’s Encrypt.

1.1. Installation guides 23


Indico Documentation, Release 3.2-dev

Note: There’s an optional step later in this guide to get a certificate from Let’s Encrypt. We can’t do it right now since
the nginx config references a directory yet to be created, which prevents nginx from starting.

5. Install Indico

Celery runs as a background daemon. Add a systemd unit file for it:

cat > /etc/systemd/system/indico-celery.service <<'EOF'


[Unit]
Description=Indico Celery
After=network.target

[Service]
ExecStart=/opt/indico/.venv/bin/indico celery worker -B
Restart=always
SyslogIdentifier=indico-celery
User=indico
Group=nginx
UMask=0027
Type=simple
KillMode=mixed
TimeoutStopSec=300

[Install]
WantedBy=multi-user.target
EOF

systemctl daemon-reload

Now create a user that will be used to run Indico and switch to it:

useradd -rm -g nginx -d /opt/indico -s /bin/bash indico


su - indico

The first thing to do is installing pyenv - we use it to install the latest Python version as not all Linux distributions
include it and like this Indico can benefit from the latest Python features.

curl -L https://github.com/pyenv/pyenv-installer/raw/master/bin/pyenv-installer | bash

cat >> ~/.bashrc <<'EOF'


export PATH="/opt/indico/.pyenv/bin:$PATH"
eval "$(pyenv init --path)"
eval "$(pyenv init -)"
EOF

source ~/.bashrc

You are now ready to install Python 3.9:


Run pyenv install --list | egrep '^\s*3\.9\.' to check for the latest available version and then
install it and set it as the active Python version (replace x in both lines).

pyenv install 3.9.x


pyenv global 3.9.x

24 Chapter 1. Installation
Indico Documentation, Release 3.2-dev

This may take a while since pyenv needs to compile the specified Python version. Once done, you may want to use
python -V to confirm that you are indeed using the version you just installed.
You are now ready to install Indico:
python -m venv --upgrade-deps --prompt indico ~/.venv
source ~/.venv/bin/activate
echo 'source ~/.venv/bin/activate' >> ~/.bashrc
pip install wheel
pip install uwsgi
pip install indico

6. Configure Indico

Once Indico is installed, you can run the configuration wizard. You can keep the defaults for most options, but make
sure to use https://YOURHOSTNAME when prompted for the Indico URL. Also specify valid email addresses when
asked and enter a valid SMTP server Indico can use to send emails. When asked for the default timezone make sure
this is the main time zone used in your Indico instance.
indico setup wizard

Now finish setting up the directory structure and permissions:


mkdir ~/log/nginx
chmod go-rwx ~/* ~/.[^.]*
chmod 710 ~/ ~/archive ~/cache ~/log ~/tmp
chmod 750 ~/web ~/.venv
chmod g+w ~/log/nginx
echo -e "\nSTATIC_FILE_METHOD = ('xaccelredirect', {'/opt/indico': '/.xsf/indico'})" >
˓→> ~/etc/indico.conf

7. Create database schema

Finally, you can create the database schema and switch back to root:
indico db prepare
exit

8. Launch Indico

You can now start Indico and set it up to start automatically when the server is rebooted:
systemctl restart nginx.service indico-celery.service indico-uwsgi.service
systemctl enable nginx.service postgresql.service redis-server.service indico-celery.
˓→service indico-uwsgi.service

9. Optional: Get a Certificate from Let’s Encrypt

Note: You need to use at least Debian 9 (Stretch) to use certbot. If you are still using Debian 8 (Jessie), consider
updating or install certbot from backports.

1.1. Installation guides 25


Indico Documentation, Release 3.2-dev

If you use Ubuntu, install the certbot PPA:

apt install -y software-properties-common


add-apt-repository -y ppa:certbot/certbot
apt update

To avoid ugly TLS warnings in your browsers, the easiest option is to get a free certificate from Let’s Encrypt. We
also enable the cronjob to renew it automatically:

apt install -y python-certbot-nginx


certbot --nginx --rsa-key-size 4096 --no-redirect --staple-ocsp -d YOURHOSTNAME
rm -rf /etc/ssl/indico
systemctl start certbot.timer
systemctl enable certbot.timer

10. Create an Indico user

Access https://YOURHOSTNAME in your browser and follow the steps displayed there to create your initial user.

11. Install TeXLive

Follow the LaTeX install guide to install TeXLive so Indico can generate PDF files in various places.

Apache

1. Install Packages

PostgreSQL is installed from its upstream repos to get a much more recent version.

apt install -y lsb-release wget curl gnupg


echo "deb http://apt.postgresql.org/pub/repos/apt/ $(lsb_release -cs)-pgdg main" > /
˓→etc/apt/sources.list.d/pgdg.list

wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | apt-key add -


apt update
apt install -y --install-recommends postgresql-13 libpq-dev apache2 libapache2-mod-
˓→proxy-uwsgi libapache2-mod-xsendfile libxslt1-dev libxml2-dev libffi-dev libpcre3-

˓→dev libyaml-dev libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev

˓→libncurses5-dev libncursesw5-dev xz-utils liblzma-dev uuid-dev build-essential

˓→redis-server

If you use Debian, run this command:

apt install -y libjpeg62-turbo-dev

If you use Ubuntu, run this instead:

apt install -y libjpeg-turbo8-dev zlib1g-dev

Afterwards, make sure the services you just installed are running:

systemctl start postgresql.service redis-server.service

26 Chapter 1. Installation
Indico Documentation, Release 3.2-dev

2. Create a Database

Let’s create a user and database for indico and enable the necessary Postgres extensions (which can only be done by
the Postgres superuser).
su - postgres -c 'createuser indico'
su - postgres -c 'createdb -O indico indico'
su - postgres -c 'psql indico -c "CREATE EXTENSION unaccent; CREATE EXTENSION pg_trgm;
˓→"'

Warning: Do not forget to setup a cronjob that creates regular database backups once you start using Indico in
production!

3. Configure uWSGI & Apache

The default uWSGI and Apache configuration files should work fine in most cases.
cat > /etc/uwsgi-indico.ini <<'EOF'
[uwsgi]
uid = indico
gid = www-data
umask = 027

processes = 4
enable-threads = true
socket = 127.0.0.1:8008
stats = /opt/indico/web/uwsgi-stats.sock
protocol = uwsgi

master = true
auto-procname = true
procname-prefix-spaced = indico
disable-logging = true

single-interpreter = true

touch-reload = /opt/indico/web/indico.wsgi
wsgi-file = /opt/indico/web/indico.wsgi
virtualenv = /opt/indico/.venv

vacuum = true
buffer-size = 20480
memory-report = true
max-requests = 2500
harakiri = 900
harakiri-verbose = true
reload-on-rss = 2048
evil-reload-on-rss = 8192
EOF

We also need a systemd unit to start uWSGI.


cat > /etc/systemd/system/indico-uwsgi.service <<'EOF'
[Unit]
(continues on next page)

1.1. Installation guides 27


Indico Documentation, Release 3.2-dev

(continued from previous page)


Description=Indico uWSGI
After=network.target

[Service]
ExecStart=/opt/indico/.venv/bin/uwsgi --ini /etc/uwsgi-indico.ini
ExecReload=/bin/kill -HUP $MAINPID
Restart=always
SyslogIdentifier=indico-uwsgi
User=indico
Group=www-data
UMask=0027
Type=notify
NotifyAccess=all
KillMode=mixed
KillSignal=SIGQUIT
TimeoutStopSec=300

[Install]
WantedBy=multi-user.target
EOF

Note: Replace YOURHOSTNAME in the next files with the hostname on which your Indico instance should be avail-
able, e.g. indico.yourdomain.com

cat > /etc/apache2/sites-available/indico-sslredir.conf <<'EOF'


<VirtualHost *:80>
ServerName YOURHOSTNAME
RewriteEngine On
RewriteRule ^(.*)$ https://%{HTTP_HOST}$1 [R=301,L]
</VirtualHost>
EOF

cat > /etc/apache2/sites-available/indico.conf <<'EOF'


<VirtualHost *:443>
ServerName YOURHOSTNAME
DocumentRoot "/var/empty/apache"
Protocols h2 http/1.1

SSLEngine on
SSLCertificateFile /etc/ssl/indico/indico.crt
SSLCertificateKeyFile /etc/ssl/indico/indico.key

SSLProtocol all -SSLv3 -TLSv1 -TLSv1.1


SSLCipherSuite ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-
˓→SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-

˓→CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-

˓→AES256-GCM-SHA384

SSLHonorCipherOrder off
SSLSessionTickets off

XSendFile on
XSendFilePath /opt/indico
CustomLog /opt/indico/log/apache/access.log combined
ErrorLog /opt/indico/log/apache/error.log
(continues on next page)

28 Chapter 1. Installation
Indico Documentation, Release 3.2-dev

(continued from previous page)


LogLevel error
ServerSignature Off

<If "%{HTTP_HOST} != 'YOURHOSTNAME'">


Redirect 301 / https://YOURHOSTNAME/
</If>

AliasMatch "^/(images|fonts)(.*)/(.+?)(__v[0-9a-f]+)?\.([^.]+)$" "/opt/indico/web/


˓→ static/$1$2/$3.$5"
AliasMatch "^/(css|dist|images|fonts)/(.*)$" "/opt/indico/web/static/$1/$2"
Alias /robots.txt /opt/indico/web/static/robots.txt

SetEnv UWSGI_SCHEME https


ProxyPass / uwsgi://127.0.0.1:8008/

<Directory /opt/indico>
AllowOverride None
Require all granted
</Directory>
</VirtualHost>
EOF

Now enable the necessary modules and the indico site in apache:

a2enmod proxy_uwsgi rewrite ssl xsendfile


a2dissite 000-default
a2ensite indico indico-sslredir

4. Create a TLS Certificate

First, create the folders for the certificate/key and set restrictive permissions on them:

mkdir /etc/ssl/indico
chown root:root /etc/ssl/indico/
chmod 700 /etc/ssl/indico

If you are just trying out Indico you can simply use a self-signed certificate (your browser will show a warning which
you will have to confirm when accessing your Indico instance for the first time).

Note: Do not forget to replace YOURHOSTNAME with the same value you used above

openssl req -x509 -nodes -newkey rsa:4096 -subj /CN=YOURHOSTNAME -keyout /etc/ssl/
˓→indico/indico.key -out /etc/ssl/indico/indico.crt

While a self-signed certificate works for testing, it is not suitable for a production system. You can either buy a
certificate from any commercial certification authority or get a free one from Let’s Encrypt.

Note: There’s an optional step later in this guide to get a certificate from Let’s Encrypt. We can’t do it right now since
the Apache config references a directory yet to be created, which prevents Apache from starting.

1.1. Installation guides 29


Indico Documentation, Release 3.2-dev

5. Install Indico

Celery runs as a background daemon. Add a systemd unit file for it:

cat > /etc/systemd/system/indico-celery.service <<'EOF'


[Unit]
Description=Indico Celery
After=network.target

[Service]
ExecStart=/opt/indico/.venv/bin/indico celery worker -B
Restart=always
SyslogIdentifier=indico-celery
User=indico
Group=www-data
UMask=0027
Type=simple
KillMode=mixed
TimeoutStopSec=300

[Install]
WantedBy=multi-user.target
EOF

systemctl daemon-reload

Now create a user that will be used to run Indico and switch to it:

useradd -rm -g www-data -d /opt/indico -s /bin/bash indico


su - indico

The first thing to do is installing pyenv - we use it to install the latest Python version as not all Linux distributions
include it and like this Indico can benefit from the latest Python features.

curl -L https://github.com/pyenv/pyenv-installer/raw/master/bin/pyenv-installer | bash

cat >> ~/.bashrc <<'EOF'


export PATH="/opt/indico/.pyenv/bin:$PATH"
eval "$(pyenv init --path)"
eval "$(pyenv init -)"
EOF

source ~/.bashrc

You are now ready to install Python 3.9:


Run pyenv install --list | egrep '^\s*3\.9\.' to check for the latest available version and then
install it and set it as the active Python version (replace x in both lines).

pyenv install 3.9.x


pyenv global 3.9.x

This may take a while since pyenv needs to compile the specified Python version. Once done, you may want to use
python -V to confirm that you are indeed using the version you just installed.
You are now ready to install Indico:

30 Chapter 1. Installation
Indico Documentation, Release 3.2-dev

python -m venv --upgrade-deps --prompt indico ~/.venv


source ~/.venv/bin/activate
echo 'source ~/.venv/bin/activate' >> ~/.bashrc
pip install wheel
pip install uwsgi
pip install indico

6. Configure Indico

Once Indico is installed, you can run the configuration wizard. You can keep the defaults for most options, but make
sure to use https://YOURHOSTNAME when prompted for the Indico URL. Also specify valid email addresses when
asked and enter a valid SMTP server Indico can use to send emails. When asked for the default timezone make sure
this is the main time zone used in your Indico instance.

indico setup wizard

Now finish setting up the directory structure and permissions:

mkdir ~/log/apache
chmod go-rwx ~/* ~/.[^.]*
chmod 710 ~/ ~/archive ~/cache ~/log ~/tmp
chmod 750 ~/web ~/.venv
chmod g+w ~/log/apache
echo -e "\nSTATIC_FILE_METHOD = 'xsendfile'" >> ~/etc/indico.conf

7. Create database schema

Finally, you can create the database schema and switch back to root:

indico db prepare
exit

8. Launch Indico

You can now start Indico and set it up to start automatically when the server is rebooted:

systemctl restart apache2.service indico-celery.service indico-uwsgi.service


systemctl enable apache2.service postgresql.service redis-server.service indico-
˓→celery.service indico-uwsgi.service

9. Optional: Get a Certificate from Let’s Encrypt

Note: You need to use at least Debian 9 (Stretch) to use certbot. If you are still using Debian 8 (Jessie), consider
updating or install certbot from backports.

If you use Ubuntu, install the certbot PPA:

1.1. Installation guides 31


Indico Documentation, Release 3.2-dev

apt install -y software-properties-common


add-apt-repository -y ppa:certbot/certbot
apt update

To avoid ugly TLS warnings in your browsers, the easiest option is to get a free certificate from Let’s Encrypt. We
also enable the cronjob to renew it automatically:

apt install -y python-certbot-apache


certbot --apache --rsa-key-size 4096 --no-redirect --staple-ocsp -d YOURHOSTNAME
rm -rf /etc/ssl/indico
systemctl start certbot.timer
systemctl enable certbot.timer

10. Create an Indico user

Access https://YOURHOSTNAME in your browser and follow the steps displayed there to create your initial user.

11. Install TeXLive

Follow the LaTeX install guide to install TeXLive so Indico can generate PDF files in various places.

Optional: Shibboleth

If your organization uses Shibboleth/SAML-based SSO, follow these steps to use it in Indico:

1. Install Shibboleth

apt install -y libapache2-mod-shib2


a2enmod shib2

2. Configure Shibboleth

This is outside the scope of this documentation and depends on your environment (Shibboleth, SAML, ADFS, etc).
Please contact whoever runs your SSO infrastructure if you need assistance.

3. Enable Shibboleth in Apache

Add the following code to your /etc/apache2/sites-available/indico.conf right before the


AliasMatch lines:

<LocationMatch "^(/Shibboleth\.sso|/login/shib-sso/shibboleth)">
AuthType shibboleth
ShibRequestSetting requireSession 1
ShibExportAssertion Off
Require valid-user
</LocationMatch>

32 Chapter 1. Installation
Indico Documentation, Release 3.2-dev

4. Enable Shibboleth in Indico

Add the following code to your /opt/indico/etc/indico.conf:

# SSO
AUTH_PROVIDERS = {
'shib-sso': {
'type': 'shibboleth',
'title': 'SSO',
'attrs_prefix': 'ADFS_',
'callback_uri': '/login/shib-sso/shibboleth',
# 'logout_uri': 'https://login.yourcompany.tld/logout'
}
}
IDENTITY_PROVIDERS = {
'shib-sso': {
'type': 'shibboleth',
'title': 'SSO',
'identifier_field': 'ADFS_LOGIN',
'mapping': {
'affiliation': 'ADFS_HOMEINSTITUTE',
'first_name': 'ADFS_FIRSTNAME',
'last_name': 'ADFS_LASTNAME',
'email': 'ADFS_EMAIL',
'phone': 'ADFS_PHONENUMBER'
},
'trusted_email': True
}
}

The values for attrs_prefix, mapping and identifier_field may be different in your environment. Un-
comment and set logout_uri if your SSO infrastructure provides a logout URL (usually used to log you out from
all applications).
If you only want to use SSO, without allowing people to login locally using username/password, disable it by setting
LOCAL_IDENTITIES = False in indico.conf.

Warning: We assume that emails received from SSO are already validated. If this is not the case, make sure
to disable trusted_email which will require email validation in Indico when logging in for the first time.
Otherwise people could take over the account of someone else by using their email address!

Note: The example config is rather simple and only accesses data from SSO during login. This is not sufficient
for advanced features such as automatic synchronization of names, affiliations and phone numbers or using centrally
managed groups. To use these features, you need to use e.g. the LDAP identity provider and use the information
received via SSO to retrieve the user details from LDAP. If you need assistance with this, feel free to ask us on IRC
(#indico @ Libera.Chat) or the forum.

Note: Please note that you must use Apache if you intend to use SSO using Shibboleth. If that’s not the case because
you do not use SSO at all or use e.g. OAuth, OIDC or SAML without Shibboleth, we recommend using nginx.

1.1. Installation guides 33


Indico Documentation, Release 3.2-dev

1.1.2 Upgrade

It is important to keep your Indico instance up to date to have the latest bug fixes and features. Upgrading can be done
with almost no user-facing downtime.

Warning: When upgrading a production system it is highly recommended to create a database backup before
starting.

Upgrading between 3.x versions

First of all, stop the Celery worker. To do so, run this as root:

systemctl stop indico-celery.service

Now switch to the indico user and activate the virtualenv:

su - indico
source ~/.venv/bin/activate

If you are on CentOS, update your PATH to avoid errors in case the new Indico version needs to install an updated
version of the PostgreSQL client library (psycopg2):

export PATH="$PATH:/usr/pgsql-13/bin"

You are now ready to install the latest version of Indico:

pip install -U indico

If you installed the official plugins, update them too:

pip install -U indico-plugins

It is a good idea to ensure you are using the latest recommended Python version:

indico setup upgrade-python

Some versions may include database schema upgrades. Make sure to perform them immediately after upgrading. If
there are no schema changes, the command will simply do nothing.

indico db upgrade
indico db --all-plugins upgrade

Note: Some database structure changes require an exclusive lock on some tables in the database. Unless you have
very high activity on your instance, this lock can be acquired quickly, but if the upgrade command seems to hang for
more than a few seconds, you can restart uWSGI by running systemctl restart uwsgi.service as root (in
a separate shell, i.e. don’t abort the upgrade command!) which will ensure nothing is accessing Indico for a moment.

Unless you just restarted uWSGI, it is now time to reload it so the new version is actually used:

touch ~/web/indico.wsgi

Also start the Celery worker again (once again, as root):

34 Chapter 1. Installation
Indico Documentation, Release 3.2-dev

systemctl start indico-celery.service

Upgrading from 2.x to 3.x

The upgrade from 2.x to 3.x is a major change since Indico now requires Python 3. We also strongly recommend
upgrading your database to PostgreSQL 13.

Note: There are no changes that require the newer Postgres version immediately, but we no longer test on versions
older than Postgres 12, and thus can give you no guarantees that things will keep working on older versions such as
9.6.

Warning: If you are using any custom plugins they will most likely no longer work and need to be updated.
Contact the developers of these plugins to see whether they already have a version compatible with Python 3 and
Indico 3.

Due to the significant changes in the environment, we recommend using a freshly installed server/VM with the latest
long-term-supported version of your preferred Linux distribution.

Note: If you are using CentOS, staying with CentOS 7 is recommended as CentOS 8 actually has a much earlier
end-of-life date (end of 2021) than CentOS 7 (mid 2024), and running Indico with Apache on CentOS 8 is currently
not supported.

When following the production installation guide, there are a few places where you need to do something differently:
• Instead of running indico db prepare, restore a dump of your old Postgres database
• You still need to run indico setup wizard to create some of the directories, but compare the generated
config file with your old one and update any settings you may have changed manually (e.g. for LDAP or SSO
authentication)
• You need to perform the database structure upgrades just like during any other Indico upgrade: indico db
upgrade and indico db --all-plugins upgrade
• Copy the contents of the /opt/indico/archive folder from your old instance and ensure owner, group
and permissions are correct. This step is critical as this folder contains all the files uploaded to Indico
If you need any help with the upgrade or encounter any issues, please open a thread in our forum.

Upgrading from 2.x to 3.x in-place

Warning: If you are not experienced with Linux system administration, we highly recommend you to either ask
someone from your IT department for assistance and/or follow our recommendation of using a new server/VM to
install Indico v3.

In case you prefer to perform the upgrade in place on your existing server, you will need to compare the installation
guides of 2.3 and 3.x and apply the differences manually. This should be fairly easy for someone with Linux system
administration experience, but here are some important points:
• Create a backup of both your Postgres database and /opt/indico/archive

1.1. Installation guides 35


Indico Documentation, Release 3.2-dev

• Stop, disable and and uninstall uWSGI and delete the old config file. To support the latest Python version
uWSGI is now installed into the Indico virtual environment using pip
• Delete the ~/.venv folder of the Indico user and recreate it using the commands from the setup guide
• Make sure to update your webserver config to use the more modern TLS defaults

1.1.3 Upgrade Indico from 1.2

The migration tool (indico-migrate) requires Python 2.7 and Indico 2.0. It is not supported by Indico v3 nor will it
work on Python 3.
If you still need to migrate a legacy instance from the 1.x (or older), please consult the documentation from Indico v2.
You may also want to consider running the migration on a separate virtual machine in order to not clutter the server
that will run Indico v3 with legacy tools and software.

1.1.4 Installation guide (development)

Installing System Packages

Web assets such as JavaScript and SCSS files are compiled using Webpack, which requires NodeJS to be present. You
can find information on how to install NodeJS here.
Do not use the default NodeJS packages from your Linux distribution as they are usually outdated or come with an
outdated npm version.
Since only few Linux distributions include Python 3.9 in their package managers, we recommend installing pyenv
and then install the latest Python 3.9 version using pyenv install 3.9.9 (adapt this command in case a newer
version is available).

Tip: You can run pyenv doctor once you installed and enabled pyenv in order to see whether all dependencies
are met. There’s a good chance that you need to install some additional system packages beyond those listed below,
and using this tool will tell you what exactly you need.

CentOS/Fedora

yum install -y gcc redis libjpeg-turbo-devel libxslt-devel libxml2-devel \


libffi-devel pcre-devel libyaml-devel redhat-rpm-config \
postgresql postgresql-server postgresql-contrib libpq-devel
systemctl start redis.service postgresql.service

Debian/Ubuntu

apt install -y --install-recommends libxslt1-dev libxml2-dev libffi-dev libpcre3-dev \


libyaml-dev build-essential redis-server postgresql libpq-dev

Then on Debian:

apt install -y libjpeg62-turbo-dev

And on Ubuntu:

36 Chapter 1. Installation
Indico Documentation, Release 3.2-dev

apt install -y libjpeg-turbo8-dev zlib1g-dev

macOS

We recommend that you use Homebrew:

brew install redis libjpeg libffi pcre libyaml postgresql


brew services start postgresql
brew services start redis

Creating the directory structure

You will need a directory in your file system to store Indico as well as its data files (archives, etc. . . ). Some developers
keep all their code inside a dev or code dir. We will assume dev here.

mkdir -p ~/dev/indico/data

We will need a virtualenv where to run Indico:

cd ~/dev/indico
pyenv local 3.9.9
python -m venv env

Note: After setting the version with pyenv, it’s a good idea to use python -V to ensure you are really running that
particular Python version; depending on the shell you may need to restart your shell first. In case you installed a newer
version than 3.9.9 earlier, adapt the pyenv command accordingly.

Cloning Indico

First, let’s clone Indico’s code base. If you’re going to contribute back to the project, it’s probably best if you clone
your own GitHub fork of the project and set it as the origin:

git clone git@github.com:<your-github-username>/indico.git src


cd src
git remote add upstream https://github.com/indico/indico.git
cd ..

Otherwise, cloning the upstream repository as the origin should be enough:

git clone https://github.com/indico/indico.git src

If you’re going to be changing the standard Indico plugins and/or the documentation, you can also clone those:

mkdir plugins
git clone https://github.com/indico/indico-plugins.git plugins/base
git clone https://github.com/indico/indico-user-docs.git user-docs

1.1. Installation guides 37


Indico Documentation, Release 3.2-dev

Setting up Maildump (recommended)

Some actions in Indico trigger automatic e-mails. Those will normally have to be routed through an SMTP server.
This can become a problem if you’re using production data and/or real e-mails, as users may end up being spammed
unnecessarily. This is why we advise that you include a fake SMTP server in your development setup. Maildump does
exactly this and runs on Python. It should be quite simple to set up:

python -m venv maildump


./maildump/bin/pip install -U pip setuptools wheel
./maildump/bin/pip install maildump
./maildump/bin/maildump -p /tmp/maildump.pid

You’ll then be able to access the message log at http://localhost:1080.

Creating the DB

sudo -u postgres createuser $USER --createdb


sudo -u postgres createdb indico_template -O $USER
sudo -u postgres psql indico_template -c "CREATE EXTENSION unaccent; CREATE EXTENSION
˓→pg_trgm;"

createdb indico -T indico_template

Configuring

Let’s get into the Indico virtualenv:

source ./env/bin/activate
pip install -U pip setuptools wheel

cd src
pip install -e '.[dev]'
npm ci

Then, follow the instructions given by the wizard:

indico setup wizard --dev

You can then initialize the DB:

indico db prepare

To build the locales, use:

indico i18n compile-catalog


indico i18n compile-catalog-react

Running Indico

You will need two shells running in parallel. The first one will run the webpack watcher, which compiles the JavaScript
and style assets every time you change them:

./bin/maintenance/build-assets.py indico --dev --watch

38 Chapter 1. Installation
Indico Documentation, Release 3.2-dev

On the second one we’ll run the Indico Development server:

indico run -h <your-hostname> -q --enable-evalex

Double-check that your hostname matches that which has been set in the config file (by the wizard).
It is also worth mentioning that when working on a plugin, it is necessary to run another webpack watcher to build the
plugin assets. That can be accomplished using the same command as above with an argument specifying which plugin
you want to build the assets for:

./bin/maintenance/build-assets.py plugin <plugin-directory> --dev --watch

You can also build the assets for all the plugins:

./bin/maintenance/build-assets.py all-plugins --dev <plugins-directory>

Installing TeXLive (optional)

If you need PDF generation in certain parts of Indico to work (e.g. for contributions and the Book of Abstracts), you
need LaTeX. To install it, follow the LaTeX install guide.

Using HTTPS through nginx (optional)

If you wish to open your development server to others, then we highly recommend that you properly set HTTPS.
While you could do so directly at the development server, it’s normally easier to proxy it through nginx and have it
serve static files as well.
You should obviously install nginx first:

sudo yum install nginx # centos/fedora


sudo apt install nginx # debian/ubuntu
brew install nginx # macOS

Here is an example of a nginx.conf you can use. It assumes your username is jdoe and the hostname is acme.
example.org:

user jdoe users;


worker_processes 4;
error_log /var/log/nginx/error.log info;
pid /run/nginx.pid;

events {
worker_connections 1024;
use epoll;
}

http {
access_log off;

sendfile on;
tcp_nopush on;
tcp_nodelay on;

keepalive_timeout 75 20;
types_hash_max_size 2048;
(continues on next page)

1.1. Installation guides 39


Indico Documentation, Release 3.2-dev

(continued from previous page)


ignore_invalid_headers on;

connection_pool_size 256;
client_header_buffer_size 10k;
large_client_header_buffers 4 20k;
request_pool_size 4k;
client_max_body_size 2048m;

proxy_buffers 32 32k;
proxy_buffer_size 32k;
proxy_busy_buffers_size 128k;

gzip on;
gzip_min_length 1100;
gzip_buffers 4 8k;
gzip_types text/plain text/css application/x-javascript;

include /etc/nginx/mime.types;
default_type application/octet-stream;

server {
listen [::]:80 ipv6only=off;
server_name acme.example.org;

access_log /var/log/nginx/acme.access_log combined;


error_log /var/log/nginx/acme.error_log info;

root /var/empty;

return 302 https://$server_name$request_uri;


}

server {
listen [::]:443 ipv6only=off http2;
server_name acme.example.org;

ssl on;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-
˓→AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-

˓→SHA:ECDHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA;

ssl_prefer_server_ciphers on;
ssl_certificate /home/jdoe/acme.crt;
ssl_certificate_key /home/jdoe/acme.key;

access_log /var/log/nginx/acme.ssl_access_log combined;


error_log /var/log/nginx/acme.ssl_error_log info;

root /var/empty;

location ~ ^/(images|fonts)(.*)/(.+?)(__v[0-9a-f]+)?\.([^.]+)$ {
alias /home/jdoe/dev/indico/src/indico/web/static/$1$2/$3.$5;
}

location ~ ^/(css|dist|images|fonts)/(.*)$ {
alias /home/jdoe/dev/indico/src/indico/web/static/$1/$2;
(continues on next page)

40 Chapter 1. Installation
Indico Documentation, Release 3.2-dev

(continued from previous page)


}

location / {
proxy_pass http://127.0.0.1:8000;
proxy_set_header Host $server_name;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
}

This configuration also assumes you’ve already got a secret key and certificate stored in ~/acme.key and acme.
crt respectively. In most cases you will probably use a self-signed certificate. There are many guides on-line on how
to generate a self-signed certificate, so we will not cover it here.
If you’re using SELinux, you will need to set the following configuration options:

sudo setsebool -P httpd_can_network_connect 1


sudo setsebool -P httpd_read_user_content 1

Uploading large files will probably fail unless you do:

sudo chown -R jdoe:nginx /var/lib/nginx/tmp/

The Indico dev server should be run with the --proxy option:

indico run -h 127.0.0.1 -p 8000 -q --enable-evalex --url https://acme.example.org --


˓→proxy

You can then start nginx and access https://acme.example.org directly.

1.1.5 Plugins

We provide a meta-package that contains all official plugins. Before installing it, make sure you are logged in as the
indico user and inside the Indico environment:

su - indico
source ~/.venv/bin/activate

Now install the package which will automatically install our plugins:

pip install indico-plugins

Note: Having all plugins installed has no disadvantages; only plugins enabled in indico.conf are actually loaded
and executed. If you do not use the indico-plugins package, we won’t be able to display a notification when
updates are available and you would have to update all the plugins separately.

You can use the indico setup list-plugins command to see which plugins are installed and which name to
use in the config file to load them.
To enable plugins, add a PLUGINS entry to /opt/indico/etc/indico.conf. For example, the following line
would enable the “Bank Transfer” and “PayPal” payment plugins:

1.1. Installation guides 41


Indico Documentation, Release 3.2-dev

PLUGINS = {'payment_manual', 'payment_paypal'}

Some plugins contain additional database tables. Run the plugin database migrations to create them (if you do not
have any plugins with custom tables, the command will simply do nothing):

indico db --all-plugins upgrade

After any change to the config file, you need to reload uWSGI:

touch ~/web/indico.wsgi

It is also a good idea to restart the Celery worker (as root) since some plugins may come with background tasks:

systemctl restart indico-celery.service

1.1.6 Translations

Indico comes with a number of languages by default. In release 2.3, those are: English (default), French, Portuguese,
Spanish and Chinese (in the order of integration). Additional languages are being prepared on the Transifex platform.
In order to use (partially) existing translations from Transifex or to contribute translations, you need to register with
the Indico project on the Transifex platform.

Additional Translations

This is a guide to set up an Indico instance with a new language. It is useful for translators to verify how the translation
looks in production or for administrators who just want to lurk at the incubated translation embryos.
Alternatively, you may use this guide to expose a translation we do not officially support, in your production version.

1. Setup an Indico dev environment

This should usually be done on your own computer or a virtual machine.


For creating your own Indico instance, we provide two different guides: The first one is for a production system, it
will prepare Indico to be served to users and used in all the different purposes you may have besides translations. The
second is development a light-weight, easier to set up, version oriented to testing purposes, that should not be exposed
to the public.
For the purpose of translation development or testing we recommend using the development version.

2. Install the transifex client

Follow the instructions on the transifex site.

3. Get an API token

Go to your transifex settings and generate an API token. Afterwards, you should run the command tx init
--skipsetup. It will request the token you just copied from the previous settings and save it locally so you can
start using transifex locally. If you do not know how to run this command, please refer to the transifex client guide.

42 Chapter 1. Installation
Indico Documentation, Release 3.2-dev

4. Install the translations

Navigate to ~/dev/indico/src (assuming you used the standard locations from the dev setup guide).
Run tx pull -f -l <language_code>. Languages codes can be obtained here.
For example, Chinese (China) is zh_CN.GB2312.

5. Compile translations and run Indico

Run the commands indico i18n compile-catalog and indico i18n compile-catalog-react
and:
• launch Indico, or
• build and deploy your own version of Indico, if you wish to deploy the translation in a production version.
The language should now show up as an option in the top right corner.
In case you modified the .js resources, you also need to delete the cached files in ~/dev/indico/data/cache/
assets_i18n_*.js.

FAQ

Why isn’t Indico loading my language?

Some languages in transifex use codes that Indico is not able to recognize. One example is the Chinese’s zh_CN.
GB2312. The easy fix for this is to rename the folder zh_CN.GB2312 (inside indico/translations/) to the
extended locale code zh_Hant_TW. Unfortunately, there is no list with mappings for all the languages. So if by any
reason it doesn’t work for you, feel free to ask us.

Contributing

As a translator, you should have a good knowledge of the Indico functions (from the user side at least). Then you
can subscribe to the abovementioned Transifex site for Indico and request membership of one of the translation teams.
You should also contact the coordinators; some languages have specific coordinators assigned. They may point you to
places, where work is needed and which rules have been agreed for the translations.
The glossary is usually of big help to obtain a uniform translation of all technical terms. Use it!
As a programmer or developer, you will have to be aware of the needs and difficulties of translation work. A
Wiki page for Internationalisation is available from github (slightly outdated and we should eventually move it to this
documentation). It describes the interface between translating and programming and some conventions to be followed.
Everyone involved in translating or programming Indico should have read it before starting the work.
Whenever translaters spot difficult code (forgotten pluralization, typos), they should do their best to avoid double (or
rather: multiple) work to their fellow translators. What is a problem for their translation, usually will be a problem for
all translations. Don’t hesitate to open an issue or pull request on GitHub. Repair first, then translate (and be aware
that after repair, the translation has to be made again for all languages).

Note: The codebase also contains legacy code, which may not follow all rules.

1.1. Installation guides 43


Indico Documentation, Release 3.2-dev

File Organisation

The relationship between


• transifex resources names (core.js, core.py, core.react.js)
• PO file names (messages-js.po, messages.po, messages-react.po) and
• the actual place, where the strings are found
is not always obvious. Starting with the resource names, the files ending in
• .py refer to translations used with python and jinja templates,
• .js refer to translations used with generic or legacy javascript,
• react.js refer to translations used with the new react-based javascript.
These contain a relationship to PO files, as defined in the following example extracted from src/.tx/config.

[indico.<transifex resource slug>]


file_filter = indico/translations/<lang>/LC_MESSAGES/<PO file name>.po
source_file = indico/translations/<source file name>.pot
source_lang = en
type = PO

Note: The transifex resource slug is a name-like alias that identifies a particular file.

For more information regarding this subject a thread has started here.

1.1.7 LaTeX

Indico uses LaTeX (xelatex to be exact) to generate some PDF files such as the Book of Abstracts and the PDF versions
of contributions. If you do not need these features, you can skip this part of the documentation and avoid installing
LaTeX altogether.
Since Indico requires quite a few LaTeX packages which are not always] installed by default when using the texlive
packages of the various linux distributions, we recommend installing it manually.
First of all, you will need to install some dependencies so that all TeX formats are generated successfully upon TeXLive
installation.

yum install fontconfig ghostscript # CentOS / CC7


apt install libfontconfig1 ghostscript # Debian / Ubuntu

You are now ready to install TeXLive. The following commands should work fine to install everything you need. You
need to run the installation as root or create /opt/texlive as root and grant your user write access to it.
Download the installer and cd to its location (the directory name contains the date when the package was built, so use
the wildcard or type the name manually based on the output when unpacking the archive):

cd /tmp
wget http://mirror.ctan.org/systems/texlive/tlnet/install-tl-unx.tar.gz
tar xvzf install-tl-unx.tar.gz
cd install-tl-*/

Create the setup config file to install all the packages you need:

44 Chapter 1. Installation
Indico Documentation, Release 3.2-dev

cat > texlive.profile <<'EOF'


selected_scheme scheme-full
TEXDIR /opt/texlive
TEXMFCONFIG ~/.texlive/texmf-config
TEXMFHOME ~/texmf
TEXMFLOCAL /opt/texlive/texmf-local
TEXMFSYSCONFIG /opt/texlive/texmf-config
TEXMFSYSVAR /opt/texlive/texmf-var
TEXMFVAR ~/.texlive/texmf-var
binary_x86_64-linux 1
instopt_adjustpath 0
instopt_adjustrepo 0
instopt_letter 0
instopt_portable 0
instopt_write18_restricted 1
tlpdbopt_autobackup 1
tlpdbopt_backupdir tlpkg/backups
tlpdbopt_create_formats 1
tlpdbopt_generate_updmap 0
tlpdbopt_install_docfiles 0
tlpdbopt_install_srcfiles 0
tlpdbopt_post_code 1
tlpdbopt_sys_bin /usr/local/bin
tlpdbopt_sys_info /usr/local/share/info
tlpdbopt_sys_man /usr/local/share/man
EOF

Start the installer and wait for it to complete. This may take between a few minutes and a few hours depending on the
speed of the (randomly chosen) mirror.

./install-tl --profile texlive.profile

After installing it, add this line to your indico.conf file to use your new TeXLive installation:

XELATEX_PATH = '/opt/texlive/bin/x86_64-linux/xelatex'

If you are in a production setup, reload uWSGI using touch /opt/indico/web/indico.wsgi to reload the
config file.
As security-related updates are released frequently, it is also a good idea to periodically update the TeXLive packages
by running:

/opt/texlive/bin/x86_64-linux/tlmgr update --self --all

1.1. Installation guides 45


Indico Documentation, Release 3.2-dev

46 Chapter 1. Installation
CHAPTER 2

Configuration

Indico is very flexible and many things can be configured/customized in its configuration file.

2.1 Configuration

Indico is very flexible and many things can be configured/customized in its configuration file.

2.1.1 Settings

indico.conf is Indico’s main configuration file. Its initial version is usually generated when running indico
setup wizard as described in the Installation Guide, but depending on the setup it should be modified later.
The config file is loaded from the path specified in the INDICO_CONFIG environment variable; if no such path is set,
the config file (or a symlink to it) is searched in the following places, in order:
• <indico_package_path>/indico.conf (development setups only)
• ~/.indico.conf
• /etc/indico.conf
The file is executed as a Python module, so anything that is valid Python 2.7 code can be used in it. When defining
temporary variables that are not config options, their name should be prefixed with an underscore; otherwise you will
get a warning about unknowing config options being defined.

Authentication

LOCAL_IDENTITIES
This setting controls whether local Indico accounts are available. If no centralized authentication infrastructure
(e.g. LDAP, OAuth, or another kind of SSO) is used, local accounts are the only way of logging in to Indico.
Default: True

47
Indico Documentation, Release 3.2-dev

LOCAL_GROUPS
This setting controls whether local Indico groups are available. If no centralized authentication infrastructure
that supports groups (e.g. LDAP) is used, local groups are the only way to define groups in Indico, but if you do
have central groups it may be useful to disable local ones to have all groups in one central place.
Default: True
LOCAL_REGISTRATION
This setting controls whether people accessing Indico can create a new account. Admins can always create new
local accounts, regardless of this setting.
This setting is only taken into account if LOCAL_IDENTITIES are enabled.
Default: True
LOCAL_MODERATION
This setting controls whether a new registration needs to be approved by an admin before the account is actually
created.
This setting is only taken into account if LOCAL_IDENTITIES and LOCAL_REGISTRATION are enabled.
Default: False
FAILED_LOGIN_RATE_LIMIT
Applies a rate limit to failed login attempts due to an invalid username or password. When specifying multiple
rate limits separated with a semicolon, they are checked in that specific order, which can allow for a short burst
of attempts (e.g. a legitimate user trying multiple passwords they commonly use) and then slowing down more
strongly (in case someone tries to brute-force more than just a few passwords).
Rate limiting is applied by IP address and only failed logins count against the rate limit. It also does not apply
to login attempts using external login systems (SSO) as failures there are rarely related to invalid credentials
coming from the user (these would be rejected on the SSO side, which should implement its own rate limiting).
The default allows a burst of 15 attempts, and then only 5 attempts every 15 minutes for the next 24 hours.
Setting the rate limit to None disables it.
Default: '5 per 15 minutes; 10 per day'
EXTERNAL_REGISTRATION_URL
The URL to an external page where people can register an account that can then be used to login to Indico
(usually via LDAP/SSO).
This setting is only taken into account if LOCAL_IDENTITIES are disabled.
Default: None
AUTH_PROVIDERS
A dict defining Flask-Multipass authentication providers used by Indico. The dict specified here is passed to the
MULTIPASS_AUTH_PROVIDERS setting of Flask-Multipass.
Default: {}
IDENTITY_PROVIDERS
A dict defining Flask-Multipass identity providers used by Indico to look up user information based
on the data provided by an authentication provider. The dict specified here is passed to the
MULTIPASS_IDENTITY_PROVIDERS setting of Flask-Multipass.
Default: {}
PROVIDER_MAP
If not specified, authentication and identity providers with the same name are linked automatically. The dict
specified here is passed to the MULTIPASS_PROVIDER_MAP setting of Flask-Multipass.
Default: {}

48 Chapter 2. Configuration
Indico Documentation, Release 3.2-dev

Cache

REDIS_CACHE_URL
The URL of the redis server to use for caching.
If the Redis server requires authentication, use a URL like this: redis://unused:password@127.0.0.
1:6379/1
If no authentication is used (usually the case with a local Redis server), you can omit the user/password part:
redis://127.0.0.1:6379/1
Default: None
MEMCACHED_SERVERS
The list of memcached servers (each entry is an ip:port string) to use with the memcached cache backend.
Default: []

Celery

CELERY_BROKER
The URL of the Celery broker (usually Redis of AMQP) used for communication between Indico and the Celery
background workers.
We recommend using Redis as it is the easiest option, but you can check the Celery documentation on brokers
for more information on the other possible brokers.
Default: None
CELERY_RESULT_BACKEND
The URL of the Celery result backend. If not set, the same backend as the broker is used. Indico currently does
not use task results, and we recommend leaving this setting at its default.
Default: None
CELERY_CONFIG
A dict containing additional Celery settings.

Warning: This is an advanced setting that is rarely needed and we do not recommend using it unless you
know exactly what you are doing! Changing Celery settings may break things or result in tasks not being
executed without other changes (such as running additional celery workers on different queues).

One use case for this setting is routing certain tasks to a different queue, and then running multiple Celery
workers for these queues.

CELERY_CONFIG = {
'task_routes': {
'indico_livesync.task.scheduled_update': {'queue': 'livesync'},
}
}

Default: {}
SCHEDULED_TASK_OVERRIDE
A dict overriding the task schedule for specific tasks.
By default, all periodic tasks are enabled and use a schedule which we consider useful for most cases. Using
this setting, you can override the default schedule.

2.1. Configuration 49
Indico Documentation, Release 3.2-dev

The dict key is the name of the task and the value can be one of the following:
• None or False – disables the task completely
• A dictionary, as described in the Celery documentation on periodic tasks. The task should not be speci-
fied, as it is set automatically.
• A timedelta or crontab object which will just override the schedule without changing any other
options of the task. Both classes are available in the config file by default.

Note: Use indico celery inspect registered to get a list of task names. Celery must be running
for this command to work.

Default: {}

Customization

CUSTOMIZATION_DIR
The base path to the directory containing customizations for your Indico instance.
It is possible to override specific templates and add CSS and JavaScript for advanced customizations. When
using this, be advised that depending on the modifications you perform things may break after an Indico update.
Make sure to test all your modifications whenever you update Indico!
To include custom CSS and JavaScript, simply put *.css and *.js files into <CUSTOMIZATION_DIR>/
css / <CUSTOMIZATION_DIR>/js. If there are multiple files, they will be included in alphabetical order,
so prefixing them with a number (e.g. 00-base.css, 10-events.css) is a good idea.
Static files may be added in <CUSTOMIZATION_DIR>/files. They can be referenced in templates through
the assets.custom endpoint. In CSS/JS, the URL for them needs to be built manually (/static/
custom/files/...).
For template customizations, see the description of CUSTOMIZATION_DEBUG as this setting is highly recom-
mended to figure out where exactly to put customized templates.
Here is an example for a template customization that includes a custom asset and uses inheritance to avoid
having to replace the whole template:

{% extends '~footer.html' %}

{% block footer_logo %}
{%- set filename = 'cern_small_light.png' if dark|default(false) else 'cern_
˓→small.png' -%}

<a href="https://home.cern/" class="footer-logo">


<img src="{{ url_for('assets.custom', filename=filename) }}" alt="CERN">
</a>
{% endblock %}

Default: None
CUSTOMIZATION_DEBUG
Whether to log details for all customizable templates the first time they are accessed. The log message con-
tains the path where you need to store the template; this path is relative to <CUSTOMIZATION_DIR>/
templates/.
The log message also contains the full path of the original template in case you decide to copy it. However,
instead of copying templates it is better to use Jinja inheritance where possible. To make this easier the log entry
contains a “reference” path that can be used to reference the original template from the customized one.

50 Chapter 2. Configuration
Indico Documentation, Release 3.2-dev

Default: False
HELP_URL
The URL used for the “Help” link in the footer.
Default: 'https://learn.getindico.io'
LOGO_URL
The URL to a custom logo. If unset, the default Indico logo is used.
Default: None
CUSTOM_COUNTRIES
A dict with country name overrides. This can be useful if the official ISO name of a country does not match
what your Indico instance’s target audience expects for a country, e.g. due to political situations.

CUSTOM_COUNTRIES = {'KP': 'North Korea'}

Default: {}
CUSTOM_LANGUAGES
A dict with language/territory name overrides. This can be useful if the official territory name that goes along
with a language does not match what your Indico instance’s target audience expects for a country, e.g. due to
political situations.
For example, to replace “Chinese (Simplified)” with “Chinese (China)”, you would use:

CUSTOM_LANGUAGES = {'zh_Hans_CN': ('Chinese', 'Simplified')}

Note that the language and territory name should be written in that particular language to be consistent with the
defaults. So in the example above, you would write “Chinese” and “Simplified” in Simplified Chinese.
Setting the territory (second element in the tuple) to None will hide it and only show the language name itself.
Setting the dict value to None will effectively hide the language altogether.
Default: {}

Database

SQLALCHEMY_DATABASE_URI
The URI used to connect to the PostgreSQL database. For a local database, you can usually omit everything
besides the database name: postgresql:///indico
If the database requires authentication and/or runs on a separate host, this form should be used:
postgresql://user:password@hostname/dbname
SQLALCHEMY_POOL_SIZE
This setting configures SQLAlchemy’s connection pool. For details, check the Flask-SQLAlchemy documenta-
tion.
Default: 5
SQLALCHEMY_POOL_RECYCLE
This setting configures SQLAlchemy’s connection pool. For details, check the Flask-SQLAlchemy documenta-
tion.
Default: 120
SQLALCHEMY_POOL_TIMEOUT
This setting configures SQLAlchemy’s connection pool. For details, check the Flask-SQLAlchemy documenta-
tion.

2.1. Configuration 51
Indico Documentation, Release 3.2-dev

Default: 10

Development

Warning: Do not turn on development settings in production. While we are not aware of serious security issues
caused by these settings, they may slow down Indico or remove redundancies and thus make Indico not as stable
as one would expect it to be in a production environment.

DEBUG
Enables debugging mode. If enabled, assets are not minified, error messages are more verbose and various other
features are configured in a developer-friendly way.
Do not enable debug mode in production.
Default: False
DB_LOG
Enables real-time database query logging. When enabled, all database queries are sent to a socket where they
can be read by the db_log.py script. To use the database logger, run bin/utils/db_log.py (only
available when running Indico from a Git clone) in a separate terminal and all requests and verbose queries will
be displayed there.
Default: False
PROFILE
Enables the Python profiler. The profiler output is stored in <TEMP_DIR>/*.prof.
Default: False
SMTP_USE_CELERY
If disabled, emails will be sent immediately instead of being handed to a Celery background worker. This is
often more convenient during development as you do not need to run a Celery worker while still receiving emails
sent from Indico. Disabling it may result in emails not being sent if the mail server is unavailable or some other
failure happens during email sending. Because of this, the setting should never be disabled in a production
environment.
Default: True
COMMUNITY_HUB_URL
The URL of the community hub. This should only be changed when using a local instance of Mereswine to
debug the interface between Indico and Mereswine.
Default: 'https://hub.getindico.io'
SYSTEM_NOTICES_URL
The URL of a YAML file with system notices. This should only be changed during development (to test custom
notices) or set to None to opt-out from ever fetching or displaying system notices.
Default: 'https://getindico.io/notices.yml'
DISABLE_CELERY_CHECK
Disables the warning about Celery not running or being outdated. When set to None, the warning is disabled
when DEBUG is enabled; otherwise this setting enables/disables the warning regardless of debug mode.
Default: None

52 Chapter 2. Configuration
Indico Documentation, Release 3.2-dev

Directories

CACHE_DIR
The directory in which various data is cached temporarily. Must be accessible by the web server.
Default: '/opt/indico/cache'
LOG_DIR
The directory in which log files are stored. Can be overridden by using absolute paths in logging.yaml.
Default: '/opt/indico/log'
TEMP_DIR
The directory in which various temporary files are stored. Must be accessible by the web server.
Default: '/opt/indico/cache'

Emails

SMTP_SERVER
The hostname and port of the SMTP server used for sending emails.
Default: ('localhost', 25)
SMTP_LOGIN
The username to send if the SMTP server requires authentication.
Default: None
SMTP_PASSWORD
The password to send if the SMTP server requires authentication.
Default: None
SMTP_USE_TLS
If enabled, STARTTLS will be used to use an encrypted SMTP connection.
Default: False
SMTP_CERTFILE
If provided, this certificate file will be used for certificate-based SMTP authentication.
Default: None
SMTP_KEYFILE
If provided, this private key file will be used for certificate-based SMTP authentication.
Default: None
SMTP_TIMEOUT
The timeout in seconds after which a connection attempt to the SMTP server is aborted.
Default: 30
SMTP_ALLOWED_SENDERS
A list of allowed envelope sender addresses. Each entry must be an email address, but using the * wildcard
is allowed. For any address not matching an entry in this list, the envelope sender will be rewritten to the
SMTP_SENDER_FALLBACK address. The From email header which is shown to end users is not affected by
this.
For example, if your mail server only allowed sending emails from your domain example.com, you would
set this setting to {'*@example.com'}. If only a specific sender address was allowed, you’d use e.g.
{'indico@example.com'}.

2.1. Configuration 53
Indico Documentation, Release 3.2-dev

Default: set()
SMTP_SENDER_FALLBACK
The envelope sender address to be used for any senders that are not whitelisted in SMTP_ALLOWED_SENDERS.
This setting is required if the sender whitelist is used.
Default: None
NO_REPLY_EMAIL
The email address used when sending emails to users to which they should not reply.
Default: None
PUBLIC_SUPPORT_EMAIL
The email address that is shown to users on the “Contact” page.
Default: None
SUPPORT_EMAIL
The email address of the technical manager of the Indico instance. Emails about unhandled errors/exceptions
are sent to this address.
Default: None

Experimental Features

EXPERIMENTAL_EDITING_SERVICE
If enabled, event managers can connect the Editing module of their events to an external microservice ex-
tending the normal Editing workflow. As long as this is considered experimental, there are no guarantees on
backwards compatibility even in minor Indico version bumps. Please check the reference implementation for
details/changes.
Default: False

LaTeX

XELATEX_PATH
The full path to the xelatex program of TeXLive.
If it is installed in a directory in your $PATH, specifying its name without a path is sufficient.
If the path is not configured, any functionality that requires LaTeX on the server (such as generating the Book
of Abstracts or exporting contributions to PDF) will be disabled.
Default: None
STRICT_LATEX
Enables strict mode for LaTeX rendering, in which case a non-zero status code is considered failure.
LaTeX is rather generous when it comes to using a non-zero exit code. For example, having an oversized image
in an abstract is enough to cause one. It is generally not a good idea to enable strict mode as this will result in
PDF generation to fail instead of creating a PDF that looks slightly uglier (e.g. a truncated image) than one that
would succeed without a non-zero status code.
Default: False

54 Chapter 2. Configuration
Indico Documentation, Release 3.2-dev

Logging

LOGGING_CONFIG_FILE
The path to the logging config file. Unless an absolute path is specified, the path is relative to the location of the
Indico config file after resolving symlinks.
Default: 'logging.yaml'
SENTRY_DSN
If you use Sentry for logging warnings/errors, you can specify the connection string here.
Default: None
SENTRY_LOGGING_LEVEL
The minimum level a log record needs to have to be sent to Sentry. If you do not care about warnings, set this
to 'ERROR'.
Default: 'WARNING'

Security

SECRET_KEY
The secret key used to sign tokens in URLs. It must be kept secret under all circumstances.
When using Indico on a cluster of more than one worker, all machines need to have the same secret key.
The initial key is generated by the setup wizard, but if you have to regenerate it, the best way of doing so is
running this snippet on a shell: python -c 'import os; print repr(os.urandom(32))'
Default: None
SESSION_LIFETIME
The duration of inactivity after which a session and its session cookie expires. If set to 0, the session cookie will
be cleared when the browser is closed.
Default: 86400 * 31

Storage

STORAGE_BACKENDS
The list of backends that can be used to store/retrieve files.
Indico needs to store various files such as event attachments somewhere. By default only a filesystem based
storage backend is available, but plugins could add additional backends. You can define multiple backends,
but once a backend has been used, you MUST NOT remove it or all files stored in that backend will become
unavailable.
To define a filesystem-based backend, use the string fs:/base/path. If you stopped using a backend, you
can switch it to read-only mode by using fs-readonly: instead of fs:
Other backends may accept different options - see the documentation of these backends for details.
Default: {'default': 'fs:/opt/indico/archive'}
ATTACHMENT_STORAGE
The name of the storage backend used to store all kinds of attachments. Anything in this backend is write-once,
i.e. once stored, files in it are never modified or deleted.
Changing this only affects new uploads; existing files are taken from the backend that was active when they
were uploaded – which is also why you must not remove a backend from STORAGE_BACKENDS once it has
been used.

2.1. Configuration 55
Indico Documentation, Release 3.2-dev

Default: 'default'
STATIC_SITE_STORAGE
The name of the storage backend used to store “offline copies” of events. Files are written to this backend when
generating an offline copy and deleted after a certain amount of time.
If not set, the ATTACHMENT_STORAGE backend is used.
Default: None

System

BASE_URL
This is the URL through which Indico is accessed by users. For production systems this should be an https:/
/ URL and your web server should redirect all plain HTTP requests to HTTPs.
Default: None
USE_PROXY
This setting controls whether Indico runs behind a proxy or load balancer and should honor headers such as
X-Forwarded-For to get the real IP address of the users accessing it.
The headers taken into account are:
• X-Forwarded-For – the IP address of the user
• X-Forwarded-Proto – the protocol used by the user
• X-Forwarded-Host – the hostname as specified in BASE_URL (can be omitted if the Host header is
correct)

Warning: This setting MUST NOT be enabled if the server is accessible directly by untrusted clients
without going through the proxy or users will be able to spoof their IP address by sending a custom
X-Forwarded-For header. You need to configure your firewall so only requests coming from your proxy
or load balancer are allowed.

Default: False
ROUTE_OLD_URLS
If you migrated from an older Indico version (v1.x), enable this option to redirect from the legacy URLs so
external links keep working.
Default: False
STATIC_FILE_METHOD
This setting controls how static files (like attachments) are sent to clients.
Web servers are very good at doing this; much better and more efficient than Indico or the WSGI container, so
this should be offloaded to your web server using this setting.
When using Apache with mod_xsendfile or lighttpd, set this to 'xsendfile' and of course enable xsend-
file in your Apache config.
When using nginx, set this to ('xaccelredirect', {'/opt/indico': '/.xsf/indico'}) and
add an internal location handler to your nginx config to serve /opt/indico via /.xsf/indico:

location /.xsf/indico/ {
internal;
alias /opt/indico/;
}

56 Chapter 2. Configuration
Indico Documentation, Release 3.2-dev

The production installation instructions already configure this properly, so if you installed Indico using our
guide, you only need to change this setting if you add e.g. a new storage backend in STORAGE_BACKENDS
that stores the files outside /opt/indico.
Default: None
MAX_UPLOAD_FILE_SIZE
The maximum size of an uploaded file (in MB). A value of 0 disables the limit.
This limit is only enforced on the client side. For a hard limit that is enforced on the server, see
MAX_UPLOAD_FILES_TOTAL_SIZE
Default: 0
MAX_UPLOAD_FILES_TOTAL_SIZE
The maximum size (in MB) of all files uploaded in a single request (or to be more exact, any data contained in
the body of a single request).
A value of 0 disables the limit, but most web servers also have limits which need to be configured as well
(client_max_body_size in nginx) to allow very large uploads.
Default: 0
DEFAULT_LOCALE
The locale that is used by default for i18n. Valid values are en_GB, fr_FR, and es_ES.
Default: 'en_GB'
DEFAULT_TIMEZONE
The timezone that is used by default. Any timezone identifier such as Europe/Zurich or US/Central can
be used.
Default: 'UTC'
ENABLE_ROOMBOOKING
Whether to enable the room booking system.
Default: False
PLUGINS
The list of Indico plugins to enable.
A list of all installed plugins can be displayed by the indico setup list-plugins command; see the
guide linked above for details on how to enable plugins.
Default: set()
CATEGORY_CLEANUP
This setting specifies categories where events are automatically deleted a certain amount of days after they have
been created.
For each entry, the key is the category id and the value the days after which an event is deleted.

Warning: This feature is mostly intended for “Sandbox” categories where users test Indico features. Since
it is common for such categories to be used for real events nonetheless, we recommend enabling the “Event
Header” in the category settings and clearly mention that the event will be deleted after a while.

Default: {}
WORKER_NAME
The name of the machine running Indico. The default value is usually fine unless your servers have ugly (e.g.
auto-generated) hostnames and you prefer nicer names to show up in error emails.

2.1. Configuration 57
Indico Documentation, Release 3.2-dev

Default: socket.getfqdn()

2.1.2 Authentication

Indico uses Flask-Multipass to handle authentication, searching for users in an external database, and externally man-
aged groups. This means any Flask-Multipass authentication/identity provider can be used in Indico without any
modifications to Indico itself.
For a description of the basic settings regarding local accounts (managed within Indico itself), see the general indico
config documentation. This guide focuses solely on advanced authentication methods and how to configure them in
Indico.

Configuration

Authentication providers

Authentication providers handle the login process, i.e. asking for user credentials or redirecting to an external site in
case of SSO.
The AUTH_PROVIDERS setting is Indico’s equivalent to the MULTIPASS_AUTH_PROVIDERS setting of Flask-
Multipass.
It must be set to a dict mapping a unique (internal) name of the auth provider (e.g. mycompany-ldap) to a dict of
whatever data is needed for the given provider.
The following keys are available in the provider data:
• type – Required. The type of the provider. Valid values are e.g. ldap, authlib, shibboleth, and
whatever custom providers you have installed.
• title – The title of the provider (shown on the login page). If omitted, the provider name is used.
• default – Must be set to True for exactly one form-based provider in case more than one such provider
is used. The login form of the default provider is displayed when opening the login page so it should be the
provider that most people use.
• Any provider-specific settings.

Identity providers

Identity providers get data about a user who logged in (based on the information passed on by the authentication
provider) and also handle searching of external users and groups.
The IDENTITY_PROVIDERS setting is Indico’s equivalent to the MULTIPASS_IDENTITY_PROVIDERS setting
of Flask-Multipass.
It must be set to a dict mapping a unique (internal) name of the identity provider (e.g. mycompany-ldap) to a dict
of whatever data is needed for the given provider. Note that once an identity provider has been used, its name must
not be changed.
The following keys are available in the provider data:
• type – Required. The type of the provider. Valid values are e.g. ldap, authlib, shibboleth, and
whatever custom providers you have installed.
• title – The title of the provider (shown in the account list of the user profile). If omitted, the provider name
is used.

58 Chapter 2. Configuration
Indico Documentation, Release 3.2-dev

• trusted_email – Set this to True if all email addresses received from the provider are trustworthy, i.e. if
it is guaranteed that an email address actually belongs to the user (either because it’s coming from a trusted
employee database or the provider is known to send verification emails). If an email is trusted, Indico will
use it immediately to start the signup process or associate an existing account with a matching email address.
Otherwise a verification email is sent to prove that the user has access to the email address, which is less user-
friendly but extremely important to prevent malicious takeovers of Indico accounts.
• moderated – Set this to True if you want to require manual approval of the registration by an Indico admin.
This results in the same workflow as LOCAL_MODERATION in case of local accounts.
• synced_fields – This may be set in no more than once identity provider and enables user data synchroniza-
tion. Its value should be a set of user attributes that can be synchronized during login. The following attributes
can be synchronized: email, first_name, last_name, affiliation, phone, address Due to the
unique nature of email addresses, synchronizing them may fail; in that case a warning is displayed and the old
email address remains - an Indico admin could merge the users if they are indeed the same person, but this needs
to be done manually since merging users is a potentially destructive operation that cannot be undone. It is also
strongly recommended to ONLY sync emails if the provider has validated emails (ie trusted_email set to
True); otherwise users would get unvalidated (possibly even invalid) emails set on their account during sync.
• mapping – A dictionary that maps between keys given by the identity provider and keys expected by In-
dico for user information. The key of each entry is the Indico-side attribute name; the value is the key un-
der which the data is exposed by the provider. Indico can take user information from the following keys:
first_name, last_name, email, affiliation, phone, address. For example, this mapping would
use the givenName provided by the identity provider to populate the user’s first_name in Indico:

'mapping': {'first_name': 'givenName'}

• identity_info_keys – By default, all six attributes listed above will be used if the provider has them
(either directly or in some other field specified in the mapping). If you want to restrict the data from a provider
(e.g. because the value it provides is known to be useless/incorrect), you can set this to a set containing only
the attributes you want to use. Note that external user search requires email addresses, so if you exclude email
addresses here, users from this provider will never appear in search results.
• Any provider-specific settings.

Links between providers

By default, authentication and identity providers with the same name are linked together. If this is not what you want,
you can use the PROVIDER_MAP setting to manually link providers. This is useful for advanced cases where you
have e.g. both a login form to enter LDAP credentials and a SSO provider, but want to have a single LDAP identity
provider that can use the username from either SSO or the LDAP login. In this case you would link both authentication
providers to the same identity provider.

Specific providers

LDAP

The ldap authentication/identity providers are available by default, but to use them you need to install the
python-ldap library using pip install python-ldap.

Note: python-ldap has some extra system dependencies (openldap and libsasl). How to install them (apt, yum,
etc.) depends on your linux distribution. The package names are usually libsasl2-dev or libsasl-dev and

2.1. Configuration 59
Indico Documentation, Release 3.2-dev

openldap-dev (or -devel on some distros). If one of these libraries is missing, pip will fail when installing
python-ldap. Simply re-run the command after installing the missing library.

Once everything is installed, you can add the LDAP-related settings to your indico.conf. Below is an example
based on the LDAP config we use at CERN with Active Directory; you can copy this as a starting point for your own
config and then adapt it to your own environment:

_ldap_config = {
'uri': 'ldaps://...',
'bind_dn': 'cn=***,OU=Users,OU=Organic Units,DC=cern,DC=ch',
'bind_password': '***',
'timeout': 30,
'verify_cert': True,
'page_size': 1500,

'uid': 'cn',
'user_base': 'DC=cern,DC=ch',
'user_filter': '(objectCategory=user)',

'gid': 'cn',
'group_base': 'OU=Workgroups, DC=cern, DC=ch',
'group_filter': '(objectCategory=group)',
'member_of_attr': 'memberOf',
'ad_group_style': True
}

AUTH_PROVIDERS = {
'ldap': {
'type': 'ldap',
'title': 'LDAP',
'ldap': _ldap_config,
'default': True
}
}

IDENTITY_PROVIDERS = {
'ldap': {
'type': 'ldap',
'title': 'LDAP',
'ldap': _ldap_config,
'mapping': {
'first_name': 'givenName',
'last_name': 'sn',
'email': 'mail',
'affiliation': 'company',
'phone': 'telephoneNumber'
},
'trusted_email': True,
'synced_fields': {'first_name', 'last_name', 'affiliation', 'phone', 'address
˓→'}

}
}

The LDAP-specific config uses the following keys:


• uri – Required. The URI referring to the LDAP server including the protocol and the port. Use ldaps://
for LDAP over SSL/TLS and ldap:// with the starttls option for a plain LDAP connection with TLS

60 Chapter 2. Configuration
Indico Documentation, Release 3.2-dev

negotiation. The port can be omitted if the LDAP server listens on the default port (636 for LDAP over SSL and
389 for a plain LDAP connection with TLS negotiation).
• bind_dn – Required. The distinguished name to bind to the LDAP directory.
• bind_password – Required. The password to use together with the bind_dn to login to the LDAP server.
• timeout – The delay in seconds to wait for a reply from the LDAP server (set to -1 to disable). Default: 30
• verify_cert – Whether to verify the TLS certificate of the LDAP server. Default: True
• starttls – Whether to use STARTTLS to switch to an encrypted connection. Ignored with an ldaps://
URI. Default: False
• page_size – The limit of entries to retrieve at once for a search. 0 means no size limit. It is recommended to
have at most the size limit imposed by the server. Default: 1000
• uid – The attribute whose value is used as an identifier for the user (typically the username). This attribute
must be a single-valued attribute whose value is unique for each user. If the attribute is multi-valued, only the
first one retrieved will be returned. Default: 'uid'
• user_base – Required. The base node for all the nodes which might contain a user.
• user_filter – A valid LDAP filter which will select exclusively all users in the subtree from the
user_base. The combination of the user_base and the user_filter must match exclusively all the
users. Default: '(objectClass=person)'
• gid – The attribute whose value is used as an identifier for the group (typically the group’s name). This attribute
must be a single-valued attribute whose value is unique for each group. If the attribute is multi-valued, only the
first one retrieved will be returned. Default: 'cn'
• group_base – Required. The base node for all the nodes which might contain a group.
• group_filter – A valid LDAP filter which will select exclusively all groups in the subtree from the
group_base. The combination of the group_base and the group_filter must match exclusively all
the groups. Default: '(objectClass=groupOfNames)'
• member_of_attr – The multi-valued attribute of a user containing the list of groups the user is a member of.
Default: 'memberOf'

Note: In case of SLAPD/OpenLDAP, the member of attribute must be enabled. While it is not enabled by
default, the majority of servers will have it enabled. A simple ldapsearch for a user member of any group
should show if that is the case. If not, you can check this article on information how to enable it on your LDAP
server. Note that unless you manage the LDAP server, you need to ask the administrator of that server to do that.

• ad_group_style – Whether the server uses Active-Directory-style groups or not. This is only used when
checking if a user is a member of a group. If enabled, the code will take advantage of the tokenGroups
attribute of a user to check for nested group membership. Otherwise, it will only look through the values of the
member_of_attr, which should also work for Active Directory, but only for direct membership. Default:
False

SAML

The saml authentication/identity providers are available by default, but to use them you need to install the
python3-saml library using pip install python3-saml.

Note: python3-saml has some extra system dependencies (xmlsec). How to install them (apt, yum, etc.)
depends on your linux distribution. The package name is usually libxmlsec1-dev (or xmlsec1-devel on

2.1. Configuration 61
Indico Documentation, Release 3.2-dev

RPM-based distros). If this library is missing, pip will fail when installing python3-saml. Simply re-run the
command after installing the missing library.

Once everything is installed, you can add the SAML-related settings to your indico.conf. Below is an example
you can copy to have a good starting point for your own config and then adapt it to your own environment:

_saml_config = {
'sp': {
'entityId': 'indico-saml',
# Depending on your security config below you may need to generate
# a certificate and private key.
# You can use https://www.samltool.com/self_signed_certs.php or
# use openssl for it (which is more secure as it ensures the
# key never leaves your machine)
'x509cert': '',
'privateKey': '',
},
'idp': {
# This metadata is provided by your SAML IdP. You can omit (or
# leave empty) the whole 'idp' section in case you need SP
# metadata to register your app and get the IdP metadata from
# https://indico.example.com/multipass/saml/{auth-provider-name}/metadata
# and then fill in the IdP metadata afterwards.
'entityId': 'https://my-idp.example.com',
'singleSignOnService': {
'url': 'https://my-idp.example.com/saml',
'binding': 'urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect'
},
'singleLogoutService': {
'url': 'https://my-idp.example.com/saml',
'binding': 'urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect'
},
'x509cert': ''
},
# These advanced settings allow you to tune the SAML security options.
# Please see the documentation on https://github.com/onelogin/python3-saml
# for details on how they behave. Note that by requiring signatures,
# you usually need to set a cert and key on your SP config.
'security': {
'nameIdEncrypted': False,
'authnRequestsSigned': True,
'logoutRequestSigned': True,
'logoutResponseSigned': True,
'signMetadata': True,
'wantMessagesSigned': True,
'wantAssertionsSigned': True,
'wantNameId' : True,
'wantNameIdEncrypted': False,
'wantAssertionsEncrypted': False,
'allowSingleLabelDomains': False,
'signatureAlgorithm': 'http://www.w3.org/2001/04/xmldsig-more#rsa-sha256',
'digestAlgorithm': 'http://www.w3.org/2001/04/xmlenc#sha256'
}
}

AUTH_PROVIDERS = {
'saml': {
(continues on next page)

62 Chapter 2. Configuration
Indico Documentation, Release 3.2-dev

(continued from previous page)


'type': 'saml',
'title': 'SAML SSO',
'saml_config': _saml_config,
# If your IdP is using ADFS you may need to uncomment this. For details, see
# https://github.com/onelogin/python-saml/pull/144
# 'lowercase_urlencoding': True
}
}
IDENTITY_PROVIDERS = {
'saml': {
'type': 'saml',
'title': 'SSO',
'mapping': {
'first_name': 'Firstname',
'last_name': 'Lastname',
'email': 'EmailAddress',
'affiliation': 'HomeInstitute',
},
'trusted_email': True,
# You can use a different field as the unique identifier.
# By default the qualified NameID from SAML is used, but in
# case you want to use something else, any SAML attribute can
# be used.
# 'identifier_field': 'Username'
}
}

If you also have an LDAP server, it may be a good idea to use the saml authentication provider and connect it to an
ldap identity provider. This way the user information is retrieved from LDAP based on a unique identifier of the user
that comes from SAML, and you can still use the search and group functionality provided by LDAP.
To use this, use the AUTH_PROVIDERS config from above together with the IDENTITY_PROVIDERS config from
the LDAP section on this page, and set up a PROVIDER_MAP that passes the identifier from SAML to LDAP. The
example below assumes that the LDAP username is passed in a SAML attribute named UPN.

PROVIDER_MAP = {
'saml': {'identity_provider': 'ldap', 'mapping': {'identifier': 'UPN'}},
}

Shibboleth

Changed in version 3.0: SAML is now supported without the need for Apache.

Note: Note that since Indico 3.0 there is a new saml auth/identity provider available which does not require
Apache/shibd and is thus the recommended option to use regardless of the web server in use.

The shibboleth authentication/identity providers are available by default, but due to how the protocol works you
need to use the Apache webserver to use SAML atuhentication provider.
You can find guides on how to set it up for CentOS and Debian.
If you also have an LDAP server, it may be a good idea to use the shibboleth authentication provider and connect
it to an ldap identity provider. This way the user information is retrieved from LDAP based on a unique identifier of
the user that comes from SAML, and you can still use the search and group functionality provided by LDAP.

2.1. Configuration 63
Indico Documentation, Release 3.2-dev

64 Chapter 2. Configuration
CHAPTER 3

Building

3.1 Building

Before starting Indico compilation, this guide assumes you’ve previously setup the development base up until the
configuring step.

Warning: We do not recommend doing these steps on the same system where you are running your production
version, as you run into the risk of mixing the latter with development resources.

Note: The master branch on Git is usually the next version under (heavy) development. Check if there is a 3.*.x
branch for your version and if yes, use that branch instead of master.

The first step is to generate a local distribution archive. Navigate to the Indico source folder (by default, it is ~/dev/
indico/src) and run the following command:

./bin/maintenance/build-wheel.py indico --add-version-suffix

Note: The build script refuses to run on a dirty git working directory, so any changes you decide to include must be
committed temporarily. You can use git checkout --detach to avoid committing to your local master branch;
if you plan to actually use the translation the better option would be of course to create a real Git branch.

Warning: Make sure you’re also not running any other build tool such as build-assets.py, as it may
interfere with the creation of a production build when running in --watch mode.

Finally, the dist folder will contain the wheel distribution, the file you should to copy to your production machine:

65
Indico Documentation, Release 3.2-dev

dist/
indico-2.3.1.dev0+202009231923.a14a24f564-py2-none-any.whl

To deploy this distribution, you should follow the production installation guide, but instead of installing Indico from
PyPI (pip install indico), install your custom-built wheel from the previous step:

pip install /tmp/indico-2.3.1.dev0+202009231923.a14a24f564-py2-none-any.whl

If you already have Indico installed, then simply installing the version from the wheel and restarting uwsgi and indico-
celery is all you need to do.

3.1.1 Including a new translation

If you are including a new translation, you should also include the moment-js locale in indico/web/client/js/
jquery/index.js before building:

// moment.js locales
import 'moment/locale/your-locale';

import 'moment/locale/zh-cn';
import 'moment/locale/es';
import 'moment/locale/fr';
import 'moment/locale/en-gb';

Note: Put your custom locale first, since en-gb needs to be the last one as a fallback.

66 Chapter 3. Building
CHAPTER 4

Search

4.1 Search

Indico’s version 3.0 introduced a brand new reusable and backend-agnostic search module backed up by the SQL
storage by default. This module can however be decomposed into a single provider, supporting any external service
through a plugin.
Indico provides multiple options for a search service, such as:
• The default SQL based search.
• A performant and feature-rich ElasticSearch-based search service, Citadel which can be integrated with Indico
easily using the official Citadel plugin.
• Any external search service, as long as you implement a plugin interface according to the specification below.

4.1.1 Internal Search

The Internal Search is a default SQL based engine implementation, created to support the most basic queries. While
not as fast and less feature rich (no filters or aggregations) compared to specialized search engines, this search engine
provides a decent option for smaller Indico instances which may not want to spend additional time on deploying a
separate service just for search.
It supports the two types of records from a total of six targets:
• Events
• Categories
• Contributions
• Attachments
• Notes

67
Indico Documentation, Release 3.2-dev

Note: The Internal Search only supports text-based search on titles, description and notes content.

4.1.2 External Search Service

Indico provides several powerful features for aggregation and filtering when combined with an external search service
supporting them, such as Citadel.

Aggregations

Aggregations, as seen in Elastic Search, provide a way to combine information in groups according to a certain metric,
such as a field value, sum or average.

Indico supports any bucket or metric group, composed of a key, count and filter key:
class indico.modules.search.result_schemas.AggregationSchema
Bases: indico.modules.search.result_schemas._ResultSchemaBase
Represents an aggregation list.
buckets = None
A bucket list representing each group.
label = None
The name of the aggregation.
class indico.modules.search.result_schemas.BucketSchema
Bases: indico.modules.search.result_schemas._ResultSchemaBase
Represents an individual aggregation bucket element.
count = None
The number of elements.
filter = None
The key that identifies the element’s filter.

68 Chapter 4. Search
Indico Documentation, Release 3.2-dev

key = None
The aggregation key.

Filters

Filters act combined upon a certain aggregation on structured data. Consider the following bucket group composed of
a single affiliation:

{
"affiliation": {
"label": "Affiliation",
"buckets": {
"key": "CERN",
"count": 5,
"filter": "cern"
}
}
}

The combination of key and filter from AggregationSchema can be used as a way to define a human-
readable label to an attribute. A corresponding filter acting upon the same key in the example above would be
affiliation=cern.

Placeholders

Placeholders are a special type of filters specifically designed to be part of the user-facing text based search query.
Examples of valid placeholders would be: affiliation:CERN or person:”John Doe”.

Indico expects to receive a list of valid placeholders through get_placeholders() where each one will be merely
hinted to the user while doing a text based search.
class indico.modules.search.base.IndicoSearchProvider
Bases: object
get_placeholders()
Retrieve the list of search shortcuts that will be shown to users when typing a search query.
Returns a list of SearchOption instances

4.1. Search 69
Indico Documentation, Release 3.2-dev

4.1.3 API Reference

The IndicoSearchProvider interface allows an external service to integrate with Indico’s search module.
class indico.modules.search.base.IndicoSearchProvider
Bases: object
RESULTS_PER_PAGE = 10
The number of results to show per page.
active = True
get_placeholders()
Retrieve the list of search shortcuts that will be shown to users when typing a search query.
Returns a list of SearchOption instances
get_sort_options()
Retrieve the list of search sortable options.
Returns a list of SearchOption instances
search(query, user=None, page=None, object_types=(), *, admin_override_enabled=False,
**params)
Search using a custom service across multiple targets.
Parameters
• query – Keyword based query string
• user – The user performing the search (for access checks)
• page – The result page to show
• object_types – A filter for a specific SearchTarget
• admin_override_enabled – Whether to ignore access restrictions
• params – Any additional search params such as filters
Returns a dict with the ResultSchema structure
class indico.modules.search.base.SearchOption(key: str, label: str)
Bases: object
class indico.modules.search.base.SearchOptions(placeholders: list, sort_options: list)
Bases: object
dump()
class indico.modules.search.base.SearchTarget
Bases: int, indico.util.enum.IndicoEnum
An enumeration.
attachment = 6
category = 1
contribution = 3
event = 2
event_note = 5
subcontribution = 4

70 Chapter 4. Search
Indico Documentation, Release 3.2-dev

indico.modules.search.base.get_search_provider(only_active=True)
Get the search provider to use for a search.
Parameters only_active – Whether to check that the provider is active; in case it isn’t, the
default InternalSearch provider will be used.

Models

class indico.modules.search.result_schemas.ResultSchemaBase
Bases: indico.modules.search.result_schemas._ResultSchemaBase
category_path = None
The parent category chain
class indico.modules.search.result_schemas.EventResultSchema
Bases: indico.modules.search.result_schemas.ResultSchemaBase
description = None
The event description
end_dt = None
The event end date time
event_id = None
The event id
event_type = None
The event type
highlight = None
The event content to highlight
location = None
The event location
persons = None
The event associated persons
start_dt = None
The event start date time
title = None
The event title
type = None
The record type
class indico.modules.search.result_schemas.ContributionResultSchema
Bases: indico.modules.search.result_schemas.ResultSchemaBase
contribution_id = None
The contribution id
description = None
The contribution description
duration = None
The contribution duration
end_dt = None
The contribution end date time

4.1. Search 71
Indico Documentation, Release 3.2-dev

event_id = None
The contribution event id
highlight = None
The contribution content to highlight
location = None
The contribution location
persons = None
The contribution associated persons
start_dt = None
The contribution start date time
title = None
The contribution title
type = None
The record type
class indico.modules.search.result_schemas.SubContributionResultSchema
Bases: indico.modules.search.result_schemas.ContributionResultSchema
subcontribution_id = None
The sub-contribution id
type = None
The record type
class indico.modules.search.result_schemas.AttachmentResultSchema
Bases: indico.modules.search.result_schemas.ResultSchemaBase
attachment_id = None
The attachment id
attachment_type = None
The attachment type
contribution_id = None
The attachment contribution id
event_id = None
The attachment event id
filename = None
The attachment filename
folder_id = None
The attachment folder id
modified_dt = None
The attachment last modified date time
subcontribution_id = None
The attachment sub-contribution id
title = None
The attachment title
type = None
The record type

72 Chapter 4. Search
Indico Documentation, Release 3.2-dev

user = None
The attachment author
class indico.modules.search.result_schemas.EventNoteResultSchema
Bases: indico.modules.search.result_schemas.ResultSchemaBase
content = None
The note content
contribution_id = None
The note contribution id
event_id = None
The note event id
highlight = None
The note content to highlight
modified_dt = None
The note last modification date time
note_id = None
The note id
subcontribution_id = None
The note sub-contribution id
title = None
The note title
type = None
The record type
user = None
The note author
class indico.modules.search.result_schemas.PersonSchema
Bases: indico.modules.search.result_schemas._ResultSchemaBase
affiliation = None
The person’s affiliation
name = None
The person’s name
class indico.modules.search.result_schemas.LocationResultSchema
Bases: indico.core.marshmallow.IndicoSchema
address = None
The address
room_name = None
The room name
venue_name = None
The venue name
class indico.modules.search.result_schemas.HighlightSchema
Bases: indico.modules.search.result_schemas._ResultSchemaBase
content = None
The field’s content to highlight

4.1. Search 73
Indico Documentation, Release 3.2-dev

description = None
The field’s description to highlight

74 Chapter 4. Search
CHAPTER 5

Plugins

Indico can be extended through plugins, standalone packages of code that do not require any modifications to the
Indico core itself. A plugin can perform something very simple such as adding a new command to the Indico CLI to
more complex functionalities like introducing new payment methods, chat integration, etc.
We suggest that you first have a look at Getting started and then head over to the more advance topics in the table of
contents.

5.1 Extending Indico with plugins

Indico can be extended through plugins, standalone packages of code that do not require any modifications to the
Indico core itself. A plugin can perform something very simple such as adding a new command to the Indico CLI to
more complex functionalities like introducing new payment methods, chat integration, etc.
We suggest that you first have a look at Getting started and then head over to the more advance topics in the table of
contents.

5.1.1 Getting started with Indico plugins

Todo: Write a REAL, simple example of a plugin. Include link to Github repo.

Example plugin

The following is a minimal plugin that makes use of all capababilites of the plugin API. The display name of the
plugin is defined by the first line of the docstring and the description by the rest of it. The plugin may override signal
handlers to hook into Indico and aditionally run any initialization needed. For example, it will add some command to
Indico CLI, extend the shell context and register some assets. Also, init is used to inject CSS and JS bundles outside
of the plugin scope.

75
Indico Documentation, Release 3.2-dev

class ExamplePlugin(IndicoPlugin):
"""Example Plugin

An example plugin that demonstrates the capabilities of the new Indico plugin
˓→ system.
"""

settings_form = SettingsForm

def init(self):
super(ExamplePlugin, self).init()
self.inject_bundle('main.js')

def get_blueprints(self):
return blueprint

def add_cli_command(self, manager):


@manager.command
@with_plugin_context(self)
def example():
"""Example command from example plugin"""
print 'example plugin says hi', current_plugin
if self.settings.get('show_message'):
print self.settings.get('dummy_message')

def extend_shell_context(self, add_to_context):


add_to_context('bar', name='foo', doc='foobar from example plugin', color=
˓→'magenta!')

The plugin can specify its settings via a IndicoForm:

class SettingsForm(IndicoForm):
dummy_message = StringField('Dummy Message')
show_message = BooleanField('Show Message')

The plugin can also specify request handlers and templates. Templates will be loaded from a templates folder within
your plugin folder. Your plugin can even load templates from other modules by prefixing the name of the template
‘other_plugin:example’ with render_template().

class WPExample(WPDecorated):
def _get_body(self, params):
return render_plugin_template('example.html', **params)

class RHExample(RH):
def _process(self):
return WPExample(self, foo=u'bar').display()

class RHTest(RH):
def _process(self):
return render_plugin_template('test.html')

blueprint = IndicoPluginBlueprint('example', __name__)


blueprint.add_url_rule('/example', 'example', view_func=RHExample)
blueprint.add_url_rule('/example/x', 'example', view_func=RHExample)
(continues on next page)

76 Chapter 5. Plugins
Indico Documentation, Release 3.2-dev

(continued from previous page)


blueprint.add_url_rule('/test', 'test', view_func=RHTest)

5.1.2 Plugin API reference

Indico’s plugin system allows you to extend indico with additional modules which can be installed separately and do
not require any modifications to the indico core itself.
class indico.core.plugins.IndicoPlugin(plugin_engine, app)
Bases: flask_pluginengine.plugin.Plugin
Base class for an Indico plugin.
All your plugins need to inherit from this class. It extends the Plugin class from Flask-PluginEngine with useful
indico-specific functionality that makes it easier to write custom plugins.
When creating your plugin, the class-level docstring is used to generate the friendly name and description of a
plugin. Its first line becomes the name while everything else goes into the description.
This class provides methods for some of the more common hooks Indico provides. Additional signals are
defined in signals and can be connected to custom functions using connect().
acl_event_settings = frozenset()
A set containing the names of event-specific settings which store ACLs
acl_settings = frozenset()
A set containing the names of settings which store ACLs
category = None
The group category that the plugin belongs to
configurable = False
If the plugin should link to a details/config page in the admin interface
default_event_settings = {}
A dictionary containing default values for event-specific settings
default_settings = {}
A dictionary containing default values for settings
default_user_settings = {}
A dictionary containing default values for user-specific settings
event_settings
classmethod(function) -> method
Convert a function to be a class method.
A class method receives the class as implicit first argument, just like an instance method receives the
instance. To declare a class method, use this idiom:
class C: @classmethod def f(cls, arg1, arg2, . . . ):
...
It can be called either on the class (e.g. C.f()) or on an instance (e.g. C().f()). The instance is ignored
except for its class. If a class method is called for a derived class, the derived class object is passed as the
implied first argument.
Class methods are different than C++ or Java static methods. If you want those, see the staticmethod
builtin.

5.1. Extending Indico with plugins 77


Indico Documentation, Release 3.2-dev

event_settings_converters = {}
A dict containing custom converters for event-specific settings
get_blueprints()
Return blueprints to be registered on the application.
A single blueprint can be returned directly, for multiple blueprint you need to yield them or return an
iterable.
get_vars_js()
Return a dictionary with variables to be added to vars.js file.
init()
Called when the plugin is being loaded/initialized.
If you want to run custom initialization code, this is the method to override. Make sure to call the base
method or the other overridable methods in this class will not be called anymore.
inject_bundle(name, view_class=None, subclasses=True, condition=None)
Inject an asset bundle into Indico’s pages.
Parameters
• name – Name of the bundle
• view_class – If a WP class is specified, only inject it into pages using that class
• subclasses – also inject into subclasses of view_class
• condition – a callable to determine whether to inject or not. only called, when the
view_class criterion matches
inject_vars_js()
Return a string that will define variables for the plugin in the vars.js file.
settings
classmethod(function) -> method
Convert a function to be a class method.
A class method receives the class as implicit first argument, just like an instance method receives the
instance. To declare a class method, use this idiom:
class C: @classmethod def f(cls, arg1, arg2, . . . ):
...
It can be called either on the class (e.g. C.f()) or on an instance (e.g. C().f()). The instance is ignored
except for its class. If a class method is called for a derived class, the derived class object is passed as the
implied first argument.
Class methods are different than C++ or Java static methods. If you want those, see the staticmethod
builtin.
settings_converters = {}
A dict containing custom converters for settings
settings_form = None
WTForm for the plugin’s settings (requires configurable=True). All fields must return JSON-serializable
types.
settings_form_field_opts = {}
A dictionary which can contain the kwargs for a specific field in the settings_form.

78 Chapter 5. Plugins
Indico Documentation, Release 3.2-dev

strict_settings = True
If settings, event_settings and user_settings should use strict mode, i.e. only allow keys in default_settings,
default_event_settings or default_user_settings (or the related acl_settings sets). This should not be dis-
abled in most cases; if you need to store arbitrary keys, consider storing a dict inside a single top-level
setting.
template_hook(name, receiver, priority=50, markup=True)
Register a function to be called when a template hook is invoked.
For details see register_template_hook().
translation_domain
Return the domain for this plugin’s translation_path.
translation_path
Return translation files to be used by the plugin.
By default, get <root_path>/translations, unless it does not exist.
user_settings
classmethod(function) -> method
Convert a function to be a class method.
A class method receives the class as implicit first argument, just like an instance method receives the
instance. To declare a class method, use this idiom:
class C: @classmethod def f(cls, arg1, arg2, . . . ):
...
It can be called either on the class (e.g. C.f()) or on an instance (e.g. C().f()). The instance is ignored
except for its class. If a class method is called for a derived class, the derived class object is passed as the
implied first argument.
Class methods are different than C++ or Java static methods. If you want those, see the staticmethod
builtin.
user_settings_converters = {}
A dict containing custom converters for user-specific settings
class indico.core.plugins.IndicoPluginBlueprint(name, *args, **kwargs)
Bases: flask_pluginengine.mixins.PluginBlueprintMixin, indico.web.flask.
wrappers.IndicoBlueprint
The Blueprint class all plugins need to use.
It contains the necessary logic to run the blueprint’s view functions inside the correct plugin context and to make
the static folder work.
make_setup_state(app, options, first_registration=False)
Creates an instance of BlueprintSetupState() object that is later passed to the register callback
functions. Subclasses can override this to return a subclass of the setup state.
class indico.core.plugins.IndicoPluginBlueprintSetupState(blueprint: Blueprint,
app: Flask, options:
Any, first_registration:
bool)
Bases: flask_pluginengine.mixins.PluginBlueprintSetupStateMixin, indico.web.
flask.wrappers.IndicoBlueprintSetupState
add_url_rule(rule, endpoint=None, view_func=None, **options)
A helper method to register a rule (and optionally a view function) to the application. The endpoint is
automatically prefixed with the blueprint’s name.

5.1. Extending Indico with plugins 79


Indico Documentation, Release 3.2-dev

class indico.core.plugins.PluginCategory
Bases: str, indico.util.enum.IndicoEnum
An enumeration.
class indico.core.plugins.WPJinjaMixinPlugin
Bases: indico.web.views.WPJinjaMixin
static render_template_func(template_name_or_list, **context)
Renders a template from the plugin’s template folder with the given context.
If the template name contains a plugin name (pluginname:name), that name is used instead of the
current plugin’s name.
Parameters
• template_name_or_list – the name of the template or an iterable containing tem-
plate names (the first existing template is used)
• context – the variables that should be available in the context of the template.
indico.core.plugins.get_plugin_template_module(template_name, **context)
Like get_template_module(), but using plugin templates
indico.core.plugins.plugin_url_rule_to_js(endpoint)
Like url_rule_to_js() but prepending plugin name prefix to the endpoint
indico.core.plugins.url_for_plugin(endpoint, *targets, **values)
Like url_for() but prepending 'plugin_' to the blueprint name.

5.1.3 Hooking into Indico using Signals

Contents

• Hooking into Indico using Signals


– indico.core.signals

* indico.core.signals.acl
* indico.core.signals.agreements
* indico.core.signals.attachments
* indico.core.signals.category
* indico.core.signals.core
* indico.core.signals.event
* indico.core.signals.event_management
* indico.core.signals.menu
* indico.core.signals.plugin
* indico.core.signals.rb
* indico.core.signals.rh
* indico.core.signals.users

80 Chapter 5. Plugins
Indico Documentation, Release 3.2-dev

Signals allow you to hook into certain parts of Indico without adding any code to the core (which is something a plugin
can and should not do). Each signal has a sender which can be any object (depending on the signal) and possibly some
keyword arguments. Some signals also make use of their return value or even require one. Check the documentation
of each signal on how it’s used.
To avoid breakage with newer versions of Indico, it is highly advised to always accept extra **kwargs in your signal
receiver. For example, a receiver function could look like this:

def receiver(sender, something, **kwargs):


do_stuff_with(something)

indico.core.signals

indico.core.signals.acl

indico.core.signals.acl.can_access
Called when ProtectionMixin.can_access is used to determine if a user can access something or not.
The sender is the type of the object that’s using the mixin. The actual instance is passed as obj. The user and
allow_admin arguments of can_access are passed as kwargs with the same name.
The authorized argument is None when this signal is called at the beginning of the access check and True
or False at the end when regular access rights have already been checked. For expensive checks (such as
anything involving database queries) it is recommended to skip the check while authorized is None since the
regular access check is likely to be cheaper (due to ACLs being preloaded etc).
If the signal returns True or False, the access check succeeds or fails immediately. If multiple subscribers to
the signal return contradictory results, False wins and access is denied.
indico.core.signals.acl.can_manage
Called when ProtectionMixin.can_manage is used to determine if a user can manage something or not.
The sender is the type of the object that’s using the mixin. The actual instance is passed as obj. The user,
permission, allow_admin, check_parent and explicit_permission arguments of can_manage are passed as kwargs
with the same name.
If the signal returns True or False, the access check succeeds or fails without any further checks. If multiple
subscribers to the signal return contradictory results, False wins and access is denied.
indico.core.signals.acl.entry_changed
Called when an ACL entry is changed.
The sender is the type of the object that’s using the mixin. The actual instance is passed as obj. The User,
GroupProxy or EmailPrincipal is passed as principal and entry contains the actual ACL entry (a PrincipalMixin
instance) or None in case the entry was deleted. is_new is a boolean indicating whether the given principal
was in the ACL before. If quiet is True, signal handlers should not perform noisy actions such as logging or
sending emails related to the change.
If the ACL uses permissions, old_data will contain a dictionary of the previous permissions (see PrincipalPer-
missionsMixin.current_data).
indico.core.signals.acl.get_management_permissions
Expected to return ManagementPermission subclasses. The sender is the type of the object the permissions
may be used for. Functions subscribing to this signal MUST check the sender by specifying it using the first
argument of connect_via() or by comparing it inside the function.
indico.core.signals.acl.protection_changed
Called when the protection mode of an object is changed.

5.1. Extending Indico with plugins 81


Indico Documentation, Release 3.2-dev

The sender is the type of the object that’s using the mixin. The actual instance is passed as obj. The old
protection mode is passed as old_mode, the new mode as mode.

indico.core.signals.agreements

indico.core.signals.agreements.get_definitions
Expected to return a list of AgreementDefinition classes.

indico.core.signals.attachments

indico.core.signals.attachments.attachment_accessed
Called when an attachment is accessed. The sender is the Attachment that was accessed. The user who accessed
the attachment is passed in the user kwarg. The from_preview kwarg will be set to True if the download link
on the preview page was used to access the attachment or if the attachment was loaded to be displayed on the
preview page (opening the preview itself already sends this signal with from_preview=False).
indico.core.signals.attachments.attachment_created
Called when a new attachment is created. The sender object is the new Attachment. The user who created the
attachment is passed in the user kwarg.
indico.core.signals.attachments.attachment_deleted
Called when an attachment is deleted. The sender object is the Attachment that was deleted. The user who
deleted the attachment is passed in the user kwarg.
indico.core.signals.attachments.attachment_updated
Called when an attachment is updated. The sender is the Attachment that was updated. The user who updated
the attachment is passed in the user kwarg.
indico.core.signals.attachments.folder_created
Called when a new attachment folder is created. The sender is the new AttachmentFolder object. The user who
created the folder is passed in the user kwarg. This signal is never triggered for the internal default folder.
indico.core.signals.attachments.folder_deleted
Called when a folder is deleted. The sender is the AttachmentFolder that was deleted. The user who deleted the
folder is passed in the user kwarg.
indico.core.signals.attachments.folder_updated
Called when a folder is updated. The sender is the AttachmentFolder that was updated. The user who updated
the folder is passed in the user kwarg.
indico.core.signals.attachments.get_file_previewers
Expected to return one or more Previewer subclasses.

indico.core.signals.category

indico.core.signals.category.created
Called when a new category is created. The sender is the new category.
indico.core.signals.category.deleted
Called when a category is deleted. The sender is the category.
indico.core.signals.category.extra_events
Called when a category is displayed. The sender is the category. is_flat is passed as kwarg with the same name.
The additional kwargs passed to this signal depend on the context.

82 Chapter 5. Plugins
Indico Documentation, Release 3.2-dev

indico.core.signals.category.moved
Called when a category is moved into another category. The sender is the category and the old parent category
is passed in the old_parent kwarg.
indico.core.signals.category.updated
Called when a category is modified. The sender is the updated category.

indico.core.signals.core

indico.core.signals.core.add_form_fields
Lets you add extra fields to a form. The sender is the form class and should always be specified when subscribing
to this signal.
The signal handler should return one or more 'name', Field tuples. Each field will be added to the form as
ext__<name> and is automatically excluded from the form’s data property and its populate_obj method.
To actually process the data, you can use e.g. the form_validated signal and then store it in flask.g until another
signal informs you that the operation the user was performing has been successful.
indico.core.signals.core.after_commit
Called after an SQL transaction has been committed. Note that the session is in ‘committed’ state when this
signal is called, so no SQL can be emitted while this signal is being handled.
indico.core.signals.core.after_process
Called after an Indico request has been processed. This signal should also be triggered by CLI utilities that result
in other signals being triggered.
indico.core.signals.core.app_created
Called when the app has been created. The sender is the flask app.
indico.core.signals.core.before_notification_send
Executed before a notification is sent. The sender is a string representing the type of notification. The notifica-
tion email that will be sent is passed in the email kwarg. The additional kwargs passed to this signal depend
on the context.
indico.core.signals.core.check_password_secure
Check whether a password is secure. The sender is a string indicating the context where the password check
happens, the plaintext password is sent in the password kwarg. To fail the security check for a password, the
signal handler should return a string describing why the password is not secure.
indico.core.signals.core.db_schema_created
Executed when a new database schema is created. The sender is the name of the schema.
indico.core.signals.core.form_validated
Triggered when an IndicoForm was validated successfully. The sender is the form object.
This signal may return False to mark the form as invalid even though WTForms validation was successful. In
this case it is highly recommended to mark a field as erroneous or indicate the error in some other way.
indico.core.signals.core.get_conditions
Expected to return one or more classes inheriting from Condition. The sender is a string (or some other object)
identifying the context. The additional kwargs passed to this signal depend on the context.
indico.core.signals.core.get_fields
Expected to return BaseField subclasses. The sender is an object (or just a string) identifying for what to get
fields. This signal should never be registered without restricting the sender to ensure only the correct field types
are returned.

5.1. Extending Indico with plugins 83


Indico Documentation, Release 3.2-dev

indico.core.signals.core.get_placeholders
Expected to return one or more Placeholder objects. The sender is a string (or some other object) identifying
the context. The additional kwargs passed to this signal depend on the context.
indico.core.signals.core.get_search_providers
Expected to return exactly one IndicoSearchProvider subclass. No more than one handler for this signal may
return one as using multiple search providers at the same time is not possible.
indico.core.signals.core.get_storage_backends
Expected to return one or more Storage subclasses.
indico.core.signals.core.import_tasks
Called when Celery needs to import all tasks. Use this signal if you have modules containing task registered
using one of the Celery decorators but don’t import them anywhere. The signal handler should only import
these modules and do nothing else.

indico.core.signals.event

indico.core.signals.event.abstract_created
Called when a new abstract is created. The sender is the new abstract.
indico.core.signals.event.abstract_deleted
Called when an abstract is deleted. The sender is the abstract.
indico.core.signals.event.abstract_state_changed
Called when an abstract is withdrawn. The sender is the abstract.
indico.core.signals.event.abstract_updated
Called when an abstract is modified. The sender is the abstract.
indico.core.signals.event.after_registration_form_clone
Executed after a registration form is cloned. The sender is the old RegistrationForm object being cloned.
The new RegistrationForm object is passed in the new_form kwarg.
indico.core.signals.event.before_check_registration_email
Called before checking the validity of the registration email. The sender is the RegistrationForm
object. The signal handler is expected to return None if all checks passed or a {'status': ...,
'conflict': ...} dictionary. 'status' is expected to be either 'error', 'warning' or ok.
indico.core.signals.event.cloned
Called when an event is cloned. The sender is the Event object of the old event, the new event is passed in the
new_event kwarg.
indico.core.signals.event.contribution_created
Called when a new contribution is created. The sender is the new contribution.
indico.core.signals.event.contribution_deleted
Called when a contribution is deleted. The sender is the contribution.
indico.core.signals.event.contribution_updated
Called when a contribution is modified. The sender is the contribution. A dict containing old, new tuples for
all changed values is passed in the changes kwarg.
indico.core.signals.event.created
Called when a new event is created. The sender is the new Event. The cloning kwarg indictates whether the
event is a clone.
indico.core.signals.event.deleted
Called when an event is deleted. The sender is the event object. The user kwarg contains the user performing
the deletion if available.

84 Chapter 5. Plugins
Indico Documentation, Release 3.2-dev

indico.core.signals.event.draw_item_on_badge
Called when drawing an item on a badge for a given registration. The registration object is the sender. The
items, self.height, self.width and item_data are passed in the kwargs. item_data is a dictionary containing item,
text, pos_x and pos_y. The signal returns a dictionary of updates for the contents of item_data.
indico.core.signals.event.filter_selectable_badges
Called when composing lists of badge templates. The sender may be either BadgeSettingsForm,
RHListEventTemplates or RHListCategoryTemplates. The list of badge templates is passed in
the badge_templates kwarg. The signal handler is expected to mutate the list.
indico.core.signals.event.generate_ticket_qr_code
Called when generating the QR code for a ticket. The data included in the QR code is passed in the ticket_data
kwarg and may be modified.
indico.core.signals.event.get_feature_definitions
Expected to return EventFeature subclasses.
indico.core.signals.event.get_log_renderers
Expected to return EventLogRenderer classes.
indico.core.signals.event.hide_participant_list
The event object is the sender.
The signal should return a bool to determine if the Participant list menu should be displayed on the Event page.
indico.core.signals.event.imported
Called when data is imported to an event. The sender is the Event data was imported into, the source event is
passed in the source_event kwarg.
indico.core.signals.event.is_ticket_blocked
Called when resolving whether Indico should let a registrant download their ticket. The sender is the registrant’s
Registration object.
If this signal returns True, the user will not be able to download their ticket. Any badge containing a ticket-
specific placeholder such as the ticket qr code is considered a ticket, and the restriction applies to both users
trying to get their own ticket and managers trying to get a ticket for a registrant.
indico.core.signals.event.is_ticketing_handled
Called when resolving whether Indico should send tickets with e-mails or it will be handled by other module.
The sender is the RegistrationForm object.
If this signal returns True, no ticket will be emailed on registration.
indico.core.signals.event.location_changed
Called when the location of an object changed. The sender is the type of the object, the object itself is passed as
obj. The changes are passed in the changes kwarg.
indico.core.signals.event.metadata_postprocess
Called right after a dict-like representation of an event is created, so that plugins can add their own fields.
The sender is a string parameter specifying the source of the metadata. The event kwarg contains the event
object. The metadata is passed in the data kwarg. The user kwarg contains the user for whom the data is
generated.
The signal should return a dict that will be used to update the original representation (fields to add or override).
indico.core.signals.event.moved
Called when an event is moved to a different category. The sender is the event, the old category is in the
old_parent kwarg.
indico.core.signals.event.note_added
Called when a note is added. The sender is the note.

5.1. Extending Indico with plugins 85


Indico Documentation, Release 3.2-dev

indico.core.signals.event.note_deleted
Called when a note is deleted. The sender is the note.
indico.core.signals.event.note_modified
Called when a note is modified. The sender is the note.
indico.core.signals.event.note_restored
Called when a previously-deleted note is restored. The sender is the note. This is triggered when a “new” note
is created on an object that previously already had a note which got deleted.
indico.core.signals.event.person_updated
Called when an EventPerson is modified. The sender is the EventPerson.
indico.core.signals.event.print_badge_template
Called when printing a badge template. The registration form is passed in the regform kwarg. The list of
registration objects are passed in the registrations kwarg and it may be modified.
indico.core.signals.event.registration_checkin_updated
Called when the checkin state of a registration changes. The sender is the Registration object.
indico.core.signals.event.registration_created
Called when a new registration has been created. The sender is the Registration object. The data kwarg contains
the form data used to populate the registration fields. The management kwarg is set to True if the registration
was created from the event management area.
indico.core.signals.event.registration_deleted
Called when a registration is removed. The sender is the Registration object.
indico.core.signals.event.registration_form_created
Called when a new registration form is created. The sender is the RegistrationForm object.
indico.core.signals.event.registration_form_deleted
Called when a registration form is removed. The sender is the RegistrationForm object.
indico.core.signals.event.registration_form_edited
Called when a registration form is edited. The sender is the RegistrationForm object.
indico.core.signals.event.registration_form_wtform_created
Called when a the wtform is created for rendering/processing a registration form. The sender is the Registra-
tionForm object. The generated WTForm class is passed in the wtform_cls kwarg and it may be modified. The
registration kwarg contains a Registration object when called from registration edit endpoints. The management
kwarg is set to True if the registration form is rendered/processed from the event management area.
indico.core.signals.event.registration_personal_data_modified
Called when the registration personal data is modified. The sender is the Registration object; the change is
passed in the change kwarg.
indico.core.signals.event.registration_state_updated
Called when the state of a registration changes. The sender is the Registration object; the previous state is
passed in the previous_state kwarg.
indico.core.signals.event.registration_updated
Called when a registration has been updated. The sender is the Registration object. The data kwarg contains the
form data used to populate the registration fields. The management kwarg is set to True if the registration was
updated from the event management area.
indico.core.signals.event.restored
Called when a previously-deleted event is restored. The sender is the event object. The user kwarg contains the
user restoring the event if available, and the reason kwarg the reason if available.

86 Chapter 5. Plugins
Indico Documentation, Release 3.2-dev

indico.core.signals.event.session_block_deleted
Called when a session block is deleted. The sender is the session block. This signal is called before the db.
session.delete() on the block is executed.
indico.core.signals.event.session_block_updated
Called when a session block is updated. The sender is the session block.
indico.core.signals.event.session_deleted
Called when a session is deleted. The sender is the session.
indico.core.signals.event.session_updated
Called when a session is updated. The sender is the session.
indico.core.signals.event.sidemenu
Expected to return MenuEntryData objects to be added to the event side menu. A single entry can be returned
directly, multiple entries must be yielded.
indico.core.signals.event.subcontribution_created
Called when a new subcontribution is created. The sender is the new subcontribution.
indico.core.signals.event.subcontribution_deleted
Called when a subcontribution is deleted. The sender is the subcontribution.
indico.core.signals.event.subcontribution_updated
Called when a subcontribution is modified. The sender is the subcontribution.
indico.core.signals.event.times_changed
Called when the times of a scheduled object (contribution, break or session block) change, either by a change in
duration or start time. The sender is the type of the object; the timetable entry is passed as entry and the object
is passed as obj. Information about the changes are passed as changes which is a dict containing old/new tuples
for start_dt, duration and end_dt. If an attribute did not change, it is not included in the dict. If the time of the
event itself changes, entry is None and obj contains the Event.
indico.core.signals.event.timetable_buttons
Expected to return a list of tuples (‘button_name’, ‘js-call-class’). Called when building the timetable view.
indico.core.signals.event.timetable_entry_created
Called when a new timetable entry is created. The sender is the new entry.
indico.core.signals.event.timetable_entry_deleted
Called when a timetable entry is deleted. The sender is the entry. This signal is triggered right before the entry
deletion is performed.
indico.core.signals.event.timetable_entry_updated
Called when a timetable entry is updated. The sender is the entry. A dict containing old, new tuples for all
changed values is passed in the changes kwarg.
indico.core.signals.event.type_changed
Called when the type of an event is changed. The sender is the event, the old type is passed in the old_type
kwarg.
indico.core.signals.event.update_badge_style
Called when printing a badge. The template is the sender. The item and it’s styles are passed in the kwarg. The
signal returns a dictionary which is used to update the item style.
indico.core.signals.event.updated
Called when basic data of an event is updated. The sender is the event. A dict of changes is passed in the
changes kwarg, with (old, new) tuples for each change. Note than the person_links change may happen
with old and new being the same lists for technical reasons. If the key is present, it should be assumed that
something changed (usually the order or some data on the person link).

5.1. Extending Indico with plugins 87


Indico Documentation, Release 3.2-dev

indico.core.signals.event_management

indico.core.signals.event_management.get_cloners
Expected to return one or more EventCloner subclasses implementing a cloning operation for something
within an event.
indico.core.signals.event_management.image_created
Called when a new image is created. The sender object is the new ImageFile. The user who uploaded the
image is passed in the user kwarg.
indico.core.signals.event_management.image_deleted
Called when an image is deleted. The sender object is the ImageFile that is about to be deleted. The user
who uploaded the image is passed in the user kwarg.
indico.core.signals.event_management.management_url
Expected to return a URL for the event management page of the plugin. This is used when someone who does
not have event management access wants to go to the event management area. He is then redirected to one of
the URLs returned by plugins, i.e. it is not guaranteed that the user ends up on a specific plugin’s management
page. The signal should return None if the current user (available via session.user) cannot access the
management area. The sender is the event object.

indico.core.signals.menu

indico.core.signals.menu.items
Expected to return one or more SideMenuItem to be added to the side menu. The sender is an id string identifying
the target menu.
indico.core.signals.menu.sections
Expected to return one or more SideMenuSection objects to be added to the side menu. The sender is an id string
identifying the target menu.

indico.core.signals.plugin

indico.core.signals.plugin.cli
Expected to return one or more click commands/groups. If they use indico.cli.core.cli_command / in-
dico.cli.core.cli_group they will be automatically executed within a plugin context and run within a Flask app
context by default.
indico.core.signals.plugin.get_blueprints
Expected to return one or more IndicoPluginBlueprint-based blueprints which will be registered on the applica-
tion. The Blueprint must be named either PLUGINNAME or compat_PLUGINNAME.
indico.core.signals.plugin.get_conference_themes
Expected to return (name, css, title) tuples for conference stylesheets. name is the internal name used
for the stylesheet which will be stored when the theme is selected in an event. css is the location of the CSS
file, relative to the plugin’s static folder. title is the title displayed to the user when selecting the theme.
indico.core.signals.plugin.get_event_request_definitions
Expected to return one or more RequestDefinition subclasses.
indico.core.signals.plugin.get_event_themes_files
Expected to return the path of a themes yaml containing event theme definitions.
indico.core.signals.plugin.get_template_customization_paths
Expected to return the absolute path to a directory containing template overrides. This signal is called once
during initialization so it should not use any data that may change at runtime. The behavior of a customization

88 Chapter 5. Plugins
Indico Documentation, Release 3.2-dev

path returned by this function is exactly like <CUSTOMIZATION_DIR>/templates, but it has lower priority
than the one from the global customization dir.
indico.core.signals.plugin.inject_bundle
Expected to return a list of bundle names which are loaded after all the rest. The sender is the WP class of the
page.
indico.core.signals.plugin.schema_post_dump
Called when a marshmallow schema is dumped. The sender is the schema class and code using this signal
should always specify it. The signal is called with the following arguments:
• many – bool indicating whether the data was dumped with many=True or not
• data – the dumped data. this is guaranteed to be a list; in case of many=False it is guaranteed to
contain exactly one element
• orig – the original data before dumping. just like data it is always a list
If a plugin wants to modify the data returned when dumping, it may do so by modifying the contents of data.
indico.core.signals.plugin.schema_post_load
Called after a marshmallow schema is loaded. The sender is the schema class and code using this signal should
always specify it. The signal is called with the following arguments:
• data – the data returned by marshmallow; this is usually a dict which may contain more complex
data types than those valid in JSON
If a plugin wants to modify the resulting data, it may do so by modifying the contents of data.
indico.core.signals.plugin.schema_pre_load
Called when a marshmallow schema is loaded. The sender is the schema class and code using this signal should
always specify it. The signal is called with the following arguments:
• data – the raw data passed to marshmallow; this is usually a dict of raw json/form data coming
from the user, so it can have all types valid in JSON
If a plugin wants to modify the data the schema will eventually load, it may do so by modifying the contents of
data.
indico.core.signals.plugin.shell_context
Called after adding stuff to the indico shell context. Receives the add_to_context and add_to_context_multi
keyword args with functions which allow you to add custom items to the context.
indico.core.signals.plugin.template_hook
Expected to return a (is_markup, priority, value) tuple. The returned value will be inserted at the
location where this signal is triggered; if multiple receivers are connected to the signal, they will be ordered by
priority. If is_markup is True, the value will be wrapped in a Markup object which will cause it to be rendered
as HTML. The sender is the name of the actual hook. The keyword arguments depend on the hook.

indico.core.signals.rb

indico.core.signals.rb.booking_created
Executed after a booking has been successfully created. The sender is the new Reservation object.
indico.core.signals.rb.booking_deleted
Executed after a booking has been deleted. The sender is the Reservation object.
indico.core.signals.rb.booking_modified
Executed after a booking has been modified. The sender is the Reservation object and a dictionary of changed
values is passed in the changes kwarg.

5.1. Extending Indico with plugins 89


Indico Documentation, Release 3.2-dev

indico.core.signals.rb.booking_occurrence_state_changed
Executed after the state of a booking occurrence changed. The sender is the ReservationOccurrence object.
indico.core.signals.rb.booking_state_changed
Executed after a booking has been cancelled/rejected/accepted. The sender is the Reservation object.

indico.core.signals.rh

indico.core.signals.rh.before_process
Executed right before _process of an RH instance is called. The sender is the RH class, the current instance is
passed in rh. If a signal handler returns a value, the original _process method will not be executed. If multiple
signal handlers return a value, an exception is raised.
indico.core.signals.rh.check_access
Executed right after _check_access of an RH instance has been called unless the access check raised an excep-
tion. The sender is the RH class, the current instance is passed in rh.
indico.core.signals.rh.process
Executed right after _process of an RH instance has been called. The sender is the RH class, the current instance
is passed in rh. The return value of _process is available in result and if a signal handler returns a value, it will
replace the original return value. If multiple signals handlers return a value, an exception is raised.
indico.core.signals.rh.process_args
Executed right after _process_args of an RH instance has been called. The sender is the RH class, the current
instance is passed in rh. The return value of _process_args (usually None) is available in result.

indico.core.signals.users

indico.core.signals.users.email_added
Called when a new email address is added to a user. The sender is the user object and the email address is passed
in the email kwarg. The silent kwarg indicates whether the email was added during some automated process
where no messages should be flashed (e.g. because the sync was in a background task or triggered during a
request from another user).
indico.core.signals.users.logged_in
Called when a user logs in. The sender is the User who logged in. Depending on whether this was a regular
login or an admin impersonating the user, either the identity kwarg is set to the Identity used by the user to log
in or the admin_impersonation kwarg is True.
indico.core.signals.users.merged
Called when two users are merged. The sender is the main user while the merged user (i.e. the one being deleted
in the merge) is passed via the source kwarg.
indico.core.signals.users.preferences
Expected to return a ExtraUserPreferences subclass which implements extra preferences for the user preference
page. The sender is the user for whom the preferences page is being shown which might not be the currently
logged-in user!
indico.core.signals.users.primary_email_changed
Called when the primary address is changed. The sender is the user object and the new and old values are passed
as kwargs.
indico.core.signals.users.registered
Called once a user registers (either locally or joins through a provider). The sender is the new user object. The
kwarg from_moderation indicates whether the user went through a moderation process (this also includes users
created by an administrator manually) or was created immediately on registration; the identity associated with
the registration is passed in the identity kwarg.

90 Chapter 5. Plugins
Indico Documentation, Release 3.2-dev

indico.core.signals.users.registration_requested
Called when a user requests to register a new indico account, i.e. if moderation is enabled. The sender is the
registration request.

5.1.4 Adding models to your plugin

Plugins must describe its database model the in the models folder if needed:

class Foo(db.Model):
__tablename__ = 'foo'
__table_args__ = {'schema': 'plugin_example'}

id = db.Column(
db.Integer,
primary_key=True
)
bar = db.Column(
db.String,
nullable=False,
default=''
)
location_id = db.Column(
db.Integer,
db.ForeignKey('roombooking.locations.id'),
nullable=False
)
location = db.relationship(
'Location',
backref=db.backref('example_foo', cascade='all, delete-orphan', lazy='dynamic
˓→'),

def __repr__(self):
return u'<Foo({}, {}, {})>'.format(self.id, self.bar, self.location)

Thanks to Alembic, the migration needed to create the tables in the database can also be included in the plugin. The
steps to do so are:
1. Create a revision for the changes your plugin will add with indico db --plugin example migrate
-m 'short description'
2. Fine-tune the revision file generated under migrations.
3. Run indico db --plugin example upgrade to have Alembic upgrade your DB with the changes.

5.1. Extending Indico with plugins 91


Indico Documentation, Release 3.2-dev

92 Chapter 5. Plugins
CHAPTER 6

HTTP API

Indico allows you to programmatically access the content of its database by exposing various information like category
contents, events, rooms and room bookings through a web service, the HTTP Export API.

6.1 Indico - HTTP API

Indico allows you to programmatically access the content of its database by exposing various information like category
contents, events, rooms and room bookings through a web service, the HTTP Export API.

6.1.1 Accessing the API

URL structure

Indico allows you to programmatically access the content of its database by exposing various information like category
contents, events, rooms and room bookings through a web service, the HTTP Export API.
The basic URL looks like:
https://my.indico.server/export/WHAT/[LOC/]ID.TYPE?PARAMS
or when using legacy API keys:
https://my.indico.server/export/WHAT/[LOC/]ID.TYPE?PARAMS&ak=KEY&timestamp=TS&signature=SIG
where:
• WHAT is the element you want to export (one of categ, event, room, reservation)
• LOC is the location of the element(s) specified by ID and only used for certain elements, for example, for the
room booking (https://indico.server/export/room/CERN/120.json?ak=0. . . )
• ID is the ID of the element you want to export (can be a - separated list). As for example, the 120 in the above
URL.
• TYPE is the output format (one of json, jsonp, xml, html, ics, atom, bin)

93
Indico Documentation, Release 3.2-dev

• PARAMS are various parameters affecting (filtering, sorting, . . . ) the result list
• KEY, TS, SIG are part of the API Key Authentication (Deprecated)
Some examples could be:
• Export data about events in a category: /export/categ/2.json?
from=today&to=today&pretty=yes
• Export data about a event: /export/event/137346.json?occ=yes&pretty=yes
• Export data about rooms: /export/room/CERN/120.json?pretty=yes
• Export your reservations: /export/reservation/CERN.json?detail=reservations&from=today&to=today&
See more details about querying in Exporters.

API Token Authentication

New in version 3.0.


Indico users may create API tokens with a custom name and scope. They can then be used to authenticate requests to
the Indico API using the standard Authorization: Bearer <token> HTTP header.
Compared to the legacy API key authentication (see below), they have various advantages:
• no need to generate signatures and deal with expiring links - nowadays with HTTPS being widespread, the risk
of leaking a link (but not the secrets used to generate it) is very low
• authentication using a HTTP header avoids including sensitive information in the query string
• each application/script can get its own token, which can have only the scopes assigned that are actually needed
• they behave exactly like OAuth tokens, except that no OAuth application or OAuth flow is required, which
makes them perfect for use in custom scripts
These personal API tokens always have the format indp_<42 random chars> - tokens generated during a reg-
ular OAuth flow have the indo_ prefix instead.

Note: Indico administrators have the ability to restrict the creation of API tokens; in that case only admins can create
tokens or manage their scopes, but users who have a token can still reset it in order to use the API once authorized by
an admin.

Scopes

API tokens can have one or more of these scopes:


• full:everything - Everything (all methods)
• read:everything - Everything (only GET)
• read:legacy_api - Classic API (read only)
• write:legacy_api - Classic API (write only)
• registrants - Event registrants
• read:user - User information (read only)

94 Chapter 6. HTTP API


Indico Documentation, Release 3.2-dev

The everything scopes are special because they can be used with any Indico endpoint, i.e. they are not restricted to
official APIs. This has the advantage that even Indico actions which do not have a corresponding API can be scripted.
Endpoints covered by the legacy_api scopes are not included; these scopes need to be granted explicitly.

Warning: We make absolutely no promises of backwards compatibility on endpoints that are not part of docu-
mented APIs. You use them at your own risk.

The legacy_api scopes grant access to the API this documentation is about, i.e. /export/ for retrieving data
and some /api/ paths for modifying data.
The read:user scope grants access to basic information about the current user via the /api/user/ endpoint:

{
"admin": false,
"email": "guinea.pig@example.com",
"first_name": "Guinea",
"id": 1337,
"last_name": "Pig"
}

The registrants scope is mainly used by the mobile check-in app and grants access to (currently) undocumented
APIs that allow retrieving the list of registrants in an event and and updating their check-in state.

API Key Authentication (Deprecated)

Deprecated since version 3.0: Use API Token Authentication instead. This authentication method may be removed in
a future version.

General

The HTTP Export API uses an API key and - depending on the config - a cryptographic signature for each request.
To create an API key, go to My Profile » HTTP API and click the Create API key button. This will create an API Key
and a Secret Key (if signatures are required).
It is recommended to always use the highest security level. That means if only an API key is available always include
it and if a secret key is available, always sign your requests. Since you might want to retrieve only public information
(instead of everything visible to your Indico user) you can add the param onlypublic=yes to the query string.
It is also possible to re-use the existing Indico session. This only makes sense if your browser accesses the API, e.g.
because you are developing on Indico and want to access the API via an AJAX request. Additionally this method of
authentication is restricted to GET requests. To use it, add cookieauth=yes to the query string and do not specify an
API key, timestamp or signature. To prevent data leakage via CSRF the CSRF token of the current session needs to be
provided as a GET argument csrftoken or a HTTP header X-CSRF-Token.

Request Signing

To sign a request, you need the following:


• The requested path, e.g. /export/categ/123.json
• Any additional params, e.g. limit=10
• The current UNIX timestamp

6.1. Indico - HTTP API 95


Indico Documentation, Release 3.2-dev

• Your API key and secret key


1) Add your API key to the params (limit=10&ak=your-api-key)
2) Add the current timestamp to the params (limit=10&ak=your-api-key&timestamp=1234567890)
3) Sort the query string params (ak=your-api-key&limit=10&timestamp=1234567890)
4) Merge path and the sorted query string to a single string (/export/categ/123.json?ak=your-api-
key&limit=10&timestamp=1234567890)
5) Create a HMAC-SHA1 signature of this string using your secret key as the key.
6) Append the hex-encoded signature to your query string: ?ak=your-api-
key&limit=10&timestamp=1234567890&signature=your-signature
Note that a signed request might be valid only for a few seconds or minutes, so you need to sign it right before sending
it and not store the generated URL as it is likely to expire soon.
You can find example code for Python and PHP in the following sections.
If persistent signatures are enabled, you can also omit the timestamp. In this case the URL is valid forever. When using
this feature, please make sure to use these URLs only where necessary - use timestamped URLs whenever possible.

Request Signing for Python

A simple example in Python:

import hashlib
import hmac
import time

try:
from urllib.parse import urlencode
except ImportError:
from urllib import urlencode

def build_indico_request(path, params, api_key=None, secret_key=None, only_


˓→public=False, persistent=False):

items = list(params.items()) if hasattr(params, 'items') else list(params)


if api_key:
items.append(('apikey', api_key))
if only_public:
items.append(('onlypublic', 'yes'))
if secret_key:
if not persistent:
items.append(('timestamp', str(int(time.time()))))
items = sorted(items, key=lambda x: x[0].lower())
url = '%s?%s' % (path, urlencode(items))
signature = hmac.new(secret_key.encode('utf-8'), url.encode('utf-8'),
hashlib.sha1).hexdigest()
items.append(('signature', signature))
if not items:
return path
return '%s?%s' % (path, urlencode(items))

if __name__ == '__main__':
(continues on next page)

96 Chapter 6. HTTP API


Indico Documentation, Release 3.2-dev

(continued from previous page)


API_KEY = '00000000-0000-0000-0000-000000000000'
SECRET_KEY = '00000000-0000-0000-0000-000000000000'
PATH = '/export/categ/1337.json'
PARAMS = {
'limit': 123
}
print(build_indico_request(PATH, PARAMS, API_KEY, SECRET_KEY))

Request Signing for PHP

A simple example in PHP:

<?php

function build_indico_request($path, $params, $api_key = null, $secret_key = null,


˓→$only_public = false, $persistent = false) {

if($api_key) {
$params['apikey'] = $api_key;
}

if($only_public) {
$params['onlypublic'] = 'yes';
}

if($secret_key) {
if(!$persistent) {
$params['timestamp'] = time();
}
uksort($params, 'strcasecmp');
$url = $path . '?' . http_build_query($params);
$params['signature'] = hash_hmac('sha1', $url, $secret_key);
}

if(!$params) {
return $path;
}

return $path . '?' . http_build_query($params);


}

if(true) { // change to false if you want to include this file


$API_KEY = '00000000-0000-0000-0000-000000000000';
$SECRET_KEY = '00000000-0000-0000-0000-000000000000';
$PATH = '/export/categ/1337.json';
$PARAMS = array(
'limit' => 123
);
echo build_indico_request($PATH, $PARAMS, $API_KEY, $SECRET_KEY) . "\n";
}

6.1.2 Common Parameters

The following parameters are valid for all requests no matter which element is requested. If a parameter has a shorter
form, it’s given in parentheses.

6.1. Indico - HTTP API 97


Indico Documentation, Release 3.2-dev

Param Short Description


from/to f/t
Accepted formats:
• ISO 8601 sub-
set - YYYY-MM-
DD[THH:MM]
• ‘today’, ‘yesterday’,
‘tomorrow’ and ‘now’
• days in the future/past:
‘[+/-]DdHHhMMm’

pretty p Pretty-print the output. When ex-


porting as JSON it will include
whitespace to make the json more
human-readable.
onlypublic op Only return results visible to unau-
thenticated users when set to yes.
onlyauthed oa Fail if the request is unauthenticated
for any reason when this is set to
yes.
cookieauth ca Use the Indico session cookie to au-
thenticate instead of an API key.
nocache nc Disable caching of results when this
is set to yes.
limit n Return no more than the X results.
offset O Skip the first X results.
detail d Specify the detail level (values de-
pend on the exported element)
order o Sort the results. Must be one of id,
start, end, title.
descending c Sort the results in descending order
when set to yes.
tz - Assume given timezone (default
UTC) for specified dates. Example:
Europe/Lisbon.

6.1.3 API Resources

Categories

URL Format

/export/categ/ID.TYPE
The ID can be either a single category ID or a - separated list. In an authenticated request the special ID favorites will
be resolved to the user’s list of favorites.

98 Chapter 6. HTTP API


Indico Documentation, Release 3.2-dev

Parameters

Param Short Description


loca- l Only include events taking place at the specified location. The * and ? wildcards may be used.
tion
room r Only include events taking place in the specified room. The * and ? wildcards may be used.
type T Only include events of the specified type. Must be one of: simple_event (or lecture), meeting,
conference

Detail Levels

events

Returns basic data about the events in the category.


This is the result of the following the query https://my.indico/export/categ/2.json?from=today&to=today&pretty=yes:

{
"count": 2,
"_type": "HTTPAPIResult",
"complete": true,
"url": "https://my.indico/export/categ/2.json?from=today&to=today&pretty=yes",
"ts": 1308841641,
"results": [
{
"category": "TEST Category",
"startDate": {
"date": "2011-06-17",
"tz": "Europe/Zurich",
"time": "08:00:00"
},
"_type": "Conference",
"endDate": {
"date": "2011-06-30",
"tz": "Europe/Zurich",
"time": "18:00:00"
},
"description": "",
"title": "Test EPayment",
"url": "http://pcituds07.cern.ch/indico/conferenceDisplay.py?confId=137344
˓→",

"location": "CERN",
"_fossil": "conferenceMetadata",
"timezone": "Europe/Zurich",
"type": "conference",
"id": "137344",
"room": "1-1-025",
"keywords": []
},
{
"category": "TEST Category",
"startDate": {
"date": "2011-06-23",
"tz": "Europe/Zurich",
(continues on next page)

6.1. Indico - HTTP API 99


Indico Documentation, Release 3.2-dev

(continued from previous page)


"time": "08:00:00"
},
"_type": "Conference",
"endDate": {
"date": "2011-06-24",
"tz": "Europe/Zurich",
"time": "18:00:00"
},
"description": "",
"title": "Export Test",
"url": "http://pcituds07.cern.ch/indico/conferenceDisplay.py?confId=137346
˓→ ",
"location": "CERN",
"_fossil": "conferenceMetadata",
"timezone": "Europe/Zurich",
"type": "meeting",
"id": "137346",
"room": null,
"keywords": []
}
]
}

Events

URL Format

/export/event/ID.TYPE
The ID can be either a single event ID or a - separated list.

Parameters

Param Short Description


occurrences occ Include the daily event times in the exported data.

Detail Levels

events

Returns basic data about the event. In this example occurrences are included, too.
Result for https://indico.server/export/event/137346.json?occ=yes&pretty=yes:
{
"count": 1,
"_type": "HTTPAPIResult",
"complete": true,
"url": "https://indico.server/export/event/137346.json?occ=yes&pretty=yes",
"ts": 1308899256,
"results": [
(continues on next page)

100 Chapter 6. HTTP API


Indico Documentation, Release 3.2-dev

(continued from previous page)


{
"category": "TEST Category",
"startDate": {
"date": "2011-06-23",
"tz": "Europe/Zurich",
"time": "08:00:00"
},
"_type": "Conference",
"endDate": {
"date": "2011-06-24",
"tz": "Europe/Zurich",
"time": "18:00:00"
},
"description": "",
"title": "Export Test",
"url": "http://indico.server/conferenceDisplay.py?confId=137346",
"room": null,
"keywords": [],
"occurrences": [
{
"_fossil": "period",
"endDT": {
"date": "2011-06-23",
"tz": "Europe/Zurich",
"time": "08:40:00"
},
"startDT": {
"date": "2011-06-23",
"tz": "Europe/Zurich",
"time": "08:00:00"
},
"_type": "Period"
},
{
"_fossil": "period",
"endDT": {
"date": "2011-06-24",
"tz": "Europe/Zurich",
"time": "15:00:00"
},
"startDT": {
"date": "2011-06-24",
"tz": "Europe/Zurich",
"time": "12:00:00"
},
"_type": "Period"
}
],
"_fossil": "conferenceMetadata",
"timezone": "Europe/Zurich",
"type": "meeting",
"id": "137346",
"location": "CERN"
}
]
}

6.1. Indico - HTTP API 101


Indico Documentation, Release 3.2-dev

contributions

Includes the contributions of the event.


Output for https://indico.server/export/event/137346.json?detail=contributions&pretty=yes:
{
"count": 1,
"_type": "HTTPAPIResult",
"complete": true,
"url": "https://indico.server/export/event/137346.json?detail=contributions&
˓→pretty=yes",

"ts": 1308899252,
"results": [
{
"category": "TEST Category",
"startDate": {
"date": "2011-06-23",
"tz": "Europe/Zurich",
"time": "08:00:00"
},
"_type": "Conference",
"endDate": {
"date": "2011-06-24",
"tz": "Europe/Zurich",
"time": "18:00:00"
},
"description": "",
"title": "Export Test",
"url": "http://indico.server/conferenceDisplay.py?confId=137346",
"type": "meeting",
"location": "CERN",
"_fossil": "conferenceMetadataWithContribs",
"timezone": "Europe/Zurich",
"keywords": [],
"contributions": [
{
"startDate": {
"date": "2011-06-23",
"tz": "Europe/Zurich",
"time": "08:20:00"
},
"_type": "Contribution",
"endDate": {
"date": "2011-06-23",
"tz": "Europe/Zurich",
"time": "08:40:00"
},
"description": "",
"title": "d1c2",
"track": null,
"duration": 20,
"session": null,
"location": "CERN",
"_fossil": "contributionMetadata",
"type": null,
"id": "1",
"room": null
(continues on next page)

102 Chapter 6. HTTP API


Indico Documentation, Release 3.2-dev

(continued from previous page)


},
{
"startDate": {
"date": "2011-06-23",
"tz": "Europe/Zurich",
"time": "08:00:00"
},
"_type": "Contribution",
"endDate": {
"date": "2011-06-23",
"tz": "Europe/Zurich",
"time": "08:20:00"
},
"description": "",
"title": "d1c1",
"track": null,
"duration": 20,
"session": null,
"location": "CERN",
"_fossil": "contributionMetadata",
"type": null,
"id": "0",
"room": null
},
{
"startDate": {
"date": "2011-06-24",
"tz": "Europe/Zurich",
"time": "14:00:00"
},
"_type": "Contribution",
"endDate": {
"date": "2011-06-24",
"tz": "Europe/Zurich",
"time": "14:20:00"
},
"description": "",
"title": "d2s1c1",
"track": null,
"duration": 20,
"session": "d2s1",
"location": "CERN",
"_fossil": "contributionMetadata",
"type": null,
"id": "3",
"room": null
},
{
"startDate": {
"date": "2011-06-24",
"tz": "Europe/Zurich",
"time": "12:00:00"
},
"_type": "Contribution",
"endDate": {
"date": "2011-06-24",
"tz": "Europe/Zurich",
(continues on next page)

6.1. Indico - HTTP API 103


Indico Documentation, Release 3.2-dev

(continued from previous page)


"time": "14:00:00"
},
"description": "",
"title": "d2c1",
"track": null,
"duration": 120,
"session": null,
"location": "CERN",
"_fossil": "contributionMetadata",
"type": null,
"id": "2",
"room": null
}
],
"id": "137346",
"room": null
}
]
}

subcontributions

Like contributions, but inside the contributions the subcontributions are included in a field named subContributions.

sessions

Includes details about the different sessions and groups contributions by sessions. The top-level contributions list only
contains contributions which are not assigned to any session. Subcontributions are included in this details level, too.
For example, https://indico.server/export/event/137346.json?detail=sessions&pretty=yes:
{
"count": 1,
"_type": "HTTPAPIResult",
"complete": true,
"url": "https://indico.server/export/event/137346.json?detail=sessions&pretty=yes
˓→",

"ts": 1308899771,
"results": [
{
"category": "TEST Category",
"startDate": {
"date": "2011-06-23",
"tz": "Europe/Zurich",
"time": "08:00:00"
},
"_type": "Conference",
"endDate": {
"date": "2011-06-24",
"tz": "Europe/Zurich",
"time": "18:00:00"
},
"description": "",
"title": "Export Test",
(continues on next page)

104 Chapter 6. HTTP API


Indico Documentation, Release 3.2-dev

(continued from previous page)


"url": "http://indico.server/conferenceDisplay.py?confId=137346",
"keywords": [],
"contributions": [
{
"startDate": {
"date": "2011-06-23",
"tz": "Europe/Zurich",
"time": "08:20:00"
},
"_type": "Contribution",
"endDate": {
"date": "2011-06-23",
"tz": "Europe/Zurich",
"time": "08:40:00"
},
"description": "",
"subContributions": [],
"title": "d1c2",
"track": null,
"duration": 20,
"session": null,
"location": "CERN",
"_fossil": "contributionMetadataWithSubContribs",
"type": null,
"id": "1",
"room": null
},
{
"startDate": {
"date": "2011-06-23",
"tz": "Europe/Zurich",
"time": "08:00:00"
},
"_type": "Contribution",
"endDate": {
"date": "2011-06-23",
"tz": "Europe/Zurich",
"time": "08:20:00"
},
"description": "",
"subContributions": [],
"title": "d1c1",
"track": null,
"duration": 20,
"session": null,
"location": "CERN",
"_fossil": "contributionMetadataWithSubContribs",
"type": null,
"id": "0",
"room": null
},
{
"startDate": {
"date": "2011-06-24",
"tz": "Europe/Zurich",
"time": "12:00:00"
},
(continues on next page)

6.1. Indico - HTTP API 105


Indico Documentation, Release 3.2-dev

(continued from previous page)


"_type": "Contribution",
"endDate": {
"date": "2011-06-24",
"tz": "Europe/Zurich",
"time": "14:00:00"
},
"description": "",
"subContributions": [],
"title": "d2c1",
"track": null,
"duration": 120,
"session": null,
"location": "CERN",
"_fossil": "contributionMetadataWithSubContribs",
"type": null,
"id": "2",
"room": null
}
],
"sessions": [
{
"startDate": {
"date": "2011-06-24",
"tz": "Europe/Zurich",
"time": "14:00:00"
},
"_type": "Session",
"room": "",
"numSlots": 1,
"color": "#EEE0EF",
"material": [],
"isPoster": false,
"sessionConveners": [],
"location": "CERN",
"address": "",
"_fossil": "sessionMetadata",
"title": "d2s1",
"textColor": "#1D041F",
"contributions": [
{
"startDate": {
"date": "2011-06-24",
"tz": "Europe/Zurich",
"time": "14:00:00"
},
"_type": "Contribution",
"endDate": {
"date": "2011-06-24",
"tz": "Europe/Zurich",
"time": "14:20:00"
},
"description": "",
"subContributions": [],
"title": "d2s1c1",
"track": null,
"duration": 20,
"session": "d2s1",
(continues on next page)

106 Chapter 6. HTTP API


Indico Documentation, Release 3.2-dev

(continued from previous page)


"location": "CERN",
"_fossil": "contributionMetadataWithSubContribs",
"type": null,
"id": "3",
"room": null
}
],
"id": "0"
}
],
"location": "CERN",
"_fossil": "conferenceMetadataWithSessions",
"timezone": "Europe/Zurich",
"type": "meeting",
"id": "137346",
"room": null
}
]
}

Timetable

URL Format

/export/timetable/ID.TYPE
The ID should be the event ID, e.g. 123.

Results

Returns the timetable of the event.


Result for https://indico.server/export/timetable/137346.json?ak=00000000-0000-0000-0000-000000000000&
pretty=yes:
{
"count": 1,
"additionalInfo": {},
"_type": "HTTPAPIResult",
"complete": true,
"url": "https:\/\/indico.server\/export\/timetable\/137346.json?ak=00000000-0000-
˓→0000-0000-000000000000&pretty=yes",

"ts": 1367242732,
"results": {
"137346": {
"20130429": {
"c0": {
"startDate": {
"date": "2013-04-29",
"tz": "Europe\/Zurich",
"time": "16:00:00"
},
"_type": "ContribSchEntry",
"material": [],
(continues on next page)

6.1. Indico - HTTP API 107


Indico Documentation, Release 3.2-dev

(continued from previous page)


"endDate": {
"date": "2013-04-29",
"tz": "Europe\/Zurich",
"time": "16:30:00"
},
"description": "",
"title": "Contrib 1",
"id": "c0",
"contributionId": "0",
"sessionSlotId": null,
"conferenceId": "137346",
"presenters": [],
"sessionId": null,
"location": "CERN",
"uniqueId": "a137346t0",
"_fossil": "contribSchEntryDisplay",
"sessionCode": null,
"entryType": "Contribution",
"room": "160-1-009"
}
}
}

Event Search

URL Format

/export/event/search/TERM.TYPE
The TERM should be a string, e.g. “ichep”

Results

Returns the events found.


Result for https://indico.server/export/event/search/ichep.json?ak=00000000-0000-0000-0000-000000000000&
pretty=yes:
{
"count": 5,
"additionalInfo": {},
"_type": "HTTPAPIResult",
"complete": true,
"url": "https:\/\/indico.server\/export\/event\/search\/ichep.json?ak=00000000-
˓→0000-0000-0000-000000000000&pretty=yes",

"ts": 1367245058,
"results": [
{
"startDate": {
"date": "2010-07-16",
"tz": "UTC",
"time": "11:00:00"
},
"hasAnyProtection": false,
(continues on next page)

108 Chapter 6. HTTP API


Indico Documentation, Release 3.2-dev

(continued from previous page)


"id": "101465",
"title": "Rehearsals for ICHEP Friday 16th July Afternoon Session"
},
{
"startDate": {
"date": "2010-08-06",
"tz": "UTC",
"time": "12:00:00"
},
"hasAnyProtection": false,
"id": "102669",
"title": "Overview of LHC physics results at ICHEP"
},
{
"startDate": {
"date": "2010-08-18",
"tz": "UTC",
"time": "17:00:00"
},
"hasAnyProtection": false,
"id": "104128",
"title": "Seminer Oturumu: \"ATLAS status and highlights as of ICHEP\" Dr
˓→Tayfun Ince (Universitaet Bonn)"

},
{
"startDate": {
"date": "2011-07-23",
"tz": "UTC",
"time": "11:00:00"
},
"hasAnyProtection": false,
"id": "145521",
"title": "89th Plenary ECFA and Joint EPS\/ICHEP-ECFA Session - Grenoble,
˓→France"

},
{
"startDate": {
"date": "2012-01-12",
"tz": "UTC",
"time": "08:00:00"
},
"hasAnyProtection": false,
"id": "168897",
"title": "ICHEP 2012 Outreach Planning Meeting"
}
]
}

Files

General Information

The file export is only available for authenticated users, i.e. when using an API key and a signature (if enabled).

6.1. Indico - HTTP API 109


Indico Documentation, Release 3.2-dev

URL Format

/export/event/EVENT_ID/session/SESSION_ID/contrib/CONTRIBUTION_ID/subcontrib/SUBCONTRIBUTION_ID/material/MATERIA
All ID’s should be single ID, not separated list.

The EVENT_ID should be the event ID, e.g. 123.


The SESSION_ID (optional) should be the session ID, e.g. 4.
The CONTRIBUTION_ID (optional) should be the contribution ID, e.g. 3.
The SUBCONTRIBUTION_ID (optional) should be the sub-contribution ID, e.g. 1.
The MATERIAL_ID should by the material name if it came default group e.g. Slides or material ID if not, e.g. 2.
The RESOURCE_ID should by the resource ID.
Only supported TYPE for files is bin (binary data).

Parameters

None

Detail Levels

file

Returns file (or an error in JSON format).


For example: https://indico.server/export/event/23/session/0/contrib/3/material/slides/3.bin?ak=
00000000-0000-0000-0000-000000000000

User

General Information

The user export is only available for authenticated users, i.e. when using an API key and a signature (if enabled).

URL Format

/export/user/USER_ID.TYPE
The USER_ID should be the user ID, e.g. 44.

Parameters

None

110 Chapter 6. HTTP API


Indico Documentation, Release 3.2-dev

Results

Returns the user information (or an error in JSON format).


Result for https://indico.server/export/user/6.json?ak=00000000-0000-0000-0000-000000000000&pretty=yes:

{
"count": 1,
"additionalInfo": {},
"_type": "HTTPAPIResult"
"ts": 1610536660,
"url": "https:\/\/indico.server\/export\/user\/6.json?ak=00000000-0000-0000-0000-
˓→000000000000&pretty=yes",

"results": [{
"id": 6,
"first_name": "Guinea",
"last_name": "Pig",
"full_name": "Guinea Pig"
"email": "test@cern.ch",
"affiliation": "CERN",
"phone": "",
"avatar_url": "\/user\/6\/picture-default",
"identifier": "User:6",
}],
}

Room Booking

Bookings

Creating bookings

General Information

The Room Booking API is only available for authenticated users, i.e. when using an API key and a signature (if
enabled). If the room booking system is restricted to certain users/groups this restriction applies for this API, too. The
request will fail if there is a collision with another booking, blocking or unavailable period.
Note that it is not possible to pre-book a room through this api.

URL Format

/api/roomBooking/bookRoom.TYPE
TYPE should be json or xml.

Parameters

The following parameters are required:

6.1. Indico - HTTP API 111


Indico Documentation, Release 3.2-dev

Param Values Description


location text Room location, e.g. CERN
roomid text Room id
from/to f/t
Start/End time for a booking. Accepted formats:

• ISO 8601 sub-


set - YYYY-MM-
DD[THH:MM]
• ‘today’, ‘yesterday’,
‘tomorrow’ and ‘now’
• days in the future/past:
‘[+/-]DdHHhMMm’

reason text Reason for booking a room


username text User login name for whom the
booking will be created

Booking a room

POST request
Returns reservation id if the booking was successful or error information it there were any problems.
For example:

curl --data "username=jdoe&from=2012-12-30T21:30&to=2012-12-30T22:15&reason=meeting&


˓→location=CERN&roomid=189" 'http://indico.server/indico/api/roomBooking/bookRoom.json

˓→'

Result:

{
{
"url": "\/api\/roomBooking\/bookRoom.json",
"_type": "HTTPAPIResult",
"results": {
"reservationID": 45937
},
"ts": 1354695663
}
}

Retrieving bookings

General Information

The reservation export is only availabled for authenticated users, i.e. when using an API key and a signature (if
enabled). If the room booking system is restricted to certain users/groups this restriction applies for the reservation
export API, too.
Please note that the room export with the reservations detail level is much more appropriate if you need reservations
for specific rooms.

112 Chapter 6. HTTP API


Indico Documentation, Release 3.2-dev

URL Format

/export/reservation/LOCATION.TYPE
The LOCATION should be the room location, e.g. CERN. A - separated list of multiple locations is allowed, too.

Parameters

Param Short Values Description


occur- occ yes, no Include all occurrences of room reservations.
rences
can- cxl yes, no If specified only include cancelled (yes) or non-cancelled (no) reservations.
celled
rejected rej yes, no If specified only include rejected/non-rejected resvs.
con- - yes, no, If specified only include bookings/pre-bookings with the given state.
firmed pending
archival arch yes, no If specified only include bookings (not) from the past.
recur- rec yes, no If specified only include bookings which are (not) recurring.
ring
repeat- rep yes, no Alias for recurring
ing
booked- bf text (wild- Only include bookings where the booked for field matches the given wildcard
for cards) string.
occurs - yyyy-mm- Only include bookings which have a valid occurrence on the given date. Multiple
dd dates can be separated by commas.

Detail Levels

reservations

Returns detailed data about the reservations and the most important information about the booked room.
For example, https://indico.server/export/reservation/CERN.json?ak=00000000-0000-0000-0000-000000000000&
detail=reservation&from=today&to=today&pretty=yes:
{
"count": 1,
"additionalInfo": {},
"_type": "HTTPAPIResult",
"url": "/export/reservation/CERN.json?ak=00000000-0000-0000-0000-000000000000&
˓→detail=reservation&from=today&to=today&pretty=yes",

"results": [
{
"_type": "Reservation",
"repeat_unit": 1,
"endDT": {
"date": "2014-08-14",
"tz": "Europe/Zurich",
"time": "12:30:00"
},
"room": {
"_type": "Room",
(continues on next page)

6.1. Indico - HTTP API 113


Indico Documentation, Release 3.2-dev

(continued from previous page)


"fullName": "500-1-001 - Main Auditorium",
"id": 57
},
"isConfirmed": true,
"isValid": true,
"repeatability": "daily",
"repeat_step": 1,
"vcList": [],
"reason": "Summer Student Lecture programme",
"bookedForName": "DOE, John",
"is_rejected": false,
"is_cancelled": false,
"startDT": {
"date": "2014-07-02",
"tz": "Europe/Zurich",
"time": "08:30:00"
},
"id": 63779,
"bookingUrl": "http://indico.server/rooms/booking/CERN/63779/",
"location": "CERN"
}
],
"ts": 1406727843
}

Rooms

General Information
The room export is only availabled for authenticated users, i.e. when using an API key and a signature (if enabled). If
the room booking system is restricted to certain users/groups this restriction applies for the room export API, too.

URL Format

/export/room/LOCATION/ID.TYPE
The LOCATION should be the room location, e.g. CERN. The ID can be either a single room ID or a - separated list.

114 Chapter 6. HTTP API


Indico Documentation, Release 3.2-dev

Parameters

Param Short Values Description


occur- occ yes, no Include all occurrences of room reservations.
rences
can- cxl yes, no If specified only include cancelled (yes) or non-cancelled (no) reservations.
celled
rejected rej yes, no If specified only include rejected/non-rejected resvs.
con- - yes, no, If specified only include bookings/pre-bookings with the given state.
firmed pending
archival arch yes, no If specified only include bookings (not) from the past.
recur- rec yes, no If specified only include bookings which are (not) recurring.
ring
repeat- rep yes, no Alias for recurring
ing
booked- bf text (wild- Only include bookings where the booked for field matches the given wildcard
for cards) string.
occurs - yyyy-mm- Only include bookings which have a valid occurrence on the given date. Multiple
dd dates can be separated by commas.

Detail Levels

rooms

Returns basic data about the rooms.


For example, https://indico.server/export/room/CERN/57.json?ak=00000000-0000-0000-0000-000000000000&
pretty=yes:
{
"count": 1,
"additionalInfo": {},
"_type": "HTTPAPIResult",
"url": "/export/room/CERN/57.json?ak=00000000-0000-0000-0000-000000000000&
˓→pretty=yes",

"results": [
{
"building": "500",
"_type": "Room",
"name": "Main Auditorium",
"floor": "1",
"longitude": "6.0542704900999995",
"vcList": [
"Audio Conference",
"Built-in (MCU) Bridge",
"CERN MCU",
"ESnet MCU",
"EVO",
"H323 point2point",
"Vidyo"
],
"equipment": [
"Blackboard",
(continues on next page)

6.1. Indico - HTTP API 115


Indico Documentation, Release 3.2-dev

(continued from previous page)


"Computer Projector",
"Ethernet",
"Microphone",
"PC",
"Telephone conference",
"Video conference",
"Webcast/Recording",
"Wireless"
],
"roomNr": "001",
"location": "CERN",
"latitude": "46.23141394580001",
"fullName": "500-1-001 - Main Auditorium",
"id": 57,
"bookingUrl": "/indico/rooms/room/CERN/57/book"
}
],
"ts": 1406729635
}

reservations

Returns basic data about the rooms and their reservations in the given timeframe.
Output for https://indico.server/export/room/CERN/57.json?ak=00000000-0000-0000-0000-000000000000&detail=
reservations&from=today&to=today&pretty=yes:

{
"count": 1,
"additionalInfo": {},
"_type": "HTTPAPIResult",
"url": "/export/room/CERN/57.json?ak=00000000-0000-0000-0000-000000000000&
˓→detail=reservations&from=today&to=today&pretty=yes",

"results": [
{
"building": "500",
"_type": "Room",
"name": "Main Auditorium",
"floor": "1",
"reservations": [
{
"_type": "Reservation",
"repeat_unit": 1,
"endDT": {
"date": "2014-08-14",
"tz": "Europe/Zurich",
"time": "12:30:00"
},
"isConfirmed": true,
"isValid": true,
"repeatability": "daily",
"repeat_step": 1,
"vcList": [],
"reason": "Summer Student Lecture programme",
"bookedForName": "DOE, John",
(continues on next page)

116 Chapter 6. HTTP API


Indico Documentation, Release 3.2-dev

(continued from previous page)


"is_rejected": false,
"is_cancelled": false,
"startDT": {
"date": "2014-07-02",
"tz": "Europe/Zurich",
"time": "08:30:00"
},
"id": 63779,
"bookingUrl": "http://pcavc005.cern.ch:8000/indico/rooms/booking/
˓→ CERN/63779/",
"location": "CERN"
}
],
"longitude": "6.0542704900999995",
"vcList": [
"Audio Conference",
"Built-in (MCU) Bridge",
"CERN MCU",
"ESnet MCU",
"EVO",
"H323 point2point",
"Vidyo"
],
"equipment": [
"Blackboard",
"Computer Projector",
"Ethernet",
"Microphone",
"PC",
"Telephone conference",
"Video conference",
"Webcast/Recording",
"Wireless"
],
"roomNr": "001",
"location": "CERN",
"latitude": "46.23141394580001",
"fullName": "500-1-001 - Main Auditorium",
"id": 57,
"bookingUrl": "/indico/rooms/room/CERN/57/book"
}
],
"ts": 1406731966
}

Get room by room name

General Information
The search room export is guest allowed because the room data is public (no the reservations).

URL Format

/export/roomName/LOCATION/ROOMNAME.TYPE

6.1. Indico - HTTP API 117


Indico Documentation, Release 3.2-dev

The LOCATION should be the room location, e.g. CERN. The ROOMNAME is a single ROOMNAME.

Parameters

No parameters needed.

Results

Returns basic data about the rooms.


For example, https://indico.server/export/roomName/CERN/Main Auditorium.json?ak=00000000-0000-0000-0000-
000000000000&pretty=yes:

{
"count": 1,
"additionalInfo": {},
"_type": "HTTPAPIResult",
"url": "/export/roomName/CERN/Main Auditorium.json?ak=00000000-0000-0000-0000-
˓→000000000000&pretty=yes",

"results": [
{
"building": "500",
"_type": "Room",
"name": "Main Auditorium",
"floor": "1",
"longitude": "6.0542704900999995",
"vcList": [
"Audio Conference",
"Built-in (MCU) Bridge",
"CERN MCU",
"ESnet MCU",
"EVO",
"H323 point2point",
"Vidyo"
],
"equipment": [
"Blackboard",
"Computer Projector",
"Ethernet",
"Microphone",
"PC",
"Telephone conference",
"Video conference",
"Webcast/Recording",
"Wireless"
],
"roomNr": "001",
"location": "CERN",
"latitude": "46.23141394580001",
"fullName": "500-1-001 - Main Auditorium",
"id": 57,
"bookingUrl": "/indico/rooms/room/CERN/57/book"
}
],
"ts": 1406732578
}

118 Chapter 6. HTTP API


Indico Documentation, Release 3.2-dev

6.1.4 HTTP API Tools

Note: API keys and signatures have been deprecated. Please consider using API Token Authentication instead.

Deprecated since version 3.0.

6.1. Indico - HTTP API 119


Indico Documentation, Release 3.2-dev

120 Chapter 6. HTTP API


CHAPTER 7

API reference

This part of the documentation focuses on the core modules of Indico and includes information about the models and
utility functions and classes that are useful for understanding the internals of the application.

7.1 API reference

This part of the documentation focuses on the core modules of Indico and includes information about the models and
utility functions and classes that are useful for understanding the internals of the application.

7.1.1 Event

Todo: Docstrings (module, models, operations, utilities, settings)

Models

class indico.modules.events.models.events.Event(**kwargs)
Bases: indico.core.db.sqlalchemy.searchable.SearchableTitleMixin,
indico.core.db.sqlalchemy.descriptions.DescriptionMixin, indico.core.
db.sqlalchemy.locations.LocationMixin, indico.core.db.sqlalchemy.
protection.ProtectionManagersMixin, indico.core.db.sqlalchemy.attachments.
AttachedItemsMixin, indico.core.db.sqlalchemy.notes.AttachedNotesMixin,
indico.modules.events.models.persons.PersonLinkMixin, sqlalchemy.orm.
decl_api.Model
An Indico event.
This model contains the most basic information related to an event.
Note that the ACL is currently only used for managers but not for view access!

121
Indico Documentation, Release 3.2-dev

A simple constructor that allows initialization from kwargs.


Sets attributes on the constructed instance using the names and values in kwargs.
Only keys that are present as attributes of the instance’s class are allowed. These could be, for example, any
mapped columns or relationships.
ATTACHMENT_FOLDER_ID_COLUMN = 'event_id'
access_key
acl_entries
The ACL entries for the event
additional_info
all_notes
allow_access_key = True
allow_location_inheritance = False
allow_no_access_contact = True
allow_none_protection_parent = True
can_display(user)
Check whether the user can display the event in the category.
can_lock(user)
Check whether the user can lock/unlock the event.
category
The category containing the event
classmethod category_chain_overlaps(category_ids)
Create a filter that checks whether the event has any of the provided category ids in its parent chain.
Warning: This method cannot be used in a negated filter.
Parameters category_ids – A list of category ids or a single category id
category_id
The ID of immediate parent category of the event
cfa
cfp
cloned_from
The event this one was cloned from
cloned_from_id
If this event was cloned, the id of the parent event
contact_emails
contact_phones
contact_title
created_dt
The creation date of the event
creator
The user who created the event

122 Chapter 7. API reference


Indico Documentation, Release 3.2-dev

creator_id
The ID of the user who created the event
custom_boa
The custom book of abstracts
custom_boa_id
The ID of the uploaded custom book of abstracts (if available)
default_page
The event’s default page (conferences only)
default_page_id
The ID of the event’s default page (conferences only)
default_render_mode = 1
delete(reason, user=None)
disallowed_protection_modes = frozenset()
display_tzinfo
The tzinfo of the event as preferred by the current user.
duration
editable_types
end_dt
The end date of the event
end_dt_display
The ‘displayed end dt’, which is usually the actual end dt, but may be overridden for a conference.
end_dt_local
end_dt_override
ends_after(dt)
Check whether the event ends on/after the specified date.
event
Convenience property so all event entities have it.
external_logo_url
external_url
get_allowed_sender_emails(include_current_user=True, include_creator=True, in-
clude_managers=True, include_contact=True, in-
clude_chairs=True, extra=None)
Return the emails of people who can be used as senders (or rather Reply-to contacts) in emails sent from
within an event.
Parameters
• include_current_user – Whether to include the email of the currently logged-in
user
• include_creator – Whether to include the email of the event creator
• include_managers – Whether to include the email of all event managers
• include_contact – Whether to include the “event contact” emails
• include_chairs – Whether to include the emails of event chairpersons (or lecture
speakers)

7.1. API reference 123


Indico Documentation, Release 3.2-dev

• extra – An email address that is always included, even if it is not in any of the included
lists.
Returns A dictionary mapping emails to pretty names
get_contribution(id_)
Get a contribution of the event.
get_contribution_field(field_id)
get_label_markup(size=”)
get_non_inheriting_objects()
Get a set of child objects that do not inherit protection.
get_relative_event_ids()
Get the first, last, previous and next event IDs.
Any of those values may be None if there is no matching event or if it would be the current event.
Returns A dict containing first, last, prev and next.
get_session(id_=None, friendly_id=None)
Get a session of the event.
get_session_block(id_, scheduled_only=False)
Get a session block of the event.
get_sorted_tracks()
Return tracks and track groups in the correct order.
get_verbose_title(show_speakers=False, show_series_pos=False)
Get the event title with some additional information.
Parameters
• show_speakers – Whether to prefix the title with the speakers of the event.
• show_series_pos – Whether to suffix the title with the position and total count in the
event’s series.
happens_between(from_dt=None, to_dt=None)
Check whether the event takes place within two dates.
has_custom_boa
has_ended
has_feature(feature)
Check if a feature is enabled for the event.
has_logo
has_regform_in_acl
has_stylesheet
id
The ID of the event
inherit_location = False
inheriting_have_acl = True
is_deleted
If the event has been deleted

124 Chapter 7. API reference


Indico Documentation, Release 3.2-dev

is_locked
If the event is locked (read-only mode)
is_unlisted
is_user_registered(user)
Check whether the user is registered in the event.
This takes both unpaid and complete registrations into account.
classmethod is_visible_in(category_id)
Create a filter that checks whether the event is visible in the specified category.
iter_days(tzinfo=None)
keywords
A list of tags/keywords for the event
label
The label assigned to the event
label_id
The ID of the label assigned to the event
label_message
location_backref_name = 'events'
locator
log(realm, kind, module, summary, user=None, type_=’simple’, data=None, meta=None)
Create a new log entry for the event.
Parameters
• realm – A value from EventLogRealm indicating the realm of the action.
• kind – A value from LogKind indicating the kind of the action that was performed.
• module – A human-friendly string describing the module related to the action.
• summary – A one-line summary describing the logged action.
• user – The user who performed the action.
• type – The type of the log entry. This is used for custom rendering of the log mes-
sage/data
• data – JSON-serializable data specific to the log type.
• meta – JSON-serializable data that won’t be displayed.
Returns The newly created EventLogEntry
In most cases the simple log type is fine. For this type, any items from data will be shown in the detailed
view of the log entry. You may either use a dict (which will be sorted) alphabetically or a list of key,
value pairs which will be displayed in the given order.
logging_disabled
Temporarily disable event logging.
This is useful when performing actions e.g. during event creation or at other times where adding entries to
the event log doesn’t make sense.
logo
The logo’s raw image data

7.1. API reference 125


Indico Documentation, Release 3.2-dev

logo_metadata
The metadata of the logo (hash, size, filename, content_type)
logo_url
map_url
move(category, *, log_meta=None)
move_start_dt(start_dt)
Set event start_dt and adjust its timetable entries.
note
organizer_info
own_address
own_map_url
The url to a map for the event
own_no_access_contact
own_room
own_room_id
own_room_name
own_venue
own_venue_id
own_venue_name
participation_regform
pending_move_request
The current pending move request
person_link_backref_name = 'event'
person_link_relation_name = 'EventPersonLink'
person_links
possible_render_modes = {<RenderMode.html: 1>}
preload_all_acl_entries()
protection_mode
protection_parent
The parent object to consult for ProtectionMode.inheriting.
public_regform_access
published_registrations
references
External references associated with this event
refresh_event_persons(*, notify=True)
Update the data for all EventPersons based on the linked Users.
Parameters notify – Whether to trigger the person_updated signal.
render_mode = 1

126 Chapter 7. API reference


Indico Documentation, Release 3.2-dev

reservations
restore(reason=None, user=None)
scheduled_notes
series
The series this event is part of
series_id
The ID of the series this events belongs to
session_block_count
short_external_url
short_url
start_dt
The start date of the event
start_dt_display
The ‘displayed start dt’, which is usually the actual start dt, but may be overridden for a conference.
start_dt_local
start_dt_override
starts_between(from_dt=None, to_dt=None)
Check whether the event starts within two dates.
stylesheet
The stylesheet’s raw image data
stylesheet_metadata
The metadata of the stylesheet (hash, size, filename)
theme
timetable_entries
timezone
The timezone of the event
title
type
type_
tzinfo
url
url_shortcut
The URL shortcut for the event
visibility
The visibility depth in category overviews
class indico.modules.events.models.events.EventType
Bases: indico.util.enum.RichIntEnum
An enumeration.
conference = 3
lecture = 1

7.1. API reference 127


Indico Documentation, Release 3.2-dev

legacy_name
meeting = 2
class indico.modules.events.models.persons.AuthorsSpeakersMixin
Bases: object
AUTHORS_SPEAKERS_DISPLAY_ORDER_ATTR = 'display_order_key'
primary_authors
secondary_authors
speakers
class indico.modules.events.models.persons.EventPerson(**kwargs)
Bases: indico.modules.users.models.users.PersonMixin, sqlalchemy.orm.
decl_api.Model
A person inside an event, e.g. a speaker/author etc.
A simple constructor that allows initialization from kwargs.
Sets attributes on the constructed instance using the names and values in kwargs.
Only keys that are present as attributes of the instance’s class are allowed. These could be, for example, any
mapped columns or relationships.
address
affiliation
classmethod create_from_user(user, event=None, is_untrusted=False)
email
event
event_id
first_name
classmethod for_user(user, event=None, is_untrusted=False)
Return EventPerson for a matching User in Event creating if needed.
has_role(role, obj)
Whether the person has a role in the ACL list of a given object.
id
identifier
invited_dt
is_untrusted
last_name
classmethod link_user_by_email(user)
Link all email-based persons matching the user’s email addresses with the user.
Parameters user – A User object.
locator
Define a smart locator property.
This behaves pretty much like a normal read-only property and the decorated function should return a dict
containing the necessary data to build a URL for the object.

128 Chapter 7. API reference


Indico Documentation, Release 3.2-dev

This decorator should usually be applied to a method named locator as this name is required for
get_locator to find it automatically when just passing the object.
If you need more than one locator, you can define it like this:

@locator_property
def locator(self):
return {...}

@locator.other
def locator(self):
return {...}

The other locator can then be accessed by passing obj.locator.other to the code expecting an
object with a locator.
merge_person_info(other)
classmethod merge_users(target, source)
Merge the EventPersons of two users.
Parameters
• target – The target user of the merge
• source – The user that is being merged into target
phone
principal
sync_user(*, notify=True)
Update all person data based on the current user data.
Parameters notify – Whether to trigger the person_updated signal.
user
user_id
class indico.modules.events.models.persons.EventPersonLink(*args, **kwargs)
Bases: indico.modules.events.models.persons.PersonLinkBase
Association between EventPerson and Event.
Chairperson or speaker (lecture)
display_order
event_id
id
is_submitter
object_relationship_name = 'event'
person
person_id
person_link_backref_name = 'event_links'
person_link_unique_columns = ('event_id',)

7.1. API reference 129


Indico Documentation, Release 3.2-dev

class indico.modules.events.models.persons.PersonLinkBase(*args, **kwargs)


Bases: indico.modules.users.models.users.PersonMixin, sqlalchemy.orm.
decl_api.Model
Base class for EventPerson associations.
address
affiliation
display_order = Column(None, Integer(), table=None, nullable=False, default=ColumnDefau
display_order_key
display_order_key_lastname
email
first_name
id = Column(None, Integer(), table=None, primary_key=True, nullable=False)
last_name
object
object_relationship_name = None
The name of the relationship pointing to the object the person is linked to
person = <RelationshipProperty at 0x7f331f30cbc0; no key>
person_id = Column(None, Integer(), ForeignKey('events.persons.id'), table=None, nullab
person_link_backref_name = None
The name of the backref on the EventPerson
person_link_unique_columns = None
The columns which should be included in the unique constraint.
phone
title
class indico.modules.events.models.persons.PersonLinkMixin
Bases: object
person_link_backref_name = None
person_link_data
person_link_relation_name = None
person_links = <RelationshipProperty at 0x7f331f3a6dc0; no key>
sorted_person_links
class indico.modules.events.models.principals.EventPrincipal(**kwargs)
Bases: indico.core.db.sqlalchemy.principals.PrincipalPermissionsMixin,
sqlalchemy.orm.decl_api.Model
A simple constructor that allows initialization from kwargs.
Sets attributes on the constructed instance using the names and values in kwargs.
Only keys that are present as attributes of the instance’s class are allowed. These could be, for example, any
mapped columns or relationships.
allow_category_roles = True

130 Chapter 7. API reference


Indico Documentation, Release 3.2-dev

allow_emails = True
allow_event_roles = True
allow_networks = True
allow_registration_forms = True
category_role
category_role_id
email
event_id
The ID of the associated event
event_role
event_role_id
full_access
id
The ID of the acl entry
ip_network_group
ip_network_group_id
local_group
local_group_id
multipass_group_name
multipass_group_provider
permissions
principal_backref_name = 'in_event_acls'
principal_for = 'Event'
read_access
registration_form
registration_form_id
type
unique_columns = ('event_id',)
user
user_id
class indico.modules.events.models.references.EventReference(**kwargs)
Bases: indico.modules.events.models.references.ReferenceModelBase
A simple constructor that allows initialization from kwargs.
Sets attributes on the constructed instance using the names and values in kwargs.
Only keys that are present as attributes of the instance’s class are allowed. These could be, for example, any
mapped columns or relationships.
event_id

7.1. API reference 131


Indico Documentation, Release 3.2-dev

id
reference_backref_name = 'event_references'
reference_type
reference_type_id
value
class indico.modules.events.models.references.ReferenceModelBase(**kwargs)
Bases: sqlalchemy.orm.decl_api.Model
A simple constructor that allows initialization from kwargs.
Sets attributes on the constructed instance using the names and values in kwargs.
Only keys that are present as attributes of the instance’s class are allowed. These could be, for example, any
mapped columns or relationships.
id = Column(None, Integer(), table=None, primary_key=True, nullable=False)
reference_backref_name = None
The name of the backref on the ReferenceType
reference_type = <RelationshipProperty at 0x7f331efdf1c0; no key>
reference_type_id = Column(None, Integer(), ForeignKey('indico.reference_types.id'), ta
url
The URL of the referenced entity.
None if no URL template is defined.
urn
The URN of the referenced entity.
None if no scheme is defined.
value = Column(None, String(), table=None, nullable=False)
class indico.modules.events.models.references.ReferenceType(**kwargs)
Bases: sqlalchemy.orm.decl_api.Model
A simple constructor that allows initialization from kwargs.
Sets attributes on the constructed instance using the names and values in kwargs.
Only keys that are present as attributes of the instance’s class are allowed. These could be, for example, any
mapped columns or relationships.
id
The unique ID of the reference type
locator
Define a smart locator property.
This behaves pretty much like a normal read-only property and the decorated function should return a dict
containing the necessary data to build a URL for the object.
This decorator should usually be applied to a method named locator as this name is required for
get_locator to find it automatically when just passing the object.
If you need more than one locator, you can define it like this:

132 Chapter 7. API reference


Indico Documentation, Release 3.2-dev

@locator_property
def locator(self):
return {...}

@locator.other
def locator(self):
return {...}

The other locator can then be accessed by passing obj.locator.other to the code expecting an
object with a locator.
name
The name of the referenced system
scheme
The scheme used to build an URN for the reference
url_template
A URL template to build a link to a referenced entity
class indico.modules.events.models.reviews.ProposalCommentMixin
Bases: object
can_edit(user)
timeline_item_type = 'comment'
class indico.modules.events.models.reviews.ProposalGroupProxy(group)
Bases: object
The object that the proposals can be grouped by.
It provides all necessary methods for building the URLs, displaying the grouping information, etc.
full_title
full_title_attr = 'full_title'
id
locator
Define a smart locator property.
This behaves pretty much like a normal read-only property and the decorated function should return a dict
containing the necessary data to build a URL for the object.
This decorator should usually be applied to a method named locator as this name is required for
get_locator to find it automatically when just passing the object.
If you need more than one locator, you can define it like this:

@locator_property
def locator(self):
return {...}

@locator.other
def locator(self):
return {...}

The other locator can then be accessed by passing obj.locator.other to the code expecting an
object with a locator.
title

7.1. API reference 133


Indico Documentation, Release 3.2-dev

title_attr = 'title'
class indico.modules.events.models.reviews.ProposalMixin
Bases: object
Classes that represent a proposal object should extend this class (ex: Abstract, Paper).
call_for_proposals_attr = None
Attribute to retrieve the object with access to the reviewing settings
can_comment(user)
can_review(user, check_state=False)
cfp
create_comment_endpoint = None
create_judgment_endpoint = None
create_review_endpoint = None
delete_comment_endpoint = None
edit_comment_endpoint = None
edit_review_endpoint = None
get_delete_comment_url(comment)
get_last_revision()
get_revisions()
get_save_comment_url(comment=None)
get_save_judgment_url()
get_save_review_url(group=None, review=None)
is_in_final_state
proposal_type = None
A unique identifier to handle rendering differences between proposal types
revisions_enabled = True
Whether there is support for multiple revisions per proposal or just one
class indico.modules.events.models.reviews.ProposalReviewMixin
Bases: object
Mixin for proposal reviews.
Classes that represent a review of a proposal should extend this class (ex: AbstractReview, PaperReview).
can_edit(user)
group
group_attr = None
Object used to group reviews together
group_proxy_cls
Proxy class to provide the necessary properties and methods to the review grouping object
alias of ProposalGroupProxy
revision

134 Chapter 7. API reference


Indico Documentation, Release 3.2-dev

revision_attr = None
The revision object that the review refers to
score
timeline_item_type = 'review'
A unique identifier to handle rendering differences between timeline items
class indico.modules.events.models.reviews.ProposalRevisionMixin
Bases: object
Properties and methods of a proposal revision.
get_reviewed_for_groups(user, include_reviewed=False)
get_reviewer_render_data(user)
get_reviews(group=None, user=None)
get_timeline(user=None)
proposal
proposal_attr = None
The attribute of the revision used to fetch the proposal object.
revisions_enabled = True
Whether the reviewing process supports multiple revisions per proposal. If set to false it is assumed that
the reviewing process supports only one revision per proposal.
class indico.modules.events.models.series.EventSeries(**kwargs)
Bases: sqlalchemy.orm.decl_api.Model
A series of events.
A simple constructor that allows initialization from kwargs.
Sets attributes on the constructed instance using the names and values in kwargs.
Only keys that are present as attributes of the instance’s class are allowed. These could be, for example, any
mapped columns or relationships.
id
The ID of the series
show_links
Whether to show links to the other events in the same series on the main event page.
show_sequence_in_title
Whether to show the sequence number of an event in its title on category display pages and on the main
event page.
class indico.modules.events.models.settings.EventSetting(**kwargs)
Bases: indico.core.settings.models.base.JSONSettingsBase, indico.modules.
events.models.settings.EventSettingsMixin, sqlalchemy.orm.decl_api.Model
A simple constructor that allows initialization from kwargs.
Sets attributes on the constructed instance using the names and values in kwargs.
Only keys that are present as attributes of the instance’s class are allowed. These could be, for example, any
mapped columns or relationships.
event
event_id

7.1. API reference 135


Indico Documentation, Release 3.2-dev

id
module
name
settings_backref_name = 'settings'
value
class indico.modules.events.models.settings.EventSettingPrincipal(**kwargs)
Bases: indico.core.settings.models.base.PrincipalSettingsBase, indico.
modules.events.models.settings.EventSettingsMixin, sqlalchemy.orm.decl_api.
Model
A simple constructor that allows initialization from kwargs.
Sets attributes on the constructed instance using the names and values in kwargs.
Only keys that are present as attributes of the instance’s class are allowed. These could be, for example, any
mapped columns or relationships.
allow_category_roles = True
allow_event_roles = True
category_role
category_role_id
email = None
event
event_id
event_role
event_role_id
extra_key_cols = ('event_id',)
id
ip_network_group = None
ip_network_group_id = None
local_group
local_group_id
module
multipass_group_name
multipass_group_provider
name
principal_backref_name = 'in_event_settings_acls'
registration_form = None
registration_form_id = None
settings_backref_name = 'settings_principals'
type

136 Chapter 7. API reference


Indico Documentation, Release 3.2-dev

user
user_id
class indico.modules.events.models.settings.EventSettingsMixin
Bases: object
event = <RelationshipProperty at 0x7f331f30b940; no key>
event_id = Column(None, Integer(), ForeignKey('events.events.id'), table=None, nullable
settings_backref_name = None
class indico.modules.events.models.static_list_links.StaticListLink(**kwargs)
Bases: sqlalchemy.orm.decl_api.Model
Display configuration data used in static links to listing pages.
This allows users to share links to listing pages in events while preserving e.g. column/filter configurations.
A simple constructor that allows initialization from kwargs.
Sets attributes on the constructed instance using the names and values in kwargs.
Only keys that are present as attributes of the instance’s class are allowed. These could be, for example, any
mapped columns or relationships.
classmethod create(event, type_, data)
Create a new static list link.
If one exists with the same data, that link is used instead of creating a new one.
Parameters
• event – the Event for which to create the link
• type – the type of the link
• data – the data to associate with the link
Returns the newly created StaticListLink
created_dt
data
event
event_id
id
last_used_dt
classmethod load(event, type_, uuid)
Load the data associated with a link.
Parameters
• event – the Event the link belongs to
• type – the type of the link
• uuid – the UUID of the link
Returns the link data or None if the link does not exist
type
uuid

7.1. API reference 137


Indico Documentation, Release 3.2-dev

Operations

indico.modules.events.operations.clone_event(event, n_occurrence, start_dt, cloners, cat-


egory=None, refresh_users=False)
Clone an event on a given date/time.
Runs all required cloners.
Parameters
• n_occurrence – The 1-indexed number of the occurrence, if this is a “recurring” clone,
otherwise 0
• start_dt – The start datetime of the new event;
• cloners – A set containing the names of all enabled cloners;
• category – The Category the new event will be created in.
Aparam refresh_users Whether EventPerson data should be updated from their linked User object
indico.modules.events.operations.clone_into_event(source_event, target_event, clon-
ers)
Clone data into an existing event.
Runs all required cloners.
Parameters
• source_event – The Event to clone data from;
• target_event – The Event to clone data into;
• cloners – A set containing the names of all enabled cloners.
indico.modules.events.operations.create_event(category, event_type, data,
add_creator_as_manager=True, fea-
tures=None, cloning=False)
Create a new event.
Parameters
• category – The category in which to create the event
• event_type – An EventType value
• data – A dict containing data used to populate the event
• add_creator_as_manager – Whether the creator (current user) should be added as a
manager
• features – A list of features that will be enabled for the event. If set, only those features
will be used and the default feature set for the event type will be ignored.
• cloning – Whether the event is created via cloning or not
indico.modules.events.operations.create_event_label(data)
indico.modules.events.operations.create_event_references(event, data)
indico.modules.events.operations.create_event_request(event, category, comment=”)
indico.modules.events.operations.create_reference_type(data)
indico.modules.events.operations.create_reviewing_question(event, ques-
tion_model,
wtf_field_cls, form,
data=None)

138 Chapter 7. API reference


Indico Documentation, Release 3.2-dev

indico.modules.events.operations.delete_event_label(event_label)
indico.modules.events.operations.delete_reference_type(reference_type)
indico.modules.events.operations.delete_reviewing_question(question)
indico.modules.events.operations.lock_event(event)
indico.modules.events.operations.sort_reviewing_questions(questions,
new_positions)
indico.modules.events.operations.unlock_event(event)
indico.modules.events.operations.update_event(event, update_timetable=False, **data)
indico.modules.events.operations.update_event_label(event_label, data)
indico.modules.events.operations.update_event_privacy(event, data)
indico.modules.events.operations.update_event_protection(event, data)
indico.modules.events.operations.update_event_type(event, type_)
indico.modules.events.operations.update_reference_type(reference_type, data)
indico.modules.events.operations.update_reviewing_question(question, form)

Utilities

class indico.modules.events.util.ListGeneratorBase(event, entry_parent=None)


Bases: object
Base class for classes performing actions on Indico object lists.
Parameters
• event – The associated Event
• entry_parent – The parent of the entries of the list. If it’s None, the parent is assumed
to be the event itself.
default_list_config = None
The default list configuration dictionary
endpoint = None
The endpoint of the list management page
entry_parent = None
The parent object of the list items
event = None
The event the list is associated with
flash_info_message(obj)
generate_static_url()
Return a URL with a uuid referring to the list’s configuration.
get_list_url(uuid=None, external=False)
Return the URL of the list management page.
list_link_type = None
Unique list identifier

7.1. API reference 139


Indico Documentation, Release 3.2-dev

static_items = None
Columns that originate from the list item’s properties, relationships etc, but not from user defined fields
(e.g. registration/contribution fields)
store_configuration()
Load the filters from the request and store them in the session.
class indico.modules.events.util.ZipGeneratorMixin
Bases: object
Mixin for RHs that generate zip with files.
indico.modules.events.util.check_event_locked(rh, event, force=False)
indico.modules.events.util.check_permissions(event, field, allow_networks=False)
indico.modules.events.util.create_event_logo_tmp_file(event, tmpdir=None)
Create a temporary file with the event’s logo.
If tmpdir is specified, the logo file is created in there and a path relative to that directory is returned.
indico.modules.events.util.get_all_user_roles(event, user)
indico.modules.events.util.get_event_from_url(url)
indico.modules.events.util.get_events_created_by(user, dt=None)
Get the IDs of events created by the user.
Parameters
• user – A User
• dt – Only include events taking place on/after that date
Returns A set of event ids
indico.modules.events.util.get_events_managed_by(user, dt=None)
Get the IDs of events where the user has management privs.
Parameters
• user – A User
• dt – Only include events taking place on/after that date
Returns A set of event ids
indico.modules.events.util.get_events_with_linked_event_persons(user,
dt=None)
Return a dict containing the event ids and role for all events where the user is a chairperson or (in case of a
lecture) speaker.
Parameters
• user – A User
• dt – Only include events taking place on/after that date
indico.modules.events.util.get_field_values(form_data)
Split the form fields between custom and static.
indico.modules.events.util.get_object_from_args(args=None)
Retrieve an event object from request arguments.
This utility is meant to be used in cases where the same controller can deal with objects attached to various parts
of an event which use different URLs to indicate which object to use.
Parameters args – The request arguments. If unspecified, request.view_args is used.

140 Chapter 7. API reference


Indico Documentation, Release 3.2-dev

Returns An (object_type, event, object) tuple. The event is always the Event asso-
ciated with the object. The object may be an Event, Session, Contribution or SubContribution.
If the object does not exist, (object_type, None, None) is returned.
indico.modules.events.util.get_random_color(event)
indico.modules.events.util.get_theme(event, override_theme_id=None)
Get the theme ID and whether it’s an override.
This is useful for places where a user may specify a different timetable theme. If the override theme is not valid
for the event, a message is flashed and an exception redirecting the user to the main event page is raised.
Raises BadRequest – if the override theme id is not valid
Returns a (theme_id, is_override) tuple
indico.modules.events.util.register_event_time_change(event)
Register a time-related change for an event.
This is an internal helper function used in the model to record changes of the start time or end time. The changes
are exposed through the track_time_changes contextmanager function.
indico.modules.events.util.register_location_change(entry)
Register a location-related change for an event object.
This is an internal helper function used in the models to record changes of the location information. The changes
are exposed through the track_location_changes contextmanager function.
indico.modules.events.util.register_time_change(entry)
Register a time-related change for a timetable entry.
This is an internal helper function used in the models to record changes of the start time or duration. The changes
are exposed through the track_time_changes contextmanager function.
indico.modules.events.util.serialize_event_for_ical(event)
indico.modules.events.util.serialize_event_for_json_ld(event, full=False)
indico.modules.events.util.serialize_person_for_json_ld(person)
indico.modules.events.util.set_custom_fields(obj, custom_fields_data)
indico.modules.events.util.should_show_draft_warning(event)
indico.modules.events.util.track_location_changes()
Track location changes of event objects.
This provides a list of changes while the context manager was active and also triggers location_changed signals.
If the code running inside the with block of this context manager raises an exception, no signals will be
triggered.
indico.modules.events.util.track_time_changes(auto_extend=False, user=None)
Track time changes of event objects.
This provides a list of changes while the context manager was active and also triggers times_changed signals.
If the code running inside the with block of this context manager raises an exception, no signals will be
triggered.
Parameters
• auto_extend – Whether entry parents will get their boundaries automatically extended or
not. Passing 'start' will extend only start datetime, 'end' to extend only end datetime.
• user – The User that will trigger time changes.

7.1. API reference 141


Indico Documentation, Release 3.2-dev

indico.modules.events.util.update_object_principals(obj, new_principals,
read_access=False,
full_access=False, permis-
sion=None)
Update an object’s ACL with a new list of principals.
Exactly one argument out of read_access, full_access and role must be specified.
Parameters
• obj – The object to update. Must have acl_entries
• new_principals – The set containing the new principals
• read_access – Whether the read access ACL should be updated
• full_access – Whether the full access ACL should be updated
• permission – The role ACL that should be updated

Settings

class indico.modules.events.settings.EventACLProxy(proxy)
Bases: indico.core.settings.proxy.ACLProxyBase
Proxy class for event-specific ACL settings.
add_principal(event, name, principal)
Add a principal to an ACL.
Parameters
• event – Event (or its ID)
• name – Setting name
• principal – A User or a GroupProxy
contains_user(event, name, user)
Check if a user is in an ACL.
To pass this check, the user can either be in the ACL itself or in a group in the ACL.
Parameters
• event – Event (or its ID)
• name – Setting name
• user – A User
get(event, name)
Retrieves an ACL setting
Parameters
• event – Event (or its ID)
• name – Setting name
merge_users(target, source)
Replace all ACL user entries for source with target.
remove_principal(event, name, principal)
Remove a principal from an ACL.

142 Chapter 7. API reference


Indico Documentation, Release 3.2-dev

Parameters
• event – Event (or its ID)
• name – Setting name
• principal – A User or a GroupProxy
set(event, name, acl)
Replace an ACL with a new one.
Parameters
• event – Event (or its ID)
• name – Setting name
• acl – A set containing principals (users/groups)
class indico.modules.events.settings.EventSettingProperty(proxy, name, de-
fault=<object object>,
attr=None)
Bases: indico.core.settings.proxy.SettingProperty
attr = 'event'
class indico.modules.events.settings.EventSettingsProxy(module, defaults=None,
strict=True, acls=None,
converters=None)
Bases: indico.core.settings.proxy.SettingsProxyBase
Proxy class to access event-specific settings for a certain module.
acl_proxy_class
alias of EventACLProxy
delete(event, *names)
Delete settings.
Parameters
• event – Event (or its ID)
• names – One or more names of settings to delete
delete_all(event)
Delete all settings.
Parameters event – Event (or its ID)
get(event, name, default=<object object>)
Retrieve the value of a single setting.
Parameters
• event – Event (or its ID)
• name – Setting name
• default – Default value in case the setting does not exist
Returns The settings’s value or the default value
get_all(event, no_defaults=False)
Retrieve all settings.
Parameters

7.1. API reference 143


Indico Documentation, Release 3.2-dev

• event – Event (or its ID)


• no_defaults – Only return existing settings and ignore defaults.
Returns Dict containing the settings
query
Return a query object filtering by the proxy’s module.
set(event, name, value)
Set a single setting.
Parameters
• event – Event (or its ID)
• name – Setting name
• value – Setting value; must be JSON-serializable
set_multi(event, items)
Set multiple settings at once.
Parameters
• event – Event (or its ID)
• items – Dict containing the new settings
class indico.modules.events.settings.ThemeSettingsProxy
Bases: object
defaults
get_themes_for(event_type)
settings
themes
indico.modules.events.settings.event_or_id(f )

7.1.2 Abstract

Todo: Docstrings (module, models, operations, utilities, settings)

Models

class indico.modules.events.abstracts.models.abstracts.Abstract(**kwargs)
Bases: indico.modules.events.models.reviews.ProposalMixin, indico.modules.
events.models.reviews.ProposalRevisionMixin, indico.core.db.sqlalchemy.
descriptions.DescriptionMixin, indico.modules.events.contributions.models.
contributions.CustomFieldsMixin, indico.modules.events.models.persons.
AuthorsSpeakersMixin, sqlalchemy.orm.decl_api.Model
An abstract that can be associated to a Contribution.
A simple constructor that allows initialization from kwargs.
Sets attributes on the constructed instance using the names and values in kwargs.

144 Chapter 7. API reference


Indico Documentation, Release 3.2-dev

Only keys that are present as attributes of the instance’s class are allowed. These could be, for example, any
mapped columns or relationships.
AUTHORS_SPEAKERS_DISPLAY_ORDER_ATTR = 'display_order_key_lastname'
accepted_contrib_type
accepted_contrib_type_id
accepted_track
accepted_track_id
call_for_proposals_attr = 'cfa'
can_access(user)
can_change_tracks(user, check_state=False)
can_comment(user, check_state=False)
can_convene(user)
can_edit(user)
can_judge(user, check_state=False)
can_review(user, check_state=False)
can_see_reviews(user)
can_withdraw(user, check_state=False)
candidate_contrib_types
candidate_tracks
create_comment_endpoint = 'abstracts.comment_abstract'
create_judgment_endpoint = 'abstracts.judge_abstract'
create_review_endpoint = 'abstracts.review_abstract'
data_by_field
default_render_mode = 2
delete_comment_endpoint = 'abstracts.delete_abstract_comment'
duplicate_of
duplicate_of_id
edit_comment_endpoint = 'abstracts.edit_abstract_comment'
edit_review_endpoint = 'abstracts.edit_review'
edit_track_mode
event
event_id
field_values
Data stored in abstract/contribution fields
friendly_id
get_reviewed_for_groups(user, include_reviewed=False)
get_timeline(user=None)

7.1. API reference 145


Indico Documentation, Release 3.2-dev

get_track_question_scores()
get_track_reviewing_state(track)
get_track_score(track)
id
is_deleted
is_in_final_state
judge
User who judged the abstract
judge_id
ID of the user who judged the abstract
judgment_comment
judgment_dt
locator
Define a smart locator property.
This behaves pretty much like a normal read-only property and the decorated function should return a dict
containing the necessary data to build a URL for the object.
This decorator should usually be applied to a method named locator as this name is required for
get_locator to find it automatically when just passing the object.
If you need more than one locator, you can define it like this:

@locator_property
def locator(self):
return {...}

@locator.other
def locator(self):
return {...}

The other locator can then be accessed by passing obj.locator.other to the code expecting an
object with a locator.
log(*args, **kwargs)
Log with prefilled metadata for the abstract.
marshmallow_aliases = {'_description': 'content'}
merged_into
merged_into_id
modification_ended
modified_by
modified_by_id
modified_dt
person_links
Persons associated with this abstract
possible_render_modes = {<RenderMode.markdown: 2>}
proposal_type = 'abstract'

146 Chapter 7. API reference


Indico Documentation, Release 3.2-dev

public_state
render_mode = 2
reset_state()
reviewed_for_tracks
reviewing_state
revisions_enabled = False
score
state
submission_comment
submitted_contrib_type
submitted_contrib_type_id
submitted_dt
submitted_for_tracks
submitter
User who submitted the abstract
submitter_id
ID of the user who submitted the abstract
title
user_owns(user)
uuid
verbose_title
class indico.modules.events.abstracts.models.abstracts.AbstractPublicState
Bases: indico.util.enum.RichIntEnum
An enumeration.
accepted = 3
awaiting = -1
duplicate = 6
invited = 7
merged = 5
rejected = 4
under_review = -2
withdrawn = 2
class indico.modules.events.abstracts.models.abstracts.AbstractReviewingState
Bases: indico.util.enum.RichIntEnum
An enumeration.
conflicting = 3
in_progress = 1

7.1. API reference 147


Indico Documentation, Release 3.2-dev

mixed = 5
negative = 4
not_started = 0
positive = 2
class indico.modules.events.abstracts.models.abstracts.AbstractState
Bases: indico.util.enum.RichIntEnum
An enumeration.
accepted = 3
duplicate = 6
invited = 7
merged = 5
rejected = 4
submitted = 1
withdrawn = 2
class indico.modules.events.abstracts.models.abstracts.EditTrackMode
Bases: int, indico.util.enum.IndicoEnum
An enumeration.
both = 1
none = 0
reviewed_for = 2
class indico.modules.events.abstracts.models.call_for_abstracts.CallForAbstracts(event)
Bases: object
Proxy class to facilitate access to the call for abstracts settings.
allow_attachments
allow_comments
allow_contributors_in_comments
allow_convener_judgment
allow_convener_track_change
allow_editing
announcement
can_edit_abstracts(user)
can_submit_abstracts(user)
close()
contribution_submitters
end_dt
has_ended
has_started

148 Chapter 7. API reference


Indico Documentation, Release 3.2-dev

is_open
is_scheduled
judgment_instructions
modification_end_dt
modification_ended
open()
rating_range
reviewing_instructions
schedule(start_dt, end_dt, modification_end_dt)
start_dt
submission_instructions
class indico.modules.events.abstracts.models.comments.AbstractComment(**kwargs)
Bases: indico.modules.events.models.reviews.ProposalCommentMixin, indico.
core.db.sqlalchemy.review_comments.ReviewCommentMixin, sqlalchemy.orm.
decl_api.Model
A simple constructor that allows initialization from kwargs.
Sets attributes on the constructed instance using the names and values in kwargs.
Only keys that are present as attributes of the instance’s class are allowed. These could be, for example, any
mapped columns or relationships.
abstract
abstract_id
can_edit(user)
can_view(user)
created_dt
id
is_deleted
locator
Define a smart locator property.
This behaves pretty much like a normal read-only property and the decorated function should return a dict
containing the necessary data to build a URL for the object.
This decorator should usually be applied to a method named locator as this name is required for
get_locator to find it automatically when just passing the object.
If you need more than one locator, you can define it like this:

@locator_property
def locator(self):
return {...}

@locator.other
def locator(self):
return {...}

7.1. API reference 149


Indico Documentation, Release 3.2-dev

The other locator can then be accessed by passing obj.locator.other to the code expecting an
object with a locator.
marshmallow_aliases = {'_text': 'text'}
modified_by
modified_by_id
modified_dt
render_mode = 2
user
user_backref_name = 'abstract_comments'
user_id
user_modified_backref_name = 'modified_abstract_comments'
visibility
class indico.modules.events.abstracts.models.email_logs.AbstractEmailLogEntry(**kwargs)
Bases: sqlalchemy.orm.decl_api.Model
A simple constructor that allows initialization from kwargs.
Sets attributes on the constructed instance using the names and values in kwargs.
Only keys that are present as attributes of the instance’s class are allowed. These could be, for example, any
mapped columns or relationships.
abstract
abstract_id
body
classmethod create_from_email(email_data, email_tpl, user=None)
Create a new log entry from the data used to send an email.
Parameters
• email_data – email data as returned from make_email
• email_tpl – the abstract email template that created the email
• user – the user who performed the action causing the notification
data
email_template
email_template_id
id
recipients
sent_dt
subject
user
user_id

150 Chapter 7. API reference


Indico Documentation, Release 3.2-dev

class indico.modules.events.abstracts.models.email_templates.AbstractEmailTemplate(**kwargs)
Bases: sqlalchemy.orm.decl_api.Model
An email template for abstracts notifications.
A simple constructor that allows initialization from kwargs.
Sets attributes on the constructed instance using the names and values in kwargs.
Only keys that are present as attributes of the instance’s class are allowed. These could be, for example, any
mapped columns or relationships.
body
The body of the template
event
event_id
extra_cc_emails
List of extra email addresses to be added as CC in the email
id
include_authors
Whether to include authors’ email addresses as To for emails
include_coauthors
Whether to include co-authors’ email addresses as CC for emails
include_submitter
Whether to include the submitter’s email address as To for emails
locator
Define a smart locator property.
This behaves pretty much like a normal read-only property and the decorated function should return a dict
containing the necessary data to build a URL for the object.
This decorator should usually be applied to a method named locator as this name is required for
get_locator to find it automatically when just passing the object.
If you need more than one locator, you can define it like this:

@locator_property
def locator(self):
return {...}

@locator.other
def locator(self):
return {...}

The other locator can then be accessed by passing obj.locator.other to the code expecting an
object with a locator.
position
The relative position of the template in the list of templates
reply_to_address
The address to use as Reply-To in the email
rules
Conditions need to be met to send the email

7.1. API reference 151


Indico Documentation, Release 3.2-dev

stop_on_match
Whether to stop checking the rest of the conditions when a match is found
subject
The subject of the email
title
class indico.modules.events.abstracts.models.fields.AbstractFieldValue(**kwargs)
Bases: indico.modules.events.contributions.models.fields.
ContributionFieldValueBase
Store a field values related to abstracts.
A simple constructor that allows initialization from kwargs.
Sets attributes on the constructed instance using the names and values in kwargs.
Only keys that are present as attributes of the instance’s class are allowed. These could be, for example, any
mapped columns or relationships.
abstract_id
contribution_field
contribution_field_backref_name = 'abstract_values'
contribution_field_id
data
class indico.modules.events.abstracts.models.files.AbstractFile(**kwargs)
Bases: indico.core.storage.models.StoredFileMixin, sqlalchemy.orm.decl_api.
Model
A simple constructor that allows initialization from kwargs.
Sets attributes on the constructed instance using the names and values in kwargs.
Only keys that are present as attributes of the instance’s class are allowed. These could be, for example, any
mapped columns or relationships.
abstract
abstract_id
add_file_date_column = False
content_type
The MIME type of the file.
created_dt = None
extension
The extension of the file.
filename
The name of the file.
id
locator
md5
An MD5 hash of the file.
Automatically assigned when save() is called.

152 Chapter 7. API reference


Indico Documentation, Release 3.2-dev

size
The size of the file (in bytes).
Automatically assigned when save() is called.
storage_backend
storage_file_id
class indico.modules.events.abstracts.models.persons.AbstractPersonLink(*args,
**kwargs)
Bases: indico.modules.events.models.persons.PersonLinkBase
Association between EventPerson and Abstract.
abstract_id
author_type
display_order
id
is_speaker
locator
Define a smart locator property.
This behaves pretty much like a normal read-only property and the decorated function should return a dict
containing the necessary data to build a URL for the object.
This decorator should usually be applied to a method named locator as this name is required for
get_locator to find it automatically when just passing the object.
If you need more than one locator, you can define it like this:

@locator_property
def locator(self):
return {...}

@locator.other
def locator(self):
return {...}

The other locator can then be accessed by passing obj.locator.other to the code expecting an
object with a locator.
object_relationship_name = 'abstract'
person
person_id
person_link_backref_name = 'abstract_links'
person_link_unique_columns = ('abstract_id',)
class indico.modules.events.abstracts.models.review_questions.AbstractReviewQuestion(**kwarg
Bases: indico.core.db.sqlalchemy.review_questions.ReviewQuestionMixin,
sqlalchemy.orm.decl_api.Model
A simple constructor that allows initialization from kwargs.
Sets attributes on the constructed instance using the names and values in kwargs.

7.1. API reference 153


Indico Documentation, Release 3.2-dev

Only keys that are present as attributes of the instance’s class are allowed. These could be, for example, any
mapped columns or relationships.
description
event
event_backref_name = 'abstract_review_questions'
event_id
field
field_data
field_type
id
is_deleted
is_required
locator
Define a smart locator property.
This behaves pretty much like a normal read-only property and the decorated function should return a dict
containing the necessary data to build a URL for the object.
This decorator should usually be applied to a method named locator as this name is required for
get_locator to find it automatically when just passing the object.
If you need more than one locator, you can define it like this:

@locator_property
def locator(self):
return {...}

@locator.other
def locator(self):
return {...}

The other locator can then be accessed by passing obj.locator.other to the code expecting an
object with a locator.
position
title
class indico.modules.events.abstracts.models.review_ratings.AbstractReviewRating(**kwargs)
Bases: indico.core.db.sqlalchemy.review_ratings.ReviewRatingMixin,
sqlalchemy.orm.decl_api.Model
A simple constructor that allows initialization from kwargs.
Sets attributes on the constructed instance using the names and values in kwargs.
Only keys that are present as attributes of the instance’s class are allowed. These could be, for example, any
mapped columns or relationships.
id
question

154 Chapter 7. API reference


Indico Documentation, Release 3.2-dev

question_class
alias of indico.modules.events.abstracts.models.review_questions.
AbstractReviewQuestion
question_id
review
review_class
alias of indico.modules.events.abstracts.models.reviews.AbstractReview
review_id
value
class indico.modules.events.abstracts.models.reviews.AbstractAction
Bases: indico.util.enum.RichIntEnum
An enumeration.
accept = 1
change_tracks = 3
mark_as_duplicate = 4
merge = 5
reject = 2
class indico.modules.events.abstracts.models.reviews.AbstractCommentVisibility
Bases: indico.util.enum.RichIntEnum
Most to least restrictive visibility for abstract comments.
contributors = 4
conveners = 2
judges = 1
reviewers = 3
users = 5
class indico.modules.events.abstracts.models.reviews.AbstractReview(**kwargs)
Bases: indico.modules.events.models.reviews.ProposalReviewMixin, indico.core.
db.sqlalchemy.descriptions.RenderModeMixin, sqlalchemy.orm.decl_api.Model
An abstract review, emitted by a reviewer.
A simple constructor that allows initialization from kwargs.
Sets attributes on the constructed instance using the names and values in kwargs.
Only keys that are present as attributes of the instance’s class are allowed. These could be, for example, any
mapped columns or relationships.
abstract
abstract_id
can_edit(user, check_state=False)
can_view(user)
comment
created_dt

7.1. API reference 155


Indico Documentation, Release 3.2-dev

default_render_mode = 2
group_attr = 'track'
id
locator
Define a smart locator property.
This behaves pretty much like a normal read-only property and the decorated function should return a dict
containing the necessary data to build a URL for the object.
This decorator should usually be applied to a method named locator as this name is required for
get_locator to find it automatically when just passing the object.
If you need more than one locator, you can define it like this:

@locator_property
def locator(self):
return {...}

@locator.other
def locator(self):
return {...}

The other locator can then be accessed by passing obj.locator.other to the code expecting an
object with a locator.
marshmallow_aliases = {'_comment': 'comment'}
modified_dt
possible_render_modes = {<RenderMode.markdown: 2>}
proposed_action
proposed_contribution_type
proposed_contribution_type_id
proposed_related_abstract
proposed_related_abstract_id
proposed_tracks
render_mode = 2
revision_attr = 'abstract'
score
track
track_id
user
user_id
visibility

156 Chapter 7. API reference


Indico Documentation, Release 3.2-dev

Operations

indico.modules.events.abstracts.operations.add_abstract_files(abstract, files,
log_action=True)
indico.modules.events.abstracts.operations.close_cfa(event)
indico.modules.events.abstracts.operations.create_abstract(event, ab-
stract_data, cus-
tom_fields_data=None,
send_notifications=False,
submitter=None,
is_invited=False)
indico.modules.events.abstracts.operations.create_abstract_comment(abstract,
com-
ment_data)
indico.modules.events.abstracts.operations.create_abstract_review(abstract,
track,
user, re-
view_data,
ques-
tions_data)
indico.modules.events.abstracts.operations.delete_abstract(abstract,
delete_contrib=False)
indico.modules.events.abstracts.operations.delete_abstract_comment(comment)
indico.modules.events.abstracts.operations.delete_abstract_files(abstract,
files)
indico.modules.events.abstracts.operations.judge_abstract(abstract, abstract_data,
judgment, judge, con-
trib_session=None,
merge_persons=False,
send_notifications=False)
indico.modules.events.abstracts.operations.open_cfa(event)
indico.modules.events.abstracts.operations.reset_abstract_state(abstract)
indico.modules.events.abstracts.operations.schedule_cfa(event, start_dt, end_dt,
modification_end_dt)
indico.modules.events.abstracts.operations.update_abstract(abstract, ab-
stract_data, cus-
tom_fields_data=None)
indico.modules.events.abstracts.operations.update_abstract_comment(comment,
com-
ment_data)
indico.modules.events.abstracts.operations.update_abstract_review(review, re-
view_data,
ques-
tions_data)
indico.modules.events.abstracts.operations.update_reviewed_for_tracks(abstract,
tracks)
indico.modules.events.abstracts.operations.withdraw_abstract(abstract)

7.1. API reference 157


Indico Documentation, Release 3.2-dev

Utilities

indico.modules.events.abstracts.util.build_default_email_template(event,
tpl_type)
Build a default e-mail template based on a notification type provided by the user.
indico.modules.events.abstracts.util.can_create_invited_abstracts(event)
indico.modules.events.abstracts.util.clear_boa_cache(event)
Delete the cached book of abstract.
indico.modules.events.abstracts.util.create_boa(event)
Create the book of abstracts if necessary.
Returns The path to the PDF file
indico.modules.events.abstracts.util.create_boa_tex(event)
Create the book of abstracts as a LaTeX archive.
Returns A BytesIO containing the zip file.
indico.modules.events.abstracts.util.create_mock_abstract(event)
Create a mock abstract that can be used in previews.
Brace for geek references.
indico.modules.events.abstracts.util.filter_field_values(fields, can_manage,
owns_abstract)
indico.modules.events.abstracts.util.generate_spreadsheet_from_abstracts(abstracts,
static_item_ids,
dy-
namic_items)
Generate a spreadsheet data from a given abstract list.
Parameters
• abstracts – The list of abstracts to include in the file
• static_item_ids – The abstract properties to be used as columns
• dynamic_items – Contribution fields as extra columns
indico.modules.events.abstracts.util.get_events_with_abstract_persons(user,
dt=None)
Return a dict of event ids and the abstract submission related roles the user has in that event.
Parameters
• user – A User
• dt – Only include events taking place on/after that date
indico.modules.events.abstracts.util.get_events_with_abstract_reviewer_convener(user,
dt=None)
Return a dict of event ids and the abstract reviewing related roles the user has in that event.
Parameters
• user – A User
• dt – Only include events taking place on/after that date
indico.modules.events.abstracts.util.get_track_reviewer_abstract_counts(event,
user)
Get the numbers of abstracts per track for a specific user.

158 Chapter 7. API reference


Indico Documentation, Release 3.2-dev

Note that this does not take into account if the user is a reviewer for a track; it just checks whether the user has
reviewed an abstract in a track or not.
Returns A dict mapping tracks to dicts containing the counts.
indico.modules.events.abstracts.util.get_user_abstracts(event, user)
Get the list of abstracts where the user is a reviewer/convener.
indico.modules.events.abstracts.util.get_user_tracks(event, user)
Get the list of tracks where the user is a reviewer/convener.
indico.modules.events.abstracts.util.get_visible_reviewed_for_tracks(abstract,
user)
indico.modules.events.abstracts.util.has_user_tracks(event, user)
indico.modules.events.abstracts.util.make_abstract_form(event, user, notifica-
tion_option=False,
management=False,
invited=False)
Extend the abstract WTForm to add the extra fields.
Each extra field will use a field named custom_ID.
Parameters
• event – The Event for which to create the abstract form.
• user – The user who is going to use the form.
• notification_option – Whether to add a field to the form to disable triggering noti-
fications for the abstract submission.
• management – Whether the form is used in the management area
• invited – Whether the form is used to create an invited abstract
Returns An AbstractForm subclass.

Placeholders

class indico.modules.events.abstracts.placeholders.EventTitlePlaceholder
Bases: indico.util.placeholders.Placeholder
description = l'The title of the event'
name = 'event_title'
classmethod render(abstract)
Convert the placeholder to a string.
When a placeholder contains HTML that should not be escaped, the returned value should be returned as
a markupsafe.Markup instance instead of a plain string.
Subclasses are encouraged to explicitly specify the arguments they expect instead of using **kwargs.
Parameters kwargs – arguments specific to the placeholder’s context
class indico.modules.events.abstracts.placeholders.EventURLPlaceholder
Bases: indico.util.placeholders.Placeholder
description = l'The URL of the event'
name = 'event_url'

7.1. API reference 159


Indico Documentation, Release 3.2-dev

classmethod render(abstract)
Convert the placeholder to a string.
When a placeholder contains HTML that should not be escaped, the returned value should be returned as
a markupsafe.Markup instance instead of a plain string.
Subclasses are encouraged to explicitly specify the arguments they expect instead of using **kwargs.
Parameters kwargs – arguments specific to the placeholder’s context
class indico.modules.events.abstracts.placeholders.AbstractIDPlaceholder
Bases: indico.util.placeholders.Placeholder
description = l'The ID of the abstract'
name = 'abstract_id'
classmethod render(abstract)
Convert the placeholder to a string.
When a placeholder contains HTML that should not be escaped, the returned value should be returned as
a markupsafe.Markup instance instead of a plain string.
Subclasses are encouraged to explicitly specify the arguments they expect instead of using **kwargs.
Parameters kwargs – arguments specific to the placeholder’s context
class indico.modules.events.abstracts.placeholders.AbstractTitlePlaceholder
Bases: indico.util.placeholders.Placeholder
description = l'The title of the abstract'
name = 'abstract_title'
classmethod render(abstract)
Convert the placeholder to a string.
When a placeholder contains HTML that should not be escaped, the returned value should be returned as
a markupsafe.Markup instance instead of a plain string.
Subclasses are encouraged to explicitly specify the arguments they expect instead of using **kwargs.
Parameters kwargs – arguments specific to the placeholder’s context
class indico.modules.events.abstracts.placeholders.AbstractURLPlaceholder
Bases: indico.util.placeholders.Placeholder
advanced = True
description = l'The direct URL of the abstract'
name = 'abstract_url'
classmethod render(abstract)
Convert the placeholder to a string.
When a placeholder contains HTML that should not be escaped, the returned value should be returned as
a markupsafe.Markup instance instead of a plain string.
Subclasses are encouraged to explicitly specify the arguments they expect instead of using **kwargs.
Parameters kwargs – arguments specific to the placeholder’s context
class indico.modules.events.abstracts.placeholders.AbstractInvitationURLPlaceholder
Bases: indico.util.placeholders.Placeholder
description = l'The link to submit an invited abstract'

160 Chapter 7. API reference


Indico Documentation, Release 3.2-dev

name = 'invitation_url'
classmethod render(abstract)
Convert the placeholder to a string.
When a placeholder contains HTML that should not be escaped, the returned value should be returned as
a markupsafe.Markup instance instead of a plain string.
Subclasses are encouraged to explicitly specify the arguments they expect instead of using **kwargs.
Parameters kwargs – arguments specific to the placeholder’s context
class indico.modules.events.abstracts.placeholders.AbstractTrackPlaceholder
Bases: indico.util.placeholders.Placeholder
description = l'The name of the destination track'
name = 'abstract_track'
classmethod render(abstract)
Convert the placeholder to a string.
When a placeholder contains HTML that should not be escaped, the returned value should be returned as
a markupsafe.Markup instance instead of a plain string.
Subclasses are encouraged to explicitly specify the arguments they expect instead of using **kwargs.
Parameters kwargs – arguments specific to the placeholder’s context
class indico.modules.events.abstracts.placeholders.AbstractSessionPlaceholder
Bases: indico.util.placeholders.Placeholder
description = l'The name of the destination session'
name = 'abstract_session'
classmethod render(abstract)
Convert the placeholder to a string.
When a placeholder contains HTML that should not be escaped, the returned value should be returned as
a markupsafe.Markup instance instead of a plain string.
Subclasses are encouraged to explicitly specify the arguments they expect instead of using **kwargs.
Parameters kwargs – arguments specific to the placeholder’s context
class indico.modules.events.abstracts.placeholders.PrimaryAuthorsPlaceholder
Bases: indico.util.placeholders.Placeholder
description = l'The names of the primary authors (separated by commas)'
name = 'primary_authors'
classmethod render(abstract)
Convert the placeholder to a string.
When a placeholder contains HTML that should not be escaped, the returned value should be returned as
a markupsafe.Markup instance instead of a plain string.
Subclasses are encouraged to explicitly specify the arguments they expect instead of using **kwargs.
Parameters kwargs – arguments specific to the placeholder’s context
class indico.modules.events.abstracts.placeholders.CoAuthorsPlaceholder
Bases: indico.util.placeholders.Placeholder
description = l'The names of the co-authors (separated by commas)'

7.1. API reference 161


Indico Documentation, Release 3.2-dev

name = 'co_authors'
classmethod render(abstract)
Convert the placeholder to a string.
When a placeholder contains HTML that should not be escaped, the returned value should be returned as
a markupsafe.Markup instance instead of a plain string.
Subclasses are encouraged to explicitly specify the arguments they expect instead of using **kwargs.
Parameters kwargs – arguments specific to the placeholder’s context
class indico.modules.events.abstracts.placeholders.SubmitterNamePlaceholder
Bases: indico.util.placeholders.Placeholder
description = l'The full name of the submitter, no title'
name = 'submitter_name'
classmethod render(abstract)
Convert the placeholder to a string.
When a placeholder contains HTML that should not be escaped, the returned value should be returned as
a markupsafe.Markup instance instead of a plain string.
Subclasses are encouraged to explicitly specify the arguments they expect instead of using **kwargs.
Parameters kwargs – arguments specific to the placeholder’s context
class indico.modules.events.abstracts.placeholders.SubmitterFirstNamePlaceholder
Bases: indico.util.placeholders.Placeholder
advanced = True
description = l'The first name of the submitter'
name = 'submitter_first_name'
classmethod render(abstract)
Convert the placeholder to a string.
When a placeholder contains HTML that should not be escaped, the returned value should be returned as
a markupsafe.Markup instance instead of a plain string.
Subclasses are encouraged to explicitly specify the arguments they expect instead of using **kwargs.
Parameters kwargs – arguments specific to the placeholder’s context
class indico.modules.events.abstracts.placeholders.SubmitterLastNamePlaceholder
Bases: indico.util.placeholders.Placeholder
advanced = True
description = l'The last name of the submitter'
name = 'submitter_last_name'
classmethod render(abstract)
Convert the placeholder to a string.
When a placeholder contains HTML that should not be escaped, the returned value should be returned as
a markupsafe.Markup instance instead of a plain string.
Subclasses are encouraged to explicitly specify the arguments they expect instead of using **kwargs.
Parameters kwargs – arguments specific to the placeholder’s context

162 Chapter 7. API reference


Indico Documentation, Release 3.2-dev

class indico.modules.events.abstracts.placeholders.SubmitterTitlePlaceholder
Bases: indico.util.placeholders.Placeholder
description = l'The title of the submitter (Dr, Prof., etc...)'
name = 'submitter_title'
classmethod render(abstract)
Convert the placeholder to a string.
When a placeholder contains HTML that should not be escaped, the returned value should be returned as
a markupsafe.Markup instance instead of a plain string.
Subclasses are encouraged to explicitly specify the arguments they expect instead of using **kwargs.
Parameters kwargs – arguments specific to the placeholder’s context
class indico.modules.events.abstracts.placeholders.TargetAbstractIDPlaceholder
Bases: indico.util.placeholders.Placeholder
description = l'The ID of the target abstract (merge or duplicate)'
name = 'target_abstract_id'
classmethod render(abstract)
Convert the placeholder to a string.
When a placeholder contains HTML that should not be escaped, the returned value should be returned as
a markupsafe.Markup instance instead of a plain string.
Subclasses are encouraged to explicitly specify the arguments they expect instead of using **kwargs.
Parameters kwargs – arguments specific to the placeholder’s context
class indico.modules.events.abstracts.placeholders.TargetAbstractTitlePlaceholder
Bases: indico.util.placeholders.Placeholder
description = l'The title of the target abstract (merge or duplicate)'
name = 'target_abstract_title'
classmethod render(abstract)
Convert the placeholder to a string.
When a placeholder contains HTML that should not be escaped, the returned value should be returned as
a markupsafe.Markup instance instead of a plain string.
Subclasses are encouraged to explicitly specify the arguments they expect instead of using **kwargs.
Parameters kwargs – arguments specific to the placeholder’s context
class indico.modules.events.abstracts.placeholders.TargetSubmitterNamePlaceholder
Bases: indico.util.placeholders.Placeholder
advanced = True
description = l"The full name of the target abstract's submitter, no title (merge or du
name = 'target_submitter_name'
classmethod render(abstract)
Convert the placeholder to a string.
When a placeholder contains HTML that should not be escaped, the returned value should be returned as
a markupsafe.Markup instance instead of a plain string.
Subclasses are encouraged to explicitly specify the arguments they expect instead of using **kwargs.

7.1. API reference 163


Indico Documentation, Release 3.2-dev

Parameters kwargs – arguments specific to the placeholder’s context


class indico.modules.events.abstracts.placeholders.TargetSubmitterFirstNamePlaceholder
Bases: indico.util.placeholders.Placeholder
advanced = True
description = l"The first name of the target abstract's submitter (merge or duplicate)"
name = 'target_submitter_first_name'
classmethod render(abstract)
Convert the placeholder to a string.
When a placeholder contains HTML that should not be escaped, the returned value should be returned as
a markupsafe.Markup instance instead of a plain string.
Subclasses are encouraged to explicitly specify the arguments they expect instead of using **kwargs.
Parameters kwargs – arguments specific to the placeholder’s context
class indico.modules.events.abstracts.placeholders.TargetSubmitterLastNamePlaceholder
Bases: indico.util.placeholders.Placeholder
advanced = True
description = l"The last name of the target abstract's submitter (merge or duplicate)"
name = 'target_submitter_last_name'
classmethod render(abstract)
Convert the placeholder to a string.
When a placeholder contains HTML that should not be escaped, the returned value should be returned as
a markupsafe.Markup instance instead of a plain string.
Subclasses are encouraged to explicitly specify the arguments they expect instead of using **kwargs.
Parameters kwargs – arguments specific to the placeholder’s context
class indico.modules.events.abstracts.placeholders.JudgmentCommentPlaceholder
Bases: indico.util.placeholders.Placeholder
description = l'Comments written by event organizer (upon final decision)'
name = 'judgment_comment'
classmethod render(abstract)
Convert the placeholder to a string.
When a placeholder contains HTML that should not be escaped, the returned value should be returned as
a markupsafe.Markup instance instead of a plain string.
Subclasses are encouraged to explicitly specify the arguments they expect instead of using **kwargs.
Parameters kwargs – arguments specific to the placeholder’s context
class indico.modules.events.abstracts.placeholders.ContributionTypePlaceholder
Bases: indico.util.placeholders.Placeholder
description = l'The contribution type that is associated to the abstract'
name = 'contribution_type'
classmethod render(abstract)
Convert the placeholder to a string.

164 Chapter 7. API reference


Indico Documentation, Release 3.2-dev

When a placeholder contains HTML that should not be escaped, the returned value should be returned as
a markupsafe.Markup instance instead of a plain string.
Subclasses are encouraged to explicitly specify the arguments they expect instead of using **kwargs.
Parameters kwargs – arguments specific to the placeholder’s context
class indico.modules.events.abstracts.placeholders.ContributionURLPlaceholder
Bases: indico.util.placeholders.Placeholder
advanced = True
description = l'Contribution URL'
name = 'contribution_url'
classmethod render(abstract)
Convert the placeholder to a string.
When a placeholder contains HTML that should not be escaped, the returned value should be returned as
a markupsafe.Markup instance instead of a plain string.
Subclasses are encouraged to explicitly specify the arguments they expect instead of using **kwargs.
Parameters kwargs – arguments specific to the placeholder’s context

Settings

class indico.modules.events.abstracts.settings.AllowEditingType
Bases: indico.util.enum.RichEnum
An enumeration.
submitter = 'submitter'
submitter_all = 'submitter_all'
submitter_authors = 'submitter_authors'
submitter_primary = 'submitter_primary'
class indico.modules.events.abstracts.settings.BOACorrespondingAuthorType
Bases: indico.util.enum.RichEnum
An enumeration.
none = 'none'
speakers = 'speakers'
submitter = 'submitter'
class indico.modules.events.abstracts.settings.BOALinkFormat
Bases: indico.util.enum.RichEnum
LaTeX book of abstracts link format setting.
value is a 2-tuple of strings: first is the hyperref option to use second sets additional tex commands
colorlinks = ('[colorlinks]', '')
frame = ('', '')
unstyled = ('[hidelinks]', '')

7.1. API reference 165


Indico Documentation, Release 3.2-dev

class indico.modules.events.abstracts.settings.BOASortField
Bases: indico.util.enum.RichEnum
An enumeration.
abstract_title = 'title'
board_number = 'board_number'
id = 'id'
schedule = 'schedule'
schedule_board_number = 'schedule_board_number'
session_board_number = 'session_board_number'
session_schedule_board = 'session_schedule_board'
session_title = 'session_title'
speaker = 'speaker'
class indico.modules.events.abstracts.settings.SubmissionRightsType
Bases: indico.util.enum.RichEnum
An enumeration.
all = 'all'
speakers = 'speakers'

7.1.3 Agreement

Todo: Docstrings (module, models, utilities)

Models

class indico.modules.events.agreements.models.agreements.Agreement(**kwargs)
Bases: sqlalchemy.orm.decl_api.Model
Agreements between a person and Indico.
A simple constructor that allows initialization from kwargs.
Sets attributes on the constructed instance using the names and values in kwargs.
Only keys that are present as attributes of the instance’s class are allowed. These could be, for example, any
mapped columns or relationships.
accept(from_ip, reason=None, on_behalf=False)
accepted
attachment
Attachment
attachment_filename
Filename and extension of the attachment
belongs_to(person)

166 Chapter 7. API reference


Indico Documentation, Release 3.2-dev

static create_from_data(event, type_, person)


data
Definition-specific data of the agreement
definition
event
The Event this agreement is associated with
event_id
ID of the event
id
Entry ID
identifier
Unique identifier within the event and type
is_orphan()
locator
pending
person_email
Email of the person agreeing
person_name
Full name of the person agreeing
reason
Explanation as to why the agreement was accepted/rejected
reject(from_ip, reason=None, on_behalf=False)
rejected
render(form, **kwargs)
reset()
signed_dt
The date and time the agreement was signed
signed_from_ip
The IP from which the agreement was signed
signed_on_behalf
state
A AgreementState
timestamp
The date and time the agreement was created
type
Type of agreement
user
The user this agreement is linked to
user_id
ID of a linked user

7.1. API reference 167


Indico Documentation, Release 3.2-dev

uuid
Entry universally unique ID
class indico.modules.events.agreements.models.agreements.AgreementState
Bases: indico.util.enum.RichIntEnum
An enumeration.
accepted = 1
accepted_on_behalf = 3
agreement accepted on behalf of the person
pending = 0
rejected = 2
rejected_on_behalf = 4
agreement rejected on behalf of the person

Utilities

indico.modules.events.agreements.util.get_agreement_definitions()
indico.modules.events.agreements.util.send_new_agreements(event, name, peo-
ple, email_body,
cc_addresses,
from_address)
Create and send agreements for a list of people on a given event.
Parameters
• event – The Event associated with the agreement
• name – The agreement type matcing a AgreementDefinition name
• people – The list of people for whom agreements will be created
• email_body – The body of the email
• cc_addresses – Email addresses to send CCs to
• from_address – Email address of the sender

Placeholders

class indico.modules.events.agreements.placeholders.AgreementLinkPlaceholder
Bases: indico.util.placeholders.Placeholder
description = l'Link to the agreement page'
name = 'agreement_link'
classmethod render(definition, agreement)
Convert the placeholder to a string.
When a placeholder contains HTML that should not be escaped, the returned value should be returned as
a markupsafe.Markup instance instead of a plain string.
Subclasses are encouraged to explicitly specify the arguments they expect instead of using **kwargs.
Parameters kwargs – arguments specific to the placeholder’s context
required = True

168 Chapter 7. API reference


Indico Documentation, Release 3.2-dev

class indico.modules.events.agreements.placeholders.PersonNamePlaceholder
Bases: indico.util.placeholders.Placeholder
description = l'Name of the person'
name = 'person_name'
classmethod render(definition, agreement)
Convert the placeholder to a string.
When a placeholder contains HTML that should not be escaped, the returned value should be returned as
a markupsafe.Markup instance instead of a plain string.
Subclasses are encouraged to explicitly specify the arguments they expect instead of using **kwargs.
Parameters kwargs – arguments specific to the placeholder’s context

7.1.4 Contribution

Todo: Docstrings (module, models, operations, utilities)

Models

class indico.modules.events.contributions.models.contributions.Contribution(**kwargs)
Bases: indico.core.db.sqlalchemy.searchable.SearchableTitleMixin, indico.
core.db.sqlalchemy.descriptions.SearchableDescriptionMixin, indico.
core.db.sqlalchemy.protection.ProtectionManagersMixin, indico.core.db.
sqlalchemy.locations.LocationMixin, indico.core.db.sqlalchemy.attachments.
AttachedItemsMixin, indico.core.db.sqlalchemy.notes.AttachedNotesMixin,
indico.modules.events.models.persons.PersonLinkMixin, indico.modules.
events.models.persons.AuthorsSpeakersMixin, indico.modules.events.
contributions.models.contributions.CustomFieldsMixin, sqlalchemy.orm.
decl_api.Model
ATTACHMENT_FOLDER_ID_COLUMN = 'contribution_id'
PRELOAD_EVENT_ATTACHED_ITEMS = True
PRELOAD_EVENT_NOTES = True
abstract
abstract_id
access_key = None
acl_entries
classmethod allocate_friendly_ids(event, n)
Allocate n Contribution friendly_ids.
This is needed so that we can allocate all IDs in one go. Not doing so could result in DB deadlocks. All
operations that create more than one contribution should use this method.
Parameters
• event – the Event in question
• n – the number of ids to pre-allocate

7.1. API reference 169


Indico Documentation, Release 3.2-dev

allow_relationship_preloading = True
allowed_types_for_editable
board_number
can_edit(user)
can_manage(user, permission=None, allow_admin=True, check_parent=True, ex-
plicit_permission=False)
Check if the user can manage the object.
Parameters
• user – The User to check. May be None if the user is not logged in.
• allow_admin – If admin users should always have access
• check_parent – If the parent object should be checked. In this case the permission is
ignored; only full management access is inherited to children.
• explicit_permission – If the specified permission should be checked explicitly
instead of short-circuiting the check for Indico admins or managers. When this option is
set to True, the values of allow_admin and check_parent are ignored. This also applies
if permission is None in which case this argument being set to True is equivalent to
allow_admin and check_parent being set to False.
Param permission: The management permission that is needed for the check to succeed. If not
specified, full management privs are required. May be set to the string 'ANY' to check if
the user has any management privileges. If the user has full_access privileges, he’s assumed
to have all possible permissions.
can_submit_proceedings(user)
Whether the user can submit editables/papers.
code
default_render_mode = 2
disallowed_protection_modes = frozenset()
duration
duration_display
The displayed duration of the contribution.
This is the duration of the poster session if applicable, otherwise the duration of the contribution itself.
duration_poster
enabled_editables
Return all submitted editables with enabled types.
end_dt
end_dt_display
The displayed end time of the contribution.
This is the end time of the poster session if applicable, otherwise the end time of the contribution itself.
end_dt_poster
event
event_id

170 Chapter 7. API reference


Indico Documentation, Release 3.2-dev

field_values
Data stored in abstract/contribution fields
friendly_id
The human-friendly ID for the contribution
get_editable(editable_type)
Get the editable of the given type.
get_non_inheriting_objects()
Get a set of child objects that do not inherit protection.
has_published_editables
id
inherit_location
inheriting_have_acl = True
is_deleted
is_paper_reviewer(user)
is_scheduled
is_user_associated(user, check_abstract=False)
keywords
location_backref_name = 'contributions'
location_parent
The parent object to consult if the location is inherited.
locator
Define a smart locator property.
This behaves pretty much like a normal read-only property and the decorated function should return a dict
containing the necessary data to build a URL for the object.
This decorator should usually be applied to a method named locator as this name is required for
get_locator to find it automatically when just passing the object.
If you need more than one locator, you can define it like this:

@locator_property
def locator(self):
return {...}

@locator.other
def locator(self):
return {...}

The other locator can then be accessed by passing obj.locator.other to the code expecting an
object with a locator.
log(*args, **kwargs)
Log with prefilled metadata for the contribution.
note
own_address
own_no_access_contact = None

7.1. API reference 171


Indico Documentation, Release 3.2-dev

own_room
own_room_id
own_room_name
own_venue
own_venue_id
own_venue_name
paper
paper_content_reviewers
Paper content reviewers
paper_judges
Paper reviewing judges
paper_layout_reviewers
Paper layout reviewers
pending_paper_files
Paper files not submitted for reviewing
person_link_backref_name = 'contribution'
person_link_relation_name = 'ContributionPersonLink'
person_links
possible_render_modes = {<RenderMode.html: 1>, <RenderMode.markdown: 2>}
classmethod preload_acl_entries(event)
protection_mode
protection_parent
The parent object to consult for ProtectionMode.inheriting.
references
External references associated with this contribution
render_mode
session
session_block
session_block_id
session_id
slug
start_dt
start_dt_display
The displayed start time of the contribution.
This is the start time of the poster session if applicable, otherwise the start time of the contribution itself.
start_dt_poster
subcontribution_count
subcontributions

172 Chapter 7. API reference


Indico Documentation, Release 3.2-dev

submitters
title
track
track_id
type
type_id
verbose_title
class indico.modules.events.contributions.models.contributions.CustomFieldsMixin
Bases: object
Methods to process custom field data.
get_field_value(field_id, raw=False)
set_custom_field(field_id, field_value)
class indico.modules.events.contributions.models.fields.ContributionField(**kwargs)
Bases: sqlalchemy.orm.decl_api.Model
A simple constructor that allows initialization from kwargs.
Sets attributes on the constructed instance using the names and values in kwargs.
Only keys that are present as attributes of the instance’s class are allowed. These could be, for example, any
mapped columns or relationships.
description
event
event_id
field
field_data
field_type
filter_choices
id
is_active
is_public
is_required
is_user_editable
legacy_id
locator
Define a smart locator property.
This behaves pretty much like a normal read-only property and the decorated function should return a dict
containing the necessary data to build a URL for the object.
This decorator should usually be applied to a method named locator as this name is required for
get_locator to find it automatically when just passing the object.
If you need more than one locator, you can define it like this:

7.1. API reference 173


Indico Documentation, Release 3.2-dev

@locator_property
def locator(self):
return {...}

@locator.other
def locator(self):
return {...}

The other locator can then be accessed by passing obj.locator.other to the code expecting an
object with a locator.
mgmt_field
position
title
visibility
class indico.modules.events.contributions.models.fields.ContributionFieldValue(**kwargs)
Bases: indico.modules.events.contributions.models.fields.
ContributionFieldValueBase
A simple constructor that allows initialization from kwargs.
Sets attributes on the constructed instance using the names and values in kwargs.
Only keys that are present as attributes of the instance’s class are allowed. These could be, for example, any
mapped columns or relationships.
contribution_field
contribution_field_backref_name = 'contribution_values'
contribution_field_id
contribution_id
data
class indico.modules.events.contributions.models.fields.ContributionFieldValueBase(**kwargs)
Bases: sqlalchemy.orm.decl_api.Model
A simple constructor that allows initialization from kwargs.
Sets attributes on the constructed instance using the names and values in kwargs.
Only keys that are present as attributes of the instance’s class are allowed. These could be, for example, any
mapped columns or relationships.
contribution_field = <RelationshipProperty at 0x7f331f799840; no key>
contribution_field_backref_name = None
The name of the backref on the ContributionField
contribution_field_id
data = Column(None, JSONB(astext_type=Text()), table=None, nullable=False)
friendly_data
class indico.modules.events.contributions.models.fields.ContributionFieldVisibility
Bases: indico.util.enum.RichIntEnum
An enumeration.

174 Chapter 7. API reference


Indico Documentation, Release 3.2-dev

managers_and_submitters = 2
managers_only = 3
public = 1
class indico.modules.events.contributions.models.persons.AuthorType
Bases: int, indico.util.enum.IndicoEnum
An enumeration.
get_highest = <bound method AuthorType.get_highest of <enum 'AuthorType'>>
none = 0
primary = 1
secondary = 2
class indico.modules.events.contributions.models.persons.ContributionPersonLink(*args,
**kwargs)
Bases: indico.modules.events.models.persons.PersonLinkBase
Association between EventPerson and Contribution.
author_type
contribution_id
display_order
id
is_author
is_speaker
is_submitter
locator
Define a smart locator property.
This behaves pretty much like a normal read-only property and the decorated function should return a dict
containing the necessary data to build a URL for the object.
This decorator should usually be applied to a method named locator as this name is required for
get_locator to find it automatically when just passing the object.
If you need more than one locator, you can define it like this:

@locator_property
def locator(self):
return {...}

@locator.other
def locator(self):
return {...}

The other locator can then be accessed by passing obj.locator.other to the code expecting an
object with a locator.
object_relationship_name = 'contribution'
person
person_id

7.1. API reference 175


Indico Documentation, Release 3.2-dev

person_link_backref_name = 'contribution_links'
person_link_unique_columns = ('contribution_id',)
class indico.modules.events.contributions.models.persons.SubContributionPersonLink(*args,
**kwargs)
Bases: indico.modules.events.models.persons.PersonLinkBase
Association between EventPerson and SubContribution.
author_type = 0
display_order
id
is_speaker = True
object_relationship_name = 'subcontribution'
person
person_id
person_link_backref_name = 'subcontribution_links'
person_link_unique_columns = ('subcontribution_id',)
subcontribution_id
class indico.modules.events.contributions.models.principals.ContributionPrincipal(**kwargs)
Bases: indico.core.db.sqlalchemy.principals.PrincipalPermissionsMixin,
sqlalchemy.orm.decl_api.Model
A simple constructor that allows initialization from kwargs.
Sets attributes on the constructed instance using the names and values in kwargs.
Only keys that are present as attributes of the instance’s class are allowed. These could be, for example, any
mapped columns or relationships.
allow_category_roles = True
allow_emails = True
allow_event_roles = True
allow_registration_forms = True
category_role
category_role_id
contribution_id
The ID of the associated contribution
disallowed_protection_modes = frozenset()
email
event_role
event_role_id
full_access
id
The ID of the acl entry
ip_network_group = None

176 Chapter 7. API reference


Indico Documentation, Release 3.2-dev

ip_network_group_id = None
local_group
local_group_id
multipass_group_name
multipass_group_provider
permissions
principal_backref_name = 'in_contribution_acls'
principal_for = 'Contribution'
read_access
registration_form
registration_form_id
type
unique_columns = ('contribution_id',)
user
user_id
class indico.modules.events.contributions.models.references.ContributionReference(**kwargs)
Bases: indico.modules.events.models.references.ReferenceModelBase
A simple constructor that allows initialization from kwargs.
Sets attributes on the constructed instance using the names and values in kwargs.
Only keys that are present as attributes of the instance’s class are allowed. These could be, for example, any
mapped columns or relationships.
contribution_id
id
reference_backref_name = 'contribution_references'
reference_type
reference_type_id
value
class indico.modules.events.contributions.models.references.SubContributionReference(**kwarg
Bases: indico.modules.events.models.references.ReferenceModelBase
A simple constructor that allows initialization from kwargs.
Sets attributes on the constructed instance using the names and values in kwargs.
Only keys that are present as attributes of the instance’s class are allowed. These could be, for example, any
mapped columns or relationships.
id
reference_backref_name = 'subcontribution_references'
reference_type
reference_type_id

7.1. API reference 177


Indico Documentation, Release 3.2-dev

subcontribution_id
value
class indico.modules.events.contributions.models.subcontributions.SubContribution(**kwargs)
Bases: indico.core.db.sqlalchemy.searchable.SearchableTitleMixin, indico.
core.db.sqlalchemy.descriptions.SearchableDescriptionMixin, indico.core.db.
sqlalchemy.attachments.AttachedItemsMixin, indico.core.db.sqlalchemy.notes.
AttachedNotesMixin, sqlalchemy.orm.decl_api.Model
ATTACHMENT_FOLDER_ID_COLUMN = 'subcontribution_id'
PRELOAD_EVENT_ATTACHED_ITEMS = True
PRELOAD_EVENT_NOTES = True
can_access(user, **kwargs)
can_edit(user)
can_manage(user, permission=None, **kwargs)
code
contribution_id
default_render_mode = 2
duration
event
friendly_id
The human-friendly ID for the sub-contribution
get_access_list()
get_manager_list(recursive=False, include_groups=True)
id
is_deleted
is_protected
is_user_associated(user)
location_parent
locator
Define a smart locator property.
This behaves pretty much like a normal read-only property and the decorated function should return a dict
containing the necessary data to build a URL for the object.
This decorator should usually be applied to a method named locator as this name is required for
get_locator to find it automatically when just passing the object.
If you need more than one locator, you can define it like this:

@locator_property
def locator(self):
return {...}

@locator.other
def locator(self):
return {...}

178 Chapter 7. API reference


Indico Documentation, Release 3.2-dev

The other locator can then be accessed by passing obj.locator.other to the code expecting an
object with a locator.
note
person_links
Persons associated with this contribution
position
possible_render_modes = {<RenderMode.html: 1>, <RenderMode.markdown: 2>}
references
External references associated with this contribution
render_mode
room_name
session
Convenience property so all event entities have it.
slug
speakers
timetable_entry
Convenience property so all event entities have it.
title
venue_name
class indico.modules.events.contributions.models.types.ContributionType(**kwargs)
Bases: sqlalchemy.orm.decl_api.Model
A simple constructor that allows initialization from kwargs.
Sets attributes on the constructed instance using the names and values in kwargs.
Only keys that are present as attributes of the instance’s class are allowed. These could be, for example, any
mapped columns or relationships.
description
event
event_id
id
is_private
locator
Define a smart locator property.
This behaves pretty much like a normal read-only property and the decorated function should return a dict
containing the necessary data to build a URL for the object.
This decorator should usually be applied to a method named locator as this name is required for
get_locator to find it automatically when just passing the object.
If you need more than one locator, you can define it like this:

7.1. API reference 179


Indico Documentation, Release 3.2-dev

@locator_property
def locator(self):
return {...}

@locator.other
def locator(self):
return {...}

The other locator can then be accessed by passing obj.locator.other to the code expecting an
object with a locator.
name

Operations

indico.modules.events.contributions.operations.create_contribution(event,
con-
trib_data,
cus-
tom_fields_data=None,
ses-
sion_block=None,
ex-
tend_parent=False)
indico.modules.events.contributions.operations.create_contribution_from_abstract(abstract,
con-
trib_session=N
indico.modules.events.contributions.operations.create_subcontribution(contrib,
data)
indico.modules.events.contributions.operations.delete_contribution(contrib)
indico.modules.events.contributions.operations.delete_subcontribution(subcontrib)
indico.modules.events.contributions.operations.update_contribution(contrib,
con-
trib_data,
cus-
tom_fields_data=None)
Update a contribution.
Parameters
• contrib – The Contribution to update
• contrib_data – A dict containing the data to update
• custom_fields_data – A dict containing the data for custom fields.
Returns A dictionary containing information related to the update. unscheduled will be true if
the modification resulted in the contribution being unscheduled. In this case undo_unschedule
contains the necessary data to re-schedule it (undoing the session change causing it to be un-
scheduled)
indico.modules.events.contributions.operations.update_subcontribution(subcontrib,
data)

180 Chapter 7. API reference


Indico Documentation, Release 3.2-dev

Utilities

indico.modules.events.contributions.util.contribution_type_row(contrib_type)
indico.modules.events.contributions.util.generate_spreadsheet_from_contributions(contributions,
*,
af-
fil-
i-
a-
tions=False)
Return a tuple consisting of spreadsheet columns and respective contribution values.
indico.modules.events.contributions.util.get_boa_export_formats()
indico.modules.events.contributions.util.get_contributions_for_person(event,
per-
son,
only_speakers=False)
Get all contributions for an event person.
If only_speakers is true, then only contributions where the person is a speaker are returned
indico.modules.events.contributions.util.get_contributions_with_user_as_submitter(event,
user)
Get a list of contributions in which the user has submission rights.
indico.modules.events.contributions.util.get_events_with_linked_contributions(user,
dt=None)
Return a dict with keys representing event_id and the values containing data about the user rights for contribu-
tions within the event.
Parameters
• user – A User
• dt – Only include events taking place on/after that date
indico.modules.events.contributions.util.has_contributions_with_user_as_submitter(event,
user)
indico.modules.events.contributions.util.import_contributions_from_csv(event,
f)
Import timetable contributions from a CSV file into an event.
indico.modules.events.contributions.util.make_contribution_form(event)
Extend the contribution WTForm to add the extra fields.
Each extra field will use a field named custom_ID.
Parameters event – The Event for which to create the contribution form.
Returns A ContributionForm subclass.
indico.modules.events.contributions.util.render_archive(event, contribs, sort_by,
cls)
indico.modules.events.contributions.util.render_pdf(event, contribs, sort_by, cls)
indico.modules.events.contributions.util.serialize_contribution_for_ical(contrib)
indico.modules.events.contributions.util.sort_contribs(contribs, sort_by)

7.1. API reference 181


Indico Documentation, Release 3.2-dev

7.1.5 Feature

Todo: Docstrings (module, utilities)

Utilities

indico.modules.events.features.util.format_feature_names(names)
indico.modules.events.features.util.get_disallowed_features(event)
Get a set containing the names of features which are not available for an event.
indico.modules.events.features.util.get_enabled_features(event,
only_explicit=False)
Return a set of enabled feature names for an event.
indico.modules.events.features.util.get_feature_definition(name)
Get a feature definition.
indico.modules.events.features.util.get_feature_definitions()
Get a dict containing all feature definitions.
indico.modules.events.features.util.is_feature_enabled(event, name)
Check if a feature is enabled for an event.
Parameters
• event – The event (or event ID) to check.
• name – The name of the feature.
indico.modules.events.features.util.require_feature(event, name)
Raise a NotFound error if a feature is not enabled.
Parameters
• event – The event (or event ID) to check.
• name – The name of the feature.
indico.modules.events.features.util.set_feature_enabled(event, name, state)
Enable/disable a feature for an event.
Parameters
• event – The event.
• name – The name of the feature.
• state – If the feature is enabled or not.
Returns Boolean indicating if the state of the feature changed.

7.1.6 Layout

Todo: Docstrings (module, models, utilities)

182 Chapter 7. API reference


Indico Documentation, Release 3.2-dev

Models

class indico.modules.events.layout.models.images.ImageFile(**kwargs)
Bases: indico.core.storage.models.StoredFileMixin, sqlalchemy.orm.decl_api.
Model
A simple constructor that allows initialization from kwargs.
Sets attributes on the constructed instance using the names and values in kwargs.
Only keys that are present as attributes of the instance’s class are allowed. These could be, for example, any
mapped columns or relationships.
content_type
The MIME type of the file.
created_dt
The date/time when the file was uploaded.
event
event_id
The event the image belongs to
extension
The extension of the file.
filename
The name of the file.
id
The ID of the file
locator
md5
An MD5 hash of the file.
Automatically assigned when save() is called.
size
The size of the file (in bytes).
Automatically assigned when save() is called.
storage_backend
storage_file_id
version_of = None
class indico.modules.events.layout.models.menu.EventPage(**kwargs)
Bases: sqlalchemy.orm.decl_api.Model
A simple constructor that allows initialization from kwargs.
Sets attributes on the constructed instance using the names and values in kwargs.
Only keys that are present as attributes of the instance’s class are allowed. These could be, for example, any
mapped columns or relationships.
event
The Event which contains the page
event_id
The ID of the event which contains the page

7.1. API reference 183


Indico Documentation, Release 3.2-dev

html
The rendered HTML of the page
id
The ID of the page
is_default
locator
class indico.modules.events.layout.models.menu.MenuEntry(**kwargs)
Bases: indico.modules.events.layout.models.menu.MenuEntryMixin, sqlalchemy.
orm.decl_api.Model
children
The children menu entries and parent backref
event
The Event containing the menu entry
event_id
The ID of the event which contains the menu
static get_for_event(event)
id
The ID of the menu entry
insert(parent, position)
is_enabled
Whether the entry is visible in the event’s menu
is_root
link_url
The target URL of a custom link
move(to)
name
The name of the menu entry (to uniquely identify a default entry for a given event)
new_tab
Whether the menu entry should be opened in a new tab or window
page
The page of the menu entry
page_id
The page ID if the entry is a page
parent_id
The ID of the parent menu entry (NULL if root menu entry)
plugin
The name of the plugin from which the entry comes from (NULL if the entry does not come from a plugin)
position
The relative position of the entry in the menu
registered_only
Whether the menu entry should be viewable only by registered users

184 Chapter 7. API reference


Indico Documentation, Release 3.2-dev

title
The title of the menu entry (to be displayed to the user)
type
The type of the menu entry
class indico.modules.events.layout.models.menu.MenuEntryMixin(**kwargs)
Bases: object
default_data
event_ref
is_internal_link
is_link
is_orphaned
is_page
is_plugin_link
is_separator
is_user_link
is_visible
localized_title
locator
url
class indico.modules.events.layout.models.menu.MenuEntryType
Bases: indico.util.enum.RichIntEnum
An enumeration.
internal_link = 2
page = 5
plugin_link = 4
separator = 1
user_link = 3
class indico.modules.events.layout.models.menu.TransientMenuEntry(event,
is_enabled,
name,
position,
children)
Bases: indico.modules.events.layout.models.menu.MenuEntryMixin
id

7.1. API reference 185


Indico Documentation, Release 3.2-dev

Utilities

class indico.modules.events.layout.util.MenuEntryData(title, name, end-


point=None, position=-
1, is_enabled=True,
visible=None, par-
ent=None, static_site=False,
url_kwargs=None,
hide_if_restricted=True)
Bases: object
Container to transmit menu entry-related data via signals.
The data contained is transmitted via the sidemenu signal and used to build the side menu of an event.
Parameters
• title – str – The title of the menu, displayed to the user. The title should be translated
using the normal gettext function, i.e. _('...'), or the plugin’s bound gettext function.
• name – str – Name used to refer to the entry internally. This is never shown to the user. The
name must be unique, names from plugins are automatically prefixed with the plugin name
and a colon and therefore have to be unique only within the plugin. To mark the entry as
active, its name must be specified in the menu_entry_name class attribute of the WP class.
For plugins, the plugin name must be specified via the menu_entry_plugin attribute as well.
• endpoint – str – The endpoint the entry will point to.
• position – int – The desired position of the menu entry. the position is indicative only,
relative to the other entries and not the exact position. Entries with the same position will
be sorted alphanumerically on their name. A position of -1 will append the entry at the end
of the menu.
• is_enabled – bool – Whether the entry should be enabled by default (Default: True).
• visible – function – Determines if the entry should be visible. This is a simple function
which takes only the event as parameter and returns a boolean to indicate if the entry is visi-
ble or not. It is called whenever the menu is displayed, so the current state of the event/user
can be taken into account.
• parent – str – The name of the parent entry (None for root entries).
• static_site – bool or str – If True, this menu item should be shown in the menu of a
static site. When set to a string, the string will be used instead of a mangled version of the
endpoint’s URL.
• url_kwargs – dict – Additional data passed to url_for when building the url the menu
item points to.
name
plugin = None
visible(event)
indico.modules.events.layout.util.build_menu_entry_name(name, plugin=None)
Build the proper name for a menu entry.
Given a menu entry’s name and optionally a plugin, returns the correct name of the menu entry.
Parameters
• name – str – The name of the menu entry.

186 Chapter 7. API reference


Indico Documentation, Release 3.2-dev

• plugin – IndicoPlugin or str – The plugin (or the name of the plugin) which created the
entry.
indico.modules.events.layout.util.get_css_file_data(event)
indico.modules.events.layout.util.get_css_url(event, force_theme=None,
for_preview=False)
Build the URL of a CSS resource.
Parameters
• event – The Event to get the CSS url for
• force_theme – The ID of the theme to override the custom CSS resource only if it exists
• for_preview – Whether the URL is used in the CSS preview page
Returns The URL to the CSS resource
indico.modules.events.layout.util.get_logo_data(event)
indico.modules.events.layout.util.get_menu_entries_from_signal()
indico.modules.events.layout.util.get_menu_entry_by_name(name, event)
indico.modules.events.layout.util.get_plugin_conference_themes()
indico.modules.events.layout.util.is_menu_entry_enabled(entry_name, event)
Check whether the MenuEntry is enabled.
indico.modules.events.layout.util.menu_entries_for_event(event)

7.1.7 Log

Todo: Docstrings (module, models, utilities)

Models

class indico.modules.logs.models.entries.CategoryLogEntry(**kwargs)
Bases: indico.modules.logs.models.entries.LogEntryBase
Log entries for categories.
A simple constructor that allows initialization from kwargs.
Sets attributes on the constructed instance using the names and values in kwargs.
Only keys that are present as attributes of the instance’s class are allowed. These could be, for example, any
mapped columns or relationships.
category_id
The ID of the category
data
event
The Category this log entry is associated with
id
kind

7.1. API reference 187


Indico Documentation, Release 3.2-dev

link_fk_name = 'category_id'
logged_dt
meta
module
realm
The general area of the event the entry comes from
summary
type
user
The user associated with the log entry.
user_backref_name = 'category_log_entries'
user_id
The ID of the user associated with the entry.
class indico.modules.logs.models.entries.CategoryLogRealm
Bases: indico.util.enum.RichIntEnum
An enumeration.
category = 1
events = 2
class indico.modules.logs.models.entries.EventLogEntry(**kwargs)
Bases: indico.modules.logs.models.entries.LogEntryBase
Log entries for events.
A simple constructor that allows initialization from kwargs.
Sets attributes on the constructed instance using the names and values in kwargs.
Only keys that are present as attributes of the instance’s class are allowed. These could be, for example, any
mapped columns or relationships.
data
event
The Event this log entry is associated with
event_id
The ID of the event
id
kind
link_fk_name = 'event_id'
logged_dt
meta
module
realm
The general area of the event the entry comes from
summary

188 Chapter 7. API reference


Indico Documentation, Release 3.2-dev

type
user
The user associated with the log entry.
user_backref_name = 'event_log_entries'
user_id
The ID of the user associated with the entry.
class indico.modules.logs.models.entries.EventLogRealm
Bases: indico.util.enum.RichIntEnum
An enumeration.
emails = 5
event = 1
management = 2
participants = 3
reviewing = 4
class indico.modules.logs.models.entries.LogEntryBase(**kwargs)
Bases: sqlalchemy.orm.decl_api.Model
Base model for log entries.
A simple constructor that allows initialization from kwargs.
Sets attributes on the constructed instance using the names and values in kwargs.
Only keys that are present as attributes of the instance’s class are allowed. These could be, for example, any
mapped columns or relationships.
data = Column(None, JSON(astext_type=Text()), table=None, nullable=False)
Type-specific data
id = Column(None, Integer(), table=None, primary_key=True, nullable=False)
The ID of the log entry
kind = Column(None, PyIntEnum(), table=None, nullable=False)
The general kind of operation that was performed
link_fk_name = None
logged_date
logged_dt = Column(None, UTCDateTime(), table=None, nullable=False, default=ColumnDefau
The date/time when the reminder was created
meta = Column(None, JSONB(astext_type=Text()), table=None, nullable=False)
Non-displayable data
module = Column(None, String(), table=None, nullable=False)
The module the operation was related to (does not need to match something in indico.modules and should
be human-friendly but not translated).
render()
Render the log entry to be displayed.
If the renderer is not available anymore, e.g. because of a disabled plugin, None is returned.
renderer

7.1. API reference 189


Indico Documentation, Release 3.2-dev

summary = Column(None, String(), table=None, nullable=False)


A short one-line description of the logged action. Should not be translated!
type = Column(None, String(), table=None, nullable=False)
The type of the log entry. This needs to match the name of a log renderer.
user = <RelationshipProperty at 0x7f331eadf440; no key>
user_backref_name = None
user_id = Column(None, Integer(), ForeignKey('users.users.id'), table=None)
class indico.modules.logs.models.entries.LogKind
Bases: int, indico.util.enum.IndicoEnum
An enumeration.
change = 3
negative = 4
other = 1
positive = 2

Utilities

indico.modules.logs.util.get_log_renderers()
indico.modules.logs.util.make_diff_log(changes, fields)
Create a value for log data containing change information.
Parameters
• changes – a dict mapping attributes to (old, new) tuples
• fields – a dict mapping attributes to field metadata. for simple cases this may be a string
with the human-friendly title, for more advanced fields it should be a dict containing title,
a type string and a convert callback which will be invoked with a tuple containing the
old and new value
indico.modules.logs.util.render_changes(a, b, type_)
Render the comparison of a and b as HTML.
Parameters
• a – old value
• b – new value
• type – the type determining how the values should be compared
indico.modules.logs.util.serialize_log_entry(entry)
class indico.modules.logs.renderers.EmailRenderer
Bases: indico.modules.logs.renderers.EventLogRendererBase
name = 'email'
template_name = 'logs/entry_email.html'
class indico.modules.logs.renderers.EventLogRendererBase
Bases: object
Base class for event log renderers.

190 Chapter 7. API reference


Indico Documentation, Release 3.2-dev

classmethod get_data(entry)
Return the entry data in a format suitable for the template.
This method may be overridden if the entry’s data needs to be preprocessed before being passed to the
template.
It MUST NOT modify entry.data directly.
name = None
unique name of the log renderer (matches EventLogEntry.type)
plugin = None
plugin containing this renderer - assigned automatically
classmethod render_entry(entry)
Render the log entry row.
Parameters entry – A EventLogEntry
template_kwargs = {}
extra kwargs passed to render_template
template_name = None
template used to render the log entry
class indico.modules.logs.renderers.SimpleRenderer
Bases: indico.modules.logs.renderers.EventLogRendererBase
classmethod get_data(entry)
Return the entry data in a format suitable for the template.
This method may be overridden if the entry’s data needs to be preprocessed before being passed to the
template.
It MUST NOT modify entry.data directly.
name = 'simple'
template_kwargs = {'compare': <function render_changes>}
template_name = 'logs/entry_simple.html'

7.1.8 Event Management

class indico.modules.events.management.controllers.RHManageEventBase
Bases: indico.modules.events.controllers.base.RHEventBase, indico.modules.
events.management.controllers.base.ManageEventMixin
Base class for event management RHs.
class indico.modules.events.management.views.WPEventManagement(rh, event_, ac-
tive_menu_item=None,
**kwargs)
Bases: indico.web.views.WPJinjaMixin, indico.web.views.WPDecorated
Base class for event management pages.
When using this class the template will always have event available; it is not necessary to pass it as a kwarg
when calling the render_template classmethod.
When using the class directly, pass the menu item as a posarg:

7.1. API reference 191


Indico Documentation, Release 3.2-dev

return WPEventManagement.render_template('foobar.html', self.event, 'foobar',


foo='bar')

When subclassing you can set sidemenu_option on the class, allowing you to omit it. This is recommended if
you have many pages using the same menu item or if you already need to subclass for some other reason (e.g.
to set a template_prefix or include additional JS/CSS bundles):

return WPSomething.render_template('foobar.html', self.event,


foo='bar')

7.1.9 Note

Todo: Docstrings (module, models, utilities)

Models

class indico.modules.events.notes.models.notes.EventNote(**kwargs)
Bases: indico.core.db.sqlalchemy.links.LinkMixin, sqlalchemy.orm.decl_api.
Model
A simple constructor that allows initialization from kwargs.
Sets attributes on the constructed instance using the names and values in kwargs.
Only keys that are present as attributes of the instance’s class are allowed. These could be, for example, any
mapped columns or relationships.
allowed_link_types = frozenset({<LinkType.event: 2>, <LinkType.contribution: 3>, <Lin
category = None
category_id = None
contribution
contribution_id
create_revision(render_mode, source, user)
Create a new revision if needed and marks it as undeleted if it was.
Any change to the render mode or the source causes a new revision to be created. The user is not taken
into account since a user “modifying” a note without changing things is not really a change.
current_revision
The currently active revision of the note
current_revision_id
The ID of the current revision
delete(user)
Mark the note as deleted and adds a new empty revision.
event
event_id
events_backref_name = 'all_notes'

192 Chapter 7. API reference


Indico Documentation, Release 3.2-dev

classmethod get_for_linked_object(linked_object, preload_event=True)


Get the note for the given object.
This only returns a note that hasn’t been deleted.
Parameters
• linked_object – An event, session, contribution or subcontribution.
• preload_event – If all notes for the same event should be pre-loaded and cached in
the app context.
classmethod get_or_create(linked_object)
Get the note for the given object or creates a new one.
If there is an existing note for the object, it will be returned even. Otherwise a new note is created.
html
The rendered HTML of the note
classmethod html_matches(search_string, exact=False)
Check whether the html content matches a search string.
To be used in a SQLAlchemy filter call.
Parameters
• search_string – A string to search for
• exact – Whether to search for the exact string
id
The ID of the note
is_deleted
If the note has been deleted
link_backref_name = 'note'
link_type
linked_event
linked_event_id
locator
Define a smart locator property.
This behaves pretty much like a normal read-only property and the decorated function should return a dict
containing the necessary data to build a URL for the object.
This decorator should usually be applied to a method named locator as this name is required for
get_locator to find it automatically when just passing the object.
If you need more than one locator, you can define it like this:

@locator_property
def locator(self):
return {...}

@locator.other
def locator(self):
return {...}

The other locator can then be accessed by passing obj.locator.other to the code expecting an
object with a locator.

7.1. API reference 193


Indico Documentation, Release 3.2-dev

revisions
The list of all revisions for the note
session
session_block = None
session_block_id = None
session_id
subcontribution
subcontribution_id
unique_links = True
class indico.modules.events.notes.models.notes.EventNoteRevision(**kwargs)
Bases: sqlalchemy.orm.decl_api.Model
A simple constructor that allows initialization from kwargs.
Sets attributes on the constructed instance using the names and values in kwargs.
Only keys that are present as attributes of the instance’s class are allowed. These could be, for example, any
mapped columns or relationships.
created_dt
The date/time when the revision was created
html
The rendered HTML of the note
id
The ID of the revision
note
note_id
The ID of the associated note
render_mode
How the note is rendered
source
The raw source of the note as provided by the user
user
The user who created the revision
user_id
The user who created the revision

Utilities

indico.modules.events.notes.util.build_note_api_data(note)
indico.modules.events.notes.util.build_note_legacy_api_data(note)
indico.modules.events.notes.util.can_edit_note(obj, user)
Check if a user can edit the object’s note.
indico.modules.events.notes.util.get_scheduled_notes(event)
Get all notes of scheduled items inside an event.

194 Chapter 7. API reference


Indico Documentation, Release 3.2-dev

7.1.10 Paper

Todo: Docstrings (module, models, operations, utilities, settings)

The papers module handles the Indico’s Paper Peer Reviewing workflow. The “inputs” of this module are the
conference papers, which will be uploaded by the corresponding authors/submitters.

Models

class indico.modules.events.papers.models.call_for_papers.CallForPapers(event)
Bases: object
Proxy class to facilitate access to the call for papers settings.
announcement
assignees
can_access_judging_area(user)
can_access_reviewing_area(user)
close()
content_review_questions
content_reviewer_deadline
content_reviewer_deadline_enforced
content_reviewers
content_reviewing_enabled
end_dt
get_questions_for_review_type(review_type)
get_reviewing_state(reviewing_type)
has_ended
has_started
is_judge(user)
is_manager(user)
is_open
is_reviewer(user, role=None)
is_staff(user)
judge_deadline
judges
layout_review_questions
layout_reviewer_deadline
layout_reviewer_deadline_enforced

7.1. API reference 195


Indico Documentation, Release 3.2-dev

layout_reviewers
layout_reviewing_enabled
managers
open()
rating_range
schedule(start_dt, end_dt)
set_reviewing_state(reviewing_type, enable)
start_dt
user_competences
class indico.modules.events.papers.models.comments.PaperReviewComment(**kwargs)
Bases: indico.modules.events.models.reviews.ProposalCommentMixin, indico.
core.db.sqlalchemy.review_comments.ReviewCommentMixin, sqlalchemy.orm.
decl_api.Model
A simple constructor that allows initialization from kwargs.
Sets attributes on the constructed instance using the names and values in kwargs.
Only keys that are present as attributes of the instance’s class are allowed. These could be, for example, any
mapped columns or relationships.
can_edit(user)
can_view(user)
created_dt
id
is_deleted
locator
Define a smart locator property.
This behaves pretty much like a normal read-only property and the decorated function should return a dict
containing the necessary data to build a URL for the object.
This decorator should usually be applied to a method named locator as this name is required for
get_locator to find it automatically when just passing the object.
If you need more than one locator, you can define it like this:

@locator_property
def locator(self):
return {...}

@locator.other
def locator(self):
return {...}

The other locator can then be accessed by passing obj.locator.other to the code expecting an
object with a locator.
modified_by
modified_by_id
modified_dt

196 Chapter 7. API reference


Indico Documentation, Release 3.2-dev

paper_revision
render_mode = 2
revision_id
user
user_backref_name = 'review_comments'
user_id
user_modified_backref_name = 'modified_review_comments'
visibility
class indico.modules.events.papers.models.competences.PaperCompetence(**kwargs)
Bases: sqlalchemy.orm.decl_api.Model
A simple constructor that allows initialization from kwargs.
Sets attributes on the constructed instance using the names and values in kwargs.
Only keys that are present as attributes of the instance’s class are allowed. These could be, for example, any
mapped columns or relationships.
competences
event
event_id
id
classmethod merge_users(target, source)
user
user_id
class indico.modules.events.papers.models.files.PaperFile(*args, **kwargs)
Bases: indico.core.storage.models.StoredFileMixin, sqlalchemy.orm.decl_api.
Model
add_file_date_column = False
content_type
The MIME type of the file.
created_dt = None
extension
The extension of the file.
filename
The name of the file.
id
locator
Define a smart locator property.
This behaves pretty much like a normal read-only property and the decorated function should return a dict
containing the necessary data to build a URL for the object.
This decorator should usually be applied to a method named locator as this name is required for
get_locator to find it automatically when just passing the object.

7.1. API reference 197


Indico Documentation, Release 3.2-dev

If you need more than one locator, you can define it like this:

@locator_property
def locator(self):
return {...}

@locator.other
def locator(self):
return {...}

The other locator can then be accessed by passing obj.locator.other to the code expecting an
object with a locator.
md5
An MD5 hash of the file.
Automatically assigned when save() is called.
paper
paper_revision
revision_id
size
The size of the file (in bytes).
Automatically assigned when save() is called.
storage_backend
storage_file_id
class indico.modules.events.papers.models.papers.Paper(contribution)
Bases: indico.modules.events.models.reviews.ProposalMixin
Proxy class to facilitate access to all paper-related properties.
accepted_revision
call_for_proposals_attr = 'cfp'
can_comment(user, check_state=False)
can_judge(user, check_state=False)
can_manage(user)
can_review(user, check_state=False)
can_submit(user)
event
files
get_last_revision()
get_revisions()
is_in_final_state
judgment_comment
last_revision

198 Chapter 7. API reference


Indico Documentation, Release 3.2-dev

locator
Define a smart locator property.
This behaves pretty much like a normal read-only property and the decorated function should return a dict
containing the necessary data to build a URL for the object.
This decorator should usually be applied to a method named locator as this name is required for
get_locator to find it automatically when just passing the object.
If you need more than one locator, you can define it like this:

@locator_property
def locator(self):
return {...}

@locator.other
def locator(self):
return {...}

The other locator can then be accessed by passing obj.locator.other to the code expecting an
object with a locator.
proposal_type = 'paper'
proxied_attr = 'contribution'
reset_state()
revision_count
revisions
revisions_enabled = True
state
title
verbose_title
class indico.modules.events.papers.models.review_questions.PaperReviewQuestion(**kwargs)
Bases: indico.core.db.sqlalchemy.review_questions.ReviewQuestionMixin,
sqlalchemy.orm.decl_api.Model
A simple constructor that allows initialization from kwargs.
Sets attributes on the constructed instance using the names and values in kwargs.
Only keys that are present as attributes of the instance’s class are allowed. These could be, for example, any
mapped columns or relationships.
description
event
event_backref_name = 'paper_review_questions'
event_id
field
field_data
field_type
id

7.1. API reference 199


Indico Documentation, Release 3.2-dev

is_deleted
is_required
locator
Define a smart locator property.
This behaves pretty much like a normal read-only property and the decorated function should return a dict
containing the necessary data to build a URL for the object.
This decorator should usually be applied to a method named locator as this name is required for
get_locator to find it automatically when just passing the object.
If you need more than one locator, you can define it like this:

@locator_property
def locator(self):
return {...}

@locator.other
def locator(self):
return {...}

The other locator can then be accessed by passing obj.locator.other to the code expecting an
object with a locator.
position
title
type
class indico.modules.events.papers.models.review_ratings.PaperReviewRating(**kwargs)
Bases: indico.core.db.sqlalchemy.review_ratings.ReviewRatingMixin,
sqlalchemy.orm.decl_api.Model
A simple constructor that allows initialization from kwargs.
Sets attributes on the constructed instance using the names and values in kwargs.
Only keys that are present as attributes of the instance’s class are allowed. These could be, for example, any
mapped columns or relationships.
id
question
question_class
alias of indico.modules.events.papers.models.review_questions.
PaperReviewQuestion
question_id
review
review_class
alias of indico.modules.events.papers.models.reviews.PaperReview
review_id
value
class indico.modules.events.papers.models.reviews.PaperAction
Bases: indico.util.enum.RichIntEnum
An enumeration.

200 Chapter 7. API reference


Indico Documentation, Release 3.2-dev

accept = 1
reject = 2
to_be_corrected = 3
class indico.modules.events.papers.models.reviews.PaperCommentVisibility
Bases: indico.util.enum.RichIntEnum
Most to least restrictive visibility for paper comments.
contributors = 3
judges = 1
reviewers = 2
users = 4
class indico.modules.events.papers.models.reviews.PaperJudgmentProxy(paper)
Bases: object
A timeline item for the non final judgments.
created_dt
timeline_item_type = 'judgment'
class indico.modules.events.papers.models.reviews.PaperReview(**kwargs)
Bases: indico.modules.events.models.reviews.ProposalReviewMixin, indico.core.
db.sqlalchemy.descriptions.RenderModeMixin, sqlalchemy.orm.decl_api.Model
A paper review, emitted by a layout or content reviewer.
A simple constructor that allows initialization from kwargs.
Sets attributes on the constructed instance using the names and values in kwargs.
Only keys that are present as attributes of the instance’s class are allowed. These could be, for example, any
mapped columns or relationships.
TIMELINE_TYPE = 'review'
can_edit(user, check_state=False)
can_view(user)
comment
created_dt
default_render_mode = 2
group_attr = 'type'
group_proxy_cls
alias of PaperTypeProxy
id
locator
Define a smart locator property.
This behaves pretty much like a normal read-only property and the decorated function should return a dict
containing the necessary data to build a URL for the object.
This decorator should usually be applied to a method named locator as this name is required for
get_locator to find it automatically when just passing the object.

7.1. API reference 201


Indico Documentation, Release 3.2-dev

If you need more than one locator, you can define it like this:

@locator_property
def locator(self):
return {...}

@locator.other
def locator(self):
return {...}

The other locator can then be accessed by passing obj.locator.other to the code expecting an
object with a locator.
modified_dt
possible_render_modes = {<RenderMode.markdown: 2>}
proposed_action
render_mode = 2
revision
revision_attr = 'revision'
revision_id
score
type
user
user_id
visibility
class indico.modules.events.papers.models.reviews.PaperReviewType
Bases: indico.util.enum.RichIntEnum
An enumeration.
content = 2
layout = 1
class indico.modules.events.papers.models.reviews.PaperTypeProxy(group)
Bases: indico.modules.events.models.reviews.ProposalGroupProxy
locator
Define a smart locator property.
This behaves pretty much like a normal read-only property and the decorated function should return a dict
containing the necessary data to build a URL for the object.
This decorator should usually be applied to a method named locator as this name is required for
get_locator to find it automatically when just passing the object.
If you need more than one locator, you can define it like this:

@locator_property
def locator(self):
return {...}

@locator.other
(continues on next page)

202 Chapter 7. API reference


Indico Documentation, Release 3.2-dev

(continued from previous page)


def locator(self):
return {...}

The other locator can then be accessed by passing obj.locator.other to the code expecting an
object with a locator.
class indico.modules.events.papers.models.revisions.PaperRevision(*args,
**kwargs)
Bases: indico.modules.events.models.reviews.ProposalRevisionMixin, indico.
core.db.sqlalchemy.descriptions.RenderModeMixin, sqlalchemy.orm.decl_api.
Model
default_render_mode = 2
get_reviewed_for_groups(user, include_reviewed=False)
get_reviews(group=None, user=None)
get_spotlight_file()
get_timeline(user=None)
has_user_reviewed(user, review_type=None)
id
is_last_revision
judge
judge_id
judgment_comment
judgment_dt
locator
Define a smart locator property.
This behaves pretty much like a normal read-only property and the decorated function should return a dict
containing the necessary data to build a URL for the object.
This decorator should usually be applied to a method named locator as this name is required for
get_locator to find it automatically when just passing the object.
If you need more than one locator, you can define it like this:

@locator_property
def locator(self):
return {...}

@locator.other
def locator(self):
return {...}

The other locator can then be accessed by passing obj.locator.other to the code expecting an
object with a locator.
number
paper
possible_render_modes = {<RenderMode.markdown: 2>}

7.1. API reference 203


Indico Documentation, Release 3.2-dev

proposal_attr = 'paper'
render_mode = 2
spotlight_file
state
submitted_dt
submitter
submitter_id
timeline
class indico.modules.events.papers.models.revisions.PaperRevisionState
Bases: indico.util.enum.RichIntEnum
An enumeration.
accepted = 2
rejected = 3
submitted = 1
to_be_corrected = 4
class indico.modules.events.papers.models.templates.PaperTemplate(**kwargs)
Bases: indico.core.storage.models.StoredFileMixin, sqlalchemy.orm.decl_api.
Model
A simple constructor that allows initialization from kwargs.
Sets attributes on the constructed instance using the names and values in kwargs.
Only keys that are present as attributes of the instance’s class are allowed. These could be, for example, any
mapped columns or relationships.
add_file_date_column = False
content_type
The MIME type of the file.
created_dt = None
description
event
event_id
extension
The extension of the file.
filename
The name of the file.
id
locator
Define a smart locator property.
This behaves pretty much like a normal read-only property and the decorated function should return a dict
containing the necessary data to build a URL for the object.

204 Chapter 7. API reference


Indico Documentation, Release 3.2-dev

This decorator should usually be applied to a method named locator as this name is required for
get_locator to find it automatically when just passing the object.
If you need more than one locator, you can define it like this:

@locator_property
def locator(self):
return {...}

@locator.other
def locator(self):
return {...}

The other locator can then be accessed by passing obj.locator.other to the code expecting an
object with a locator.
md5
An MD5 hash of the file.
Automatically assigned when save() is called.
name
size
The size of the file (in bytes).
Automatically assigned when save() is called.
storage_backend
storage_file_id

Operations

indico.modules.events.papers.operations.close_cfp(event)
indico.modules.events.papers.operations.create_comment(paper, text, visibility, user)
indico.modules.events.papers.operations.create_competences(event, user, compe-
tences)
indico.modules.events.papers.operations.create_paper_revision(paper, submitter,
files)
indico.modules.events.papers.operations.create_paper_template(event, data)
indico.modules.events.papers.operations.create_review(paper, review_type, user, re-
view_data, questions_data)
indico.modules.events.papers.operations.delete_comment(comment)
indico.modules.events.papers.operations.delete_paper_template(template)
indico.modules.events.papers.operations.judge_paper(paper, judgment, comment,
judge)
indico.modules.events.papers.operations.open_cfp(event)
indico.modules.events.papers.operations.reset_paper_state(paper)
indico.modules.events.papers.operations.schedule_cfp(event, start_dt, end_dt)
indico.modules.events.papers.operations.set_deadline(event, role, deadline, en-
force=True)

7.1. API reference 205


Indico Documentation, Release 3.2-dev

indico.modules.events.papers.operations.set_reviewing_state(event, review-
ing_type, enable)
indico.modules.events.papers.operations.update_comment(comment, text=None, visi-
bility=None)
indico.modules.events.papers.operations.update_competences(user_competences,
competences)
indico.modules.events.papers.operations.update_paper_template(template, data)
indico.modules.events.papers.operations.update_review(review, review_data, ques-
tions_data)
indico.modules.events.papers.operations.update_reviewing_roles(event, users,
contributions,
role, assign)
indico.modules.events.papers.operations.update_team_members(event, managers,
judges, con-
tent_reviewers=None,
lay-
out_reviewers=None)

Utilities

indico.modules.events.papers.util.get_contributions_with_paper_submitted_by_user(event,
user)
indico.modules.events.papers.util.get_events_with_paper_roles(user, dt=None)
Get the IDs and PR roles of events where the user has any kind of paper reviewing privileges.
Parameters
• user – A User
• dt – Only include events taking place on/after that date
Returns A dict mapping event IDs to a set of roles
indico.modules.events.papers.util.get_user_contributions_to_review(event,
user)
Get the list of contributions where user has paper to review.
indico.modules.events.papers.util.get_user_reviewed_contributions(event,
user)
Get the list of contributions where user already reviewed paper.
indico.modules.events.papers.util.get_user_submittable_contributions(event,
user)
indico.modules.events.papers.util.has_contributions_with_user_paper_submission_rights(event,
user)
indico.modules.events.papers.util.is_type_reviewing_possible(cfp, review_type)

Settings

class indico.modules.events.settings.EventACLProxy(proxy)
Bases: indico.core.settings.proxy.ACLProxyBase
Proxy class for event-specific ACL settings.

206 Chapter 7. API reference


Indico Documentation, Release 3.2-dev

add_principal(event, name, principal)


Add a principal to an ACL.
Parameters
• event – Event (or its ID)
• name – Setting name
• principal – A User or a GroupProxy
contains_user(event, name, user)
Check if a user is in an ACL.
To pass this check, the user can either be in the ACL itself or in a group in the ACL.
Parameters
• event – Event (or its ID)
• name – Setting name
• user – A User
get(event, name)
Retrieves an ACL setting
Parameters
• event – Event (or its ID)
• name – Setting name
merge_users(target, source)
Replace all ACL user entries for source with target.
remove_principal(event, name, principal)
Remove a principal from an ACL.
Parameters
• event – Event (or its ID)
• name – Setting name
• principal – A User or a GroupProxy
set(event, name, acl)
Replace an ACL with a new one.
Parameters
• event – Event (or its ID)
• name – Setting name
• acl – A set containing principals (users/groups)
class indico.modules.events.settings.EventSettingProperty(proxy, name, de-
fault=<object object>,
attr=None)
Bases: indico.core.settings.proxy.SettingProperty
attr = 'event'

7.1. API reference 207


Indico Documentation, Release 3.2-dev

class indico.modules.events.settings.EventSettingsProxy(module, defaults=None,


strict=True, acls=None,
converters=None)
Bases: indico.core.settings.proxy.SettingsProxyBase
Proxy class to access event-specific settings for a certain module.
acl_proxy_class
alias of EventACLProxy
delete(event, *names)
Delete settings.
Parameters
• event – Event (or its ID)
• names – One or more names of settings to delete
delete_all(event)
Delete all settings.
Parameters event – Event (or its ID)
get(event, name, default=<object object>)
Retrieve the value of a single setting.
Parameters
• event – Event (or its ID)
• name – Setting name
• default – Default value in case the setting does not exist
Returns The settings’s value or the default value
get_all(event, no_defaults=False)
Retrieve all settings.
Parameters
• event – Event (or its ID)
• no_defaults – Only return existing settings and ignore defaults.
Returns Dict containing the settings
query
Return a query object filtering by the proxy’s module.
set(event, name, value)
Set a single setting.
Parameters
• event – Event (or its ID)
• name – Setting name
• value – Setting value; must be JSON-serializable
set_multi(event, items)
Set multiple settings at once.
Parameters
• event – Event (or its ID)

208 Chapter 7. API reference


Indico Documentation, Release 3.2-dev

• items – Dict containing the new settings


class indico.modules.events.settings.ThemeSettingsProxy
Bases: object
defaults
get_themes_for(event_type)
settings
themes
indico.modules.events.settings.event_or_id(f )

7.1.11 Payment

Todo: Docstrings (module, models, plugins)

Models

exception indico.modules.events.payment.models.transactions.DoublePaymentTransaction
Bases: Exception
exception indico.modules.events.payment.models.transactions.IgnoredTransactionAction
Bases: Exception
exception indico.modules.events.payment.models.transactions.InvalidManualTransactionAction
Bases: Exception
exception indico.modules.events.payment.models.transactions.InvalidTransactionAction
Bases: Exception
exception indico.modules.events.payment.models.transactions.InvalidTransactionStatus
Bases: Exception
class indico.modules.events.payment.models.transactions.PaymentTransaction(**kwargs)
Bases: sqlalchemy.orm.decl_api.Model
Payment transactions.
A simple constructor that allows initialization from kwargs.
Sets attributes on the constructed instance using the names and values in kwargs.
Only keys that are present as attributes of the instance’s class are allowed. These could be, for example, any
mapped columns or relationships.
amount
the base amount the user needs to pay (without payment-specific fees)
classmethod create_next(registration, amount, currency, action, provider=None, data=None)
currency
the currency of the payment (ISO string, e.g. EUR or USD)
data
plugin-specific data of the payment

7.1. API reference 209


Indico Documentation, Release 3.2-dev

id
Entry ID
is_manual
plugin
provider
the provider of the payment (e.g. manual, PayPal etc.)
registration
The associated registration
registration_id
ID of the associated registration
render_details()
Render the transaction details.
status
a TransactionStatus
timestamp
the date and time the transaction was recorded
class indico.modules.events.payment.models.transactions.TransactionAction
Bases: int, indico.util.enum.IndicoEnum
An enumeration.
cancel = 2
complete = 1
pending = 3
reject = 4
class indico.modules.events.payment.models.transactions.TransactionStatus
Bases: int, indico.util.enum.IndicoEnum
An enumeration.
cancelled = 2
payment cancelled manually
failed = 3
payment attempt failed
pending = 4
payment on hold pending approval of merchant
rejected = 5
payment rejected after being pending
successful = 1
payment attempt succeeded
class indico.modules.events.payment.models.transactions.TransactionStatusTransition
Bases: object
initial_statuses = [<TransactionStatus.cancelled: 2>, <TransactionStatus.failed: 3>,
classmethod next(transaction, action, provider=None)

210 Chapter 7. API reference


Indico Documentation, Release 3.2-dev

Utilities

indico.modules.events.payment.util.get_active_payment_plugins(event)
Return a dict containing the active payment plugins of an event.
indico.modules.events.payment.util.get_payment_plugins()
Return a dict containing the available payment plugins.
indico.modules.events.payment.util.register_transaction(registration, amount,
currency, action,
provider=None,
data=None)
Create a new transaction for a certain transaction action.
Parameters
• registration – the Registration associated to the transaction
• amount – the (strictly positive) amount of the transaction
• currency – the currency used for the transaction
• action – the TransactionAction of the transaction
• provider – the payment method name of the transaction, or ‘_manual’ if no payment
method has been used
• data – arbitrary JSON-serializable data specific to the transaction’s provider

Plugins

class indico.modules.events.payment.plugins.PaymentPluginMixin
Bases: object
adjust_payment_form_data(data)
Update the payment form data if necessary.
This method can be overridden to update e.g. the amount based on choices the user makes in the payment
form or to provide additional data to the form. To do so, data must be modified.
Parameters data – a dict containing event, registration, amount, currency, settings and
event_settings
can_be_modified(user, event)
Check if the user is allowed to enable/disable/modify the payment method.
Parameters
• user – the User repesenting the user
• event – the Event
category = 'Payment'
default_settings
event_settings_form
alias of PaymentEventSettingsFormBase
get_event_management_url(event, **kwargs)
get_invalid_regforms(event)
Return registration forms with incompatible currencies.

7.1. API reference 211


Indico Documentation, Release 3.2-dev

get_method_name(event)
Return the (customized) name of the payment method.
init()
logo_url
render_payment_form(registration)
Return the payment form shown to the user.
Parameters registration – a Registration object
render_transaction_details(transaction)
Render the transaction details in event management.
Override this (or inherit from the template) to show more useful data such as transaction IDs
Parameters transaction – the PaymentTransaction
settings_form
alias of PaymentPluginSettingsFormBase
supports_currency(currency)
valid_currencies = None
Set containing all valid currencies. Set to None to allow all.

7.1.12 Person

Todo: Docstrings (module, operations)

Operations

indico.modules.events.persons.operations.update_person(person, data)

Placeholders

class indico.modules.events.persons.placeholders.ContributionsPlaceholder
Bases: indico.util.placeholders.ParametrizedPlaceholder
classmethod iter_param_info(person, event, **kwargs)
Yield information for known params.
Each item yielded must be a (value, description) tuple.
Parameters kwargs – arguments specific to the placeholder’s context
name = 'contributions'
param_required = False
param_restricted = True
classmethod render(param, person, event, **kwargs)
Convert the placeholder to a string.
When a placeholder contains HTML that should not be escaped, the returned value should be returned as
a markupsafe.Markup instance instead of a plain string.

212 Chapter 7. API reference


Indico Documentation, Release 3.2-dev

Subclasses are encouraged to explicitly specify the arguments they expect instead of using **kwargs.
Parameters kwargs – arguments specific to the placeholder’s context
class indico.modules.events.persons.placeholders.EmailPlaceholder
Bases: indico.util.placeholders.Placeholder
description = l'Email of the person'
name = 'email'
classmethod render(person, event, **kwargs)
Convert the placeholder to a string.
When a placeholder contains HTML that should not be escaped, the returned value should be returned as
a markupsafe.Markup instance instead of a plain string.
Subclasses are encouraged to explicitly specify the arguments they expect instead of using **kwargs.
Parameters kwargs – arguments specific to the placeholder’s context
class indico.modules.events.persons.placeholders.EventLinkPlaceholder
Bases: indico.util.placeholders.Placeholder
description = l'Link to the event'
name = 'event_link'
classmethod render(person, event, **kwargs)
Convert the placeholder to a string.
When a placeholder contains HTML that should not be escaped, the returned value should be returned as
a markupsafe.Markup instance instead of a plain string.
Subclasses are encouraged to explicitly specify the arguments they expect instead of using **kwargs.
Parameters kwargs – arguments specific to the placeholder’s context
class indico.modules.events.persons.placeholders.EventTitlePlaceholder
Bases: indico.util.placeholders.Placeholder
description = l'The title of the event'
name = 'event_title'
classmethod render(person, event, **kwargs)
Convert the placeholder to a string.
When a placeholder contains HTML that should not be escaped, the returned value should be returned as
a markupsafe.Markup instance instead of a plain string.
Subclasses are encouraged to explicitly specify the arguments they expect instead of using **kwargs.
Parameters kwargs – arguments specific to the placeholder’s context
class indico.modules.events.persons.placeholders.FirstNamePlaceholder
Bases: indico.util.placeholders.Placeholder
description = l'First name of the person'
name = 'first_name'
classmethod render(person, event, **kwargs)
Convert the placeholder to a string.
When a placeholder contains HTML that should not be escaped, the returned value should be returned as
a markupsafe.Markup instance instead of a plain string.

7.1. API reference 213


Indico Documentation, Release 3.2-dev

Subclasses are encouraged to explicitly specify the arguments they expect instead of using **kwargs.
Parameters kwargs – arguments specific to the placeholder’s context
class indico.modules.events.persons.placeholders.LastNamePlaceholder
Bases: indico.util.placeholders.Placeholder
description = l'Last name of the person'
name = 'last_name'
classmethod render(person, event, **kwargs)
Convert the placeholder to a string.
When a placeholder contains HTML that should not be escaped, the returned value should be returned as
a markupsafe.Markup instance instead of a plain string.
Subclasses are encouraged to explicitly specify the arguments they expect instead of using **kwargs.
Parameters kwargs – arguments specific to the placeholder’s context
class indico.modules.events.persons.placeholders.RegisterLinkPlaceholder
Bases: indico.util.placeholders.Placeholder
description = l'The link for the registration page'
name = 'register_link'
classmethod render(person, event, **kwargs)
Convert the placeholder to a string.
When a placeholder contains HTML that should not be escaped, the returned value should be returned as
a markupsafe.Markup instance instead of a plain string.
Subclasses are encouraged to explicitly specify the arguments they expect instead of using **kwargs.
Parameters kwargs – arguments specific to the placeholder’s context

7.1.13 Registration

Todo: Docstrings (module, models, utilities, statistics)

Models

class indico.modules.events.registration.models.registrations.Registration(**kwargs)
Bases: sqlalchemy.orm.decl_api.Model
Somebody’s registration for an event through a registration form.
A simple constructor that allows initialization from kwargs.
Sets attributes on the constructed instance using the names and values in kwargs.
Only keys that are present as attributes of the instance’s class are allowed. These could be, for example, any
mapped columns or relationships.
avatar_url
Return the url of the user’s avatar.
base_price
The base registration fee (that is not specific to form items)

214 Chapter 7. API reference


Indico Documentation, Release 3.2-dev

billable_data
can_be_modified
can_be_withdrawn
checked_in
Whether the person has checked in. Setting this also sets or clears checked_in_dt.
checked_in_dt
The date/time when the person has checked in
currency
Registration price currency
data
The registration this data is associated with
data_by_field
display_full_name
Return the full name using the user’s preferred name format.
email
The email of the registrant
event
The Event containing this registration
event_id
The ID of the event
first_name
The first name of the registrant
friendly_id
The human-friendly ID for the object
full_name
Return the user’s name in ‘Firstname Lastname’ notation.
classmethod get_all_for_event(event)
Retrieve all registrations in all registration forms of an event.
get_full_name(last_name_first=True, last_name_upper=False, abbrev_first_name=False)
Return the user’s in the specified notation.
If not format options are specified, the name is returned in the ‘Lastname, Firstname’ notation.
Note: Do not use positional arguments when calling this method. Always use keyword arguments!
Parameters
• last_name_first – if “lastname, firstname” instead of “firstname lastname” should
be used
• last_name_upper – if the last name should be all-uppercase
• abbrev_first_name – if the first name should be abbreviated to use only the first
character
get_personal_data()
has_conflict()
Check if there are other valid registrations for the same user.

7.1. API reference 215


Indico Documentation, Release 3.2-dev

This is intended for cases where this registration is currenly invalid (rejected or withdrawn) to determine
whether it would be acceptable to restore it.
has_files
id
The ID of the object
is_active
is_cancelled
is_deleted
If the registration has been deleted
is_paid
Return whether the registration has been paid for.
is_publishable
is_ticket_blocked
Check whether the ticket is blocked by a plugin.
last_name
The last name of the registrant
locator
Define a smart locator property.
This behaves pretty much like a normal read-only property and the decorated function should return a dict
containing the necessary data to build a URL for the object.
This decorator should usually be applied to a method named locator as this name is required for
get_locator to find it automatically when just passing the object.
If you need more than one locator, you can define it like this:

@locator_property
def locator(self):
return {...}

@locator.other
def locator(self):
return {...}

The other locator can then be accessed by passing obj.locator.other to the code expecting an
object with a locator.
log(*args, **kwargs)
Log with prefilled metadata for the registration.
classmethod merge_users(target, source)
order_by_name = (<sqlalchemy.sql.functions.Function at 0x7f331e30ea30; lower>, <sqlalch
payment_dt
The date/time when the registration has been paid for.
price
The total price of the registration.
This includes the base price, the field-specific price, and the custom price adjustment for the registrant.
Return type Decimal

216 Chapter 7. API reference


Indico Documentation, Release 3.2-dev

price_adjustment
The price modifier applied to the final calculated price
registration_form_id
The ID of the registration form
rejection_reason
If given a reason for rejection
render_base_price()
render_price()
render_price_adjustment()
sections_with_answered_fields
state
The state a registration is in
submitted_dt
The date/time when the registration was recorded
summary_data
Export registration data nested in sections and fields.
sync_state(_skip_moderation=True)
Sync the state of the registration.
tags
The registration tags assigned to this registration
ticket_uuid
The unique token used in tickets
transaction
The latest payment transaction associated with this registration
transaction_id
The ID of the latest payment transaction associated with this registration
update_state(approved=None, paid=None, rejected=None, withdrawn=None,
_skip_moderation=False)
Update the state of the registration for a given action.
The accepted kwargs are the possible actions. True means that the action occured and False that it was
reverted.
user
user_id
The ID of the user who registered
uuid
The unguessable ID for the object
class indico.modules.events.registration.models.registrations.RegistrationData(**kwargs)
Bases: indico.core.storage.models.StoredFileMixin, sqlalchemy.orm.decl_api.
Model
Data entry within a registration for a field in a registration form.
A simple constructor that allows initialization from kwargs.
Sets attributes on the constructed instance using the names and values in kwargs.

7.1. API reference 217


Indico Documentation, Release 3.2-dev

Only keys that are present as attributes of the instance’s class are allowed. These could be, for example, any
mapped columns or relationships.
add_file_date_column = False
content_type
The MIME type of the file.
created_dt = None
data
The submitted data for the field
extension
The extension of the file.
field_data
The associated field data object
field_data_id
The ID of the field data
file
file_required = False
filename
The name of the file.
friendly_data
get_friendly_data(**kwargs)
locator
Define a smart locator property.
This behaves pretty much like a normal read-only property and the decorated function should return a dict
containing the necessary data to build a URL for the object.
This decorator should usually be applied to a method named locator as this name is required for
get_locator to find it automatically when just passing the object.
If you need more than one locator, you can define it like this:

@locator_property
def locator(self):
return {...}

@locator.other
def locator(self):
return {...}

The other locator can then be accessed by passing obj.locator.other to the code expecting an
object with a locator.
md5
An MD5 hash of the file.
Automatically assigned when save() is called.
price
registration_id
The ID of the registration

218 Chapter 7. API reference


Indico Documentation, Release 3.2-dev

render_price()
search_data
size
The size of the file (in bytes).
Automatically assigned when save() is called.
storage_backend
storage_file_id
summary_data
user_data
class indico.modules.events.registration.models.registrations.RegistrationState
Bases: indico.util.enum.RichIntEnum
An enumeration.
complete = 1
pending = 2
rejected = 3
unpaid = 5
withdrawn = 4
class indico.modules.events.registration.models.form_fields.RegistrationFormField(**kwargs)
Bases: indico.modules.events.registration.models.items.RegistrationFormItem
A registration form field.
A simple constructor that allows initialization from kwargs.
Sets attributes on the constructed instance using the names and values in kwargs.
Only keys that are present as attributes of the instance’s class are allowed. These could be, for example, any
mapped columns or relationships.
calculate_price(registration_data)
children
current_data
current_data_id
data
data_versions
description
field_impl
Gets the implementation of the field.
Returns An instance of a RegistrationFormFieldBase subclass
get_friendly_data(registration_data, **kwargs)
html_field_name
id
input_type

7.1. API reference 219


Indico Documentation, Release 3.2-dev

is_deleted
is_enabled
is_manager_only
is_required
locator
parent_id
personal_data_type
position
registration_form_id
title
type
versioned_data
view_data
Return object with data that Angular can understand.
class indico.modules.events.registration.models.form_fields.RegistrationFormFieldData(**kwa
Bases: sqlalchemy.orm.decl_api.Model
Description of a registration form field.
A simple constructor that allows initialization from kwargs.
Sets attributes on the constructed instance using the names and values in kwargs.
Only keys that are present as attributes of the instance’s class are allowed. These could be, for example, any
mapped columns or relationships.
field_id
The ID of the registration form field
id
The ID of the object
versioned_data
Data describing the field
class indico.modules.events.registration.models.form_fields.RegistrationFormPersonalDataFie
Bases: indico.modules.events.registration.models.form_fields.
RegistrationFormField
A simple constructor that allows initialization from kwargs.
Sets attributes on the constructed instance using the names and values in kwargs.
Only keys that are present as attributes of the instance’s class are allowed. These could be, for example, any
mapped columns or relationships.
children
current_data
current_data_id
data
data_versions

220 Chapter 7. API reference


Indico Documentation, Release 3.2-dev

description
html_field_name
id
input_type
is_deleted
is_enabled
is_manager_only
is_required
parent_id
personal_data_type
position
registration_form_id
title
type
view_data
Return object with data that Angular can understand.
class indico.modules.events.registration.models.forms.ModificationMode
Bases: indico.util.enum.RichIntEnum
An enumeration.
allowed_always = 1
allowed_until_approved = 4
allowed_until_payment = 2
not_allowed = 3
class indico.modules.events.registration.models.forms.RegistrationForm(**kwargs)
Bases: sqlalchemy.orm.decl_api.Model
A registration form for an event.
A simple constructor that allows initialization from kwargs.
Sets attributes on the constructed instance using the names and values in kwargs.
Only keys that are present as attributes of the instance’s class are allowed. These could be, for example, any
mapped columns or relationships.
active_fields
active_registrations
attach_ical
If the completed registration email should include the event’s iCalendar file.
base_price
The base fee users have to pay when registering
can_submit(user)

7.1. API reference 221


Indico Documentation, Release 3.2-dev

contact_info
Contact information for registrants
currency
Currency for prices in the registration form
disabled_sections
end_dt
Datetime when the registration form is closed
event
The Event containing this registration form
event_id
The ID of the event
form_items
get_personal_data_field_id(personal_data_type)
Return the field id corresponding to the personal data field with the given name.
get_registration(user=None, uuid=None, email=None)
Retrieve registrations for this registration form by user or uuid.
has_ended
has_started
id
The ID of the object
identifier
introduction
invitations
The registration invitations associated with this form
is_active
is_deleted
Whether the registration has been marked as deleted
is_modification_allowed(registration)
Check whether a registration may be modified.
is_modification_open
is_open
is_participation
Whether it’s the ‘Participants’ form of a meeting/lecture
is_scheduled
limit_reached
locator
manager_notification_recipients
List of emails that should receive management notifications
manager_notifications_enabled
Whether the manager notifications for this event are enabled

222 Chapter 7. API reference


Indico Documentation, Release 3.2-dev

message_complete
Custom message to include in emails for complete registrations
message_pending
Custom message to include in emails for pending registrations
message_unpaid
Custom message to include in emails for unpaid registrations
moderation_enabled
Whether registrations must be approved by a manager
modification_end_dt
Datetime when the modification period is over
modification_mode
Whether registration modifications are allowed
name
notification_sender_address
Notifications sender address
principal_order = 2
principal_type = 8
publish_checkin_enabled
Whether checked-in status should be displayed in the event pages and participant list
publish_registration_count
Whether to display the number of registrations
publish_registrations_enabled
Whether registrations should be displayed in the participant list
registration_limit
Maximum number of registrations allowed
registrations
The registrations associated with this form
render_base_price()
require_login
Whether users must be logged in to register
require_user
Whether registrations must be associated with an Indico account
sections
start_dt
Datetime when the registration form is open
ticket_on_email
Whether to send tickets by e-mail
ticket_on_event_page
Whether to show a ticket download link on the event homepage
ticket_on_summary_page
Whether to show a ticket download link on the registration summary page

7.1. API reference 223


Indico Documentation, Release 3.2-dev

ticket_template
The template used to generate tickets
ticket_template_id
The ID of the template used to generate tickets
tickets_enabled
Whether tickets are enabled for this form
title
The title of the registration form
class indico.modules.events.registration.models.invitations.InvitationState
Bases: indico.util.enum.RichIntEnum
An enumeration.
accepted = 1
declined = 2
pending = 0
class indico.modules.events.registration.models.invitations.RegistrationInvitation(**kwargs)
Bases: sqlalchemy.orm.decl_api.Model
An invitation for someone to register.
A simple constructor that allows initialization from kwargs.
Sets attributes on the constructed instance using the names and values in kwargs.
Only keys that are present as attributes of the instance’s class are allowed. These could be, for example, any
mapped columns or relationships.
affiliation
The affiliation of the invited person
email
The email of the invited person
first_name
The first name of the invited person
id
The ID of the invitation
last_name
The last name of the invited person
locator
Define a smart locator property.
This behaves pretty much like a normal read-only property and the decorated function should return a dict
containing the necessary data to build a URL for the object.
This decorator should usually be applied to a method named locator as this name is required for
get_locator to find it automatically when just passing the object.
If you need more than one locator, you can define it like this:
@locator_property
def locator(self):
return {...}

(continues on next page)

224 Chapter 7. API reference


Indico Documentation, Release 3.2-dev

(continued from previous page)


@locator.other
def locator(self):
return {...}

The other locator can then be accessed by passing obj.locator.other to the code expecting an
object with a locator.
registration
The associated registration
registration_form_id
The ID of the registration form
registration_id
The ID of the registration (if accepted)
skip_moderation
Whether registration moderation should be skipped
state
The state of the invitation
uuid
The UUID of the invitation
class indico.modules.events.registration.models.items.PersonalDataType
Bases: int, indico.util.enum.IndicoEnum
Description of the personal data items that exist on every registration form.
FIELD_DATA = [(<PersonalDataType.first_name: 2>, {'title': 'First Name', 'input_type'
address = 6
affiliation = 4
column
The Registration column in which the value is stored in addition to the regular registration data entry.
country = 8
default
The default value used for the corresponding registration field if the value does not exist in session.user.
email = 1
first_name = 2
get_title()
is_required
last_name = 3
phone = 7
position = 9
title = 5
class indico.modules.events.registration.models.items.RegistrationFormItem(**kwargs)
Bases: sqlalchemy.orm.decl_api.Model
Generic registration form item.

7.1. API reference 225


Indico Documentation, Release 3.2-dev

A simple constructor that allows initialization from kwargs.


Sets attributes on the constructed instance using the names and values in kwargs.
Only keys that are present as attributes of the instance’s class are allowed. These could be, for example, any
mapped columns or relationships.
children
current_data
The latest value of the field
current_data_id
The ID of the latest data
data
unversioned field data
data_versions
The list of all versions of the field data
description
Description of this field
id
The ID of the object
input_type
input type of this field
is_deleted
Whether field has been “deleted”
is_enabled
Whether the field is enabled
is_field
is_manager_only
if the section is only accessible to managers
is_required
determines if the field is mandatory
is_section
is_visible
parent_id
The ID of the parent form item
personal_data_type
The type of a personal data field
position
registration_form_id
The ID of the registration form
title
The title of this field
type
The type of the registration form item

226 Chapter 7. API reference


Indico Documentation, Release 3.2-dev

view_data
Return object with data that Angular can understand.
class indico.modules.events.registration.models.items.RegistrationFormItemType
Bases: int, indico.util.enum.IndicoEnum
An enumeration.
field = 2
field_pd = 5
section = 1
section_pd = 4
text = 3
class indico.modules.events.registration.models.items.RegistrationFormPersonalDataSection(*
Bases: indico.modules.events.registration.models.items.
RegistrationFormSection
A simple constructor that allows initialization from kwargs.
Sets attributes on the constructed instance using the names and values in kwargs.
Only keys that are present as attributes of the instance’s class are allowed. These could be, for example, any
mapped columns or relationships.
children
current_data
current_data_id
data
data_versions
description
id
input_type
is_deleted
is_enabled
is_manager_only
is_required
own_data
parent_id
personal_data_type
position
registration_form_id
title
type

7.1. API reference 227


Indico Documentation, Release 3.2-dev

class indico.modules.events.registration.models.items.RegistrationFormSection(**kwargs)
Bases: indico.modules.events.registration.models.items.RegistrationFormItem
Registration form section that can contain fields and text.
A simple constructor that allows initialization from kwargs.
Sets attributes on the constructed instance using the names and values in kwargs.
Only keys that are present as attributes of the instance’s class are allowed. These could be, for example, any
mapped columns or relationships.
active_fields
children
current_data
current_data_id
data
data_versions
description
fields
id
input_type
is_deleted
is_enabled
is_manager_only
is_required
locator
own_data
parent_id
personal_data_type
position
registration_form_id
title
type
view_data
Return object with data that Angular can understand.
class indico.modules.events.registration.models.items.RegistrationFormText(**kwargs)
Bases: indico.modules.events.registration.models.items.RegistrationFormItem
Text to be displayed in registration form sections.
A simple constructor that allows initialization from kwargs.
Sets attributes on the constructed instance using the names and values in kwargs.
Only keys that are present as attributes of the instance’s class are allowed. These could be, for example, any
mapped columns or relationships.

228 Chapter 7. API reference


Indico Documentation, Release 3.2-dev

children
current_data
current_data_id
data
data_versions
description
id
input_type
is_deleted
is_enabled
is_manager_only
is_required
locator
parent_id
personal_data_type
position
registration_form_id
title
type
view_data
Return object with data that Angular can understand.

Utilities

indico.modules.events.registration.util.build_registration_api_data(registration)
indico.modules.events.registration.util.build_registrations_api_data(event)
indico.modules.events.registration.util.check_registration_email(regform,
email,
registra-
tion=None,
manage-
ment=False)
Check whether an email address is suitable for registration.
Parameters
• regform – The registration form
• email – The email address
• registration – The existing registration (in case of modification)
• management – If it’s a manager adding a new registration

7.1. API reference 229


Indico Documentation, Release 3.2-dev

indico.modules.events.registration.util.create_invitation(regform, user,
skip_moderation,
email_from,
email_subject,
email_body)
indico.modules.events.registration.util.create_personal_data_fields(regform)
Create the special section/fields for personal data.
indico.modules.events.registration.util.create_registration(regform, data, in-
vitation=None,
management=False,
notify_user=True,
skip_moderation=None)
indico.modules.events.registration.util.generate_spreadsheet_from_registrations(registrations,
reg-
form_items,
static_items)
Generate a spreadsheet data from a given registration list.
Parameters
• registrations – The list of registrations to include in the file
• regform_items – The registration form items to be used as columns
• static_items – Registration form information as extra columns
indico.modules.events.registration.util.generate_ticket(registration)
indico.modules.events.registration.util.generate_ticket_qr_code(registration)
Generate a Pillow Image with a QR Code encoding a check-in ticket.
Parameters registration – corresponding Registration object
indico.modules.events.registration.util.get_event_regforms(event, user,
with_registrations=False,
only_in_acl=False)
Get registration forms with information about user registrations.
Parameters
• event – the Event to get registration forms for
• user – A User
• with_registrations – Whether to return the user’s registration instead of just whether
they have one
• only_in_acl – Whether to include only registration forms that are in the event’s ACL
indico.modules.events.registration.util.get_event_regforms_registrations(event,
user,
in-
clude_scheduled=True,
only_in_acl=False)
Get regforms and the associated registrations for an event+user.
Parameters
• event – the Event to get registration forms for
• user – A User

230 Chapter 7. API reference


Indico Documentation, Release 3.2-dev

• include_scheduled – Whether to include scheduled but not open registration forms


• only_in_acl – Whether to include only registration forms that are in the event’s ACL
Returns A tuple, which includes: - All registration forms which are scheduled, open or registered.
- A dict mapping all registration forms to the user’s registration if they have one.
indico.modules.events.registration.util.get_event_section_data(regform, man-
agement=False,
registra-
tion=None)
indico.modules.events.registration.util.get_events_registered(user, dt=None)
Get the IDs of events where the user is registered.
Parameters
• user – A User
• dt – Only include events taking place on/after that date
Returns A set of event ids
indico.modules.events.registration.util.get_flat_section_positions_setup_data(regform)
indico.modules.events.registration.util.get_flat_section_setup_data(regform)
indico.modules.events.registration.util.get_flat_section_submission_data(regform,
*,
man-
age-
ment=False,
reg-
is-
tra-
tion=None)
indico.modules.events.registration.util.get_published_registrations(event)
Get a list of published registrations for an event.
Parameters event – the Event to get registrations for
Returns list of Registration objects
indico.modules.events.registration.util.get_registered_event_persons(event)
Get all registered EventPersons of an event.
indico.modules.events.registration.util.get_registrations_with_tickets(user,
event)
indico.modules.events.registration.util.get_ticket_attachments(registration)
indico.modules.events.registration.util.get_title_uuid(regform, title)
Convert a string title to its UUID value.
If the title does not exist in the title PD field, it will be ignored and returned as None.
indico.modules.events.registration.util.import_invitations_from_csv(regform,
fileobj,
email_from,
email_subject,
email_body,
skip_moderation=True,
skip_existing=False)
Import invitations from a CSV file.

7.1. API reference 231


Indico Documentation, Release 3.2-dev

Returns A list of invitations and the number of skipped records which is zero if skip_existing=False
indico.modules.events.registration.util.import_registrations_from_csv(regform,
fileobj,
skip_moderation=True,
no-
tify_users=False)
Import event registrants from a CSV file into a form.
indico.modules.events.registration.util.import_user_records_from_csv(fileobj,
columns)
Parse and do basic validation of user data from a CSV file.
Parameters
• fileobj – the CSV file to be read
• columns – A list of column names, ‘first_name’, ‘last_name’, & ‘email’ are compulsory.
Returns A list dictionaries each representing one row, the keys of which are given by the column
names.
indico.modules.events.registration.util.make_registration_schema(regform,
manage-
ment=False,
registra-
tion=None)
Dynamically create a Marshmallow schema based on the registration form fields.
indico.modules.events.registration.util.modify_registration(registration, data,
management=False,
notify_user=True)
indico.modules.events.registration.util.serialize_registration_form(regform)
Serialize registration form to JSON-like object.
indico.modules.events.registration.util.update_regform_item_positions(regform)
Update positions when deleting/disabling an item in order to prevent gaps.
indico.modules.events.registration.util.url_rule_to_angular(endpoint)
Convert a flask-style rule to angular style.

Placeholders

class indico.modules.events.registration.placeholders.registrations.EventLinkPlaceholder
Bases: indico.util.placeholders.Placeholder
description = l'Link to the event'
name = 'event_link'
classmethod render(regform, registration)
Convert the placeholder to a string.
When a placeholder contains HTML that should not be escaped, the returned value should be returned as
a markupsafe.Markup instance instead of a plain string.
Subclasses are encouraged to explicitly specify the arguments they expect instead of using **kwargs.
Parameters kwargs – arguments specific to the placeholder’s context
class indico.modules.events.registration.placeholders.registrations.EventTitlePlaceholder
Bases: indico.util.placeholders.Placeholder

232 Chapter 7. API reference


Indico Documentation, Release 3.2-dev

description = l'The title of the event'


name = 'event_title'
classmethod render(regform, registration)
Convert the placeholder to a string.
When a placeholder contains HTML that should not be escaped, the returned value should be returned as
a markupsafe.Markup instance instead of a plain string.
Subclasses are encouraged to explicitly specify the arguments they expect instead of using **kwargs.
Parameters kwargs – arguments specific to the placeholder’s context
class indico.modules.events.registration.placeholders.registrations.FieldPlaceholder
Bases: indico.util.placeholders.ParametrizedPlaceholder
advanced = True
description = None
classmethod iter_param_info(regform, registration)
Yield information for known params.
Each item yielded must be a (value, description) tuple.
Parameters kwargs – arguments specific to the placeholder’s context
name = 'field'
param_required = True
param_restricted = True
classmethod render(param, regform, registration)
Convert the placeholder to a string.
When a placeholder contains HTML that should not be escaped, the returned value should be returned as
a markupsafe.Markup instance instead of a plain string.
Subclasses are encouraged to explicitly specify the arguments they expect instead of using **kwargs.
Parameters kwargs – arguments specific to the placeholder’s context
class indico.modules.events.registration.placeholders.registrations.FirstNamePlaceholder
Bases: indico.util.placeholders.Placeholder
description = l'First name of the person'
name = 'first_name'
classmethod render(regform, registration)
Convert the placeholder to a string.
When a placeholder contains HTML that should not be escaped, the returned value should be returned as
a markupsafe.Markup instance instead of a plain string.
Subclasses are encouraged to explicitly specify the arguments they expect instead of using **kwargs.
Parameters kwargs – arguments specific to the placeholder’s context
class indico.modules.events.registration.placeholders.registrations.IDPlaceholder
Bases: indico.util.placeholders.Placeholder
description = l'The ID of the registration'
name = 'id'

7.1. API reference 233


Indico Documentation, Release 3.2-dev

classmethod render(regform, registration)


Convert the placeholder to a string.
When a placeholder contains HTML that should not be escaped, the returned value should be returned as
a markupsafe.Markup instance instead of a plain string.
Subclasses are encouraged to explicitly specify the arguments they expect instead of using **kwargs.
Parameters kwargs – arguments specific to the placeholder’s context
class indico.modules.events.registration.placeholders.registrations.LastNamePlaceholder
Bases: indico.util.placeholders.Placeholder
description = l'Last name of the person'
name = 'last_name'
classmethod render(regform, registration)
Convert the placeholder to a string.
When a placeholder contains HTML that should not be escaped, the returned value should be returned as
a markupsafe.Markup instance instead of a plain string.
Subclasses are encouraged to explicitly specify the arguments they expect instead of using **kwargs.
Parameters kwargs – arguments specific to the placeholder’s context
class indico.modules.events.registration.placeholders.registrations.LinkPlaceholder
Bases: indico.util.placeholders.Placeholder
description = l'The link to the registration details'
name = 'link'
classmethod render(regform, registration)
Convert the placeholder to a string.
When a placeholder contains HTML that should not be escaped, the returned value should be returned as
a markupsafe.Markup instance instead of a plain string.
Subclasses are encouraged to explicitly specify the arguments they expect instead of using **kwargs.
Parameters kwargs – arguments specific to the placeholder’s context
class indico.modules.events.registration.placeholders.registrations.RejectionReasonPlacehol
Bases: indico.util.placeholders.Placeholder
description = l'The reason why the registration was rejected'
name = 'rejection_reason'
classmethod render(regform, registration)
Convert the placeholder to a string.
When a placeholder contains HTML that should not be escaped, the returned value should be returned as
a markupsafe.Markup instance instead of a plain string.
Subclasses are encouraged to explicitly specify the arguments they expect instead of using **kwargs.
Parameters kwargs – arguments specific to the placeholder’s context
class indico.modules.events.registration.placeholders.invitations.FirstNamePlaceholder
Bases: indico.util.placeholders.Placeholder
description = l'First name of the person'
name = 'first_name'

234 Chapter 7. API reference


Indico Documentation, Release 3.2-dev

classmethod render(invitation)
Convert the placeholder to a string.
When a placeholder contains HTML that should not be escaped, the returned value should be returned as
a markupsafe.Markup instance instead of a plain string.
Subclasses are encouraged to explicitly specify the arguments they expect instead of using **kwargs.
Parameters kwargs – arguments specific to the placeholder’s context
class indico.modules.events.registration.placeholders.invitations.InvitationLinkPlaceholder
Bases: indico.util.placeholders.Placeholder
description = l'Link to accept/decline the invitation'
name = 'invitation_link'
classmethod render(invitation)
Convert the placeholder to a string.
When a placeholder contains HTML that should not be escaped, the returned value should be returned as
a markupsafe.Markup instance instead of a plain string.
Subclasses are encouraged to explicitly specify the arguments they expect instead of using **kwargs.
Parameters kwargs – arguments specific to the placeholder’s context
required = True
class indico.modules.events.registration.placeholders.invitations.LastNamePlaceholder
Bases: indico.util.placeholders.Placeholder
description = l'Last name of the person'
name = 'last_name'
classmethod render(invitation)
Convert the placeholder to a string.
When a placeholder contains HTML that should not be escaped, the returned value should be returned as
a markupsafe.Markup instance instead of a plain string.
Subclasses are encouraged to explicitly specify the arguments they expect instead of using **kwargs.
Parameters kwargs – arguments specific to the placeholder’s context

Settings

class indico.modules.events.registration.settings.RegistrationSettingsProxy(module,
de-
faults=None,
strict=True,
acls=None,
con-
vert-
ers=None)
Bases: indico.modules.events.settings.EventSettingsProxy
Store per-event registration settings.
get_participant_list_columns(event, form=None)
get_participant_list_form_ids(event)

7.1. API reference 235


Indico Documentation, Release 3.2-dev

set_participant_list_columns(event, columns, form=None)


set_participant_list_form_ids(event, form_ids)

Statistics

class indico.modules.events.registration.stats.AccommodationStats(field)
Bases: indico.modules.events.registration.stats.FieldStats, indico.modules.
events.registration.stats.StatsBase
class indico.modules.events.registration.stats.Cell
Bases: indico.modules.events.registration.stats.Cell
Hold data and type for a cell of a stats table.
The table below indicates the valid types and expected data.

type data
str str – string value
progress (int, str) – a tuple with the progress (a value between 0 and 1) and a label
progress-stacked ([int], str) – a tuple with a list of progresses (values which must sum up to 1) and a label
currency float – numeric value
icon str – icon name from _icons.scss
default None – renders a default cell with an &mdash; (use Cell(type=’str’) for an empty cell)

Parameters
• type – str – The type of data in the cell
• data – The data for the cell
• colspan – int – HTML colspan value for the cell
• classes – [str] – HTML classes to apply to the cell
• qtip – str – content for qtip

class indico.modules.events.registration.stats.DataItem
Bases: indico.modules.events.registration.stats.DataItem
Hold the aggregation of some data, intended for stats tables as a aggregation from which to generate cells.
Parameters
• regs – int – number of registrant
• attendance – int – number of people attending
• capacity – int – maximum number of people allowed to attend (0 if unlimited)
• billable – bool – whether the item is billable to the or not
• cancelled – bool – whether the item is cancelled or not
• price – str – the price of the item
• fixed_price – bool – True if the price is per registrant, False if accompanying guests
must pay as well.
• paid – int – number of registrants who paid
• paid_amount – float – amount already paid by registrants

236 Chapter 7. API reference


Indico Documentation, Release 3.2-dev

• unpaid – int – number of registrants who haven’t paid


• unpaid_amount – float – amount not already paid by registrants
class indico.modules.events.registration.stats.FieldStats(field, **kwargs)
Bases: object
Hold stats for a registration form field.
get_table()
Return a table containing the stats for each item.
Returns dict – A table with a list of head cells (key: ‘head’) and a list of rows (key: ‘rows’)
where each row is a list of cells.
is_currency_shown
class indico.modules.events.registration.stats.OverviewStats(regform)
Bases: indico.modules.events.registration.stats.StatsBase
Generic stats for a registration form.
class indico.modules.events.registration.stats.StatsBase(title, subtitle, type,
**kwargs)
Bases: object
Base class for registration form statistics.
Parameters
• title – str – the title for the stats box
• subtitle – str – the subtitle for the stats box
• type – str – the type used in Jinja to display the stats
is_currency_shown

7.1.14 Reminder

Todo: Docstrings (module)

Models

class indico.modules.events.reminders.models.reminders.EventReminder(**kwargs)
Bases: sqlalchemy.orm.decl_api.Model
Email reminders for events.
A simple constructor that allows initialization from kwargs.
Sets attributes on the constructed instance using the names and values in kwargs.
Only keys that are present as attributes of the instance’s class are allowed. These could be, for example, any
mapped columns or relationships.
all_recipients
Return all recipients of the notifications.
This includes both explicit recipients and, if enabled, participants/speakers of the event.

7.1. API reference 237


Indico Documentation, Release 3.2-dev

attach_ical
If the notification should include the event’s iCalendar file.
created_dt
The date/time when the reminder was created
creator
The user who created the reminder
creator_id
The ID of the user who created the reminder
event
The Event this reminder is associated with
event_id
The ID of the event
event_start_delta
How long before the event start the reminder should be sent This is needed to update the scheduled_dt
when changing the start time of the event.
id
The ID of the reminder
include_description
If the notification should include the event’s description.
include_summary
If the notification should include a summary of the event’s schedule.
is_overdue
is_relative
Return if the reminder is relative to the event time.
is_sent
If the reminder has been sent
locator
message
Custom message to include in the email
recipients
The recipients of the notification
reply_to_address
The address to use as Reply-To in the notification email.
scheduled_dt
The date/time when the reminder should be sent
send()
Send the reminder to its recipients.
send_to_participants
If the notification should also be sent to all event participants
send_to_speakers
If the notification should also be sent to all event speakers

238 Chapter 7. API reference


Indico Documentation, Release 3.2-dev

Utilities

indico.modules.events.reminders.util.make_reminder_email(event, with_agenda,
with_description, note)
Return the template module for the reminder email.
Parameters
• event – The event
• with_agenda – If the event’s agenda should be included
• note – A custom message to include in the email

7.1.15 Request

Todo: Docstrings (module)

Models

class indico.modules.events.requests.models.requests.Request(**kwargs)
Bases: sqlalchemy.orm.decl_api.Model
Event-related requests, e.g. for a webcast.
A simple constructor that allows initialization from kwargs.
Sets attributes on the constructed instance using the names and values in kwargs.
Only keys that are present as attributes of the instance’s class are allowed. These could be, for example, any
mapped columns or relationships.
can_be_modified
Determine if the request can be modified or if a new one must be sent.
comment
an optional comment for an accepted/rejected request
created_by_id
ID of the user creating the request
created_by_user
The user who created the request
created_dt
the date/time the request was created
data
plugin-specific data of the request
definition
event
The Event this agreement is associated with
event_id
ID of the event
classmethod find_latest_for_event(event, type_=None)
Return the latest requests for a given event.

7.1. API reference 239


Indico Documentation, Release 3.2-dev

Parameters
• event – the event to find the requests for
• type – the request type to retrieve, or None to get all
Returns a dict mapping request types to a Request or if type_ was specified, a single
Request or None
id
request ID
locator
processed_by_id
ID of the user processing the request
processed_by_user
The user who processed the request
processed_dt
the date/time the request was accepted/rejected
state
the requests’s date, a RequestState value
type
the request type name
class indico.modules.events.requests.models.requests.RequestState
Bases: indico.util.enum.RichIntEnum
An enumeration.
accepted = 1
pending = 0
rejected = 2
withdrawn = 3

Utilities

indico.modules.events.requests.util.get_request_definitions()
Return a dict of request definitions.
indico.modules.events.requests.util.is_request_manager(user)
Check if the user manages any request types.
class indico.modules.events.requests.base.RequestDefinitionBase
Bases: object
A service request which can be sent by event managers.
classmethod accept(req, data, user)
Accept the request.
To ensure that additional data is saved, this method should call :method:‘manager_save‘.
Parameters
• req – the Request of the request
• data – the form data from the management form

240 Chapter 7. API reference


Indico Documentation, Release 3.2-dev

• user – the user processing the request


classmethod can_be_managed(user)
Check whether the user is allowed to manage this request type.
Parameters user – a User
classmethod create_form(event, existing_request=None)
Create the request form.
Parameters
• event – the event the request is for
• existing_request – the Request if there’s an existing request of this type
Returns an instance of an IndicoForm subclass
classmethod create_manager_form(req)
Create the request management form.
Parameters req – the Request of the request
Returns an instance of an IndicoForm subclass
form = None
the IndicoForm to use for the request form
form_defaults = {}
default values to use if there’s no existing request
classmethod get_manager_notification_emails()
Return the email addresses of users who manage requests of this type.
The email addresses are used only for notifications. It usually makes sense to return the email addresses
of the users who pass the :method:‘can_be_managed‘ check.
Returns set of email addresses
classmethod get_notification_reply_email()
Return the Reply-To e-mail address for notifications.
classmethod get_notification_template(name, **context)
Get the template module for a notification email.
Parameters
• name – the template name
• context – data passed to the template
manager_form
the IndicoForm to use for the request manager form
alias of RequestManagerForm
classmethod manager_save(req, data)
Save management-specific data.
This method is called when the management form is submitted without accepting/rejecting the request
(which is guaranteed to be already accepted or rejected).
Parameters
• req – the Request of the request
• data – the form data from the management form

7.1. API reference 241


Indico Documentation, Release 3.2-dev

name = None
the unique internal name of the request type
plugin = None
the plugin containing this request definition - assigned automatically
classmethod reject(req, data, user)
Reject the request.
To ensure that additional data is saved, this method should call :method:‘manager_save‘.
Parameters
• req – the Request of the request
• data – the form data from the management form
• user – the user processing the request
classmethod render_form(event, **kwargs)
Render the request form.
Parameters
• event – the event the request is for
• kwargs – arguments passed to the template
classmethod send(req, data)
Send a new/modified request.
Parameters
• req – the Request of the request
• data – the form data from the request form
title = None
the title of the request type as shown to users
classmethod withdraw(req, notify_event_managers=True)
Withdraw the request.
Parameters
• req – the Request of the request
• notify_event_managers – if event managers should be notified

7.1.16 Session

Todo: Docstrings (module, models, operations, utilities)

Models

class indico.modules.events.sessions.models.sessions.Session(**kwargs)
Bases: indico.core.db.sqlalchemy.descriptions.DescriptionMixin, indico.core.
db.sqlalchemy.colors.ColorMixin, indico.core.db.sqlalchemy.protection.
ProtectionManagersMixin, indico.core.db.sqlalchemy.locations.LocationMixin,

242 Chapter 7. API reference


Indico Documentation, Release 3.2-dev

indico.core.db.sqlalchemy.attachments.AttachedItemsMixin, indico.core.db.
sqlalchemy.notes.AttachedNotesMixin, sqlalchemy.orm.decl_api.Model
ATTACHMENT_FOLDER_ID_COLUMN = 'session_id'
PRELOAD_EVENT_ATTACHED_ITEMS = True
PRELOAD_EVENT_NOTES = True
access_key = None
acl_entries
allow_relationship_preloading = True
background_color
blocks
can_manage_blocks(user, allow_admin=True)
Check whether a user can manage session blocks.
This only applies to the blocks themselves, not to contributions inside them.
can_manage_contributions(user, allow_admin=True)
Check whether a user can manage contributions within the session.
code
conveners
default_colors = ColorTuple(text='202020', background='e3f2d3')
default_contribution_duration
default_render_mode = 2
disallowed_protection_modes = frozenset()
end_dt
event
event_id
friendly_id
The human-friendly ID for the session
get_non_inheriting_objects()
Get a set of child objects that do not inherit protection.
id
inherit_location
inheriting_have_acl = True
is_deleted
is_poster
location_backref_name = 'sessions'
location_parent
The parent object to consult if the location is inherited.

7.1. API reference 243


Indico Documentation, Release 3.2-dev

locator
Define a smart locator property.
This behaves pretty much like a normal read-only property and the decorated function should return a dict
containing the necessary data to build a URL for the object.
This decorator should usually be applied to a method named locator as this name is required for
get_locator to find it automatically when just passing the object.
If you need more than one locator, you can define it like this:

@locator_property
def locator(self):
return {...}

@locator.other
def locator(self):
return {...}

The other locator can then be accessed by passing obj.locator.other to the code expecting an
object with a locator.
note
own_address
own_no_access_contact = None
own_room
own_room_id
own_room_name
own_venue
own_venue_id
own_venue_name
possible_render_modes = {<RenderMode.markdown: 2>}
classmethod preload_acl_entries(event)
protection_mode
protection_parent
The parent object to consult for ProtectionMode.inheriting.
render_mode = 2
session
Convenience property so all event entities have it.
start_dt
text_color
title
type
type_id
class indico.modules.events.sessions.models.blocks.SessionBlock(**kwargs)
Bases: indico.core.db.sqlalchemy.locations.LocationMixin, sqlalchemy.orm.
decl_api.Model

244 Chapter 7. API reference


Indico Documentation, Release 3.2-dev

can_access(user, allow_admin=True)
can_edit_note(user)
can_manage(user, allow_admin=True)
can_manage_attachments(user)
code
contribution_count
duration
end_dt
event
full_title
has_note
id
inherit_location
location_backref_name = 'session_blocks'
location_parent
The parent object to consult if the location is inherited.
locator
Define a smart locator property.
This behaves pretty much like a normal read-only property and the decorated function should return a dict
containing the necessary data to build a URL for the object.
This decorator should usually be applied to a method named locator as this name is required for
get_locator to find it automatically when just passing the object.
If you need more than one locator, you can define it like this:

@locator_property
def locator(self):
return {...}

@locator.other
def locator(self):
return {...}

The other locator can then be accessed by passing obj.locator.other to the code expecting an
object with a locator.
note
own_address
own_room
own_room_id
own_room_name
own_venue
own_venue_id
own_venue_name

7.1. API reference 245


Indico Documentation, Release 3.2-dev

person_links
Persons associated with this session block
session_id
slug
start_dt
title
class indico.modules.events.sessions.models.persons.SessionBlockPersonLink(*args,
**kwargs)
Bases: indico.modules.events.models.persons.PersonLinkBase
Association between EventPerson and SessionBlock.
Also known as a ‘session convener’.
display_order
id
object_relationship_name = 'session_block'
person
person_id
person_link_backref_name = 'session_block_links'
person_link_unique_columns = ('session_block_id',)
session_block_id
class indico.modules.events.sessions.models.principals.SessionPrincipal(**kwargs)
Bases: indico.core.db.sqlalchemy.principals.PrincipalPermissionsMixin,
sqlalchemy.orm.decl_api.Model
A simple constructor that allows initialization from kwargs.
Sets attributes on the constructed instance using the names and values in kwargs.
Only keys that are present as attributes of the instance’s class are allowed. These could be, for example, any
mapped columns or relationships.
allow_category_roles = True
allow_emails = True
allow_event_roles = True
allow_registration_forms = True
category_role
category_role_id
disallowed_protection_modes = frozenset()
email
event_role
event_role_id
full_access
id
The ID of the acl entry

246 Chapter 7. API reference


Indico Documentation, Release 3.2-dev

ip_network_group = None
ip_network_group_id = None
local_group
local_group_id
multipass_group_name
multipass_group_provider
permissions
principal_backref_name = 'in_session_acls'
principal_for = 'Session'
read_access
registration_form
registration_form_id
session_id
The ID of the associated session
type
unique_columns = ('session_id',)
user
user_id

Operations

indico.modules.events.sessions.operations.create_session(event, data)
Create a new session with the information passed in the data argument.
indico.modules.events.sessions.operations.create_session_block(session_, data)
indico.modules.events.sessions.operations.delete_session(event_session)
Delete session from the event.
indico.modules.events.sessions.operations.delete_session_block(session_block)
indico.modules.events.sessions.operations.update_session(event_session, data)
Update a session based on the information in the data.
indico.modules.events.sessions.operations.update_session_block(session_block,
data)
Update a session block with data passed in the data argument.
indico.modules.events.sessions.operations.update_session_coordinator_privs(event,
data)

Utilities

class indico.modules.events.sessions.util.SessionListToPDF(sessions)
Bases: indico.legacy.pdfinterface.base.PDFBase
getBody(story=None)
Add the content to the story.

7.1. API reference 247


Indico Documentation, Release 3.2-dev

indico.modules.events.sessions.util.can_manage_sessions(user, event, permis-


sion=None)
Check whether a user can manage any sessions in an event.
indico.modules.events.sessions.util.generate_pdf_from_sessions(sessions)
Generate a PDF file from a given session list.
indico.modules.events.sessions.util.generate_spreadsheet_from_sessions(sessions)
Generate spreadsheet data from a given session list.
Parameters sessions – The sessions to include in the spreadsheet
indico.modules.events.sessions.util.get_events_with_linked_sessions(user,
dt=None)
Return a dict with keys representing event_id and the values containing data about the user rights for sessions
within the event.
Parameters
• user – A User
• dt – Only include events taking place on/after that date
indico.modules.events.sessions.util.get_session_timetable_pdf(sess, **kwargs)
indico.modules.events.sessions.util.get_sessions_for_user(event, user)
indico.modules.events.sessions.util.has_sessions_for_user(event, user)
indico.modules.events.sessions.util.render_session_type_row(session_type)
indico.modules.events.sessions.util.session_coordinator_priv_enabled(event,
priv)
Check whether a coordinator privilege is enabled.
Currently the following privileges are available:
• manage-contributions
• manage-blocks

Parameters
• event – The Event to check for
• priv – The name of the privilege

7.1.17 Survey

Todo: Docstrings (module, models)

Models

class indico.modules.events.surveys.models.surveys.Survey(**kwargs)
Bases: sqlalchemy.orm.decl_api.Model
A simple constructor that allows initialization from kwargs.
Sets attributes on the constructed instance using the names and values in kwargs.

248 Chapter 7. API reference


Indico Documentation, Release 3.2-dev

Only keys that are present as attributes of the instance’s class are allowed. These could be, for example, any
mapped columns or relationships.
anonymous
Whether submissions will not be linked to a user
can_submit(user)
close()
end_dt
Datetime when the survey is closed
event
The Event containing this survey
event_id
The ID of the event
has_ended
has_started
id
The ID of the survey
introduction
is_active
is_deleted
Whether the survey has been marked as deleted
is_visible
items
The list of items
limit_reached
locator
Define a smart locator property.
This behaves pretty much like a normal read-only property and the decorated function should return a dict
containing the necessary data to build a URL for the object.
This decorator should usually be applied to a method named locator as this name is required for
get_locator to find it automatically when just passing the object.
If you need more than one locator, you can define it like this:

@locator_property
def locator(self):
return {...}

@locator.other
def locator(self):
return {...}

The other locator can then be accessed by passing obj.locator.other to the code expecting an
object with a locator.
new_submission_emails
Email addresses to notify about new submissions

7.1. API reference 249


Indico Documentation, Release 3.2-dev

notifications_enabled
Whether to send survey related notifications to users
notify_participants
Whether include Participants / Registrants when sending start notifications
open()
partial_completion
Whether answers can be saved without submitting the survey
private
questions
The list of questions
require_user
Whether submissions must be done by logged users
sections
The list of sections
send_start_notification()
send_submission_notification(submission)
start_dt
Datetime when the survey is open
start_notification_emails
Email addresses to notify about the start of a survey
start_notification_recipients
Return all recipients of the notifications.
This includes both explicit recipients and, if enabled, participants of the event.
start_notification_sent
Whether start notification has been already sent
state
submission_limit
Maximum number of submissions allowed
submissions
The list of submissions
title
The title of the survey
uuid
class indico.modules.events.surveys.models.surveys.SurveyState
Bases: indico.util.enum.IndicoEnum
An enumeration.
active_and_answered = 4
active_and_clean = 3
finished = 5
limit_reached = 6
not_ready = 1

250 Chapter 7. API reference


Indico Documentation, Release 3.2-dev

ready_to_open = 2
class indico.modules.events.surveys.models.items.SurveyItem(**kwargs)
Bases: indico.core.db.sqlalchemy.descriptions.DescriptionMixin, sqlalchemy.
orm.decl_api.Model
A simple constructor that allows initialization from kwargs.
Sets attributes on the constructed instance using the names and values in kwargs.
Only keys that are present as attributes of the instance’s class are allowed. These could be, for example, any
mapped columns or relationships.
default_render_mode = 2
display_as_section
If a section should be rendered as a section
field_data
Field-specific data (such as choices for multi-select fields)
field_type
The type of the field used for the question
id
The ID of the item
is_required
If the question must be answered (wtforms DataRequired)
parent_id
The ID of the parent section item (NULL for top-level items, i.e. sections)
position
The position of the item in the survey form
possible_render_modes = {<RenderMode.markdown: 2>}
render_mode = 2
survey_id
The ID of the survey
title
The title of the item
to_dict()
Return a json-serializable representation of this object.
Subclasses must add their own data to the dict.
type
The type of the survey item
class indico.modules.events.surveys.models.items.SurveyItemType
Bases: int, indico.util.enum.IndicoEnum
An enumeration.
question = 1
section = 2
text = 3

7.1. API reference 251


Indico Documentation, Release 3.2-dev

class indico.modules.events.surveys.models.items.SurveyQuestion(**kwargs)
Bases: indico.modules.events.surveys.models.items.SurveyItem
A simple constructor that allows initialization from kwargs.
Sets attributes on the constructed instance using the names and values in kwargs.
Only keys that are present as attributes of the instance’s class are allowed. These could be, for example, any
mapped columns or relationships.
display_as_section
field
field_data
field_type
get_summary(**kwargs)
Return the summary of answers submitted for this question.
id
is_required
locator
not_empty_answers
parent_id
position
render_mode = 2
survey_id
title
to_dict()
Return a json-serializable representation of this object.
Subclasses must add their own data to the dict.
type
class indico.modules.events.surveys.models.items.SurveySection(**kwargs)
Bases: indico.modules.events.surveys.models.items.SurveyItem
A simple constructor that allows initialization from kwargs.
Sets attributes on the constructed instance using the names and values in kwargs.
Only keys that are present as attributes of the instance’s class are allowed. These could be, for example, any
mapped columns or relationships.
children
The child items of this section
display_as_section
field_data
field_type
id
is_required

252 Chapter 7. API reference


Indico Documentation, Release 3.2-dev

locator
parent_id
position
render_mode = 2
survey_id
title
to_dict()
Return a json-serializable representation of this object.
Subclasses must add their own data to the dict.
type
class indico.modules.events.surveys.models.items.SurveyText(**kwargs)
Bases: indico.modules.events.surveys.models.items.SurveyItem
A simple constructor that allows initialization from kwargs.
Sets attributes on the constructed instance using the names and values in kwargs.
Only keys that are present as attributes of the instance’s class are allowed. These could be, for example, any
mapped columns or relationships.
display_as_section
field_data
field_type
id
is_required
locator
parent_id
position
render_mode = 2
survey_id
title
to_dict()
Return a json-serializable representation of this object.
Subclasses must add their own data to the dict.
type
class indico.modules.events.surveys.models.submissions.SurveyAnswer(**kwargs)
Bases: sqlalchemy.orm.decl_api.Model
A simple constructor that allows initialization from kwargs.
Sets attributes on the constructed instance using the names and values in kwargs.
Only keys that are present as attributes of the instance’s class are allowed. These could be, for example, any
mapped columns or relationships.
answer_data

7.1. API reference 253


Indico Documentation, Release 3.2-dev

data
The user’s answer (no, not 42!) to the question
is_empty
question
The list of answers
question_id
The ID of the question
submission_id
The ID of the submission
class indico.modules.events.surveys.models.submissions.SurveySubmission(**kwargs)
Bases: sqlalchemy.orm.decl_api.Model
A simple constructor that allows initialization from kwargs.
Sets attributes on the constructed instance using the names and values in kwargs.
Only keys that are present as attributes of the instance’s class are allowed. These could be, for example, any
mapped columns or relationships.
answers
The list of answers
friendly_id
The human-friendly ID of the submission
id
The ID of the submission
is_anonymous
Whether the survey submission is anonymous
is_submitted
Whether the survey was submitted
locator
pending_answers
List of non-submitted answers
submitted_dt
The date/time when the survey was submitted
survey_id
The ID of the survey
user
The user who submitted the survey
user_id
The ID of the user who submitted the survey

Operations

indico.modules.events.surveys.operations.add_survey_question(section, field_cls,
data)
Add a question to a survey.
Parameters

254 Chapter 7. API reference


Indico Documentation, Release 3.2-dev

• section – The SurveySection to which the question will be added.


• field_cls – The field class of this question.
• data – The FieldConfigForm.data to populate the question with.
Returns The added SurveyQuestion.
indico.modules.events.surveys.operations.add_survey_section(survey, data)
Add a section to a survey.
Parameters
• survey – The Survey to which the section will be added.
• data – Attributes of the new SurveySection.
Returns The added SurveySection.
indico.modules.events.surveys.operations.add_survey_text(section, data)
Add a text item to a survey.
Parameters
• section – The SurveySection to which the question will be added.
• data – The TextForm.data to populate the question with.
Returns The added SurveyText.

Utilities

indico.modules.events.surveys.util.generate_spreadsheet_from_survey(survey,
submis-
sion_ids)
Generate spreadsheet data from a given survey.
Parameters
• survey – Survey for which the user wants to export submissions
• submission_ids – The list of submissions to include in the file
indico.modules.events.surveys.util.get_events_with_submitted_surveys(user,
dt=None)
Get the IDs of events where the user submitted a survey.
Parameters
• user – A User
• dt – Only include events taking place on/after that date
Returns A set of event ids
indico.modules.events.surveys.util.is_submission_in_progress(survey)
Check whether the current user has a survey submission in progress.
indico.modules.events.surveys.util.make_survey_form(survey)
Create a WTForm from survey questions.
Each question will use a field named question_ID.
Parameters survey – The Survey for which to create the form.
Returns An IndicoForm subclass.

7.1. API reference 255


Indico Documentation, Release 3.2-dev

indico.modules.events.surveys.util.query_active_surveys(event)
indico.modules.events.surveys.util.save_submitted_survey_to_session(submission)
Save submission of a survey to session for further checks.
indico.modules.events.surveys.util.was_survey_submitted(survey)
Check whether the current user has submitted a survey.

7.1.18 Timetable

Todo: Docstring (module, models, operations, utilities)

Models

class indico.modules.events.timetable.models.breaks.Break(**kwargs)
Bases: indico.core.db.sqlalchemy.descriptions.DescriptionMixin, indico.
core.db.sqlalchemy.colors.ColorMixin, indico.core.db.sqlalchemy.locations.
LocationMixin, sqlalchemy.orm.decl_api.Model
A simple constructor that allows initialization from kwargs.
Sets attributes on the constructed instance using the names and values in kwargs.
Only keys that are present as attributes of the instance’s class are allowed. These could be, for example, any
mapped columns or relationships.
background_color
can_access(user)
default_colors = ColorTuple(text='202020', background='90c0f0')
default_render_mode = 2
duration
end_dt
event
id
inherit_location
location_backref_name = 'breaks'
location_parent
The parent object to consult if the location is inherited.
locator
Define a smart locator property.
This behaves pretty much like a normal read-only property and the decorated function should return a dict
containing the necessary data to build a URL for the object.
This decorator should usually be applied to a method named locator as this name is required for
get_locator to find it automatically when just passing the object.
If you need more than one locator, you can define it like this:

256 Chapter 7. API reference


Indico Documentation, Release 3.2-dev

@locator_property
def locator(self):
return {...}

@locator.other
def locator(self):
return {...}

The other locator can then be accessed by passing obj.locator.other to the code expecting an
object with a locator.
own_address
own_room
own_room_id
own_room_name
own_venue
own_venue_id
own_venue_name
possible_render_modes = {<RenderMode.markdown: 2>}
render_mode = 2
start_dt
text_color
title
class indico.modules.events.timetable.models.entries.TimetableEntry(**kwargs)
Bases: sqlalchemy.orm.decl_api.Model
A simple constructor that allows initialization from kwargs.
Sets attributes on the constructed instance using the names and values in kwargs.
Only keys that are present as attributes of the instance’s class are allowed. These could be, for example, any
mapped columns or relationships.
break_
break_id
can_view(user)
Check whether the user will see this entry in the timetable.
children
contribution
contribution_id
duration
end_dt
event
event_id
extend_end_dt(end_dt)

7.1. API reference 257


Indico Documentation, Release 3.2-dev

extend_parent(by_start=True, by_end=True)
Extend start/end of parent objects if needed.
No extension if performed for entries crossing a day boundary in the event timezone.
Parameters
• by_start – Extend parent by start datetime.
• by_end – Extend parent by end datetime.
extend_start_dt(start_dt)
id
is_parallel(in_session=False)
locator
Define a smart locator property.
This behaves pretty much like a normal read-only property and the decorated function should return a dict
containing the necessary data to build a URL for the object.
This decorator should usually be applied to a method named locator as this name is required for
get_locator to find it automatically when just passing the object.
If you need more than one locator, you can define it like this:

@locator_property
def locator(self):
return {...}

@locator.other
def locator(self):
return {...}

The other locator can then be accessed by passing obj.locator.other to the code expecting an
object with a locator.
move(start_dt)
Move the entry to start at a different time.
This method automatically moves children of the entry to preserve their start time relative to the parent’s
start time.
move_next_to(sibling, position=’before’)
object
parent_id
session_block
session_block_id
session_siblings
siblings
siblings_query
start_dt
type

258 Chapter 7. API reference


Indico Documentation, Release 3.2-dev

class indico.modules.events.timetable.models.entries.TimetableEntryType
Bases: indico.util.enum.RichIntEnum
An enumeration.
BREAK = 3
CONTRIBUTION = 2
SESSION_BLOCK = 1

Operations

indico.modules.events.timetable.operations.can_swap_entry(entry, direction,
in_session=False)
indico.modules.events.timetable.operations.create_break_entry(event, data, ses-
sion_block=None)
indico.modules.events.timetable.operations.create_session_block_entry(session_,
data)
indico.modules.events.timetable.operations.create_timetable_entry(event,
data, par-
ent=None,
ex-
tend_parent=False)
indico.modules.events.timetable.operations.delete_timetable_entry(entry,
log=True)
indico.modules.events.timetable.operations.fit_session_block_entry(entry,
log=True)
indico.modules.events.timetable.operations.get_sibling_entry(entry, direction,
in_session=False)
indico.modules.events.timetable.operations.move_timetable_entry(entry, par-
ent=None,
day=None)
Move the entry to another session or top-level timetable.
Parameters
• entry – TimetableEntry to be moved
• parent – If specified then the entry will be set as a child of parent
• day – If specified then the entry will be moved to the top-level timetable on this day
indico.modules.events.timetable.operations.schedule_contribution(contribution,
start_dt, ses-
sion_block=None,
ex-
tend_parent=False)
indico.modules.events.timetable.operations.swap_timetable_entry(entry, di-
rection, ses-
sion_=None)
Swap entry with closest gap or non-parallel sibling.
indico.modules.events.timetable.operations.update_break_entry(break_, data)
indico.modules.events.timetable.operations.update_timetable_entry(entry,
data)

7.1. API reference 259


Indico Documentation, Release 3.2-dev

indico.modules.events.timetable.operations.update_timetable_entry_object(entry,
data)
Update the object of a timetable entry according to its type.

Utilities

indico.modules.events.timetable.util.find_latest_entry_end_dt(obj, day=None)
Get the latest end datetime for timetable entries within the object.
Parameters
• obj – The Event or SessionBlock that will be used to look for timetable entries.
• day – The local event date to look for timetable entries. Applicable only to Event.
Returns The end datetime of the timetable entry finishing the latest. None if no entry was found.
indico.modules.events.timetable.util.find_next_start_dt(duration, obj, day=None,
force=False)
Find the next most convenient start date fitting a duration within an object.
Parameters
• duration – Duration to fit into the event/session-block.
• obj – The Event or SessionBlock the duration needs to fit into.
• day – The local event date where to fit the duration in case the object is an event.
• force – Gives earliest datetime if the duration doesn’t fit.
Returns The end datetime of the latest scheduled entry in the object if the duration fits then. It it
doesn’t, the latest datetime that fits it. None if the duration cannot fit in the object, earliest
datetime if force is True.
indico.modules.events.timetable.util.get_category_timetable(categ_ids, start_dt,
end_dt, de-
tail_level=’event’,
tz=<UTC>,
from_categ=None,
grouped=True, in-
cludible=<function
<lambda>>)
Retrieve time blocks that fall within a specific time interval for a given set of categories.
Parameters
• categ_ids – iterable containing list of category IDs
• start_dt – start of search interval (datetime, expected to be in display timezone)
• end_dt – end of search interval (datetime in expected to be in display timezone)
• detail_level – the level of detail of information
(event|session|contribution)
• tz – the timezone information should be displayed in
• from_categ – Category that will be taken into account to calculate visibility
• grouped – Whether to group results by start date

260 Chapter 7. API reference


Indico Documentation, Release 3.2-dev

• includible – a callable, to allow further arbitrary custom filtering (maybe from 3rd
party plugins) on whether to include (returns True) or not (returns False) each detail
item. Default always returns True.
Returns a dictionary containing timetable information in a structured way. See source code for
examples.
indico.modules.events.timetable.util.get_nested_entries(event)
indico.modules.events.timetable.util.get_session_block_entries(event, day)
Return a list of event top-level session blocks for the given day.
indico.modules.events.timetable.util.get_time_changes_notifications(changes,
tzinfo,
en-
try=None)
indico.modules.events.timetable.util.get_timetable_offline_pdf_generator(event)
indico.modules.events.timetable.util.get_top_level_entries(event)
indico.modules.events.timetable.util.render_entry_info_balloon(entry, ed-
itable=False,
sess=None,
is_session_timetable=False)
indico.modules.events.timetable.util.render_session_timetable(session,
timetable_layout=None,
manage-
ment=False)
indico.modules.events.timetable.util.shift_following_entries(entry, shift, ses-
sion_=None)
Reschedule entries starting after the given entry by the given shift.
class indico.modules.events.timetable.reschedule.RescheduleMode
Bases: str, indico.util.enum.RichEnum
An enumeration.
duration = 'duration'
none = 'none'
time = 'time'
class indico.modules.events.timetable.reschedule.Rescheduler(event, mode, day,
session=None, ses-
sion_block=None,
fit_blocks=False,
gap=datetime.timedelta(0))
Bases: object
Compact the the schedule of an event day by either adjusting start times or durations of timetable entries.
Parameters
• event – The event of which the timetable entries should be rescheduled.
• mode – A RescheduleMode value specifying whether the duration or start time should be
adjusted.
• day – A date specifying the day to reschedule (the day of the timetable entries are deter-
mined using the event’s timezone)

7.1. API reference 261


Indico Documentation, Release 3.2-dev

• session – If specified, only blocks of that session will be rescheduled, ignoring any other
timetable entries. Cannot be combined with session_block.
• session_block` – If specified, only entries inside that block will be rescheduled. Can-
not be combined with session.
• fit_blocks – Whether session blocks should be resized to exactly fit their contents be-
fore the actual rescheduling operation.
• gap – A timedelta specifying the cap between rescheduled timetable entries.
run()
Perform the rescheduling.

7.1.19 Track

Todo: Docstring (module, models, operations)

Models

class indico.modules.events.tracks.models.tracks.Track(**kwargs)
Bases: indico.core.db.sqlalchemy.descriptions.DescriptionMixin, indico.core.
db.sqlalchemy.protection.ProtectionManagersMixin, sqlalchemy.orm.decl_api.
Model
A simple constructor that allows initialization from kwargs.
Sets attributes on the constructed instance using the names and values in kwargs.
Only keys that are present as attributes of the instance’s class are allowed. These could be, for example, any
mapped columns or relationships.
access_key = None
acl_entries
can_convene(user)
can_delete(user)
can_review_abstracts(user)
code
default_render_mode = 2
default_session
default_session_id
disable_protection_mode = True
event
event_id
full_title
full_title_with_group
id

262 Chapter 7. API reference


Indico Documentation, Release 3.2-dev

is_track_group = False
locator
Define a smart locator property.
This behaves pretty much like a normal read-only property and the decorated function should return a dict
containing the necessary data to build a URL for the object.
This decorator should usually be applied to a method named locator as this name is required for
get_locator to find it automatically when just passing the object.
If you need more than one locator, you can define it like this:

@locator_property
def locator(self):
return {...}

@locator.other
def locator(self):
return {...}

The other locator can then be accessed by passing obj.locator.other to the code expecting an
object with a locator.
own_no_access_contact = None
position
possible_render_modes = {<RenderMode.markdown: 2>}
protection_mode = None
render_mode = 2
short_title
short_title_with_group
title
title_with_group
track_group
track_group_id
indico.modules.events.tracks.models.tracks.get_next_position(context)
class indico.modules.events.tracks.models.principals.TrackPrincipal(**kwargs)
Bases: indico.core.db.sqlalchemy.principals.PrincipalPermissionsMixin,
sqlalchemy.orm.decl_api.Model
A simple constructor that allows initialization from kwargs.
Sets attributes on the constructed instance using the names and values in kwargs.
Only keys that are present as attributes of the instance’s class are allowed. These could be, for example, any
mapped columns or relationships.
allow_category_roles = True
allow_event_roles = True
category_role
category_role_id

7.1. API reference 263


Indico Documentation, Release 3.2-dev

email = None
event_role
event_role_id
full_access
id
ip_network_group = None
ip_network_group_id = None
local_group
local_group_id
multipass_group_name
multipass_group_provider
permissions
principal_backref_name = 'in_track_acls'
principal_for = 'Track'
read_access
registration_form = None
registration_form_id = None
track_id
type
unique_columns = ('track_id',)
user
user_id

Operations

indico.modules.events.tracks.operations.create_track(event, data)
indico.modules.events.tracks.operations.create_track_group(event, data)
indico.modules.events.tracks.operations.delete_track(track)
indico.modules.events.tracks.operations.delete_track_group(track_group)
indico.modules.events.tracks.operations.update_program(event, data)
indico.modules.events.tracks.operations.update_track(track, data)
indico.modules.events.tracks.operations.update_track_group(track_group, data)

7.1.20 Static site

Todo: Doctrings (module, utilities)

264 Chapter 7. API reference


Indico Documentation, Release 3.2-dev

Models

class indico.modules.events.static.models.static.StaticSite(**kwargs)
Bases: indico.core.storage.models.StoredFileMixin, sqlalchemy.orm.decl_api.
Model
Static site for an Indico event.
A simple constructor that allows initialization from kwargs.
Sets attributes on the constructed instance using the names and values in kwargs.
Only keys that are present as attributes of the instance’s class are allowed. These could be, for example, any
mapped columns or relationships.
add_file_date_column = False
content_type
The MIME type of the file.
created_dt = None
creator
The user who created the static site
creator_id
ID of the user who created the static site
event
The Event this static site is associated with
event_id
ID of the event
extension
The extension of the file.
file_required = False
filename
The name of the file.
id
Entry ID
locator
md5
An MD5 hash of the file.
Automatically assigned when save() is called.
requested_dt
The date and time the static site was requested
size
The size of the file (in bytes).
Automatically assigned when save() is called.
state
The state of the static site (a StaticSiteState member)
storage_backend
storage_file_id

7.1. API reference 265


Indico Documentation, Release 3.2-dev

class indico.modules.events.static.models.static.StaticSiteState
Bases: indico.util.enum.RichIntEnum
An enumeration.
expired = 4
failed = 3
pending = 0
running = 1
success = 2

Utilities

class indico.modules.events.static.util.RewrittenManifest(manifest)
Bases: pywebpack.manifests.Manifest
A manifest that rewrites its asset paths.
indico.modules.events.static.util.collect_static_files()
Keep track of URLs used by manifest and url_for.
indico.modules.events.static.util.override_request_endpoint(endpoint)
indico.modules.events.static.util.rewrite_css_urls(event, css)
Rewrite CSS in order to handle url(. . . ) properly.
indico.modules.events.static.util.rewrite_static_url(path)
Remove __vxxx prefix from static URLs.
indico.modules.events.static.util.url_to_static_filename(endpoint, url)
Handle special endpoint/URLs so that they link to offline content.

7.1.21 Category

Todo: Docstrings (module, model, operations, utilities)

Models

class indico.modules.categories.models.categories.Category(**kwargs)
Bases: indico.core.db.sqlalchemy.searchable.SearchableTitleMixin, indico.
core.db.sqlalchemy.descriptions.DescriptionMixin, indico.core.db.
sqlalchemy.protection.ProtectionManagersMixin, indico.core.db.sqlalchemy.
attachments.AttachedItemsMixin, sqlalchemy.orm.decl_api.Model
An Indico category.
A simple constructor that allows initialization from kwargs.
Sets attributes on the constructed instance using the names and values in kwargs.
Only keys that are present as attributes of the instance’s class are allowed. These could be, for example, any
mapped columns or relationships.
ATTACHMENT_FOLDER_ID_COLUMN = 'category_id'

266 Chapter 7. API reference


Indico Documentation, Release 3.2-dev

access_key = None
acl_entries
allow_no_access_contact = True
allow_relationship_preloading = True
can_create_events(user)
Check whether the user can create events in the category.
can_propose_events(user)
Check whether the user can propose move requests to the category.
chain_query
Get a query object for the category chain.
The query retrieves the root category first and then all the intermediate categories up to (and including)
this category.
children
deep_children_query
Get a query object for all subcategories.
This includes subcategories at any level of nesting.
default_badge_template
default_badge_template_id
default_event_themes
default_render_mode = 2
default_ticket_template
default_ticket_template_id
disallowed_protection_modes = frozenset()
display_tzinfo
The tzinfo of the category or the one specified by the user.
effective_icon_url
Get the HTTP URL of the icon (possibly inherited).
event_creation_mode
event_creation_notification_emails
event_message
event_message_mode
get_hidden_events(user=None)
Get all hidden events within the given category and user.
classmethod get_icon_data_cte()
classmethod get_protection_cte()
get_protection_parent_cte()
classmethod get_root()
Get the root category.

7.1. API reference 267


Indico Documentation, Release 3.2-dev

classmethod get_tree_cte(col=’id’)
Create a CTE for the category tree.
The CTE contains the following columns:
• id – the category id
• path – an array containing the path from the root to the category itself
• is_deleted – whether the category is deleted

Parameters col – The name of the column to use in the path or a callable receiving the category
alias that must return the expression used for the ‘path’ retrieved by the CTE.

static get_visible_categories_cte(category_id)
Get a sqlalchemy select for the visible categories within the given category, including the category itself.
has_effective_icon
has_icon
has_logo
icon
icon_metadata
icon_url
Get the HTTP URL of the icon.
id
inheriting_have_acl = True
is_deleted
is_descendant_of(categ)
is_empty
is_flat_view_enabled
is_root
locator
Define a smart locator property.
This behaves pretty much like a normal read-only property and the decorated function should return a dict
containing the necessary data to build a URL for the object.
This decorator should usually be applied to a method named locator as this name is required for
get_locator to find it automatically when just passing the object.
If you need more than one locator, you can define it like this:

@locator_property
def locator(self):
return {...}

@locator.other
def locator(self):
return {...}

The other locator can then be accessed by passing obj.locator.other to the code expecting an
object with a locator.

268 Chapter 7. API reference


Indico Documentation, Release 3.2-dev

log(realm, kind, module, summary, user=None, type_=’simple’, data=None, meta=None)


Create a new log entry for the category.
Parameters
• realm – A value from CategoryLogRealm indicating the realm of the action.
• kind – A value from LogKind indicating the kind of the action that was performed.
• module – A human-friendly string describing the module related to the action.
• summary – A one-line summary describing the logged action.
• user – The user who performed the action.
• type – The type of the log entry. This is used for custom rendering of the log mes-
sage/data
• data – JSON-serializable data specific to the log type.
• meta – JSON-serializable data that won’t be displayed.
Returns The newly created EventLogEntry
In most cases the simple log type is fine. For this type, any items from data will be shown in the detailed
view of the log entry. You may either use a dict (which will be sorted) alphabetically or a list of key,
value pairs which will be displayed in the given order.
logo
logo_metadata
logo_url
Get the HTTP URL of the logo.
move(target: indico.modules.categories.models.categories.Category)
Move the category into another category.
notify_managers
nth_parent(n_categs, fail_on_overflow=True)
Return the nth parent of the category.
Parameters
• n_categs – the number of categories to go up
• fail_on_overflow – whether to fail if we try to go above the root category
Returns Category object or None (only if fail_on_overflow is not set)
own_no_access_contact
own_visibility_horizon
Get the highest category this one would like to be visible from (configured visibility).
parent_chain_query
Get a query object for the category’s parent chain.
The query retrieves the root category first and then all the intermediate categories up to (excluding) this
category.
parent_id
position
possible_render_modes = {<RenderMode.markdown: 2>}

7.1. API reference 269


Indico Documentation, Release 3.2-dev

protection_mode
protection_parent
The parent object to consult for ProtectionMode.inheriting.
real_visibility_horizon
Get the highest category this one is actually visible from (as limited by categories above).
render_mode = 2
suggestions_disabled
timezone
title
tzinfo
url
visibility
visibility_horizon_query
Get a query object that returns the highest category this one is visible from.
visible_categories_query
Get a query object for the visible categories within this category, including the category itself.
class indico.modules.categories.models.categories.EventCreationMode
Bases: indico.util.enum.RichIntEnum
An enumeration.
moderated = 2
open = 3
restricted = 1
class indico.modules.categories.models.categories.EventMessageMode
Bases: indico.util.enum.RichIntEnum
An enumeration.
danger = 3
disabled = 0
info = 1
warning = 2
class indico.modules.categories.models.principals.CategoryPrincipal(**kwargs)
Bases: indico.core.db.sqlalchemy.principals.PrincipalPermissionsMixin,
sqlalchemy.orm.decl_api.Model
A simple constructor that allows initialization from kwargs.
Sets attributes on the constructed instance using the names and values in kwargs.
Only keys that are present as attributes of the instance’s class are allowed. These could be, for example, any
mapped columns or relationships.
allow_category_roles = True
allow_networks = True

270 Chapter 7. API reference


Indico Documentation, Release 3.2-dev

category_id
The ID of the associated event
category_role
category_role_id
email = None
event_role = None
event_role_id = None
full_access
id
The ID of the acl entry
ip_network_group
ip_network_group_id
local_group
local_group_id
multipass_group_name
multipass_group_provider
permissions
principal_backref_name = 'in_category_acls'
principal_for = 'Category'
read_access
registration_form = None
registration_form_id = None
type
unique_columns = ('category_id',)
user
user_id
class indico.modules.categories.models.settings.CategorySetting(**kwargs)
Bases: indico.core.settings.models.base.JSONSettingsBase, sqlalchemy.orm.
decl_api.Model
A simple constructor that allows initialization from kwargs.
Sets attributes on the constructed instance using the names and values in kwargs.
Only keys that are present as attributes of the instance’s class are allowed. These could be, for example, any
mapped columns or relationships.
category
category_id
id
module
name

7.1. API reference 271


Indico Documentation, Release 3.2-dev

value

Operations

indico.modules.categories.operations.create_category(parent, data)
indico.modules.categories.operations.delete_category(category)
indico.modules.categories.operations.move_category(category, target_category)
indico.modules.categories.operations.update_category(category, data, skip=())
indico.modules.categories.operations.update_category_protection(category,
data)
indico.modules.categories.operations.update_event_move_request(request, accept,
reason=”)

Utilities

indico.modules.categories.util.can_create_unlisted_events(user)
indico.modules.categories.util.format_visibility(category_or_event, visibility)
indico.modules.categories.util.get_attachment_count(category_id=None)
Get the number of attachments in events in a category.
Parameters category_id – The category ID to get statistics for. Attachments from subcategories
are also included.
Returns The number of attachments
indico.modules.categories.util.get_category_stats(category_id=None)
Get category statistics.
This function is mainly a helper so we can get and cache all values at once and keep a last-update timestamp.
Parameters category_id – The category ID to get statistics for. Subcategories are also included.
indico.modules.categories.util.get_contribs_by_year(category_id=None)
Get the number of contributions for each year.
Parameters category_id – The category ID to get statistics for. Contributions from subcate-
gories are also included.
Returns A dictionary mapping years to contribution counts.
indico.modules.categories.util.get_events_by_year(category_id=None)
Get the number of events for each year.
Parameters category_id – The category ID to get statistics for. Events from subcategories are
also included.
Returns A dictionary mapping years to event counts.
indico.modules.categories.util.get_image_data(image_type, category)
indico.modules.categories.util.get_min_year(category_id=None)
Get the min year.
Parameters category_id – The category ID to get statistics for.
Returns The year.

272 Chapter 7. API reference


Indico Documentation, Release 3.2-dev

indico.modules.categories.util.get_upcoming_events()
Get the global list of upcoming events.
indico.modules.categories.util.get_visibility_options(category_or_event, al-
low_invisible=True)
Return the visibility options available for the category or event.
indico.modules.categories.util.serialize_category_role(role, legacy=True)
Serialize role to JSON-like object.
indico.modules.categories.serialize.serialize_categories_ical(category_ids,
user,
event_filter=True,
event_filter_fn=None,
up-
date_query=None)
Export the events in a category to iCal.
Parameters
• category_ids – Category IDs to export
• user – The user who needs to be able to access the events
• event_filter – A SQLalchemy criterion to restrict which events will be returned. Usu-
ally something involving the start/end date of the event.
• event_filter_fn – A callable that determines which events to include (after querying)
• update_query – A callable that can update the query used to retrieve the events. Must
return the updated query object.
indico.modules.categories.serialize.serialize_category(category,
with_favorite=False,
with_path=False,
parent_path=None,
child_path=None)
indico.modules.categories.serialize.serialize_category_atom(category, url, user,
event_filter)
Export the events in a category to Atom.
Parameters
• category – The category to export
• url – The URL of the feed
• user – The user who needs to be able to access the events
• event_filter – A SQLalchemy criterion to restrict which events will be returned. Usu-
ally something involving the start/end date of the event.
indico.modules.categories.serialize.serialize_category_chain(category, in-
clude_children=False,
in-
clude_parents=False)

7.1. API reference 273


Indico Documentation, Release 3.2-dev

Settings

class indico.modules.categories.settings.CategorySettingsProxy(module, de-


faults=None,
strict=True,
acls=None, con-
verters=None)
Bases: indico.core.settings.proxy.SettingsProxyBase
Proxy class to access category-specific settings for a certain module.
delete(category, *names)
Delete settings.
Parameters
• category – Category (or its ID)
• names – One or more names of settings to delete
delete_all(category)
Delete all settings.
Parameters category – Category (or its ID)
get(category, name, default=<object object>)
Retrieve the value of a single setting.
Parameters
• category – Category (or its ID)
• name – Setting name
• default – Default value in case the setting does not exist
Returns The settings’s value or the default value
get_all(category, no_defaults=False)
Retrieve all settings.
Parameters
• category – Category (or its ID)
• no_defaults – Only return existing settings and ignore defaults.
Returns Dict containing the settings
query
Return a query object filtering by the proxy’s module.
set(category, name, value)
Set a single setting.
Parameters
• category – Category (or its ID)
• name – Setting name
• value – Setting value; must be JSON-serializable
set_multi(category, items)
Set multiple settings at once.
Parameters

274 Chapter 7. API reference


Indico Documentation, Release 3.2-dev

• category – Category (or its ID)


• items – Dict containing the new settings

7.1.22 User

Todo: Docstrings (module, models, utilities)

Models

class indico.modules.users.models.users.NameFormat
Bases: indico.util.enum.RichIntEnum
An enumeration.
f_last = 3
f_last_upper = 7
first_last = 0
first_last_upper = 4
last_f = 2
last_f_upper = 6
last_first = 1
last_first_upper = 5
class indico.modules.users.models.users.PersonMixin
Bases: object
Add convenience properties and methods to person classes.
Assumes the following attributes exist: * first_name * last_name * title
display_full_name
Return the full name using the user’s preferred name format.
full_name
Return the person’s name in ‘Firstname Lastname’ notation.
get_full_name(last_name_first=True, last_name_upper=True, abbrev_first_name=True,
show_title=False, _show_empty_names=False)
Return the person’s name in the specified notation.
Note: Do not use positional arguments when calling this method. Always use keyword arguments!
Parameters
• last_name_first – if “lastname, firstname” instead of “firstname lastname” should
be used
• last_name_upper – if the last name should be all-uppercase
• abbrev_first_name – if the first name should be abbreviated to use only the first
character
• show_title – if the title of the person should be included

7.1. API reference 275


Indico Documentation, Release 3.2-dev

name
Return the person’s name in ‘Firstname Lastname’ notation.
title
The title of the user
class indico.modules.users.models.users.ProfilePictureSource
Bases: int, enum.Enum
An enumeration.
custom = 3
gravatar = 2
identicon = 1
standard = 0
class indico.modules.users.models.users.User(**kwargs)
Bases: indico.modules.users.models.users.PersonMixin, sqlalchemy.orm.
decl_api.Model
Indico users.
A simple constructor that allows initialization from kwargs.
Sets attributes on the constructed instance using the names and values in kwargs.
Only keys that are present as attributes of the instance’s class are allowed. These could be, for example, any
mapped columns or relationships.
address
the address of the user
affiliation
the affiliation of the user
all_emails
all emails of the user. read-only; use it only for searching by email! also, do not use it between modifying
email or secondary_emails and a session expire/commit!
api_key
the active API key of the user
as_principal
The serializable principal identifier of this user.
avatar_bg_color
avatar_url
can_be_modified(user)
If this user can be modified by the given user.
can_get_all_multipass_groups
Check whether it is possible to get all multipass groups the user is in.
email
the primary email address of the user
event_notes_revisions
external_identities
The external identities of the user.

276 Chapter 7. API reference


Indico Documentation, Release 3.2-dev

favorite_categories
the users’s favorite categories
favorite_users
the users’s favorite users
first_name
the first name of the user
get_full_name(*args, **kwargs)
Return the person’s name in the specified notation.
Note: Do not use positional arguments when calling this method. Always use keyword arguments!
Parameters
• last_name_first – if “lastname, firstname” instead of “firstname lastname” should
be used
• last_name_upper – if the last name should be all-uppercase
• abbrev_first_name – if the first name should be abbreviated to use only the first
character
• show_title – if the title of the person should be included
get_identity(provider)
Return the first user identity which matches the given provider.
Parameters provider – The id of the provider in question
Returns The requested identity, or None if none is found
get_merged_from_users_recursive()
Get the users merged into this users recursively.
static get_system_user()
has_picture
id
the unique id of the user
identifier
identities
the identities used by this user
is_admin
if the user is an administrator with unrestricted access to everything
is_blocked
if the user has been blocked
is_deleted
if the user is deleted (e.g. due to a merge)
is_pending
if the user is pending (e.g. never logged in, only added to some list)
is_system
if the user is the default system user
iter_all_multipass_groups()
Iterate over all multipass groups the user is in.

7.1. API reference 277


Indico Documentation, Release 3.2-dev

iter_identifiers(check_providers=False, providers=None)
Yields (provider, identifier) tuples for the user.
Parameters
• check_providers – If True, providers are searched for additional identifiers once all
existing identifiers have been yielded.
• providers – May be a set containing provider names to get only identifiers from the
specified providers.
last_login_dt
The datetime when the user last logged in.
last_name
the last/family name of the user
local_identities
The local identities of the user.
local_identity
The main (most recently used) local identity.
locator
Define a smart locator property.
This behaves pretty much like a normal read-only property and the decorated function should return a dict
containing the necessary data to build a URL for the object.
This decorator should usually be applied to a method named locator as this name is required for
get_locator to find it automatically when just passing the object.
If you need more than one locator, you can define it like this:

@locator_property
def locator(self):
return {...}

@locator.other
def locator(self):
return {...}

The other locator can then be accessed by passing obj.locator.other to the code expecting an
object with a locator.
make_email_primary(email)
Promote a secondary email address to the primary email address.
Parameters email – an email address that is currently a secondary email
merged_into_id
the id of the user this user has been merged into
merged_into_user
the user this user has been merged into
old_api_keys
the previous API keys of the user
phone
the phone number of the user
picture
the user profile picture

278 Chapter 7. API reference


Indico Documentation, Release 3.2-dev

picture_metadata
user profile picture metadata
picture_source
user profile picture source
principal_order = 0
principal_type = 1
query_personal_tokens(*, include_revoked=False)
Query the personal tokens of the user.
Parameters include_revoked – whether to query revoked tokens as well
reset_signing_secret()
secondary_emails
any additional emails the user might have
secondary_local_identities
The local identities of the user except the main one.
settings
Return the user settings proxy for this user.
signing_secret
a unique secret used to generate signed URLs
suggested_categories
the user’s category suggestions
synced_fields
The fields of the user whose values are currently synced.
This set is always a subset of the synced fields define in synced fields of the idp in ‘indico.conf’.
synced_values
The values from the synced identity for the user.
Those values are not the actual user’s values and might differ if they are not set as synchronized.
synchronize_data(refresh=False, silent=False)
Synchronize the fields of the user from the sync identity.
This will take only into account synced_fields.
Parameters
• refresh – bool – Whether to refresh the synced identity with the sync provider before
instead of using the stored data. (Only if the sync provider supports refresh.)
• silent – bool – Whether to just synchronize but not flash any messages
class indico.modules.users.models.users.UserTitle
Bases: indico.util.enum.RichIntEnum
An enumeration.
dr = 4
mr = 1
mrs = 3
ms = 2

7.1. API reference 279


Indico Documentation, Release 3.2-dev

mx = 6
none = 0
prof = 5
indico.modules.users.models.users.format_display_full_name(user, obj)
indico.modules.users.models.users.syncable_fields = {'address': l'address', 'affiliation':
Fields which can be synced as keys and a mapping to a more human readable version, used for flashing messages
class indico.modules.users.models.affiliations.UserAffiliation(**kwargs)
Bases: sqlalchemy.orm.decl_api.Model
A simple constructor that allows initialization from kwargs.
Sets attributes on the constructed instance using the names and values in kwargs.
Only keys that are present as attributes of the instance’s class are allowed. These could be, for example, any
mapped columns or relationships.
id
the unique id of the affiliations
name
the affiliation
user_id
the id of the associated user
class indico.modules.users.models.emails.UserEmail(**kwargs)
Bases: sqlalchemy.orm.decl_api.Model
A simple constructor that allows initialization from kwargs.
Sets attributes on the constructed instance using the names and values in kwargs.
Only keys that are present as attributes of the instance’s class are allowed. These could be, for example, any
mapped columns or relationships.
email
the email address
id
the unique id of the email address
is_primary
if the email is the user’s primary email
is_user_deleted
if the user is marked as deleted (e.g. due to a merge). DO NOT use this flag when actually deleting an
email
user_id
the id of the associated user
class indico.modules.users.models.suggestions.SuggestedCategory(**kwargs)
Bases: sqlalchemy.orm.decl_api.Model
A simple constructor that allows initialization from kwargs.
Sets attributes on the constructed instance using the names and values in kwargs.
Only keys that are present as attributes of the instance’s class are allowed. These could be, for example, any
mapped columns or relationships.

280 Chapter 7. API reference


Indico Documentation, Release 3.2-dev

category
category_id
is_ignored
classmethod merge_users(target, source)
Merge the suggestions for two users.
Parameters
• target – The target user of the merge.
• source – The user that is being merged into target.
score
user_id
class indico.modules.users.models.settings.UserSetting(**kwargs)
Bases: indico.core.settings.models.base.JSONSettingsBase, sqlalchemy.orm.
decl_api.Model
User-specific settings.
A simple constructor that allows initialization from kwargs.
Sets attributes on the constructed instance using the names and values in kwargs.
Only keys that are present as attributes of the instance’s class are allowed. These could be, for example, any
mapped columns or relationships.
id
module
name
user
user_id
value
class indico.modules.users.models.settings.UserSettingsProxy(module, de-
faults=None,
strict=True,
acls=None, con-
verters=None)
Bases: indico.core.settings.proxy.SettingsProxyBase
Proxy class to access user-specific settings for a certain module.
delete(user, *names)
Delete settings.
Parameters
• user – {'user': user} or {'user_id': id}
• names – One or more names of settings to delete
delete_all(user)
Delete all settings.
Parameters user – {'user': user} or {'user_id': id}

7.1. API reference 281


Indico Documentation, Release 3.2-dev

get(user, name, default=<object object>)


Retrieve the value of a single setting.
Parameters
• user – {'user': user} or {'user_id': id}
• name – Setting name
• default – Default value in case the setting does not exist
Returns The settings’s value or the default value
get_all(user, no_defaults=False)
Retrieve all settings.
Parameters
• user – {'user': user} or {'user_id': id}
• no_defaults – Only return existing settings and ignore defaults.
Returns Dict containing the settings
query
Return a query object filtering by the proxy’s module.
set(user, name, value)
Set a single setting.
Parameters
• user – {'user': user} or {'user_id': id}
• name – Setting name
• value – Setting value; must be JSON-serializable
set_multi(user, items)
Set multiple settings at once.
Parameters
• user – {'user': user} or {'user_id': id}
• items – Dict containing the new settings
indico.modules.users.models.settings.user_or_id(f )

Operations

indico.modules.users.operations.create_user(email, data, identity=None, set-


tings=None, other_emails=None,
from_moderation=True)
Create a new user.
This may also convert a pending user to a proper user in case the email address matches such a user.
Parameters
• email – The primary email address of the user.
• data – The data used to populate the user.
• identity – An Identity to associate with the user.
• settings – A dict containing user settings.

282 Chapter 7. API reference


Indico Documentation, Release 3.2-dev

• other_emails – A set of email addresses that are also used to check for a pending user.
They will also be added as secondary emails to the user.
• from_moderation – Whether the user was created through the moderation process or
manually by an admin.

Utilities

indico.modules.users.util.build_user_search_query(criteria, exact=False, in-


clude_deleted=False, in-
clude_pending=False, in-
clude_blocked=False, fa-
vorites_first=False)
indico.modules.users.util.get_admin_emails()
Get the email addresses of all Indico admins.
indico.modules.users.util.get_avatar_url_from_name(first_name)
indico.modules.users.util.get_color_for_user_id(user_id: Union[int, str])
Calculate a unique color for a user based on their id.
Parameters user_id – the user ID (int), or otherwise a string (external search results)
indico.modules.users.util.get_gravatar_for_user(user, identicon, size=256, last-
mod=None)
indico.modules.users.util.get_linked_events(user, dt, limit=None, load_also=())
Get the linked events and the user’s roles in them.
Parameters
• user – A User
• dt – Only include events taking place on/after that date
• limit – Max number of events
indico.modules.users.util.get_related_categories(user, detailed=True)
Get the related categories of a user for the dashboard.
indico.modules.users.util.get_suggested_categories(user)
Get the suggested categories of a user for the dashboard.
indico.modules.users.util.get_unlisted_events(user)
indico.modules.users.util.get_user_by_email(email, create_pending=False)
Find a user based on his email address.
Parameters
• email – The email address of the user.
• create_pending – If True, this function searches for external users and creates a new
pending User in case no existing user was found.
Returns A User instance or None if not exactly one user was found.
indico.modules.users.util.merge_users(source, target, force=False)
Merge two users together, unifying all related data.
Parameters
• source – source user (will be set as deleted)

7.1. API reference 283


Indico Documentation, Release 3.2-dev

• target – target user (final)


indico.modules.users.util.search_users(exact=False, include_deleted=False, in-
clude_pending=False, include_blocked=False,
external=False, allow_system_user=False, **crite-
ria)
Search for users.
Parameters
• exact – Indicates if only exact matches should be returned. This is MUCH faster than a
non-exact saerch, especially when searching external users.
• include_deleted – Indicates if also users marked as deleted should be returned.
• include_pending – Indicates if also users who are still pending should be returned.
• include_blocked – Indicates if also users marked as blocked should be returned.
• external – Indicates if identity providers should be searched for matching users.
• allow_system_user – Whether the system user may be returned in the search results.
• criteria – A dict containing any of the following keys: name, first_name, last_name,
email, affiliation, phone, address
Returns A set of matching users. If external was set, it may contain both IdentityInfo objects
for external users not yet in Indico and User objects for existing users.
indico.modules.users.util.send_avatar(user)
indico.modules.users.util.send_default_avatar(user: Union[indico.modules.users.models.users.User,
str, None])
Send a user’s default avatar as an SVG.
Parameters user – A User object, string (external search results, registrations) or None (blank
avatar)
indico.modules.users.util.serialize_user(user)
Serialize user to JSON-like object.
indico.modules.users.util.set_user_avatar(user, avatar, filename, lastmod=None)
class indico.modules.users.ext.ExtraUserPreferences(user)
Bases: object
Define additional user preferences.
To use this class, subclass it and override defaults, fields and save to implement your custom logic.
extend_defaults(defaults)
Add values to the FormDefaults.
extend_form(form_class)
Create a subclass of the form containing the extra field.
fields = {}
a dict containing all the fields that should be added to the user preferences
classmethod is_active(user)
Return whether the preferences are available for the given user.
load()
Return a dict with the current values for the user.

284 Chapter 7. API reference


Indico Documentation, Release 3.2-dev

process_form_data(data)
Process and save submitted data.
This modifies data so the core code doesn’t receive any extra data it doesn’t expect.
save(data)
Save the updated settings.

7.1.23 Attachment

Todo: Docstrings (module, models, operations)

Models

class indico.modules.attachments.models.attachments.Attachment(**kwargs)
Bases: indico.core.db.sqlalchemy.searchable.SearchableTitleMixin, indico.
core.db.sqlalchemy.protection.ProtectionMixin, indico.core.storage.models.
VersionedResourceMixin, sqlalchemy.orm.decl_api.Model
A simple constructor that allows initialization from kwargs.
Sets attributes on the constructed instance using the names and values in kwargs.
Only keys that are present as attributes of the instance’s class are allowed. These could be, for example, any
mapped columns or relationships.
absolute_download_url
The absolute download url for the attachment.
access_key = None
acl
The ACL of the folder (used for ProtectionMode.protected)
acl_entries
all_files
can_access(user, *args, **kwargs)
Check if the user is allowed to access the attachment.
This is the case if the user has access to see the attachment or if the user can manage attachments for the
linked object.
description
The description of the attachment
download_url
The download url for the attachment.
file
file_id
folder
The folder containing the attachment
folder_id
The ID of the folder the attachment belongs to

7.1. API reference 285


Indico Documentation, Release 3.2-dev

get_download_url(absolute=False)
Return the download url for the attachment.
During static site generation this returns a local URL for the file or the target URL for the link.
Parameters absolute – If the returned URL should be absolute.
id
The ID of the attachment
is_deleted
If the attachment has been deleted
link_url
The target URL for a link attachment
locator
modified_dt
The date/time when the attachment was created/modified
own_no_access_contact = None
protection_mode
protection_parent
The parent object to consult for ProtectionMode.inheriting.
stored_file_class
alias of AttachmentFile
stored_file_fkey = 'attachment_id'
stored_file_table = 'attachments.files'
title
title_required = False
type
The type of the attachment (file or link)
user
The user who created the attachment
user_id
The ID of the user who created the attachment
class indico.modules.attachments.models.attachments.AttachmentFile(**kwargs)
Bases: indico.core.storage.models.StoredFileMixin, sqlalchemy.orm.decl_api.
Model
A simple constructor that allows initialization from kwargs.
Sets attributes on the constructed instance using the names and values in kwargs.
Only keys that are present as attributes of the instance’s class are allowed. These could be, for example, any
mapped columns or relationships.
attachment_id
The ID of the associated attachment
content_type
The MIME type of the file.

286 Chapter 7. API reference


Indico Documentation, Release 3.2-dev

created_dt
The date/time when the file was uploaded.
extension
The extension of the file.
filename
The name of the file.
id
The ID of the file
is_previewable
md5
An MD5 hash of the file.
Automatically assigned when save() is called.
size
The size of the file (in bytes).
Automatically assigned when save() is called.
storage_backend
storage_file_id
user
The user who uploaded the file
user_id
The user who uploaded the file
version_of = 'attachment'
class indico.modules.attachments.models.attachments.AttachmentType
Bases: indico.util.enum.RichIntEnum
An enumeration.
file = 1
link = 2
class indico.modules.attachments.models.folders.AttachmentFolder(**kwargs)
Bases: indico.core.db.sqlalchemy.links.LinkMixin, indico.core.db.sqlalchemy.
protection.ProtectionMixin, sqlalchemy.orm.decl_api.Model
A simple constructor that allows initialization from kwargs.
Sets attributes on the constructed instance using the names and values in kwargs.
Only keys that are present as attributes of the instance’s class are allowed. These could be, for example, any
mapped columns or relationships.
access_key = None
acl
The ACL of the folder (used for ProtectionMode.protected)
acl_entries
allowed_link_types = frozenset({<LinkType.category: 1>, <LinkType.event: 2>, <LinkTyp
attachments
The list of attachments that are not deleted, ordered by name

7.1. API reference 287


Indico Documentation, Release 3.2-dev

can_access(user, *args, **kwargs)


Check if the user is allowed to access the folder.
This is the case if the user has access the folder or if the user can manage attachments for the linked object.
can_view(user)
Check if the user can see the folder.
This does not mean the user can actually access its contents. It just determines if it is visible to him or not.
category
category_id
contribution
contribution_id
description
The description of the folder
event
event_id
events_backref_name = 'all_attachment_folders'
classmethod get_for_linked_object(linked_object, preload_event=False)
Get the attachments for the given object.
This only returns attachments that haven’t been deleted.
Parameters
• linked_object – A category, event, session, contribution or subcontribution.
• preload_event – If all attachments for the same event should be pre-loaded and
cached in the app context. This must not be used when linked_object is a category.
classmethod get_or_create(linked_object, title=None)
Get a folder for the given object or create it.
If no folder title is specified, the default folder will be used. It is the caller’s responsibility to add the folder
or an object (such as an attachment) associated with it to the SQLAlchemy session using db.session.
add(...).
classmethod get_or_create_default(linked_object)
Get the default folder for the given object or creates it.
id
The ID of the folder
is_always_visible
If the folder is always visible (even if you cannot access it)
is_default
If the folder is the default folder (used for “folder-less” files)
is_deleted
If the folder has been deleted
is_hidden
If the folder is never shown in the frontend (even if you can access it)
link_backref_lazy = 'dynamic'
link_backref_name = 'attachment_folders'

288 Chapter 7. API reference


Indico Documentation, Release 3.2-dev

link_type
linked_event
linked_event_id
locator
Define a smart locator property.
This behaves pretty much like a normal read-only property and the decorated function should return a dict
containing the necessary data to build a URL for the object.
This decorator should usually be applied to a method named locator as this name is required for
get_locator to find it automatically when just passing the object.
If you need more than one locator, you can define it like this:

@locator_property
def locator(self):
return {...}

@locator.other
def locator(self):
return {...}

The other locator can then be accessed by passing obj.locator.other to the code expecting an
object with a locator.
own_no_access_contact = None
protection_mode
protection_parent
The parent object to consult for ProtectionMode.inheriting.
session
session_block = None
session_block_id = None
session_id
subcontribution
subcontribution_id
title
The name of the folder (None for the default folder)
unique_links = 'is_default'
class indico.modules.attachments.models.principals.AttachmentFolderPrincipal(**kwargs)
Bases: indico.core.db.sqlalchemy.principals.PrincipalMixin, sqlalchemy.orm.
decl_api.Model
A simple constructor that allows initialization from kwargs.
Sets attributes on the constructed instance using the names and values in kwargs.
Only keys that are present as attributes of the instance’s class are allowed. These could be, for example, any
mapped columns or relationships.
allow_category_roles = True
allow_event_roles = True

7.1. API reference 289


Indico Documentation, Release 3.2-dev

allow_registration_forms = True
category_role
category_role_id
email = None
event_role
event_role_id
folder_id
The ID of the associated folder
id
The ID of the acl entry
ip_network_group = None
ip_network_group_id = None
local_group
local_group_id
multipass_group_name
multipass_group_provider
principal_backref_name = 'in_attachment_folder_acls'
registration_form
registration_form_id
type
unique_columns = ('folder_id',)
user
user_id
class indico.modules.attachments.models.principals.AttachmentPrincipal(**kwargs)
Bases: indico.core.db.sqlalchemy.principals.PrincipalMixin, sqlalchemy.orm.
decl_api.Model
A simple constructor that allows initialization from kwargs.
Sets attributes on the constructed instance using the names and values in kwargs.
Only keys that are present as attributes of the instance’s class are allowed. These could be, for example, any
mapped columns or relationships.
allow_category_roles = True
allow_event_roles = True
allow_registration_forms = True
attachment_id
The ID of the associated attachment
category_role
category_role_id
email = None

290 Chapter 7. API reference


Indico Documentation, Release 3.2-dev

event_role
event_role_id
id
The ID of the acl entry
ip_network_group = None
ip_network_group_id = None
local_group
local_group_id
multipass_group_name
multipass_group_provider
principal_backref_name = 'in_attachment_acls'
registration_form
registration_form_id
type
unique_columns = ('attachment_id',)
user
user_id

Operations

indico.modules.attachments.operations.add_attachment_link(data, linked_object)
Add a link attachment to linked_object.

Utilities

indico.modules.attachments.util.can_manage_attachments(obj, user, al-


low_admin=True)
Check if a user can manage attachments for the object.
indico.modules.attachments.util.get_attached_folders(linked_object, in-
clude_empty=True, in-
clude_hidden=True,
preload_event=False)
Return a list of all the folders linked to an object.
Parameters
• linked_object – The object whose attachments are to be returned
• include_empty – Whether to return empty folders as well.
• include_hidden – Include folders that the user can’t see
• preload_event – in the process, preload all objects tied to the corresponding event and
keep them in cache

7.1. API reference 291


Indico Documentation, Release 3.2-dev

indico.modules.attachments.util.get_attached_items(linked_object, in-
clude_empty=True, in-
clude_hidden=True,
preload_event=False)
Return a structured representation of all the attachments linked to an object.
Parameters
• linked_object – The object whose attachments are to be returned
• include_empty – Whether to return empty folders as well.
• include_hidden – Include folders that the user can’t see
• preload_event – in the process, preload all objects tied to the corresponding event and
keep them in cache
indico.modules.attachments.util.get_default_folder_names()
indico.modules.attachments.util.get_event(linked_object)
class indico.modules.attachments.preview.ImagePreviewer
Bases: indico.modules.attachments.preview.Previewer
ALLOWED_CONTENT_TYPE = re.compile('^image/')
TEMPLATE = 'image_preview.html'
class indico.modules.attachments.preview.MarkdownPreviewer
Bases: indico.modules.attachments.preview.Previewer
ALLOWED_CONTENT_TYPE = re.compile('^text/markdown$')
classmethod generate_content(attachment)
Generate the HTML output of the file preview.
class indico.modules.attachments.preview.PDFPreviewer
Bases: indico.modules.attachments.preview.Previewer
ALLOWED_CONTENT_TYPE = re.compile('^application/pdf$')
TEMPLATE = 'iframe_preview.html'
classmethod can_preview(attachment_file)
Check if the content type of the file matches the allowed content type of files that the previewer can be
used for.
class indico.modules.attachments.preview.Previewer
Bases: object
Base class for file previewers.
To create a new file prewiewer, subclass this class and register it using the get_file_previewers signal.
ALLOWED_CONTENT_TYPE = None
TEMPLATE = None
TEMPLATES_DIR = 'attachments/previewers/'
classmethod can_preview(attachment_file)
Check if the content type of the file matches the allowed content type of files that the previewer can be
used for.
classmethod generate_content(attachment)
Generate the HTML output of the file preview.

292 Chapter 7. API reference


Indico Documentation, Release 3.2-dev

class indico.modules.attachments.preview.TextPreviewer
Bases: indico.modules.attachments.preview.Previewer
ALLOWED_CONTENT_TYPE = re.compile('^text/plain$')
classmethod generate_content(attachment)
Generate the HTML output of the file preview.
indico.modules.attachments.preview.get_file_previewer(attachment_file)
Return a file previewer for the given attachment file based on the file’s content type.
indico.modules.attachments.preview.get_file_previewers()

7.1.24 Room booking

Todo: Docstrings (module, models, utilities, services)

Models

class indico.modules.rb.models.rooms.Room(**kwargs)
Bases: indico.core.db.sqlalchemy.protection.ProtectionManagersMixin,
sqlalchemy.orm.decl_api.Model
A simple constructor that allows initialization from kwargs.
Sets attributes on the constructed instance using the names and values in kwargs.
Only keys that are present as attributes of the instance’s class are allowed. These could be, for example, any
mapped columns or relationships.
access_key = None
acl_entries
attributes
available_equipment
blocked_rooms
bookable_hours
booking_limit_days
building
can_access(user, allow_admin=True)
Check if the user can access the object.
Parameters
• user – The User to check. May be None if the user is not logged in.
• allow_admin – If admin users should always have access
can_book(user, allow_admin=True)
can_delete(user)
can_edit(user)

7.1. API reference 293


Indico Documentation, Release 3.2-dev

can_manage(user, permission=None, allow_admin=True, check_parent=True, ex-


plicit_permission=False)
Check if the user can manage the object.
Parameters
• user – The User to check. May be None if the user is not logged in.
• allow_admin – If admin users should always have access
• check_parent – If the parent object should be checked. In this case the permission is
ignored; only full management access is inherited to children.
• explicit_permission – If the specified permission should be checked explicitly
instead of short-circuiting the check for Indico admins or managers. When this option is
set to True, the values of allow_admin and check_parent are ignored. This also applies
if permission is None in which case this argument being set to True is equivalent to
allow_admin and check_parent being set to False.
Param permission: The management permission that is needed for the check to succeed. If not
specified, full management privs are required. May be set to the string 'ANY' to check if
the user has any management privileges. If the user has full_access privileges, he’s assumed
to have all possible permissions.
can_moderate(user, allow_admin=True)
can_override(user, allow_admin=True)
can_prebook(user, allow_admin=True)
capacity
check_advance_days(end_date, user=None, quiet=False)
check_bookable_hours(start_time, end_time, user=None, quiet=False)
comments
default_protection_mode = 0
details_url
disallowed_protection_modes = frozenset({<ProtectionMode.inheriting: 1>})
division
end_notification_daily
end_notification_monthly
end_notification_weekly
end_notifications_enabled
favorite_of
static filter_available(start_dt, end_dt, repetition, include_blockings=True, in-
clude_pre_bookings=True, include_pending_blockings=False)
Return a SQLAlchemy filter criterion ensuring that the room is available during the given time.
static filter_bookable_hours(start_time, end_time)
static filter_nonbookable_periods(start_dt, end_dt)
classmethod find_with_attribute(attribute)
Search rooms which have a specific attribute.
floor

294 Chapter 7. API reference


Indico Documentation, Release 3.2-dev

full_name
generate_name()
get_attribute_by_name(attribute_name)
get_attribute_value(name, default=None)
get_blocked_rooms(*dates, **kwargs)
classmethod get_permissions_for_user(user, allow_admin=True)
Get the permissions for all rooms for a user.
In case of multipass-based groups it will try to get a list of all groups the user is in, and if that’s not possible
check the permissions one by one for each room (which may result in many group membership lookups).
It is recommended to not call this in any place where performance matters and to memoize the result.
static get_with_data(*args, **kwargs)
has_attribute(attribute_name)
has_equipment(*names)
has_photo
id
is_auto_confirm
is_deleted
is_reservable
static is_user_admin(user)
key_location
latitude
location
location_id
location_name
longitude
map_url
max_advance_days
name
nonbookable_periods
notification_before_days
notification_before_days_monthly
notification_before_days_weekly
notification_emails
notifications_enabled
number
own_no_access_contact = None

7.1. API reference 295


Indico Documentation, Release 3.2-dev

owner
The owner of the room. This is purely informational and does not grant any permissions on the room.
owner_id
photo
photo_id
protection_mode
protection_parent
The parent object to consult for ProtectionMode.inheriting.
reservations
reservations_need_confirmation
set_attribute_value(name, value)
site
sprite_position
surface_area
telephone
verbose_name
Verbose name for the room (long)
class indico.modules.rb.models.room_attributes.RoomAttribute(**kwargs)
Bases: sqlalchemy.orm.decl_api.Model
A simple constructor that allows initialization from kwargs.
Sets attributes on the constructed instance using the names and values in kwargs.
Only keys that are present as attributes of the instance’s class are allowed. These could be, for example, any
mapped columns or relationships.
id
is_hidden
name
title
class indico.modules.rb.models.room_attributes.RoomAttributeAssociation(**kwargs)
Bases: sqlalchemy.orm.decl_api.Model
A simple constructor that allows initialization from kwargs.
Sets attributes on the constructed instance using the names and values in kwargs.
Only keys that are present as attributes of the instance’s class are allowed. These could be, for example, any
mapped columns or relationships.
attribute
attribute_id
room_id
value

296 Chapter 7. API reference


Indico Documentation, Release 3.2-dev

class indico.modules.rb.models.room_bookable_hours.BookableHours(**kwargs)
Bases: sqlalchemy.orm.decl_api.Model
A simple constructor that allows initialization from kwargs.
Sets attributes on the constructed instance using the names and values in kwargs.
Only keys that are present as attributes of the instance’s class are allowed. These could be, for example, any
mapped columns or relationships.
end_time
fits_period(st, et)
room_id
start_time
class indico.modules.rb.models.room_nonbookable_periods.NonBookablePeriod(**kwargs)
Bases: sqlalchemy.orm.decl_api.Model
A simple constructor that allows initialization from kwargs.
Sets attributes on the constructed instance using the names and values in kwargs.
Only keys that are present as attributes of the instance’s class are allowed. These could be, for example, any
mapped columns or relationships.
end_dt
overlaps(st, et)
room_id
start_dt
class indico.modules.rb.models.blockings.Blocking(**kwargs)
Bases: sqlalchemy.orm.decl_api.Model
A simple constructor that allows initialization from kwargs.
Sets attributes on the constructed instance using the names and values in kwargs.
Only keys that are present as attributes of the instance’s class are allowed. These could be, for example, any
mapped columns or relationships.
allowed
A descriptor that presents a read/write view of an object attribute.
blocked_rooms
can_delete(user, allow_admin=True)
can_edit(user, allow_admin=True)
can_override(user, room=None, explicit_only=False, allow_admin=True)
Check if a user can override the blocking.
The following persons are authorized to override a blocking: - the creator of the blocking - anyone on the
blocking’s ACL - unless explicit_only is set: rb admins and room managers (if a room is given)
created_by_id
created_by_user
The user who created this blocking.
created_dt

7.1. API reference 297


Indico Documentation, Release 3.2-dev

end_date
external_details_url
id
is_active_at(d)
reason
start_date
class indico.modules.rb.models.blocked_rooms.BlockedRoom(**kwargs)
Bases: sqlalchemy.orm.decl_api.Model
A simple constructor that allows initialization from kwargs.
Sets attributes on the constructed instance using the names and values in kwargs.
Only keys that are present as attributes of the instance’s class are allowed. These could be, for example, any
mapped columns or relationships.
State
alias of BlockedRoomState
approve(notify_blocker=True)
Approve the room blocking, rejecting all colliding reservations/occurrences.
blocking_id
id
reject(user=None, reason=None)
Reject the room blocking.
rejected_by
rejection_reason
room_id
state
state_name
class indico.modules.rb.models.blocked_rooms.BlockedRoomState
Bases: indico.util.enum.RichIntEnum
An enumeration.
accepted = 1
pending = 0
rejected = 2
class indico.modules.rb.models.blocking_principals.BlockingPrincipal(**kwargs)
Bases: indico.core.db.sqlalchemy.principals.PrincipalMixin, sqlalchemy.orm.
decl_api.Model
A simple constructor that allows initialization from kwargs.
Sets attributes on the constructed instance using the names and values in kwargs.
Only keys that are present as attributes of the instance’s class are allowed. These could be, for example, any
mapped columns or relationships.
blocking_id

298 Chapter 7. API reference


Indico Documentation, Release 3.2-dev

category_role = None
category_role_id = None
email = None
event_role = None
event_role_id = None
id
ip_network_group = None
ip_network_group_id = None
local_group
local_group_id
multipass_group_name
multipass_group_provider
principal_backref_name = 'in_blocking_acls'
registration_form = None
registration_form_id = None
type
unique_columns = ('blocking_id',)
user
user_id
class indico.modules.rb.models.equipment.EquipmentType(**kwargs)
Bases: sqlalchemy.orm.decl_api.Model
A simple constructor that allows initialization from kwargs.
Sets attributes on the constructed instance using the names and values in kwargs.
Only keys that are present as attributes of the instance’s class are allowed. These could be, for example, any
mapped columns or relationships.
features
id
name
class indico.modules.rb.models.locations.Location(**kwargs)
Bases: sqlalchemy.orm.decl_api.Model
A simple constructor that allows initialization from kwargs.
Sets attributes on the constructed instance using the names and values in kwargs.
Only keys that are present as attributes of the instance’s class are allowed. These could be, for example, any
mapped columns or relationships.
id
is_deleted
map_url_template

7.1. API reference 299


Indico Documentation, Release 3.2-dev

name
room_name_format
Translate Postgres’ format syntax (e.g. %1$s/%2$s-%3$s) to Python’s.
rooms
class indico.modules.rb.models.map_areas.MapArea(**kwargs)
Bases: sqlalchemy.orm.decl_api.Model
A simple constructor that allows initialization from kwargs.
Sets attributes on the constructed instance using the names and values in kwargs.
Only keys that are present as attributes of the instance’s class are allowed. These could be, for example, any
mapped columns or relationships.
bottom_right_latitude
bottom_right_longitude
id
is_default
name
top_left_latitude
top_left_longitude
class indico.modules.rb.models.photos.Photo(**kwargs)
Bases: sqlalchemy.orm.decl_api.Model
A simple constructor that allows initialization from kwargs.
Sets attributes on the constructed instance using the names and values in kwargs.
Only keys that are present as attributes of the instance’s class are allowed. These could be, for example, any
mapped columns or relationships.
data
id
exception indico.modules.rb.models.reservations.ConflictingOccurrences
Bases: Exception
class indico.modules.rb.models.reservations.RepeatFrequency
Bases: int, indico.util.enum.IndicoEnum
An enumeration.
DAY = 1
MONTH = 3
NEVER = 0
WEEK = 2
class indico.modules.rb.models.reservations.RepeatMapping
Bases: object
classmethod get_message(repeat_frequency, repeat_interval)
classmethod get_short_name(repeat_frequency, repeat_interval)
mapping = {(<RepeatFrequency.NEVER: 0>, 0): ('Single reservation', None, 'none'), (<Re

300 Chapter 7. API reference


Indico Documentation, Release 3.2-dev

class indico.modules.rb.models.reservations.Reservation(**kwargs)
Bases: sqlalchemy.orm.decl_api.Model
A simple constructor that allows initialization from kwargs.
Sets attributes on the constructed instance using the names and values in kwargs.
Only keys that are present as attributes of the instance’s class are allowed. These could be, for example, any
mapped columns or relationships.
accept(user, reason=None)
add_edit_log(edit_log)
booked_for_id
booked_for_name
booked_for_user
The user this booking was made for. Assigning a user here also updates booked_for_name.
booking_reason
can_accept(user, allow_admin=True)
can_cancel(user, allow_admin=True)
can_delete(user, allow_admin=True)
can_edit(user, allow_admin=True)
can_reject(user, allow_admin=True)
cancel(user, reason=None, silent=False)
contact_email
classmethod create_from_data(room, data, user, prebook=None, ignore_admin=False)
Create a new reservation.
Parameters
• room – The Room that’s being booked.
• data – A dict containing the booking data, usually from a NewBookingConfirmForm
instance
• user – The User who creates the booking.
• prebook – Instead of determining the booking type from the user’s permissions, always
use the given mode.
• ignore_admin – Whether to ignore the user’s admin status.
create_occurrences(skip_conflicts, user=None, allow_admin=True)
created_by_id
created_by_user
The user who created this booking.
created_dt
edit_logs
end_dt
end_notification_sent

7.1. API reference 301


Indico Documentation, Release 3.2-dev

event
external_details_url
find_excluded_days()
find_overlapping()
static find_overlapping_with(room, occurrences, skip_reservation_id=None)
get_conflicting_occurrences()
static get_with_data(*args, **kwargs)
id
is_accepted
is_archived
is_booked_for(user)
is_cancelled
is_owned_by(user)
is_pending
is_rejected
is_repeating
link
link_id
linked_object
location_name
modify(data, user)
Modify an existing reservation.
Parameters
• data – A dict containing the booking data, usually from a ModifyBookingForm in-
stance
• user – The User who modifies the booking.
occurrences
reject(user, reason, silent=False)
rejection_reason
repeat_frequency
repeat_interval
repetition
reset_approval(user)
room_id
start_dt
state

302 Chapter 7. API reference


Indico Documentation, Release 3.2-dev

class indico.modules.rb.models.reservations.ReservationLink(**kwargs)
Bases: indico.core.db.sqlalchemy.links.LinkMixin, sqlalchemy.orm.decl_api.
Model
A simple constructor that allows initialization from kwargs.
Sets attributes on the constructed instance using the names and values in kwargs.
Only keys that are present as attributes of the instance’s class are allowed. These could be, for example, any
mapped columns or relationships.
allowed_link_types = {<LinkType.event: 2>, <LinkType.contribution: 3>, <LinkType.sess
category = None
category_id = None
contribution
contribution_id
event
event_id
events_backref_name = 'all_room_reservation_links'
id
link_backref_name = 'room_reservation_links'
link_type
linked_event
linked_event_id
session = None
session_block
session_block_id
session_id = None
subcontribution = None
subcontribution_id = None
class indico.modules.rb.models.reservations.ReservationState
Bases: int, indico.util.enum.IndicoEnum
An enumeration.
accepted = 2
cancelled = 3
pending = 1
rejected = 4
class indico.modules.rb.models.reservation_edit_logs.ReservationEditLog(**kwargs)
Bases: sqlalchemy.orm.decl_api.Model
A simple constructor that allows initialization from kwargs.
Sets attributes on the constructed instance using the names and values in kwargs.

7.1. API reference 303


Indico Documentation, Release 3.2-dev

Only keys that are present as attributes of the instance’s class are allowed. These could be, for example, any
mapped columns or relationships.
id
info
reservation_id
timestamp
user_name
class indico.modules.rb.models.reservation_occurrences.ReservationOccurrence(**kwargs)
Bases: sqlalchemy.orm.decl_api.Model
A simple constructor that allows initialization from kwargs.
Sets attributes on the constructed instance using the names and values in kwargs.
Only keys that are present as attributes of the instance’s class are allowed. These could be, for example, any
mapped columns or relationships.
NO_RESERVATION_USER_STRATEGY = <sqlalchemy.orm.strategy_options._UnboundLoad object>
A relationship loading strategy that will avoid loading the users linked to a reservation. You want to use
this in pretty much all cases where you eager-load the reservation relationship.
can_cancel(user, allow_admin=True)
can_reject(user, allow_admin=True)
cancel(user, reason=None, silent=False)
classmethod create_series(start, end, repetition)
classmethod create_series_for_reservation(reservation)
date
end_dt
external_cancellation_url
static filter_overlap(occurrences)
classmethod find_overlapping_with(room, occurrences, skip_reservation_id=None)
get_overlap(occurrence, skip_self=False)
is_cancelled
is_rejected
is_valid
is_within_cancel_grace_period
classmethod iter_create_occurrences(start, end, repetition)
static iter_start_time(start, end, repetition)
notification_sent
overlaps(occurrence, skip_self=False)
reject(user, reason, silent=False)
rejection_reason
reservation_id

304 Chapter 7. API reference


Indico Documentation, Release 3.2-dev

start_dt
state
class indico.modules.rb.models.reservation_occurrences.ReservationOccurrenceState
Bases: int, indico.util.enum.IndicoEnum
An enumeration.
cancelled = 3
rejected = 4
valid = 2
indico.modules.rb.models.util.proxy_to_reservation_if_last_valid_occurrence(f )
Forward a method call to self.reservation if there is only one occurrence.

Utilities

indico.modules.rb.util.TempReservationConcurrentOccurrence
alias of indico.modules.rb.util.ReservationOccurrenceTmp
indico.modules.rb.util.TempReservationOccurrence
alias of indico.modules.rb.util.ReservationOccurrenceTmp
indico.modules.rb.util.build_rooms_spritesheet()
indico.modules.rb.util.generate_spreadsheet_from_occurrences(occurrences)
Generate spreadsheet data from a given booking occurrence list.
Parameters occurrences – The booking occurrences to include in the spreadsheet
indico.modules.rb.util.get_booking_params_for_event(event)
Get a set of RB interface parameters suitable for this event.
These parameters can then be used to construct a URL that will lead to a pre-filled search that matches the
start/end times for a given day.
Parameters event – Event object
indico.modules.rb.util.get_format_placeholders(format_str)
indico.modules.rb.util.get_linked_object(type_, id_)
indico.modules.rb.util.get_prebooking_collisions(reservation)
indico.modules.rb.util.get_resized_room_photo(room)
indico.modules.rb.util.group_by_occurrence_date(occurrences, sort_by=None)
indico.modules.rb.util.is_booking_start_within_grace_period(start_dt, user, al-
low_admin=False)
indico.modules.rb.util.rb_check_user_access(user)
Check if the user has access to the room booking system.
indico.modules.rb.util.rb_is_admin(user)
Check if the user is a room booking admin.
indico.modules.rb.util.remove_room_spritesheet_photo(room)
indico.modules.rb.util.serialize_availability(availability)
indico.modules.rb.util.serialize_blockings(data)

7.1. API reference 305


Indico Documentation, Release 3.2-dev

indico.modules.rb.util.serialize_booking_details(booking)
indico.modules.rb.util.serialize_concurrent_pre_bookings(data)
indico.modules.rb.util.serialize_nonbookable_periods(data)
indico.modules.rb.util.serialize_occurrences(data)
indico.modules.rb.util.serialize_unbookable_hours(data)
indico.modules.rb.statistics.calculate_rooms_bookable_time(rooms,
start_date=None,
end_date=None)
indico.modules.rb.statistics.calculate_rooms_booked_time(rooms, start_date=None,
end_date=None)
indico.modules.rb.statistics.calculate_rooms_occupancy(rooms, start=None,
end=None)

7.1.25 Authentication

Todo: Docstrings (module, models, utilities)

Models

class indico.modules.auth.models.identities.Identity(**kwargs)
Bases: sqlalchemy.orm.decl_api.Model
Identities of Indico users.
A simple constructor that allows initialization from kwargs.
Sets attributes on the constructed instance using the names and values in kwargs.
Only keys that are present as attributes of the instance’s class are allowed. These could be, for example, any
mapped columns or relationships.
data
id
the unique id of the identity
identifier
the unique identifier of the user within its provider
last_login_dt
the timestamp of the latest login
last_login_ip
the ip address that was used for the latest login
locator
multipass_data
internal data used by the flask-multipass system
password
the password of the user in case of a local identity

306 Chapter 7. API reference


Indico Documentation, Release 3.2-dev

password_hash
the hash of the password in case of a local identity
provider
the provider name of the identity
register_login(ip)
Update the last login information.
safe_last_login_dt
last_login_dt that is safe for sorting (no None values).
user_id
the id of the user this identity belongs to
class indico.modules.auth.models.registration_requests.RegistrationRequest(**kwargs)
Bases: sqlalchemy.orm.decl_api.Model
A simple constructor that allows initialization from kwargs.
Sets attributes on the constructed instance using the names and values in kwargs.
Only keys that are present as attributes of the instance’s class are allowed. These could be, for example, any
mapped columns or relationships.
comment
email
extra_emails
id
identity_data
locator
Define a smart locator property.
This behaves pretty much like a normal read-only property and the decorated function should return a dict
containing the necessary data to build a URL for the object.
This decorator should usually be applied to a method named locator as this name is required for
get_locator to find it automatically when just passing the object.
If you need more than one locator, you can define it like this:

@locator_property
def locator(self):
return {...}

@locator.other
def locator(self):
return {...}

The other locator can then be accessed by passing obj.locator.other to the code expecting an
object with a locator.
settings
user_data

7.1. API reference 307


Indico Documentation, Release 3.2-dev

Utilities

indico.modules.auth.util.impersonate_user(user)
Impersonate another user as an admin.
indico.modules.auth.util.load_identity_info()
Retrieve identity information from the session.
indico.modules.auth.util.redirect_to_login(next_url=None, reason=None)
Redirect to the login page.
Parameters
• next_url – URL to be redirected upon successful login. If not specified, it will be set to
request.relative_url.
• reason – Why the user is redirected to a login page.
indico.modules.auth.util.register_user(email, extra_emails, user_data, identity_data, set-
tings, from_moderation=False)
Create a user based on the registration data provided during the user registration process (via RHRegister and
RegistrationHandler).
This method is not meant to be used for generic user creation, the only reason why this is here is that approving
a registration request is handled by the users module.
indico.modules.auth.util.save_identity_info(identity_info, user)
Save information from IdentityInfo in the session.
indico.modules.auth.util.undo_impersonate_user()
Undo an admin impersonation login and revert to the old user.
indico.modules.auth.util.url_for_login(next_url=None)
indico.modules.auth.util.url_for_logout(next_url=None)
indico.modules.auth.util.url_for_register(next_url=None, email=None)
Returns the URL to register
Parameters
• next_url – The URL to redirect to afterwards.
• email – A pre-validated email address to use when creating a new local account. Use this
argument ONLY when sending the link in an email or if the email address has already been
validated using some other way.

7.1.26 OAuth

Todo: Docstrings (module, models, provider)

Models

class indico.core.oauth.models.applications.OAuthApplication(**kwargs)
Bases: authlib.oauth2.rfc6749.models.ClientMixin, sqlalchemy.orm.decl_api.
Model
OAuth applications registered in Indico.

308 Chapter 7. API reference


Indico Documentation, Release 3.2-dev

A simple constructor that allows initialization from kwargs.


Sets attributes on the constructed instance using the names and values in kwargs.
Only keys that are present as attributes of the instance’s class are allowed. These could be, for example, any
mapped columns or relationships.
allow_pkce_flow
whether the application can use the PKCE flow without a client secret
allowed_scopes
the OAuth scopes the application may request access to
check_client_secret(client_secret)
Check client_secret matching with the client. For instance, in the client table, the column is called
client_secret:

def check_client_secret(self, client_secret):


return self.client_secret == client_secret

Parameters client_secret – A string of client secret


Returns bool

check_endpoint_auth_method(method, endpoint)
Check if client support the given method for the given endpoint. There is a
token_endpoint_auth_method defined via RFC7591. Developers MAY re-implement this
method with:

def check_endpoint_auth_method(self, method, endpoint):


if endpoint == 'token':
# if client table has ``token_endpoint_auth_method``
return self.token_endpoint_auth_method == method
return True

Method values defined by this specification are:


• “none”: The client is a public client as defined in OAuth 2.0, and does not have a client secret.
• “client_secret_post”: The client uses the HTTP POST parameters as defined in OAuth 2.0
• “client_secret_basic”: The client uses HTTP Basic as defined in OAuth 2.0
check_grant_type(grant_type)
Validate if the client can handle the given grant_type. There are four grant types defined by RFC6749:
• authorization_code
• implicit
• client_credentials
• password
For instance, there is a allowed_grant_types column in your client:

def check_grant_type(self, grant_type):


return grant_type in self.grant_types

Parameters grant_type – the requested grant_type string.


Returns bool

7.1. API reference 309


Indico Documentation, Release 3.2-dev

check_redirect_uri(redirect_uri)
Called by authlib to validate the redirect_uri.
Uses a logic similar to the one at GitHub, i.e. protocol and host/port must match exactly and if there is a
path in the whitelisted URL, the path of the redirect_uri must start with that path.
check_response_type(response_type)
Validate if the client can handle the given response_type. There are two response types defined by
RFC6749: code and token. For instance, there is a allowed_response_types column in your client:

def check_response_type(self, response_type):


return response_type in self.response_types

Parameters response_type – the requested response_type string.


Returns bool

client_id
the OAuth client_id
client_secret
the OAuth client_secret
default_redirect_uri
description
human readable description
get_allowed_scope(scope)
A method to return a list of requested scopes which are supported by this client. For instance, there is a
scope column:

def get_allowed_scope(self, scope):


if not scope:
return ''
allowed = set(scope_to_list(self.scope))
return list_to_scope([s for s in scope.split() if s in allowed])

Parameters scope – the requested scope.


Returns string of scope

get_client_id()
A method to return client_id of the client. For instance, the value in database is saved in a column called
client_id:

def get_client_id(self):
return self.client_id

Returns string

get_default_redirect_uri()
A method to get client default redirect_uri. For instance, the database table for client has a column called
default_redirect_uri:

def get_default_redirect_uri(self):
return self.default_redirect_uri

310 Chapter 7. API reference


Indico Documentation, Release 3.2-dev

Returns A URL string

id
the unique id of the application
is_enabled
whether the application is enabled or disabled
is_trusted
whether the application can access user data without asking for permission
locator
name
human readable name
redirect_uris
the OAuth absolute URIs that a application may use to redirect to after authorization
reset_client_secret()
system_app_type
the type of system app (if any). system apps cannot be deleted
class indico.core.oauth.models.applications.OAuthApplicationUserLink(**kwargs)
Bases: sqlalchemy.orm.decl_api.Model
The authorization link between an OAuth app and a user.
A simple constructor that allows initialization from kwargs.
Sets attributes on the constructed instance using the names and values in kwargs.
Only keys that are present as attributes of the instance’s class are allowed. These could be, for example, any
mapped columns or relationships.
application
application_id
id
scopes
update_scopes(scopes: set)
user
user_id
class indico.core.oauth.models.applications.SystemAppType
Bases: int, indico.util.enum.IndicoEnum
An enumeration.
checkin = 1
default_data
enforced_data
none = 0

7.1. API reference 311


Indico Documentation, Release 3.2-dev

class indico.core.oauth.models.tokens.OAuth2AuthorizationCode(code: str,


user_id: int,
client_id: str,
code_challenge:
str,
code_challenge_method:
str, redirect_uri:
str = ”, scope: str
= ”, auth_time:
datetime.datetime
= <factory>)
Bases: authlib.oauth2.rfc6749.models.AuthorizationCodeMixin
get_auth_time()
get_nonce()
get_redirect_uri()
A method to get authorization code’s redirect_uri. For instance, the database table for authorization
code has a column called redirect_uri:

def get_redirect_uri(self):
return self.redirect_uri

Returns A URL string

get_scope()
A method to get scope of the authorization code. For instance, the column is called scope:

def get_scope(self):
return self.scope

Returns scope string

is_expired()
redirect_uri = ''
scope = ''
class indico.core.oauth.models.tokens.OAuthToken(**kwargs)
Bases: indico.core.oauth.models.tokens.TokenModelBase
OAuth tokens.
A simple constructor that allows initialization from kwargs.
Sets attributes on the constructed instance using the names and values in kwargs.
Only keys that are present as attributes of the instance’s class are allowed. These could be, for example, any
mapped columns or relationships.
access_token_hash
app_user_link
app_user_link_id
application

312 Chapter 7. API reference


Indico Documentation, Release 3.2-dev

check_client(client)
A method to check if this token is issued to the given client. For instance, client_id is saved on token
table:
def check_client(self, client):
return self.client_id == client.client_id

Returns bool

created_dt
get_scope()
A method to get scope of the authorization code. For instance, the column is called scope:
def get_scope(self):
return self.scope

Returns scope string

id
is_revoked()
A method to define if this token is revoked. For instance, there is a boolean column revoked in the table:
def is_revoked(self):
return self.revoked

Returns boolean

last_used_dt
last_used_ip
use_count
user
class indico.core.oauth.models.tokens.TokenModelBase(**kwargs)
Bases: authlib.oauth2.rfc6749.models.TokenMixin, sqlalchemy.orm.decl_api.
Model
A simple constructor that allows initialization from kwargs.
Sets attributes on the constructed instance using the names and values in kwargs.
Only keys that are present as attributes of the instance’s class are allowed. These could be, for example, any
mapped columns or relationships.
access_token
Similar to PasswordProperty but tailored towards API tokens.
Since tokens are used much more often than passwords, they use a fast hash algorithm instead of a secure
one. This is not a problem for tokens as they are fully random and much longer than the typical password
or even passphrase.
access_token_hash = Column(None, String(), table=None, nullable=False)
created_dt = Column(None, UTCDateTime(), table=None, nullable=False, default=ColumnDefa
get_expires_in()
A method to get the expires_in value of the token. e.g. the column is called expires_in:

7.1. API reference 313


Indico Documentation, Release 3.2-dev

def get_expires_in(self):
return self.expires_in

Returns timestamp int

id = Column(None, Integer(), table=None, primary_key=True, nullable=False)


is_expired()
A method to define if this token is expired. For instance, there is a column expired_at in the table:

def is_expired(self):
return self.expired_at < now

Returns boolean

last_used_dt = Column(None, UTCDateTime(), table=None)


last_used_ip = Column(None, INET(), table=None)
locator
scopes
The set of scopes this token has access to.
use_count = Column(None, Integer(), table=None, nullable=False, default=ColumnDefault(0

7.1.27 Group

Todo: Docstrings (module)

Models

class indico.modules.groups.models.groups.LocalGroup(**kwargs)
Bases: sqlalchemy.orm.decl_api.Model
A simple constructor that allows initialization from kwargs.
Sets attributes on the constructed instance using the names and values in kwargs.
Only keys that are present as attributes of the instance’s class are allowed. These could be, for example, any
mapped columns or relationships.
id
the unique id of the group
members
the users in the group
name
the name of the group
proxy
Return a GroupProxy wrapping this group.

314 Chapter 7. API reference


Indico Documentation, Release 3.2-dev

class indico.modules.groups.core.GroupProxy
Bases: object
Provide a generic interface for both local and multipass groups.
Creating an instance of this class actually creates either a LocalGroupProxy or a
MultipassGroupProxy, but they expose the same API.
Parameters
• name_or_id – The name of a multipass group or ID of a local group
• provider – The provider of a multipass group
Create the correct GroupProxy for the group type.
as_principal
The serializable principal identifier of this group.
get_members()
Get the list of users who are members of the group.
group
The underlying group object.
has_member(user)
Check if the user is a member of the group.
This can also be accessed using the in operator.
identifier
principal_order = 3
classmethod search(name, exact=False, providers=None)
Search for groups.
Parameters
• name – The group name to search for.
• exact – If only exact matches should be found (much faster)
• providers – None to search in all providers and local groups. May be a set specifying
providers to search in. For local groups, the 'indico' provider name may be used.

Utilities

indico.modules.groups.util.serialize_group(group)
Serialize group to JSON-like object.

7.1.28 Video conference

Todo: Docstrings (module, models, utilities, plugins, exceptions)

7.1. API reference 315


Indico Documentation, Release 3.2-dev

Models

class indico.modules.vc.models.vc_rooms.VCRoom(**kwargs)
Bases: sqlalchemy.orm.decl_api.Model
A simple constructor that allows initialization from kwargs.
Sets attributes on the constructed instance using the names and values in kwargs.
Only keys that are present as attributes of the instance’s class are allowed. These could be, for example, any
mapped columns or relationships.
created_by_id
ID of the creator
created_by_user
The user who created the videoconference room
created_dt
Creation timestamp of the videoconference room
data
videoconference plugin-specific data
id
Videoconference room ID
locator
modified_dt
Modification timestamp of the videoconference room
name
Name of the videoconference room
plugin
status
Status of the videoconference room
type
Type of the videoconference room
class indico.modules.vc.models.vc_rooms.VCRoomEventAssociation(**kwargs)
Bases: sqlalchemy.orm.decl_api.Model
A simple constructor that allows initialization from kwargs.
Sets attributes on the constructed instance using the names and values in kwargs.
Only keys that are present as attributes of the instance’s class are allowed. These could be, for example, any
mapped columns or relationships.
contribution_id
data
videoconference plugin-specific data
delete(user, delete_all=False)
Delete a VC room from an event.
If the room is not used anywhere else, the room itself is also deleted.
Parameters
• user – the user performing the deletion

316 Chapter 7. API reference


Indico Documentation, Release 3.2-dev

• delete_all – if True, the room is detached from all events and deleted.
event
The associated Event
event_id
ID of the event
classmethod find_for_event(event, include_hidden=False, include_deleted=False,
only_linked_to_event=False, **kwargs)
Return a Query that retrieves the videoconference rooms for an event.
Parameters
• event – an indico Event
• only_linked_to_event – only retrieve the vc rooms linked to the whole event
• kwargs – extra kwargs to pass to filter_by()
classmethod get_linked_for_event(event)
Get a dict mapping link objects to event vc rooms.
id
Association ID
link_object
link_type
Type of the object the vc_room is linked to
linked_block
The linked session block (if the VC room is attached to a block)
linked_contrib
The linked contribution (if the VC room is attached to a contribution)
linked_event
The linked event (if the VC room is attached to the event itself)
linked_event_id
locator
classmethod register_link_events()
session_block_id
show
If the vc room should be shown on the event page
vc_room
The associated :class:VCRoom
vc_room_id
ID of the videoconference room
class indico.modules.vc.models.vc_rooms.VCRoomLinkType
Bases: int, indico.util.enum.IndicoEnum
An enumeration.
block = 3
contribution = 2
event = 1

7.1. API reference 317


Indico Documentation, Release 3.2-dev

class indico.modules.vc.models.vc_rooms.VCRoomStatus
Bases: int, indico.util.enum.IndicoEnum
An enumeration.
created = 1
deleted = 2

Utilities

indico.modules.vc.util.find_event_vc_rooms(from_dt=None, to_dt=None, distinct=False)


Find VC rooms matching certain criteria.
Parameters
• from_dt – earliest event/contribution to include
• to_dt – latest event/contribution to include
• distinct – if True, never return the same (event, vcroom) more than once (even if
it’s linked more than once to that event)
indico.modules.vc.util.get_linked_to_description(obj)
indico.modules.vc.util.get_managed_vc_plugins(user)
Return the plugins the user can manage.
indico.modules.vc.util.get_vc_plugins()
Return a dict containing the available videoconference plugins.
indico.modules.vc.util.resolve_title(obj)

Plugins

class indico.modules.vc.plugins.VCPluginMixin
Bases: object
acl_settings = {'acl', 'managers'}
can_manage_vc(user)
Check if a user has management rights on this VC system.
can_manage_vc_room(user, room)
Check if a user can manage a vc room.
can_manage_vc_rooms(user, event)
Check if a user can manage vc rooms on an event.
category = 'Videoconference'
clone_room(old_event_vc_room, link_object)
Clone the room, returning a new VCRoomEventAssociation.
Parameters
• old_event_vc_room – the original VCRoomEventAssociation
• link_object – the new object the association will be tied to
Returns the new VCRoomEventAssociation
create_form(event, existing_vc_room=None, existing_event_vc_room=None)
Create the videoconference room form.

318 Chapter 7. API reference


Indico Documentation, Release 3.2-dev

Parameters
• event – the event the videoconference room is for
• existing_vc_room – a vc_room from which to retrieve data for the form
Returns an instance of an IndicoForm subclass
create_room(vc_room, event)
default_settings = {'notification_emails': []}
friendly_name = None
the readable name of the VC plugin
get_extra_delete_msg(vc_room, event_vc_room)
Return a custom message to show in the confirmation dialog when deleting a VC room.
Parameters
• vc_room – the VC room object
• event_vc_room – the association of an event and a VC room
Returns a string (may contain HTML) with the message to display
get_notification_bcc_list(action, vc_room, event)
get_notification_cc_list(action, vc_room, event)
get_vc_room_attach_form_defaults(event)
get_vc_room_form_defaults(event)
icon_url
init()
logo_url
render_buttons(vc_room, event_vc_room, **kwargs)
Render a list of plugin specific buttons (eg: Join URL, etc) in the management area.
Parameters
• vc_room – the VC room object
• event_vc_room – the association of an event and a VC room
• kwargs – arguments passed to the template
render_event_buttons(vc_room, event_vc_room, **kwargs)
Render a list of plugin specific buttons (eg: Join URL, etc) in the event page.
Parameters
• vc_room – the VC room object
• event_vc_room – the association of an event and a VC room
• kwargs – arguments passed to the template
render_form(**kwargs)
Render the videoconference room form.
Parameters kwargs – arguments passed to the template
render_info_box(vc_room, event_vc_room, event, **kwargs)
Render the information shown in the expandable box of a VC room row.

7.1. API reference 319


Indico Documentation, Release 3.2-dev

Parameters
• vc_room – the VC room object
• event_vc_room – the association of an event and a VC room
• event – the event with the current VC room attached to it
• kwargs – arguments passed to the template
render_manage_event_info_box(vc_room, event_vc_room, event, **kwargs)
Render the information shown in the expandable box on a VC room in the management area.
Parameters
• vc_room – the VC room object
• event_vc_room – the association of an event and a VC room
• event – the event with the current VC room attached to it
• kwargs – arguments passed to the template
service_name
settings_form
alias of indico.modules.vc.forms.VCPluginSettingsFormBase
update_data_association(event, vc_room, event_vc_room, data)
update_data_vc_room(vc_room, data, is_new=False)
vc_room_attach_form = None
the IndicoForm to use for the videoconference room attach form
vc_room_form = None
the IndicoForm to use for the videoconference room form

Exceptions

exception indico.modules.vc.exceptions.VCRoomError(message, field=None)


Bases: Exception
exception indico.modules.vc.exceptions.VCRoomNotFoundError(message)
Bases: indico.modules.vc.exceptions.VCRoomError

7.1.29 Designer

Todo: Docstrings (module, models, utilities)

Models

class indico.modules.designer.models.images.DesignerImageFile(**kwargs)
Bases: indico.core.storage.models.StoredFileMixin, sqlalchemy.orm.decl_api.
Model
A simple constructor that allows initialization from kwargs.
Sets attributes on the constructed instance using the names and values in kwargs.

320 Chapter 7. API reference


Indico Documentation, Release 3.2-dev

Only keys that are present as attributes of the instance’s class are allowed. These could be, for example, any
mapped columns or relationships.
content_type
The MIME type of the file.
created_dt
The date/time when the file was uploaded.
download_url
extension
The extension of the file.
filename
The name of the file.
id
The ID of the file
locator
md5
An MD5 hash of the file.
Automatically assigned when save() is called.
size
The size of the file (in bytes).
Automatically assigned when save() is called.
storage_backend
storage_file_id
template
template_id
The designer template the image belongs to
version_of = None
class indico.modules.designer.models.templates.DesignerTemplate(**kwargs)
Bases: sqlalchemy.orm.decl_api.Model
background_image
background_image_id
backside_template
backside_template_id
category
category_id
data
event
event_id
id
is_clonable

7.1. API reference 321


Indico Documentation, Release 3.2-dev

is_system_template
is_ticket
locator
Define a smart locator property.
This behaves pretty much like a normal read-only property and the decorated function should return a dict
containing the necessary data to build a URL for the object.
This decorator should usually be applied to a method named locator as this name is required for
get_locator to find it automatically when just passing the object.
If you need more than one locator, you can define it like this:

@locator_property
def locator(self):
return {...}

@locator.other
def locator(self):
return {...}

The other locator can then be accessed by passing obj.locator.other to the code expecting an
object with a locator.
owner
title
type

Utilities

indico.modules.designer.util.get_all_templates(obj)
Get all templates usable by an event/category.
indico.modules.designer.util.get_badge_format(tpl)
indico.modules.designer.util.get_default_badge_on_category(category,
only_inherited=False)
indico.modules.designer.util.get_default_ticket_on_category(category,
only_inherited=False)
indico.modules.designer.util.get_image_placeholder_types()
indico.modules.designer.util.get_inherited_templates(obj)
Get all templates inherited by a given event/category.
indico.modules.designer.util.get_nested_placeholder_options()
indico.modules.designer.util.get_not_deletable_templates(obj)
Get all non-deletable templates for an event/category.
indico.modules.designer.util.get_placeholder_options()
class indico.modules.designer.pdf.DesignerPDFBase(template, config)
Bases: object
get_pdf()

322 Chapter 7. API reference


Indico Documentation, Release 3.2-dev

class indico.modules.designer.pdf.TplData(width, height, items, background_position,


width_cm, height_cm)
Bases: tuple
Create new instance of TplData(width, height, items, background_position, width_cm, height_cm)
background_position
Alias for field number 3
height
Alias for field number 1
height_cm
Alias for field number 5
items
Alias for field number 2
width
Alias for field number 0
width_cm
Alias for field number 4

Placeholders

class indico.modules.designer.placeholders.EventDatesPlaceholder
Bases: indico.modules.designer.placeholders.DesignerPlaceholder
description = l'Event Dates'
group = 'event'
name = 'event_dates'
classmethod render(event)
Convert the placeholder to a string.
When a placeholder contains HTML that should not be escaped, the returned value should be returned as
a markupsafe.Markup instance instead of a plain string.
Subclasses are encouraged to explicitly specify the arguments they expect instead of using **kwargs.
Parameters kwargs – arguments specific to the placeholder’s context
class indico.modules.designer.placeholders.EventDescriptionPlaceholder
Bases: indico.modules.designer.placeholders.DesignerPlaceholder
description = l'Event Description'
group = 'event'
name = 'event_description'
classmethod render(event)
Convert the placeholder to a string.
When a placeholder contains HTML that should not be escaped, the returned value should be returned as
a markupsafe.Markup instance instead of a plain string.
Subclasses are encouraged to explicitly specify the arguments they expect instead of using **kwargs.
Parameters kwargs – arguments specific to the placeholder’s context

7.1. API reference 323


Indico Documentation, Release 3.2-dev

class indico.modules.designer.placeholders.RegistrationFullNamePlaceholder
Bases: indico.modules.designer.placeholders.FullNamePlaceholderBase
description = l'Full Name'
name = 'full_name'
name_options = {}
with_title = True
class indico.modules.designer.placeholders.EventOrgTextPlaceholder
Bases: indico.modules.designer.placeholders.DesignerPlaceholder
description = l'Event Organizers'
group = 'event'
name = 'event_organizers'
classmethod render(event)
Convert the placeholder to a string.
When a placeholder contains HTML that should not be escaped, the returned value should be returned as
a markupsafe.Markup instance instead of a plain string.
Subclasses are encouraged to explicitly specify the arguments they expect instead of using **kwargs.
Parameters kwargs – arguments specific to the placeholder’s context
class indico.modules.designer.placeholders.RegistrationFullNameNoTitlePlaceholder
Bases: indico.modules.designer.placeholders.FullNamePlaceholderBase
description = l'Full Name (no title)'
name = 'full_name_no_title'
name_options = {}
with_title = False
class indico.modules.designer.placeholders.RegistrationFullNamePlaceholderB
Bases: indico.modules.designer.placeholders.FullNamePlaceholderBase
description = l'Full Name B'
name = 'full_name_b'
name_options = {'last_name_first': False}
with_title = True
class indico.modules.designer.placeholders.RegistrationFullNameNoTitlePlaceholderB
Bases: indico.modules.designer.placeholders.FullNamePlaceholderBase
description = l'Full Name B (no title)'
name = 'full_name_b_no_title'
name_options = {'last_name_first': False}
with_title = False
class indico.modules.designer.placeholders.RegistrationFullNamePlaceholderC
Bases: indico.modules.designer.placeholders.FullNamePlaceholderBase
description = l'Full Name C'
name = 'full_name_c'

324 Chapter 7. API reference


Indico Documentation, Release 3.2-dev

name_options = {'last_name_first': False, 'last_name_upper': True}


with_title = True
class indico.modules.designer.placeholders.RegistrationFullNameNoTitlePlaceholderC
Bases: indico.modules.designer.placeholders.FullNamePlaceholderBase
description = l'Full Name C (no title)'
name = 'full_name_no_title_c'
name_options = {'last_name_upper': True}
with_title = False
class indico.modules.designer.placeholders.RegistrationFullNamePlaceholderD
Bases: indico.modules.designer.placeholders.FullNamePlaceholderBase
description = l'Full Name D (abbrev.)'
name = 'full_name_d'
name_options = {'abbrev_first_name': True, 'last_name_first': False, 'last_name_upper
with_title = True
class indico.modules.designer.placeholders.RegistrationFullNameNoTitlePlaceholderD
Bases: indico.modules.designer.placeholders.FullNamePlaceholderBase
description = l'Full Name D (abbrev., no title)'
name = 'full_name_no_title_d'
name_options = {'abbrev_first_name': True, 'last_name_upper': True}
with_title = False
class indico.modules.designer.placeholders.RegistrationTitlePlaceholder
Bases: indico.modules.designer.placeholders.RegistrationPDPlaceholder
description = l'Title'
field = 'title'
name = 'title'
class indico.modules.designer.placeholders.RegistrationFirstNamePlaceholder
Bases: indico.modules.designer.placeholders.RegistrationPlaceholder
description = l'First Name'
field = 'first_name'
name = 'first_name'
class indico.modules.designer.placeholders.RegistrationLastNamePlaceholder
Bases: indico.modules.designer.placeholders.RegistrationPlaceholder
description = l'Last Name'
field = 'last_name'
name = 'last_name'
class indico.modules.designer.placeholders.RegistrationTicketQRPlaceholder
Bases: indico.modules.designer.placeholders.DesignerPlaceholder
description = l'Ticket QR Code'

7.1. API reference 325


Indico Documentation, Release 3.2-dev

group = 'registrant'
is_image = True
is_ticket = True
name = 'ticket_qr_code'
classmethod render(registration)
Convert the placeholder to a string.
When a placeholder contains HTML that should not be escaped, the returned value should be returned as
a markupsafe.Markup instance instead of a plain string.
Subclasses are encouraged to explicitly specify the arguments they expect instead of using **kwargs.
Parameters kwargs – arguments specific to the placeholder’s context
class indico.modules.designer.placeholders.RegistrationEmailPlaceholder
Bases: indico.modules.designer.placeholders.RegistrationPlaceholder
description = l'E-mail'
field = 'email'
name = 'email'
class indico.modules.designer.placeholders.RegistrationAmountPlaceholder
Bases: indico.modules.designer.placeholders.RegistrationPlaceholder
description = l'Price (no currency)'
name = 'amount'
classmethod render(registration)
Convert the placeholder to a string.
When a placeholder contains HTML that should not be escaped, the returned value should be returned as
a markupsafe.Markup instance instead of a plain string.
Subclasses are encouraged to explicitly specify the arguments they expect instead of using **kwargs.
Parameters kwargs – arguments specific to the placeholder’s context
class indico.modules.designer.placeholders.RegistrationPricePlaceholder
Bases: indico.modules.designer.placeholders.RegistrationPlaceholder
description = l'Price (with currency)'
name = 'price'
classmethod render(registration)
Convert the placeholder to a string.
When a placeholder contains HTML that should not be escaped, the returned value should be returned as
a markupsafe.Markup instance instead of a plain string.
Subclasses are encouraged to explicitly specify the arguments they expect instead of using **kwargs.
Parameters kwargs – arguments specific to the placeholder’s context
class indico.modules.designer.placeholders.RegistrationFriendlyIDPlaceholder
Bases: indico.modules.designer.placeholders.RegistrationPlaceholder
description = l'Registration ID'
field = 'friendly_id'

326 Chapter 7. API reference


Indico Documentation, Release 3.2-dev

name = 'registration_friendly_id'
class indico.modules.designer.placeholders.RegistrationAffiliationPlaceholder
Bases: indico.modules.designer.placeholders.RegistrationPDPlaceholder
description = l'Institution'
field = 'affiliation'
name = 'affiliation'
class indico.modules.designer.placeholders.RegistrationPositionPlaceholder
Bases: indico.modules.designer.placeholders.RegistrationPDPlaceholder
description = l'Position'
field = 'position'
name = 'position'
class indico.modules.designer.placeholders.RegistrationAddressPlaceholder
Bases: indico.modules.designer.placeholders.RegistrationPDPlaceholder
description = l'Address'
field = 'address'
name = 'address'
class indico.modules.designer.placeholders.RegistrationCountryPlaceholder
Bases: indico.modules.designer.placeholders.RegistrationPDPlaceholder
description = l'Country'
field = 'country'
name = 'country'
class indico.modules.designer.placeholders.RegistrationPhonePlaceholder
Bases: indico.modules.designer.placeholders.RegistrationPDPlaceholder
description = l'Phone'
field = 'phone'
name = 'phone'
class indico.modules.designer.placeholders.EventTitlePlaceholder
Bases: indico.modules.designer.placeholders.DesignerPlaceholder
description = l'Event Title'
group = 'event'
name = 'event_title'
classmethod render(event)
Convert the placeholder to a string.
When a placeholder contains HTML that should not be escaped, the returned value should be returned as
a markupsafe.Markup instance instead of a plain string.
Subclasses are encouraged to explicitly specify the arguments they expect instead of using **kwargs.
Parameters kwargs – arguments specific to the placeholder’s context
class indico.modules.designer.placeholders.CategoryTitlePlaceholder
Bases: indico.modules.designer.placeholders.DesignerPlaceholder

7.1. API reference 327


Indico Documentation, Release 3.2-dev

description = l'Category Title'


group = 'event'
name = 'category_title'
classmethod render(event)
Convert the placeholder to a string.
When a placeholder contains HTML that should not be escaped, the returned value should be returned as
a markupsafe.Markup instance instead of a plain string.
Subclasses are encouraged to explicitly specify the arguments they expect instead of using **kwargs.
Parameters kwargs – arguments specific to the placeholder’s context
class indico.modules.designer.placeholders.EventRoomPlaceholder
Bases: indico.modules.designer.placeholders.DesignerPlaceholder
description = l'Event Room'
group = 'event'
name = 'event_room'
classmethod render(event)
Convert the placeholder to a string.
When a placeholder contains HTML that should not be escaped, the returned value should be returned as
a markupsafe.Markup instance instead of a plain string.
Subclasses are encouraged to explicitly specify the arguments they expect instead of using **kwargs.
Parameters kwargs – arguments specific to the placeholder’s context
class indico.modules.designer.placeholders.EventVenuePlaceholder
Bases: indico.modules.designer.placeholders.DesignerPlaceholder
description = l'Event Venue'
group = 'event'
name = 'event_venue'
classmethod render(event)
Convert the placeholder to a string.
When a placeholder contains HTML that should not be escaped, the returned value should be returned as
a markupsafe.Markup instance instead of a plain string.
Subclasses are encouraged to explicitly specify the arguments they expect instead of using **kwargs.
Parameters kwargs – arguments specific to the placeholder’s context
class indico.modules.designer.placeholders.EventSpeakersPlaceholder
Bases: indico.modules.designer.placeholders.DesignerPlaceholder
description = l'Event Speakers/Chairs'
group = 'event'
name = 'event_speakers'
classmethod render(event)
Convert the placeholder to a string.
When a placeholder contains HTML that should not be escaped, the returned value should be returned as
a markupsafe.Markup instance instead of a plain string.

328 Chapter 7. API reference


Indico Documentation, Release 3.2-dev

Subclasses are encouraged to explicitly specify the arguments they expect instead of using **kwargs.
Parameters kwargs – arguments specific to the placeholder’s context
class indico.modules.designer.placeholders.EventLogoPlaceholder
Bases: indico.modules.designer.placeholders.DesignerPlaceholder
description = l'Event Logo'
group = 'event'
is_image = True
name = 'event_logo'
classmethod render(event)
Convert the placeholder to a string.
When a placeholder contains HTML that should not be escaped, the returned value should be returned as
a markupsafe.Markup instance instead of a plain string.
Subclasses are encouraged to explicitly specify the arguments they expect instead of using **kwargs.
Parameters kwargs – arguments specific to the placeholder’s context

7.1.30 Network

Todo: Docstrings (module, models)

Models

class indico.modules.networks.models.networks.IPNetwork(**kwargs)
Bases: sqlalchemy.orm.decl_api.Model
A simple constructor that allows initialization from kwargs.
Sets attributes on the constructed instance using the names and values in kwargs.
Only keys that are present as attributes of the instance’s class are allowed. These could be, for example, any
mapped columns or relationships.
group_id
network
class indico.modules.networks.models.networks.IPNetworkGroup(**kwargs)
Bases: sqlalchemy.orm.decl_api.Model
A simple constructor that allows initialization from kwargs.
Sets attributes on the constructed instance using the names and values in kwargs.
Only keys that are present as attributes of the instance’s class are allowed. These could be, for example, any
mapped columns or relationships.
attachment_access_override
Grants all IPs in the network group read access to all attachments
contains_ip(ip)
description

7.1. API reference 329


Indico Documentation, Release 3.2-dev

hidden
Whether the network group is hidden in ACL forms
id
locator
name
networks
A descriptor that presents a read/write view of an object attribute.
principal_order = 1
principal_type = 5

Utilities

indico.modules.networks.util.serialize_ip_network_group(group)
Serialize group to JSON-like object.

7.1.31 News

Todo: Docstrings (module, models)

Models

class indico.modules.news.models.news.NewsItem(**kwargs)
Bases: sqlalchemy.orm.decl_api.Model
A simple constructor that allows initialization from kwargs.
Sets attributes on the constructed instance using the names and values in kwargs.
Only keys that are present as attributes of the instance’s class are allowed. These could be, for example, any
mapped columns or relationships.
anchor
content
created_dt
id
locator
Define a smart locator property.
This behaves pretty much like a normal read-only property and the decorated function should return a dict
containing the necessary data to build a URL for the object.
This decorator should usually be applied to a method named locator as this name is required for
get_locator to find it automatically when just passing the object.
If you need more than one locator, you can define it like this:

330 Chapter 7. API reference


Indico Documentation, Release 3.2-dev

@locator_property
def locator(self):
return {...}

@locator.other
def locator(self):
return {...}

The other locator can then be accessed by passing obj.locator.other to the code expecting an
object with a locator.
slug
title
url

Utilities

indico.modules.news.util.get_recent_news()
Get a list of recent news for the home page.

7.1.32 Indico fields

Todo: Docstrings to all fields

Indico fields extend from WTForm fields and are used for the special cases where the simple form fields are not enough
to cover all needs.
class indico.modules.events.fields.EventPersonLinkListField(*args, **kwargs)
Bases: indico.modules.events.fields.PersonLinkListFieldBase
A field to manage event’s chairpersons.
linked_object_attr = 'event'
person_link_cls
alias of indico.modules.events.models.persons.EventPersonLink
pre_validate(form)
Override if you need field-level validation. Runs before any other validators.
Parameters form – The form the field belongs to.
roles
widget = <indico.web.forms.widgets.JinjaWidget object>
class indico.modules.events.fields.IndicoThemeSelectField(*args, **kwargs)
Bases: wtforms.fields.choices.SelectField
class indico.modules.events.fields.PersonLinkListFieldBase(*args, **kwargs)
Bases: indico.web.forms.fields.principals.PrincipalListField
create_untrusted_persons = False
default_sort_alpha = True
If set to True, will be sorted alphabetically by default

7.1. API reference 331


Indico Documentation, Release 3.2-dev

event
linked_object_attr = None
name of the attribute on the form containing the linked object
person_link_cls = None
class that inherits from PersonLinkBase
process_formdata(valuelist)
Process data received over the wire from a form.
This will be called during form construction with data supplied through the formdata argument.
Parameters valuelist – A list of strings to process.
widget = None
class indico.modules.events.fields.RatingReviewField(*args, **kwargs)
Bases: wtforms.fields.choices.RadioField
widget = <indico.web.forms.widgets.JinjaWidget object>
class indico.modules.events.fields.ReferencesField(*args, **kwargs)
Bases: indico.web.forms.fields.itemlists.MultipleItemsField
A field to manage external references.
pre_validate(form)
Override if you need field-level validation. Runs before any other validators.
Parameters form – The form the field belongs to.
process_formdata(valuelist)
Process data received over the wire from a form.
This will be called during form construction with data supplied through the formdata argument.
Parameters valuelist – A list of strings to process.
class indico.modules.events.abstracts.fields.AbstractField(*args, **kwargs)
Bases: wtforms_sqlalchemy.fields.QuerySelectField
A selectize-based field to select an abstract from an event.
event
pre_validate(form)
Override if you need field-level validation. Runs before any other validators.
Parameters form – The form the field belongs to.
search_payload
search_url
widget = <indico.web.forms.widgets.SelectizeWidget object>
class indico.modules.events.abstracts.fields.AbstractPersonLinkListField(*args,
**kwargs)
Bases: indico.modules.events.fields.PersonLinkListFieldBase
A field to configure a list of abstract persons.
create_untrusted_persons = True
default_sort_alpha = False
linked_object_attr = 'abstract'

332 Chapter 7. API reference


Indico Documentation, Release 3.2-dev

person_link_cls
alias of indico.modules.events.abstracts.models.persons.AbstractPersonLink
pre_validate(form)
Override if you need field-level validation. Runs before any other validators.
Parameters form – The form the field belongs to.
roles
widget = <indico.web.forms.widgets.JinjaWidget object>
class indico.modules.events.abstracts.fields.EmailRuleListField(label=None,
valida-
tors=None,
filters=(),
description=”,
id=None,
default=None,
widget=None,
ren-
der_kw=None,
name=None,
_form=None,
_prefix=”,
_transla-
tions=None,
_meta=None)
Bases: indico.web.forms.fields.simple.JSONField
A field that stores a list of e-mail template rules.
Construct a new field.
Parameters
• label – The label of the field.
• validators – A sequence of validators to call when validate is called.
• filters – A sequence of filters which are run on input data by process.
• description – A description for the field, typically used for help text.
• id – An id to use for the field. A reasonable default is set by the form, and you shouldn’t
need to set this manually.
• default – The default value to assign to the field, if no form or object input is provided.
May be a callable.
• widget – If provided, overrides the widget used to render the field.
• render_kw (dict) – If provided, a dictionary which provides default keywords that will
be given to the widget at render time.
• name – The HTML name of this field. The default value is the Python attribute name.
• _form – The form holding this field. It is passed by the form itself during construction.
You should never pass this value yourself.
• _prefix – The prefix to prepend to the form name of this field, passed by the enclosing
form during construction.

7.1. API reference 333


Indico Documentation, Release 3.2-dev

• _translations – A translations object providing message translations. Usually passed


by the enclosing form during construction. See I18n docs for information on message trans-
lations.
• _meta – If provided, this is the ‘meta’ instance from the form. You usually don’t pass this
yourself.
If _form isn’t provided, an UnboundField will be returned instead. Call its bind() method with a form
instance and a name to construct the field.
CAN_POPULATE = True
accepted_condition_types = (<class 'indico.modules.events.abstracts.notifications.State
condition_choices
condition_class_map = {'contribution_type': <class 'indico.modules.events.abstracts.no
pre_validate(form)
Override if you need field-level validation. Runs before any other validators.
Parameters form – The form the field belongs to.
widget = <indico.web.forms.widgets.JinjaWidget object>
class indico.modules.events.abstracts.fields.TrackRoleField(label=None, val-
idators=None,
filters=(), descrip-
tion=”, id=None,
default=None,
widget=None, ren-
der_kw=None,
name=None,
_form=None,
_prefix=”, _trans-
lations=None,
_meta=None)
Bases: indico.web.forms.fields.simple.JSONField
A field to assign track roles to principals.
Construct a new field.
Parameters
• label – The label of the field.
• validators – A sequence of validators to call when validate is called.
• filters – A sequence of filters which are run on input data by process.
• description – A description for the field, typically used for help text.
• id – An id to use for the field. A reasonable default is set by the form, and you shouldn’t
need to set this manually.
• default – The default value to assign to the field, if no form or object input is provided.
May be a callable.
• widget – If provided, overrides the widget used to render the field.
• render_kw (dict) – If provided, a dictionary which provides default keywords that will
be given to the widget at render time.
• name – The HTML name of this field. The default value is the Python attribute name.

334 Chapter 7. API reference


Indico Documentation, Release 3.2-dev

• _form – The form holding this field. It is passed by the form itself during construction.
You should never pass this value yourself.
• _prefix – The prefix to prepend to the form name of this field, passed by the enclosing
form during construction.
• _translations – A translations object providing message translations. Usually passed
by the enclosing form during construction. See I18n docs for information on message trans-
lations.
• _meta – If provided, this is the ‘meta’ instance from the form. You usually don’t pass this
yourself.
If _form isn’t provided, an UnboundField will be returned instead. Call its bind() method with a form
instance and a name to construct the field.
CAN_POPULATE = True
category_roles
event_roles
permissions_info
widget = <indico.web.forms.widgets.JinjaWidget object>
class indico.modules.events.contributions.fields.ContributionPersonLinkListField(*args,
**kwargs)
Bases: indico.modules.events.fields.PersonLinkListFieldBase
A field to configure a list of contribution persons.
linked_object_attr = 'contrib'
person_link_cls
alias of indico.modules.events.contributions.models.persons.
ContributionPersonLink
pre_validate(form)
Override if you need field-level validation. Runs before any other validators.
Parameters form – The form the field belongs to.
roles
widget = <indico.web.forms.widgets.JinjaWidget object>
class indico.modules.events.contributions.fields.SubContributionPersonLinkListField(*args,
**kwargs
Bases: indico.modules.events.contributions.fields.ContributionPersonLinkListField
A field to configure a list of subcontribution persons.
linked_object_attr = 'subcontrib'
person_link_cls
alias of indico.modules.events.contributions.models.persons.
SubContributionPersonLink
widget = <indico.web.forms.widgets.JinjaWidget object>

7.1. API reference 335


Indico Documentation, Release 3.2-dev

class indico.modules.events.papers.fields.PaperEmailSettingsField(label=None,
valida-
tors=None,
filters=(),
descrip-
tion=”,
id=None,
de-
fault=None,
wid-
get=None,
ren-
der_kw=None,
name=None,
_form=None,
_prefix=”,
_transla-
tions=None,
_meta=None)
Bases: indico.web.forms.fields.simple.JSONField
Construct a new field.
Parameters
• label – The label of the field.
• validators – A sequence of validators to call when validate is called.
• filters – A sequence of filters which are run on input data by process.
• description – A description for the field, typically used for help text.
• id – An id to use for the field. A reasonable default is set by the form, and you shouldn’t
need to set this manually.
• default – The default value to assign to the field, if no form or object input is provided.
May be a callable.
• widget – If provided, overrides the widget used to render the field.
• render_kw (dict) – If provided, a dictionary which provides default keywords that will
be given to the widget at render time.
• name – The HTML name of this field. The default value is the Python attribute name.
• _form – The form holding this field. It is passed by the form itself during construction.
You should never pass this value yourself.
• _prefix – The prefix to prepend to the form name of this field, passed by the enclosing
form during construction.
• _translations – A translations object providing message translations. Usually passed
by the enclosing form during construction. See I18n docs for information on message trans-
lations.
• _meta – If provided, this is the ‘meta’ instance from the form. You usually don’t pass this
yourself.
If _form isn’t provided, an UnboundField will be returned instead. Call its bind() method with a form
instance and a name to construct the field.
CAN_POPULATE = True

336 Chapter 7. API reference


Indico Documentation, Release 3.2-dev

event
process_formdata(valuelist)
Process data received over the wire from a form.
This will be called during form construction with data supplied through the formdata argument.
Parameters valuelist – A list of strings to process.
widget = <indico.web.forms.widgets.JinjaWidget object>
class indico.modules.events.sessions.fields.SessionBlockPersonLinkListField(*args,
**kwargs)
Bases: indico.modules.events.fields.PersonLinkListFieldBase
linked_object_attr = 'session_block'
person_link_cls
alias of indico.modules.events.sessions.models.persons.
SessionBlockPersonLink
widget = <indico.web.forms.widgets.JinjaWidget object>
class indico.modules.categories.fields.CategoryField(*args, **kwargs)
Bases: wtforms.fields.simple.HiddenField
WTForms field that lets you select a category.
Parameters require_event_creation_rights – Whether to allow selecting only cate-
gories where the user can create events.
process_data(value)
Process the Python data applied to this field and store the result.
This will be called during form construction by the form’s kwargs or obj argument.
Parameters value – The python object containing the value to process.
process_formdata(valuelist)
Process data received over the wire from a form.
This will be called during form construction with data supplied through the formdata argument.
Parameters valuelist – A list of strings to process.
widget = <indico.web.forms.widgets.JinjaWidget object>
class indico.modules.categories.fields.EventRequestList(category, **kwargs)
Bases: indico.util.marshmallow.ModelList
class indico.modules.networks.fields.MultiIPNetworkField(*args, **kwargs)
Bases: indico.web.forms.fields.itemlists.MultiStringField
A field to enter multiple IPv4 or IPv6 networks.
The field data is a set of IPNetwork``s not bound to a DB session. The ``unique and
sortable parameters of the parent class cannot be used with this class.
pre_validate(form)
Override if you need field-level validation. Runs before any other validators.
Parameters form – The form the field belongs to.
process_data(value)
Process the Python data applied to this field and store the result.
This will be called during form construction by the form’s kwargs or obj argument.

7.1. API reference 337


Indico Documentation, Release 3.2-dev

Parameters value – The python object containing the value to process.


process_formdata(valuelist)
Process data received over the wire from a form.
This will be called during form construction with data supplied through the formdata argument.
Parameters valuelist – A list of strings to process.
class indico.web.forms.fields.IndicoSelectMultipleCheckboxField(label=None,
valida-
tors=None,
coerce=<class
’str’>,
choices=None,
vali-
date_choice=True,
**kwargs)
Bases: wtforms.fields.choices.SelectMultipleField
option_widget = <wtforms.widgets.core.CheckboxInput object>
widget = <indico.web.forms.widgets.JinjaWidget object>
class indico.web.forms.fields.IndicoRadioField(*args, **kwargs)
Bases: wtforms.fields.choices.RadioField
widget = <indico.web.forms.widgets.JinjaWidget object>
class indico.web.forms.fields.JSONField(label=None, validators=None, filters=(), descrip-
tion=”, id=None, default=None, widget=None,
render_kw=None, name=None, _form=None,
_prefix=”, _translations=None, _meta=None)
Bases: wtforms.fields.simple.HiddenField
Construct a new field.
Parameters
• label – The label of the field.
• validators – A sequence of validators to call when validate is called.
• filters – A sequence of filters which are run on input data by process.
• description – A description for the field, typically used for help text.
• id – An id to use for the field. A reasonable default is set by the form, and you shouldn’t
need to set this manually.
• default – The default value to assign to the field, if no form or object input is provided.
May be a callable.
• widget – If provided, overrides the widget used to render the field.
• render_kw (dict) – If provided, a dictionary which provides default keywords that will
be given to the widget at render time.
• name – The HTML name of this field. The default value is the Python attribute name.
• _form – The form holding this field. It is passed by the form itself during construction.
You should never pass this value yourself.
• _prefix – The prefix to prepend to the form name of this field, passed by the enclosing
form during construction.

338 Chapter 7. API reference


Indico Documentation, Release 3.2-dev

• _translations – A translations object providing message translations. Usually passed


by the enclosing form during construction. See I18n docs for information on message trans-
lations.
• _meta – If provided, this is the ‘meta’ instance from the form. You usually don’t pass this
yourself.
If _form isn’t provided, an UnboundField will be returned instead. Call its bind() method with a form
instance and a name to construct the field.
CAN_POPULATE = False
Whether an object may be populated with the data from this field
populate_obj(obj, name)
Populates obj.<name> with the field’s data.
Note This is a destructive operation. If obj.<name> already exists, it will be overridden. Use
with caution.
process_formdata(valuelist)
Process data received over the wire from a form.
This will be called during form construction with data supplied through the formdata argument.
Parameters valuelist – A list of strings to process.
class indico.web.forms.fields.HiddenFieldList(label=None, validators=None, filters=(),
description=”, id=None, default=None,
widget=None, render_kw=None,
name=None, _form=None, _prefix=”,
_translations=None, _meta=None)
Bases: wtforms.fields.simple.HiddenField
A hidden field that handles lists of strings.
This is done getlist-style, i.e. by repeating the input element with the same name for each list item.
The only case where this field is useful is when you display a form via POST and provide a list of items (e.g.
ids) related to the form which needs to be kept when the form is submitted and also need to access it via
request.form.getlist(...) before submitting the form.
Construct a new field.
Parameters
• label – The label of the field.
• validators – A sequence of validators to call when validate is called.
• filters – A sequence of filters which are run on input data by process.
• description – A description for the field, typically used for help text.
• id – An id to use for the field. A reasonable default is set by the form, and you shouldn’t
need to set this manually.
• default – The default value to assign to the field, if no form or object input is provided.
May be a callable.
• widget – If provided, overrides the widget used to render the field.
• render_kw (dict) – If provided, a dictionary which provides default keywords that will
be given to the widget at render time.
• name – The HTML name of this field. The default value is the Python attribute name.

7.1. API reference 339


Indico Documentation, Release 3.2-dev

• _form – The form holding this field. It is passed by the form itself during construction.
You should never pass this value yourself.
• _prefix – The prefix to prepend to the form name of this field, passed by the enclosing
form during construction.
• _translations – A translations object providing message translations. Usually passed
by the enclosing form during construction. See I18n docs for information on message trans-
lations.
• _meta – If provided, this is the ‘meta’ instance from the form. You usually don’t pass this
yourself.
If _form isn’t provided, an UnboundField will be returned instead. Call its bind() method with a form
instance and a name to construct the field.
process_formdata(valuelist)
Process data received over the wire from a form.
This will be called during form construction with data supplied through the formdata argument.
Parameters valuelist – A list of strings to process.
widget = <indico.web.forms.widgets.HiddenInputs object>
class indico.web.forms.fields.TextListField(label=None, validators=None, filters=(),
description=”, id=None, default=None, wid-
get=None, render_kw=None, name=None,
_form=None, _prefix=”, _transla-
tions=None, _meta=None)
Bases: wtforms.fields.simple.TextAreaField
Construct a new field.
Parameters
• label – The label of the field.
• validators – A sequence of validators to call when validate is called.
• filters – A sequence of filters which are run on input data by process.
• description – A description for the field, typically used for help text.
• id – An id to use for the field. A reasonable default is set by the form, and you shouldn’t
need to set this manually.
• default – The default value to assign to the field, if no form or object input is provided.
May be a callable.
• widget – If provided, overrides the widget used to render the field.
• render_kw (dict) – If provided, a dictionary which provides default keywords that will
be given to the widget at render time.
• name – The HTML name of this field. The default value is the Python attribute name.
• _form – The form holding this field. It is passed by the form itself during construction.
You should never pass this value yourself.
• _prefix – The prefix to prepend to the form name of this field, passed by the enclosing
form during construction.
• _translations – A translations object providing message translations. Usually passed
by the enclosing form during construction. See I18n docs for information on message trans-
lations.

340 Chapter 7. API reference


Indico Documentation, Release 3.2-dev

• _meta – If provided, this is the ‘meta’ instance from the form. You usually don’t pass this
yourself.
If _form isn’t provided, an UnboundField will be returned instead. Call its bind() method with a form
instance and a name to construct the field.
pre_validate(form)
Override if you need field-level validation. Runs before any other validators.
Parameters form – The form the field belongs to.
process_formdata(valuelist)
Process data received over the wire from a form.
This will be called during form construction with data supplied through the formdata argument.
Parameters valuelist – A list of strings to process.
class indico.web.forms.fields.EmailListField(label=None, validators=None, filters=(),
description=”, id=None, default=None,
widget=None, render_kw=None,
name=None, _form=None, _prefix=”,
_translations=None, _meta=None)
Bases: indico.web.forms.fields.simple.TextListField
Construct a new field.
Parameters
• label – The label of the field.
• validators – A sequence of validators to call when validate is called.
• filters – A sequence of filters which are run on input data by process.
• description – A description for the field, typically used for help text.
• id – An id to use for the field. A reasonable default is set by the form, and you shouldn’t
need to set this manually.
• default – The default value to assign to the field, if no form or object input is provided.
May be a callable.
• widget – If provided, overrides the widget used to render the field.
• render_kw (dict) – If provided, a dictionary which provides default keywords that will
be given to the widget at render time.
• name – The HTML name of this field. The default value is the Python attribute name.
• _form – The form holding this field. It is passed by the form itself during construction.
You should never pass this value yourself.
• _prefix – The prefix to prepend to the form name of this field, passed by the enclosing
form during construction.
• _translations – A translations object providing message translations. Usually passed
by the enclosing form during construction. See I18n docs for information on message trans-
lations.
• _meta – If provided, this is the ‘meta’ instance from the form. You usually don’t pass this
yourself.
If _form isn’t provided, an UnboundField will be returned instead. Call its bind() method with a form
instance and a name to construct the field.

7.1. API reference 341


Indico Documentation, Release 3.2-dev

process_formdata(valuelist)
Process data received over the wire from a form.
This will be called during form construction with data supplied through the formdata argument.
Parameters valuelist – A list of strings to process.
class indico.web.forms.fields.IndicoPasswordField(*args, **kwargs)
Bases: wtforms.fields.simple.PasswordField
Password field which can show or hide the password.
widget = <indico.web.forms.widgets.PasswordWidget object>
class indico.web.forms.fields.IndicoStaticTextField(*args, **kwargs)
Bases: wtforms.fields.core.Field
Return an html element with text taken from this field’s value.
process_data(data)
Process the Python data applied to this field and store the result.
This will be called during form construction by the form’s kwargs or obj argument.
Parameters value – The python object containing the value to process.
widget = <indico.web.forms.widgets.JinjaWidget object>
class indico.web.forms.fields.IndicoTagListField(label=None, validators=None, fil-
ters=(), description=”, id=None,
default=None, widget=None,
render_kw=None, name=None,
_form=None, _prefix=”, _transla-
tions=None, _meta=None)
Bases: indico.web.forms.fields.simple.HiddenFieldList
Construct a new field.
Parameters
• label – The label of the field.
• validators – A sequence of validators to call when validate is called.
• filters – A sequence of filters which are run on input data by process.
• description – A description for the field, typically used for help text.
• id – An id to use for the field. A reasonable default is set by the form, and you shouldn’t
need to set this manually.
• default – The default value to assign to the field, if no form or object input is provided.
May be a callable.
• widget – If provided, overrides the widget used to render the field.
• render_kw (dict) – If provided, a dictionary which provides default keywords that will
be given to the widget at render time.
• name – The HTML name of this field. The default value is the Python attribute name.
• _form – The form holding this field. It is passed by the form itself during construction.
You should never pass this value yourself.
• _prefix – The prefix to prepend to the form name of this field, passed by the enclosing
form during construction.

342 Chapter 7. API reference


Indico Documentation, Release 3.2-dev

• _translations – A translations object providing message translations. Usually passed


by the enclosing form during construction. See I18n docs for information on message trans-
lations.
• _meta – If provided, this is the ‘meta’ instance from the form. You usually don’t pass this
yourself.
If _form isn’t provided, an UnboundField will be returned instead. Call its bind() method with a form
instance and a name to construct the field.
widget = <indico.web.forms.widgets.JinjaWidget object>
class indico.web.forms.fields.IndicoPalettePickerField(*args, **kwargs)
Bases: indico.web.forms.fields.simple.JSONField
Field allowing user to pick a color from a set of predefined values.
CAN_POPULATE = True
pre_validate(form)
Override if you need field-level validation. Runs before any other validators.
Parameters form – The form the field belongs to.
process_data(value)
Process the Python data applied to this field and store the result.
This will be called during form construction by the form’s kwargs or obj argument.
Parameters value – The python object containing the value to process.
process_formdata(valuelist)
Process data received over the wire from a form.
This will be called during form construction with data supplied through the formdata argument.
Parameters valuelist – A list of strings to process.
widget = <indico.web.forms.widgets.JinjaWidget object>
class indico.web.forms.fields.IndicoSinglePalettePickerField(*args, **kwargs)
Bases: indico.web.forms.fields.colors.IndicoPalettePickerField
Like IndicoPalettePickerField but for just a single color.
pre_validate(form)
Override if you need field-level validation. Runs before any other validators.
Parameters form – The form the field belongs to.
process_formdata(valuelist)
Process data received over the wire from a form.
This will be called during form construction with data supplied through the formdata argument.
Parameters valuelist – A list of strings to process.
class indico.web.forms.fields.TimeDeltaField(*args, **kwargs)
Bases: wtforms.fields.core.Field
A field that lets the user select a simple timedelta.
It does not support mixing multiple units, but it is smart enough to switch to a different unit to represent a
timedelta that could not be represented otherwise.
Parameters units – The available units. Must be a tuple containing any any of ‘seconds’, ‘min-
utes’, ‘hours’ and ‘days’. If not specified, ('hours', 'days') is assumed.

7.1. API reference 343


Indico Documentation, Release 3.2-dev

best_unit
Return the largest unit that covers the current timedelta.
choices
magnitudes = {'days': 86400, 'hours': 3600, 'minutes': 60, 'seconds': 1}
pre_validate(form)
Override if you need field-level validation. Runs before any other validators.
Parameters form – The form the field belongs to.
process_formdata(valuelist)
Process data received over the wire from a form.
This will be called during form construction with data supplied through the formdata argument.
Parameters valuelist – A list of strings to process.
unit_names = {'days': 'Days', 'hours': 'Hours', 'minutes': 'Minutes', 'seconds': 'S
widget = <indico.web.forms.widgets.JinjaWidget object>
class indico.web.forms.fields.IndicoDateTimeField(*args, **kwargs)
Bases: wtforms_dateutil.DateTimeField
Friendly datetime field that handles timezones and validations.
Important: When the form has a timezone field it must be declared before any IndicoDateTimeField. Otherwise
its value is not available in this field resulting in an error during form submission.
earliest_dt
latest_dt
linked_datetime_validator
linked_field
pre_validate(form)
Override if you need field-level validation. Runs before any other validators.
Parameters form – The form the field belongs to.
process_formdata(valuelist)
Process data received over the wire from a form.
This will be called during form construction with data supplied through the formdata argument.
Parameters valuelist – A list of strings to process.
timezone
timezone_field
tzinfo
widget = <indico.web.forms.widgets.JinjaWidget object>
class indico.web.forms.fields.OccurrencesField(*args, **kwargs)
Bases: indico.web.forms.fields.simple.JSONField
A field that lets you select multiple occurrences consisting of a start date/time and a duration.
CAN_POPULATE = True

344 Chapter 7. API reference


Indico Documentation, Release 3.2-dev

process_formdata(valuelist)
Process data received over the wire from a form.
This will be called during form construction with data supplied through the formdata argument.
Parameters valuelist – A list of strings to process.
timezone
timezone_field
widget = <indico.web.forms.widgets.JinjaWidget object>
class indico.web.forms.fields.IndicoTimezoneSelectField(*args, **kwargs)
Bases: wtforms.fields.choices.SelectField
process_data(value)
Process the Python data applied to this field and store the result.
This will be called during form construction by the form’s kwargs or obj argument.
Parameters value – The python object containing the value to process.
class indico.web.forms.fields.IndicoEnumSelectField(label=None, validators=None,
enum=None, sorted=False,
only=None, skip=None,
none=None, titles=None,
keep_enum=True, **kwargs)
Bases: indico.web.forms.fields.enums._EnumFieldMixin, wtforms.fields.choices.
SelectFieldBase
Select field backed by a RichEnum.
iter_choices()
Provides data for choice widget rendering. Must return a sequence or iterable of (value, label, selected)
tuples.
widget = <wtforms.widgets.core.Select object>
class indico.web.forms.fields.IndicoEnumRadioField(label=None, validators=None,
enum=None, sorted=False,
only=None, skip=None,
none=None, titles=None,
keep_enum=True, **kwargs)
Bases: indico.web.forms.fields.enums.IndicoEnumSelectField
option_widget = <wtforms.widgets.core.RadioInput object>
widget = <indico.web.forms.widgets.JinjaWidget object>
class indico.web.forms.fields.HiddenEnumField(label=None, validators=None,
enum=None, only=None, skip=None,
none=None, **kwargs)
Bases: indico.web.forms.fields.enums._EnumFieldMixin, wtforms.fields.simple.
HiddenField
Hidden field that only accepts values from an Enum.
process_formdata(valuelist)
Process data received over the wire from a form.
This will be called during form construction with data supplied through the formdata argument.
Parameters valuelist – A list of strings to process.

7.1. API reference 345


Indico Documentation, Release 3.2-dev

class indico.web.forms.fields.FileField(*args, **kwargs)


Bases: wtforms.fields.core.Field
A dropzone field.
default_options = {'add_remove_links': True, 'handle_flashes': False, 'lightweight':
process_formdata(valuelist)
Process data received over the wire from a form.
This will be called during form construction with data supplied through the formdata argument.
Parameters valuelist – A list of strings to process.
widget = <indico.web.forms.widgets.JinjaWidget object>
class indico.web.forms.fields.MultiStringField(*args, **kwargs)
Bases: wtforms.fields.simple.HiddenField
A field with multiple input text fields.
Parameters
• field – A tuple (fieldname, title) where the title is used in the placeholder.
• uuid_field – If set, each item will have a UUID assigned and stored in the field specified
here.
• flat – If True, the field returns a list of string values instead of dicts. Cannot be combined
with uuid_field.
• unique – Whether the values should be unique.
• sortable – Whether items should be sortable.
pre_validate(form)
Override if you need field-level validation. Runs before any other validators.
Parameters form – The form the field belongs to.
process_formdata(valuelist)
Process data received over the wire from a form.
This will be called during form construction with data supplied through the formdata argument.
Parameters valuelist – A list of strings to process.
widget = <indico.web.forms.widgets.JinjaWidget object>
class indico.web.forms.fields.MultipleItemsField(*args, **kwargs)
Bases: wtforms.fields.simple.HiddenField
A field with multiple items consisting of multiple string values.
Parameters
• fields – A list of dicts with the following arguments: ‘id’: the unique ID of the field
‘caption’: the title of the column and the placeholder ‘type’: ‘text|number|select’, the type
of the field ‘coerce’: callable to convert the value to a python type.
the type must be comvertible back to a string, so usually you just want something like
int or float here.
In case the type is ‘select’, the property ‘choices’ of the MultipleItemsField or the ‘choices’
kwarg needs to be a dict where the key is the ‘id’ of the select field and the value is another
dict mapping the option’s id to it caption.

346 Chapter 7. API reference


Indico Documentation, Release 3.2-dev

• uuid_field – If set, each item will have a UUID assigned and stored in the field specified
here. The name specified here may not be in fields.
• uuid_field_opaque – If set, the uuid_field is considered opaque, i.e. it is never touched
by this field. This is useful when you subclass the field and use e.g. actual database IDs
instead of UUIDs.
• unique_field – The name of a field in fields that needs to be unique.
• sortable – Whether items should be sortable.
pre_validate(form)
Override if you need field-level validation. Runs before any other validators.
Parameters form – The form the field belongs to.
process_formdata(valuelist)
Process data received over the wire from a form.
This will be called during form construction with data supplied through the formdata argument.
Parameters valuelist – A list of strings to process.
widget = <indico.web.forms.widgets.JinjaWidget object>
class indico.web.forms.fields.OverrideMultipleItemsField(*args, **kwargs)
Bases: wtforms.fields.simple.HiddenField
A field similar to MultipleItemsField which allows the user to override some values.
Parameters
• fields – a list of (fieldname, title) tuples. Should match the fields of the corre-
sponding MultipleItemsField.
• field_data – the data from the corresponding MultipleItemsField.
• unique_field – the name of the field which is unique among all rows
• edit_fields – a set containing the field names which can be edited
If you decide to use this field, please consider adding support for uuid_field here!
get_overridden_value(row, name)
Utility for the widget to get the entered value for an editable field.
get_row_key(row)
Utility for the widget to get the unique value for a row.
pre_validate(form)
Override if you need field-level validation. Runs before any other validators.
Parameters form – The form the field belongs to.
process_formdata(valuelist)
Process data received over the wire from a form.
This will be called during form construction with data supplied through the formdata argument.
Parameters valuelist – A list of strings to process.
widget = <indico.web.forms.widgets.JinjaWidget object>
class indico.web.forms.fields.PrincipalListField(*args, **kwargs)
Bases: wtforms.fields.simple.HiddenField
A field that lets you select a list of principals.

7.1. API reference 347


Indico Documentation, Release 3.2-dev

Principals are users or other objects represending users such as groups or roles that can be added to ACLs.
Parameters
• allow_external_users – If “search users with no indico account” should be avail-
able. Selecting such a user will automatically create a pending user once the form is sub-
mitted, even if other fields in the form fail to validate!
• allow_groups – If groups should be selectable.
• allow_event_roles – If event roles should be selectable.
• allow_category_roles – If category roles should be selectable.
• allow_registration_forms – If registration form associated to an event should be
selectable.
• allow_emails – If the field should allow bare emails. Those are not selectable in the
widget, but may be added to an ACL through other means.
process_formdata(valuelist)
Process data received over the wire from a form.
This will be called during form construction with data supplied through the formdata argument.
Parameters valuelist – A list of strings to process.
widget = <indico.web.forms.widgets.JinjaWidget object>
class indico.web.forms.fields.PrincipalField(*args, **kwargs)
Bases: wtforms.fields.simple.HiddenField
A field that lets you select a single Indico user.
Parameters allow_external_users – If “search users with no indico account” should be
available. Selecting such a user will automatically create a pending user once the form is sub-
mitted, even if other fields in the form fail to validate!
process_formdata(valuelist)
Process data received over the wire from a form.
This will be called during form construction with data supplied through the formdata argument.
Parameters valuelist – A list of strings to process.
widget = <indico.web.forms.widgets.JinjaWidget object>
class indico.web.forms.fields.AccessControlListField(*args, **kwargs)
Bases: indico.web.forms.fields.principals.PrincipalListField
class indico.web.forms.fields.IndicoQuerySelectMultipleField(*args, **kwargs)
Bases: wtforms_sqlalchemy.fields.QuerySelectMultipleField
Like the parent, but with a callback that allows you to modify the list
The callback can return a new list or yield items, and you can use it e.g. to sort the list.
data
class indico.web.forms.fields.EditableFileField(*args, **kwargs)
Bases: indico.web.forms.fields.files.FileField
A dropzone field that displays its current state and keeps track of deletes.
process_formdata(valuelist)
Process data received over the wire from a form.

348 Chapter 7. API reference


Indico Documentation, Release 3.2-dev

This will be called during form construction with data supplied through the formdata argument.
Parameters valuelist – A list of strings to process.
widget = <indico.web.forms.widgets.JinjaWidget object>
class indico.web.forms.fields.IndicoQuerySelectMultipleCheckboxField(*args,
**kwargs)
Bases: indico.web.forms.fields.sqlalchemy.IndicoQuerySelectMultipleField
option_widget = <wtforms.widgets.core.CheckboxInput object>
widget = <indico.web.forms.widgets.JinjaWidget object>
class indico.web.forms.fields.IndicoLocationField(*args, **kwargs)
Bases: indico.web.forms.fields.simple.JSONField
CAN_POPULATE = True
process_formdata(valuelist)
Process data received over the wire from a form.
This will be called during form construction with data supplied through the formdata argument.
Parameters valuelist – A list of strings to process.
widget = <indico.web.forms.widgets.LocationWidget object>
class indico.web.forms.fields.IndicoMarkdownField(*args, **kwargs)
Bases: wtforms.fields.simple.TextAreaField
A Markdown-enhanced textarea.
When using the editor you need to include the markdown JS/CSS bundles and also the MathJax JS bundle (even
when using only the editor without Mathjax).
Parameters
• editor – Whether to use the WMD widget with its live preview
• mathjax – Whether to use MathJax in the WMD live preview
widget = <indico.web.forms.widgets.JinjaWidget object>
class indico.web.forms.fields.IndicoDateField(*args, **kwargs)
Bases: wtforms_dateutil.DateField
earliest_date
latest_date
linked_date_validator
linked_field
widget = <indico.web.forms.widgets.JinjaWidget object>
class indico.web.forms.fields.IndicoProtectionField(*args, **kwargs)
Bases: indico.web.forms.fields.enums.IndicoEnumRadioField
radio_widget = <indico.web.forms.widgets.JinjaWidget object>
render_protection_message()
widget = <indico.web.forms.widgets.JinjaWidget object>

7.1. API reference 349


Indico Documentation, Release 3.2-dev

class indico.web.forms.fields.IndicoSelectMultipleCheckboxBooleanField(label=None,
val-
ida-
tors=None,
co-
erce=<class
’str’>,
choices=None,
vali-
date_choice=True,
**kwargs)
Bases: indico.web.forms.fields.simple.IndicoSelectMultipleCheckboxField
iter_choices()
Provides data for choice widget rendering. Must return a sequence or iterable of (value, label, selected)
tuples.
process_formdata(valuelist)
Process data received over the wire from a form.
This will be called during form construction with data supplied through the formdata argument.
Parameters valuelist – A list of strings to process.
class indico.web.forms.fields.RelativeDeltaField(*args, **kwargs)
Bases: wtforms.fields.core.Field
A field that lets the user select a simple timedelta.
It does not support mixing multiple units, but it is smart enough to switch to a different unit to represent a
timedelta that could not be represented otherwise.
Parameters units – The available units. Must be a tuple containing any any of ‘seconds’, ‘min-
utes’, ‘hours’ and ‘days’. If not specified, ('hours', 'days') is assumed.
choices
magnitudes = {'days': relativedelta(days=+1), 'hours': relativedelta(hours=+1), 'minu
pre_validate(form)
Override if you need field-level validation. Runs before any other validators.
Parameters form – The form the field belongs to.
process_formdata(valuelist)
Process data received over the wire from a form.
This will be called during form construction with data supplied through the formdata argument.
Parameters valuelist – A list of strings to process.
split_data
unit_names = {'days': 'Days', 'hours': 'Hours', 'minutes': 'Minutes', 'months': 'Mo
widget = <indico.web.forms.widgets.JinjaWidget object>
class indico.web.forms.fields.IndicoWeekDayRepetitionField(*args, **kwargs)
Bases: wtforms.fields.core.Field
Field that lets you select an ordinal day of the week.
WEEK_DAY_NUMBER_CHOICES = ((1, l'first'), (2, l'second'), (3, l'third'), (4, l'fourth')
day_number_data

350 Chapter 7. API reference


Indico Documentation, Release 3.2-dev

process_formdata(valuelist)
Process data received over the wire from a form.
This will be called during form construction with data supplied through the formdata argument.
Parameters valuelist – A list of strings to process.
week_day_data
widget = <indico.web.forms.widgets.JinjaWidget object>
class indico.web.forms.fields.IndicoEmailRecipientsField(label=None, val-
idators=None, fil-
ters=(), description=”,
id=None, default=None,
widget=None, ren-
der_kw=None,
name=None,
_form=None, _prefix=”,
_translations=None,
_meta=None)
Bases: wtforms.fields.core.Field
Construct a new field.
Parameters
• label – The label of the field.
• validators – A sequence of validators to call when validate is called.
• filters – A sequence of filters which are run on input data by process.
• description – A description for the field, typically used for help text.
• id – An id to use for the field. A reasonable default is set by the form, and you shouldn’t
need to set this manually.
• default – The default value to assign to the field, if no form or object input is provided.
May be a callable.
• widget – If provided, overrides the widget used to render the field.
• render_kw (dict) – If provided, a dictionary which provides default keywords that will
be given to the widget at render time.
• name – The HTML name of this field. The default value is the Python attribute name.
• _form – The form holding this field. It is passed by the form itself during construction.
You should never pass this value yourself.
• _prefix – The prefix to prepend to the form name of this field, passed by the enclosing
form during construction.
• _translations – A translations object providing message translations. Usually passed
by the enclosing form during construction. See I18n docs for information on message trans-
lations.
• _meta – If provided, this is the ‘meta’ instance from the form. You usually don’t pass this
yourself.
If _form isn’t provided, an UnboundField will be returned instead. Call its bind() method with a form
instance and a name to construct the field.

7.1. API reference 351


Indico Documentation, Release 3.2-dev

process_data(data)
Process the Python data applied to this field and store the result.
This will be called during form construction by the form’s kwargs or obj argument.
Parameters value – The python object containing the value to process.
widget = <indico.web.forms.widgets.JinjaWidget object>
class indico.web.forms.fields.IndicoTimeField(label=None, validators=None, for-
mat=’%H:%M’, **kwargs)
Bases: wtforms.fields.datetime.TimeField
widget = <indico.web.forms.widgets.JinjaWidget object>

352 Chapter 7. API reference


CHAPTER 8

What’s New

8.1 Changelog

8.1.1 Version 3.2

Unreleased

Major Features

• TODO write something about new regform


• TODO write something about privacy features
• TODO write something about conference receipts

Internationalization

• Nothing so far

Improvements

• Add a new event management permission that grants access only to the abstracts module (#5212)

Bugfixes

• Nothing so far

353
Indico Documentation, Release 3.2-dev

Internal Changes

• Nothing so far

8.1.2 Version 3.1.1

Unreleased

Improvements

• Prompt before leaving the event protection page without saving changes (#5222)
• Add the ability to clone abstracts (#5217)
• Add setting to allow submitters to edit their own contributions (#5213)
• Update the editing state color scheme (#5236)

Bugfixes

• Fix published editable files only being visible to users with access to the editing timeline (#5218)
• Fix incorrect date in multi-day meeting date selector dropdown in certain timezones (#5223)
• Remove excessive padding around category titles (#5225)
• Fix error when exporting registrations to PDFs that contained certain invalid HTML-like sequences (#5233)
• Restore logical order of registration list columns (#5240)

Internal Changes

• Add category-sidebar template hook and blocks around category sidebar sections (#5237, thanks
@omegak)

8.1.3 Version 3.1

Released on January 11, 2022

Major Features

• Category managers now see a log of all changes made to their category in a category log (similar to the event
log). This log includes information about all events being created, deleted or moved in the category (#2809,
#5029)
• Besides letting everyone create events in a category or restricting it to specific users, categories now also support
a moderation workflow which allows event managers to request moving an event to a category. Only once a
category manager approves this request, the event is actually moved (#2057, #5013)
• Admins now have the option to enable “Unlisted events”, which are events that are not (yet) assigned to a
category. Such events are only accessible to its creator and other users who have been granted access explicitly,
and do not show up in any category’s event listing (#4294, #5055, #5023, #5095)

354 Chapter 8. What’s New


Indico Documentation, Release 3.2-dev

Improvements

• Send event reminders as individual emails with the recipient in the To field instead of using BCC (#2318, #5088)
• Let event managers assign custom tags to registrations and filter the list of registrations by the presence or
absence of specific tags (#4948, #5091)
• Allow importing registration invitations from a CSV file (#3673, #5108)
• Show event label on category overviews and in iCal event titles (#5140, #5143)
• Let event managers view the final timetable even while in draft mode (#5141, #5145)
• Add option to export role members as CSV (#5147, #5156)
• Include attachment checksums in API responses (#5084, #5169, thanks @avivace)
• iCalendar invites now render nicely in Outlook (#5178)
• Envelope senders for emails can now be restricted to specific addresses/domains using the
SMTP_ALLOWED_SENDERS and SMTP_SENDER_FALLBACK config settings (#4837, #2224, #1877,
#5179)
• Allow filtering the contribution list based on whether any person (speaker or author) has registered for the event
or not (#5192, #5193)
• Add background color option and layer order to badge/poster designer items (#5139, thanks @SegiNyn)
• Allow external users in event/category ACLs (#5146)

Bugfixes

• Fix CUSTOM_COUNTRIES not overriding names of existing countries (#5183)


• Fix error dialog when submitting an invited abstract without being logger in (#5200)
• Fix category picker search displaying deleted categories (#5197, #5203)
• Fix editing service API calls using the service token (#5170)
• Fix excessive retries for Celery tasks with a retry wait time longer than 1 hour (#5172)

8.1.4 Version 3.0.4

Unreleased

Improvements

• Allow external users in event/category ACLs (#5146)

Bugfixes

• Fix editing service API calls using the service token (#5170)
• Fix excessive retries for Celery tasks with a retry wait time longer than 1 hour (#5172)

8.1. Changelog 355


Indico Documentation, Release 3.2-dev

8.1.5 Version 3.0.3

Released on October 28, 2021

Security fixes

• Protect authentication endpoints against CSRF login attacks (#5099, thanks @omegak)

Improvements

• Support TLS certificates for SMTP authentication (#5100, thanks @dweinholz)


• Add CSV/Excel contribution list exports containing affiliations (#5114, #5118)
• Include program codes in contribution PDFs and spreadsheets (#5126)
• Add an API for bulk-assigning contribution program codes programmatically (#5115, #5120)
• Add layout setting to show videoconferences on the main conference page (#5124)

Bugfixes

• Fix certain registration list filters (checkin status & state) being combined with OR instead of AND (#5101)
• Fix translations not being taken into account in some places (#5073, #5105)
• Use correct/consistent field order for personal data fields in newly created registration forms
• Remove deleted registration forms from ACLs (#5130, #5131, thanks @jbtwist)

Internal Changes

• Truncate file names to 150 characters to avoid hitting file system path limits (#5116, thanks @vasantvohra)

8.1.6 Version 3.0.2

Released on September 09, 2021

Bugfixes

• Fix JavaScript errors on the login page which caused problems when using multiple form-based login methods
(e.g. LDAP and local Indico accounts)

8.1.7 Version 3.0.1

Released on September 08, 2021

356 Chapter 8. What’s New


Indico Documentation, Release 3.2-dev

Improvements

• Allow filtering abstracts by custom fields having no value (#5033, #5034)


• Add support for syncing email addresses when logging in using external accounts (#5035)
• Use more space-efficient QR code version in registration tickets (#5052)
• Improve user experience when accessing an event restricted to registered participants while not logged in
(#5053)
• When searching external users, prefer results with a name in case of multiple matches with the same email
address (#5066)
• Show program codes in additional places (#5075)
• Display localized country names (#5070, #5076)

Bugfixes

• Show correct placeholders in date picker fields (#5022)


• Correctly preselect the default currency when creating a registration form
• Do not notify registrants when a payment transaction is created in “pending” state
• Keep the order of multi-choice options in registration summary (#5020, #5032)
• Correctly handle relative URLs in PDF generation (#5042, #5044)
• Render markdown in track descriptions in PDF generation (#5043, #5044)
• Fix error when importing chairpersons from an existing event (#5047)
• Fix broken timetable entry permalinks when query string args are present (#5049)
• Do not show “Payments” event management menu entry for registration managers (#5072)
• Replace some hardcoded date formats with locale-aware ones (#5059, #5071)
• Clone the scientific program description together with tracks (#5077)
• Fix database error when importing registrations to an event that already contains a deleted registration form with
registrations (#5078)

Internal Changes

• Add event.before_check_registration_email signal (#5021, thanks @omegak)


• Do not strip image maps in places where HTML is allowed (#5026, thanks @bpedersen2)
• Add event.registration.after_registration_form_clone signal (#5037, thanks @vas-
antvohra)
• Add registration-invite-options template hook (#5045, thanks @vasantvohra)
• Fix Typeahead widget not working with extra validators (#5048, #5050, thanks @jbtwist)

8.1.8 Version 3.0

Released on July 16, 2021

8.1. Changelog 357


Indico Documentation, Release 3.2-dev

Major Features

• Add system notices which inform administrators about important things such as security problems or outdated
Python/Postgres versions. These notices are retrieved once a day without sending any data related to the In-
dico instance, but if necessary, this feature can be disabled by setting SYSTEM_NOTICES_URL to None in
indico.conf (#5004)
• It is now possible to use SAML SSO for authentication without the need for Shibboleth and Apache (#5014)

Bugfixes

• Fix formatting and datetime localization in various PDF exports and timetable tab headers (#5009)
• Show lecture speakers as speakers instead of chairpersons on the participant roles page (#5008)

Internal Changes

• Signals previously exposed directly via signals.foo now need to be accessed using their explicit name, i.e.
signals.core.foo (#5007)
• Add category.extra_events signal (#5005, thanks @omegak)

8.1.9 Version 3.0rc2

Released on July 09, 2021

Major Features

• Add support for personal tokens. These tokens act like OAuth tokens, but are associated with a specific user
and generated manually without the need of doing the OAuth flow. They can be used like API keys but with
better granularity using the same scopes OAuth applications have, and a single user can have multiple tokens
using various scopes. By default any user can create such tokens, but admins can restrict their creation. (#1934,
#4976)

Improvements

• Add abstract content to the abstract list customization options (#4968)


• Add CLI option to create a series (#4969)
• Users cannot submit multiple anonymous surveys anymore by logging out and in again (#4693, #4970)
• Improve reviewing state display for paper reviewers (#4979, #4984)
• Make it clearer if the contributions/timetable of a conference are still in draft mode (#4977, #4986)
• Add “send to speakers” option in event reminders (#4958, #4966, thanks @Naveenaidu)
• Allow displaying all events descending from a category (#4982, #4983, thanks @omegak and @openprojects).
• Add an option to allow non-judge conveners to update an abstract track (#4989)

358 Chapter 8. What’s New


Indico Documentation, Release 3.2-dev

Bugfixes

• Fix errors when importing events containing abstracts or event roles from a YAML dump (#4995)
• Fix sorting abstract notification rules (#4998)
• No longer silently fall back to the first event contact email address when sending registration emails where no
explicit sender address has been configured (#4992, #4996, thanks @vasantvohra)
• Do not check for event access when using a registration link with a registration token (#4991, #4997, thanks
@vasantvohra)

8.1.10 Version 3.0rc1

Released on June 25, 2021

Major Features

• There is a new built-in search module which provides basic search functionality out of the box, and for more
advanced needs (such as full text search in uploaded files) plugins can provide their own search functionality
(e.g. using ElasticSearch). (#4841)
• Categories may now contain both events and subcategories at the same time. During the upgrade to 3.0 event
creation is automatically set to restricted in all categories containing subcategories in order to avoid any negative
surprises which would suddenly allow random Indico users to create events in places where they couldn’t do so
previously. (#4679, #4725, #4757)
• The OAuth provider module has been re-implemented based on a more modern library (authlib). Support for the
somewhat insecure implicit flow has been removed in favor of the code-with-PKCE flow. Tokens are now stored
more securely as a hash instead of plaintext. For a given user/app/scope combination, only a certain amount
of tokens are stored; once the limit has been reached older tokens will be discarded. The OAuth provider now
exposes its metadata via a well-known URI (RFC 8414) and also has endpoints to introspect or revoke a token.
(#4685, #4798)
• User profile pictures (avatars) are now shown in many more places throughout Indico, such as user search results,
meeting participant lists and reviewing timelines. (#4625, #4747, #4939)

Internationalization

• New locale: English (United States)


• New translation: Turkish

Improvements

• Use a more modern search dialog when searching for users (#4674, #4743)
• Add an option to refresh event person data from the underlying user when cloning an event (#4750, #4760)
• Add options for attaching iCal files to complete registration and event reminder emails (#1158, #4780)
• Use the new token-based URLs instead of API keys for persistent ical links and replace the calendar link widgets
in category, event, session and contribution views with the more modern ones used in dashboard (#4776, #4801)
• Add an option to export editables to JSON (#4767, #4810)
• Add an option to export paper peer reviewing data to JSON (#4767, #4818)

8.1. Changelog 359


Indico Documentation, Release 3.2-dev

• Passwords are now checked against a list of breached passwords (“Have I Been Pwned”) in a secure and anony-
mous way that does not disclose any data. If a user logs in with an insecure password, they are forced to change
it before they can continue using Indico (#4817)
• Failed login attempts now trigger rate limiting to prevent brute-force attacks (#1550, #4817)
• Allow filtering the “Participant Roles” page by users who have not registered for the event (#4763, #4822)
• iCalendar exports now include contact data, event logo URL and, when exporting sessions/contributions, the
UID of the related event. Also, only non-empty fields are exported. (#4785, #4586, #4587, #4791, #4820)
• Allow adding groups/roles as “authorized abstract submitters” (#4834)
• Direct links to (sub-)contributions in meetings using the URLs usually meant for conferences now redirect to
the meeting view page (#4847)
• Use a more compact setup QR code for the mobile Indico check-in app; the latest version of the app is now
required. (#4844)
• Contribution duration fields now use a widget similar to the time picker that makes selecting durations easier.
(#2462, #4873)
• Add new meeting themes that show sequential numbers instead of start times for contributions (#4899)
• Remove the very outdated “Compact style” theme (it’s still available via the themes_legacy plugin) (#4900,
#4899)
• Support cloning surveys when cloning events (#2045, #4910)
• Show external contribution references in conferences (#4928, #4933)
• Allow changing the rating scale in abstract/paper reviewing even after reviewing started (#4942)
• Allow blacklisting email addresses for user registrations (#4644, #4946)

Bugfixes

• Take registrations of users who are only members of a custom event role into account on the “Participant Roles”
page (#4822)
• Fail gracefully during registration import when two rows have different emails that belong to the same user
(#4823)
• Restore the ability to see who’s inheriting access from a parent object (#4833)
• Fix misleading message when cancelling a booking that already started and has past occurrences that won’t be
cancelled (#4719, #4861)
• Correctly count line breaks in length-limited abstracts (#4918)
• Fix error when trying to access subcontributions while event is in draft mode
• Update the user link in registrations when merging two users (#4936)
• Fix error when exporting a conference timetable PDF with the option “Print abstract content of all contributions”
and one of the abstracts is too big to fit in a page (#4881, #4955)
• Emails sent via the Editing module are now logged to the event log (#4960)
• Fix error when importing event notes from another event while the target event already has a deleted note
(#4959)

360 Chapter 8. What’s New


Indico Documentation, Release 3.2-dev

Internal Changes

• Require Python 3.9 - older Python versions (especially Python 2.7) are no longer supported
• confId has been changed to event_id and the corresponding URL path segments now enforce numeric data
(and thus pass the id as a number instead of string)
• CACHE_BACKEND has been removed; Indico now always uses Redis for caching
• The integration with flower (celery monitoring tool) has been removed as it was not widely used, did not provide
much benefit, and it is no longer compatible with the latest Celery version
• session.user now returns the user related to the current request, regardless of whether it’s coming from
OAuth, a signed url or the actual session (#4803)
• Add a new check_password_secure signal that can be used to implement additional password security
checks (#4817)
• Add an endpoint to let external applications stage the creation of an event with some data to be pre-filled when
the user then opens the link returned by that endpoint (#4628, thanks @adl1995)

8.1.11 Version 2.3.6

Unreleased

Bugfixes

• None so far :)

8.1.12 Version 2.3.5

Released on May 11, 2021

Security fixes

• Fix XSS vulnerabilities in the category picker (via category titles), location widget (via room and venue names
defined by an Indico administrator) and the “Indico Weeks View” timetable theme (via contribution/break titles
defined by an event organizer). As neither of these objects can be created by untrusted users (on a properly
configured instance) we consider the severity of this vulnerability “minor” (#4897)

Internationalization

• New translation: Polish


• New translation: Mongolian

Improvements

• Add an option to not disclose the names of editors and commenters to submitters in the Paper Editing module
(#4829, #4865)

8.1. Changelog 361


Indico Documentation, Release 3.2-dev

Bugfixes

• Do not show soft-deleted long-lasting events in category calendar (#4824)


• Do not show management-related links in editing hybrid view unless the user has access to them (#4830)
• Fix error when assigning paper reviewer roles with notifications enabled and one of the reviewing types disabled
(#4838)
• Fix viewing timetable entries if you cannot access the event but a specific session inside it (#4857)
• Fix viewing contributions if you cannot access the event but have explicit access to the contribution (#4860)
• Hide registration menu item if you cannot access the event and registrations are not exempt from event access
checks (#4860)
• Fix inadvertently deleting a file uploaded during the “make changes” Editing action, resulting in the revision
sometimes still referencing the file even though it has been deleted from storage (#4866)
• Fix sorting abstracts by date (#4877)

Internal Changes

• Add before_notification_send signal (#4874, thanks @omegak)

8.1.13 Version 2.3.4

Released on March 11, 2021

Security fixes

• Fix some open redirects which could help making harmful URLs look more trustworthy by linking to Indico
and having it redirect the user to a malicious site (#4814, #4815)
• The BASE_URL is now always enforced and requests whose Host header does not match are rejected. This
prevents malicious actors from tricking Indico into sending e.g. a password reset link to a user that points to a
host controlled by the attacker instead of the actual Indico host (#4815)

Note: If the webserver is already configured to enforce a canonical host name and redirects or rejects such requests,
this cannot be exploited. Additionally, exploiting this problem requires user interaction: they would need to click on
a password reset link which they never requested, and which points to a domain that does not match the one where
Indico is running.

Improvements

• Fail more gracefully is a user has an invalid locale set and fall back to the default locale or English in case the
default locale is invalid as well
• Log an error if the configured default locale does not exist
• Add ID-1 page size for badge printing (#4774, thanks @omegak)
• Allow managers to specify a reason when rejecting registrants and add a new placeholder for the rejection reason
when emailing registrants (#4769, thanks @vasantvohra)

362 Chapter 8. What’s New


Indico Documentation, Release 3.2-dev

Bugfixes

• Fix the “Videoconference Rooms” page in conference events when there are any VC rooms attached but the
corresponding plugin is no longer installed
• Fix deleting events which have a videoconference room attached which has its VC plugin no longer installed
• Do not auto-redirect to SSO when an MS office user agent is detected (#4720, #4731)
• Allow Editing team to view editables of unpublished contributions (#4811, #4812)

Internal Changes

• Also trigger the ical-export metadata signal when exporting events for a whole category
• Add primary_email_changed signal (#4802, thanks @openprojects)

8.1.14 Version 2.3.3

Released on January 25, 2021

Security fixes

• JSON locale data for invalid locales is no longer cached on disk; instead a 404 error is triggered. This avoids
creating small files in the cache folder for each invalid locale that is requested. (#4766)

Internationalization

• New translation: Ukrainian

Improvements

• Add a new “Until approved” option for a registration form’s “Modification allowed” setting (#4740, thanks
@vasantvohra)
• Show last login time in dashboard (#4735, thanks @vasantvohra)
• Allow Markdown in the “Message for complete registrations” option of a registration form (#4741)
• Improve video conference linking dropdown for contributions/sessions (hide unscheduled, show start time)
(#4753)
• Show timetable filter button in conferences with a meeting-like timetable

Bugfixes

• Fix error when converting malformed HTML links to LaTeX


• Hide inactive contribution/abstract fields in submit/edit forms (#4755)
• Fix adding registrants to a session ACL

8.1. Changelog 363


Indico Documentation, Release 3.2-dev

Internal Changes

• Videoconference plugins may now display a custom message for the prompt when deleting a videoconference
room (#4733)
• Videoconference plugins may now override the behavior when cloning an event with attached videoconference
rooms (#4732)

8.1.15 Version 2.3.2

Released on November 30, 2020

Improvements

• Disable title field by default in new registration forms (#4688, #4692)


• Add gender-neutral “Mx” title (#4688, #4692)
• Add contributions placeholder for emails (#4716, thanks @bpedersen2)
• Show program codes in contribution list (#4713)
• Display the target URL of link materials if the user can access them (#2599, #4718)
• Show the revision number for all revisions in the Editing timeline (#4708)

Bugfixes

• Only consider actual speakers in the “has registered speakers” contribution list filter (#4712, thanks @bpeder-
sen2)
• Correctly filter events in “Sync with your calendar” links (this fix only applies to newly generated links) (#4717)
• Correctly grant access to attachments inside public sessions/contribs even if the event is more restricted (#4721)
• Fix missing filename pattern check when suggesting files from Paper Peer Reviewing to submit for Editing
(#4715)
• Fix filename pattern check in Editing when a filename contains dots (#4715)
• Require explicit admin override (or being whitelisted) to override blockings (#4706)
• Clone custom abstract/contribution fields when cloning abstract settings (#4724, thanks @bpedersen2)
• Fix error when rescheduling a survey that already has submissions (#4730)

8.1.16 Version 2.3.1

Released on October 27, 2020

Security fixes

• Fix potential data leakage between OAuth-authenticated and unauthenticated HTTP API requests for the same
resource (#4663)

364 Chapter 8. What’s New


Indico Documentation, Release 3.2-dev

Note: Due to OAuth access to the HTTP API having been broken until this version, we do not believe this was actually
exploitable on any Indico instance. In addition, only Indico administrators can create OAuth applications, so regardless
of the bug there is no risk for any instance which does not have OAuth applications with the read:legacy_api
scope.

Improvements

• Generate material packages in a background task to avoid timeouts or using excessive amounts of disk space in
case of people submitting several times (#4630)
• Add new EXPERIMENTAL_EDITING_SERVICE setting to enable extending an event’s Editing workflow
through an OpenReferee server (#4659)

Bugfixes

• Only show the warning about draft mode in a conference if it actually has any contributions or timetable entries
• Do not show incorrect modification deadline in abstract management area if no such deadline has been set
(#4650)
• Fix layout problem when minutes contain overly large embedded images (#4653, #4654)
• Prevent pending registrations from being marked as checked-in (#4646, thanks @omegak)
• Fix OAuth access to HTTP API (#4663)
• Fix ICS export of events with draft timetable and contribution detail level (#4666)
• Fix paper revision submission field being displayed for judges/reviewers (#4667)
• Fix managers not being able to submit paper revisions on behalf of the user (#4667)

Internal Changes

• Add registration_form_wtform_created signal and send form data in


registration_created and registration_updated signals (#4642, thanks @omegak)
• Add logged_in signal

8.1.17 Version 2.3

Released on September 14, 2020

Note: We also published a blog post summarizing the most relevant changes for end users.

Major Features

• Add category roles, which are similar to local groups but within the scope of a category and its subcategories.
They can be used for assigning permissions in any of these categories and events within such categories.
• Events marked as “Invisible” are now hidden from the category’s event list for everyone except managers (#4419,
thanks @openprojects)

8.1. Changelog 365


Indico Documentation, Release 3.2-dev

• Introduce profile picture, which is for now only visible on the user dashboard (#4431, thanks @omegak)
• Registrants can now be added to event ACLs. This can be used to easily restrict parts of an event to registered
participants. If registration is open and a registration form is in the ACL, people will be able to access the
registration form even if they would otherwise not have access to the event itself. It is also possible to restrict
individual event materials and custom page/link menu items to registered participants. (#4477, #4528, #4505,
#4507)
• Add a new Editing module for papers, slides and posters which provides a workflow for having a team review
the layout/formatting of such proceedings and then publish the final version on the page of the corresponding
contribution. The Editing module can also be connected to an external microservice to handle more advanced
workflows beyond what is supported natively by Indico.

Internationalization

• New translation: Chinese (Simplified)

Improvements

• Sort survey list by title (#3802)


• Hide “External IDs” field if none are defined (#3857)
• Add LaTeX source export for book of abstracts (#4035, thanks @bpedersen2)
• Tracks can now be categorized in track groups (#4052)
• Program codes for sessions, session blocks, contributions and subcontributions can now be auto-generated
(#4026)
• Add draft mode for the contribution list of conference events which hides pages like the contribution list and
timetable until the event organizers publish the contribution list. (#4095)
• Add ICS export for information in the user dashboard (#4057)
• Allow data syncing with multipass providers which do not support refreshing identity information
• Show more verbose error when email validation fails during event registration (#4177)
• Add link to external map in room details view (#4146)
• Allow up to 9 digits (instead of 6) before the decimal point in registration fees
• Add button to booking details modal to copy direct link (#4230)
• Do not require new room manager approval when simply shortening a booking (#4214)
• Make root category description/title customizable using the normal category settings form (#4231)
• Added new LOCAL_GROUPS setting that can be used to fully disable local groups (#4260)
• Log bulk event category changes in the event log (#4241)
• Add CLI commands to block and unblock users (#3845)
• Show warning when trying to merge a blocked user (#3845)
• Allow importing event role members from a CSV file (#4301)
• Allow optional comment when accepting a pre-booking (#4086)
• Log event restores in event log (#4309)
• Warn about cancelling/rejecting whole recurring bookings instead of just specific occurrences (#4092)

366 Chapter 8. What’s New


Indico Documentation, Release 3.2-dev

• Add “quick cancel” link to room booking reminder emails (#4324)


• Add visual information and filtering options for participants’ registration status to the contribution list (#4318)
• Add warning when accepting a pre-booking in case there are concurrent bookings (#4129)
• Add event logging to opening/closing registration forms, approval/rejection of registrations, and updates to event
layout (#4360, thanks @giusedb & @omegak)
• Add category navigation dialog on category display page (#4282, thanks @omegak)
• Add UI for admins to block/unblock users (#3243)
• Show labels indicating whether a user is an admin, blocked or soft-deleted (#4363)
• Add map URL to events, allowing also to override room map URL (#4402, thanks @omegak)
• Use custom time picker for time input fields taking into account the 12h/24h format of the user’s locale (#4399)
• Refactor the room edit modal to a tabbed layout and improve error handling (#4408)
• Preserve non-ascii characters in file names (#4465)
• Allow resetting moderation state from registration management view (#4498, thanks @omegak)
• Allow filtering event log by related entries (#4503, thanks @omegak)
• Do not automatically show the browser’s print dialog in a meeting’s print view (#4513)
• Add “Add myself” button to person list fields (e.g. for abstract authors) (#4411, thanks @jgrigera)
• Subcontributions can now be managed from the meeting display view (#2679, #4520)
• Add CfA setting to control whether authors can edit abstracts (#3431)
• Add CfA setting to control whether only speakers or also authors should get submission rights once the abstract
gets accepted (#3431)
• Show the Indico version in the footer again (#4558)
• Event managers can upload a custom Book of Abstract PDF (#3039, #4577)
• Display each news item on a separate page instead of together with all the other news items (#4587)
• Allow registrants to withdraw their application (#2715, #4585, thanks @brabemi & @omegak)
• Allow choosing a default badge in categories (#4574, thanks @omegak)
• Display event labels on the user’s dashboard as well (#4592)
• Event modules can now be imported from another event (#4518, thanks @meluru)
• Event modules can now be imported from another event (#4518, #4533, thanks @meluru)
• Include the event keywords in the event API data (#4598, #4599, thanks @chernals)
• Allow registrants to check details for non-active registrations and prevent them from registering twice with the
same registration form (#4594, #4595, thanks @omegak)
• Add a new CUSTOM_LANGUAGES setting to indico.conf to override the name/territory of a language or
disable it altogether (#4620)

Bugfixes

• Hide Book of Abstracts menu item if LaTeX is disabled and no custom Book of Abstracts has been uploaded
• Use a more consistent order when cloning the timetable (#4227)

8.1. Changelog 367


Indico Documentation, Release 3.2-dev

• Do not show unrelated rooms with similar names when booking room from an event (#4089)
• Stop icons from overlapping in the datetime widget (#4342)
• Fix alignment of materials in events (#4344)
• Fix misleading wording in protection info message (#4410)
• Allow guests to access public notes (#4436)
• Allow width of weekly event overview table to adjust to window size (#4429)
• Fix whitespace before punctuation in Book of Abstracts (#4604)
• Fix empty entries in corresponding authors (#4604)
• Actually prevent users from editing registrations if modification is disabled
• Handle LaTeX images with broken redirects (#4623, thanks @bcc)

Internal Changes

• Make React and SemanticUI usable everywhere (#3955)


• Add before-regform template hook (#4171, thanks @giusedb)
• Add registrations kwarg to the event.designer.print_badge_template signal (#4297,
thanks @giusedb)
• Add registration_form_edited signal (#4421, thanks @omegak)
• Make PyIntEnum freeze enums in Alembic revisions (#4425, thanks @omegak)
• Add before-registration-summary template hook (#4495, thanks @omegak)
• Add extra-registration-actions template hook (#4500, thanks @omegak)
• Add event-management-after-title template hook (#4504, thanks @meluru)
• Save registration id in related event log entries (#4503, thanks @omegak)
• Add before-registration-actions template hook (#4524, thanks @omegak)
• Add LinkedDate and DateRange form field validators (#4535, thanks @omegak)
• Add extra-regform-settings template hook (#4553, thanks @meluru)
• Add filter_selectable_badges signal (#4557, thanks @omegak)
• Add user ID in every log record logged in a request context (#4570, thanks @omegak)
• Add extra-registration-settings template hook (#4596, thanks @meluru)
• Allow extending polymorphic models in plugins (#4608, thanks @omegak)
• Wrap registration form AngularJS directive in jinja block for more easily overriding arguments passed to the
app in plugins (#4624, thanks @omegak)

8.1.18 Version 2.2.9

Unreleased

368 Chapter 8. What’s New


Indico Documentation, Release 3.2-dev

Bugfixes

• Fix error when building LaTeX PDFs if the temporary event logo path contained an underscore (#4521)
• Disallow storing invalid timezones in user settings and reduce risk of sending wrong timezone names when
people automatically translate their UI (#4529)

8.1.19 Version 2.2.8

Released on April 08, 2020

Security fixes

• Update bleach to fix a regular expression denial of service vulnerability


• Update Pillow to fix a buffer overflow vulnerability

8.1.20 Version 2.2.7

Released on March 23, 2020

Improvements

• Add support for event labels to indicate e.g. postponed or cancelled events (#3199)

Bugfixes

• Allow slashes in roomName export API


• Show names instead of IDs of local groups in ACLs (#3700)

8.1.21 Version 2.2.6

Released on February 27, 2020

Bugfixes

• Fix some email fields (error report contact, agreement cc address) being required even though they should be
optional
• Avoid browsers prefilling stored passwords in togglable password fields such as the event access key
• Make sure that tickets are not attached to emails sent to registrants for whom tickets are blocked (#4242)
• Fix event access key prompt not showing when accessing an attachment link (#4255)
• Include event title in OpenGraph metadata (#4288)
• Fix error when viewing abstract with reviews that have no scores
• Update requests and pin idna to avoid installing incompatible dependency versions (#4327)

8.1. Changelog 369


Indico Documentation, Release 3.2-dev

8.1.22 Version 2.2.5

Released on December 06, 2019

Improvements

• Sort posters in timetable PDF export by board number (#4147, thanks @bpedersen2)
• Use lat/lng field order instead of lng/lat when editing rooms (#4150, thanks @bpedersen2)
• Add additional fields to the contribution csv/xlsx export (authors and board number) (#4148, thanks @bpeder-
sen2)

Bugfixes

• Update the Pillow library to 6.2.1. This fixes an issue where some malformed images could result in high
memory usage or slow processing.
• Truncate long speaker names in the timetable instead of hiding them (#4110)
• Fix an issue causing errors when using translations for languages with no plural forms (like Chinese).
• Fix creating rooms without touching the longitude/latitude fields (#4115)
• Fix error in HTTP API when Basic auth headers are present (#4123, thanks @uxmaster)
• Fix incorrect font size in some room booking dropdowns (#4156)
• Add missing email validation in some places (#4158)
• Reject requests containing NUL bytes in the POST data (#4159)
• Fix truncated timetable PDF when using “Print each session on a separate page” in an event where the last
timetable entry of the day is a top-level contribution or break (#4134, thanks @bpedersen2)
• Only show public contribution fields in PDF exports (#4165)
• Allow single arrival/departure date in accommodation field (#4164, thanks @bpedersen2)

8.1.23 Version 2.2.4

Released on October 16, 2019

Security fixes

• Fix more places where LaTeX input was not correctly sanitized. While the biggest security impact (reading local
files) has already been mitigated when fixing the initial vulnerability in the previous release, it is still strongly
recommended to update.

8.1.24 Version 2.2.3

Released on October 08, 2019

370 Chapter 8. What’s New


Indico Documentation, Release 3.2-dev

Security fixes

• Strip @, +, - and = from the beginning of strings when exporting CSV files to avoid security issues when opening
the CSV file in Excel
• Use 027 instead of 000 umask when temporarily changing it to get the current umask
• Fix LaTeX sanitization to prevent malicious users from running unsafe LaTeX commands through specially
crafted abstracts or contribution descriptions, which could lead to the disclosure of local file contents

Improvements

• Improve room booking interface on small-screen devices (#4013)


• Add user preference for room owners/manager to select if they want to receive notification emails for their
rooms (#4096, #4098)
• Show family name field first in user search dialog (#4099)
• Make date headers clickable in room booking calendar (#4099)
• Show times in room booking log entries (#4099)
• Support disabling server-side LaTeX altogether and hide anything that requires it (such as contribution PDF
export or the Book of Abstracts). LaTeX is now disabled by default, unless the XELATEX_PATH is explicitly
set in indico.conf.

Bugfixes

• Remove 30s timeout from dropzone file uploads


• Fix bug affecting room booking from an event in another timezone (#4072)
• Fix error when commenting on papers (#4081)
• Fix performance issue in conferences with public registration count and a high amount of registrations
• Fix confirmation prompt when disabling conference menu customizations (#4085)
• Fix incorrect days shown as weekend in room booking for some locales
• Fix ACL entries referencing event roles from the old event when cloning an event with event roles in the ACL.
Run indico maint fix-event-role-acls after updating to fix any affected ACLs (#4090)
• Fix validation issues in coordinates fields when editing rooms (#4103)

8.1.25 Version 2.2.2

Released on August 23, 2019

Bugfixes

• Remove dependency on pyatom, which has vanished from PyPI

8.1.26 Version 2.2.1

Released on August 16, 2019

8.1. Changelog 371


Indico Documentation, Release 3.2-dev

Improvements

• Make list of event room bookings sortable (#4022)


• Log when a booking is split during editing (#4031)
• Improve “Book” button in multi-day events (#4021)

Bugfixes

• Add missing slash to the template_prefix of the designer module


• Always use HH:MM time format in book-from-event link
• Fix timetable theme when set to “indico weeks view” before 2.2 (#4027)
• Avoid flickering of booking edit details tooltip
• Fix outdated browser check on iOS (#4033)

8.1.27 Version 2.2

Released on August 06, 2019

Major Changes

• Drop support for Internet Explorer 11 and other outdated or discontinued browser versions. Indico shows
a warning message when accessed using such a browser. The latest list of supported browsers can be found
in the README on GitHub, but generally Indico now supports the last two versions of each major browser
(determined at release time), plus the current Firefox ESR.
• Rewrite the room booking frontend to be more straightforward and user-friendly. Check our blog for details.

Improvements

• Rework the event log viewer to be more responsive and not freeze the whole browser when there are thousands
of log entries
• Add shortcut to next upcoming event in a category (#3388)
• Make registration period display less confusing (#3359)
• Add edit button to custom conference pages (#3284)
• Support markdown in survey questions (#3366)
• Improve event list in case of long event titles (#3607, thanks @nop33)
• Include event page title in the page’s <title> (#3285, thanks @bpedersen2)
• Add option to include subcategories in upcoming events (#3449)
• Allow event managers to override the name format used in the event (#2455)
• Add option to not clone venue/room of an event
• Show territory/country next to the language name (#3968)
• Add more sorting options to book of abstracts (#3429, thanks @bpedersen2)

372 Chapter 8. What’s New


Indico Documentation, Release 3.2-dev

• Add more formatting options to book of abstracts (#3335, thanks @bpedersen2)


• Improve message when the call for abstracts is scheduled to open but hasn’t started yet
• Make link color handling for LaTeX pdfs configurable (#3283, thanks @bpedersen2)
• Preserve displayed order in contribution exports that do not apply any specific sorting (#4005)
• Add author list button to list of papers (#3978)

Bugfixes

• Fix incorrect order of session blocks inside timetable (#2999)


• Add missing email validation to contribution CSV import (#3568, thanks @Kush22)
• Do not show border after last item in badge designer toolbar (#3607, thanks @nop33)
• Correctly align centered footer links (#3599, thanks @nop33)
• Fix top/right alignment of session bar in event display view (#3599, thanks @nop33)
• Fix error when trying to create a user with a mixed-case email address in the admin area
• Fix event import if a user in the exported data has multiple email addresses and they match different users
• Fix paper reviewers getting notifications even if their type of reviewing has been disabled (#3852)
• Correctly handle merging users in the paper reviewing module (#3895)
• Show correct number of registrations in management area (#3935)
• Fix sorting book of abstracts by board number (#3429, thanks @bpedersen2)
• Enforce survey submission limit (#3256)
• Do not show “Mark as paid” button and checkout link while a transaction is pending (#3361, thanks @driehle)
• Fix 404 error on custom conference pages that do not have any ascii chars in the title (#3998)
• Do not show pending registrants in public participant lists (#4017)

Internal Changes

• Use webpack to build static assets


• Add React+Redux for new frontend modules
• Enable modern ES201x features

8.1.28 Version 2.1.11

Released on October 16, 2019

Security fixes

• Fix more places where LaTeX input was not correctly sanitized. While the biggest security impact (reading local
files) has already been mitigated when fixing the initial vulnerability in the previous release, it is still strongly
recommended to update.

8.1. Changelog 373


Indico Documentation, Release 3.2-dev

8.1.29 Version 2.1.10

Released on October 08, 2019

Security fixes

• Strip @, +, - and = from the beginning of strings when exporting CSV files to avoid security issues when opening
the CSV file in Excel
• Use 027 instead of 000 umask when temporarily changing it to get the current umask
• Fix LaTeX sanitization to prevent malicious users from running unsafe LaTeX commands through specially
crafted abstracts or contribution descriptions, which could lead to the disclosure of local file contents

8.1.30 Version 2.1.9

Released on August 26, 2019

Bugfixes

• Fix bug in calendar view, due to timezones (#3903)


• Remove dependency on pyatom, which has vanished from PyPI (#4045)

8.1.31 Version 2.1.8

Released on March 12, 2019

Improvements

• Add A6 to page size options (#3793)

Bugfixes

• Fix celery/redis dependency issue (#3809)

8.1.32 Version 2.1.7

Released on January 24, 2019

Improvements

• Add setting for the default contribution duration of an event (#3446)


• Add option to copy abstract attachments to contributions when accepting them (#3732)

Bugfixes

• Really fix the oauthlib conflict (was still breaking in some cases)

374 Chapter 8. What’s New


Indico Documentation, Release 3.2-dev

8.1.33 Version 2.1.6

Released on January 15, 2019

Bugfixes

• Allow adding external users as speakers/chairpersons (#3562)


• Allow adding external users to event ACLs (#3562)
• Pin requests-oauthlib version to avoid dependency conflict

8.1.34 Version 2.1.5

Released on December 06, 2018

Improvements

• Render the reviewing state of papers in the same way as abstracts (#3665)

Bugfixes

• Use correct speaker name when exporting contributions to spreadsheets


• Use friendly IDs in abstract attachment package folder names
• Fix typo in material package subcontribution folder names
• Fix check on whether registering for an event is possible
• Show static text while editing registrations (#3682)

8.1.35 Version 2.1.4

Released on September 25, 2018

Bugfixes

• Let managers download tickets for registrants even if all public ticket downloads are disabled (#3493)
• Do not count deleted registrations when printing tickets from the badge designer page
• Hide “Save answers” in surveys while not logged in
• Fix importing event archives containing registrations with attachments
• Fix display issue in participants table after editing data (#3511)
• Fix errors when booking rooms via API

8.1.36 Version 2.1.3

Released on August 09, 2018

8.1. Changelog 375


Indico Documentation, Release 3.2-dev

Security fixes

• Only return timetable entries for the current session when updating a session through the timetable (#3474,
thanks @glunardi for reporting)
• Prevent session managers/coordinators from modifying certain timetable entries or scheduling contributions not
assigned to their session
• Restrict access to timetable entry details to users who are authorized to see them

Improvements

• Improve survey result display (#3486)


• Improve email validation for registrations (#3471)

Bugfixes

• Point to correct day in “edit session timetable” link (#3419)


• Fix error when exporting abstracts with review questions to JSON
• Point the timetable to correct day in the session details
• Fix massive performance issue on the material package page in big events
• Fix error when using the checkin app to mark someone as checked in (#3473, thanks @femtobit)
• Fix error when a session coordinator tries changing the color of a break using the color picker in the balloon’s
tooltip

Internal Changes

• Add some new signals and template hooks to the registration module

8.1.37 Version 2.1.2

Released on June 11, 2018

Improvements

• Show email address for non-anonymous survey submissions (#3258)

Bugfixes

• Show question description in survey results (#3383)


• Allow paper managers to submit paper revisions
• Fix error when not providing a URL for privacy policy or terms
• Use consistent order for privacy/terms links in the footer
• Fix cloning of locked events

376 Chapter 8. What’s New


Indico Documentation, Release 3.2-dev

8.1.38 Version 2.1.1

Released on May 31, 2018

Improvements

• Add a privacy policy page linked from the footer (#1415)


• Terms & Conditions can now link to an external URL
• Show a warning to all admins if Celery is not running or outdated
• Add registration ID placeholder for badges (#3370, thanks @bpedersen2)

Bugfixes

• Fix alignment issue in the “Indico Weeks View” timetable theme (#3367)
• Reset visibility when cloning an event to a different category (#3372)

8.1.39 Version 2.1

Released on May 16, 2018

Major Features

• Add event roles, which are similar to local groups but within the scope of an event. They can be used both for
assigning permissions within the event and also for quickly seeing which user has which role (such as “Program
Committee” in the event
• Add new Participant Roles (previously called Roles) which now shows each person’s custom event roles and
whether they have registered for the event in addition to the the default roles (speaker, chairperson, etc.)
• Add visibility options to custom abstract/contribution fields so they can be restricted to be editable/visible only
for event managers or authors/submitters instad of anyone who can see the abstract/contribution
• Provide new interface to import registations/contributions from a CSV file (#3144)
• Rework how access/permissions are managed. Now all access and management privileges can be assigned from
a single place on the protection management page.

Improvements

• Allow specifying a default session for a track which will then be used by default when accepting an abstract in
that track (#3069)
• Allow marking contribution types as private so they cannot be selected by users submitting an abstract (#3138)
• Add support for boolean (yes/no) and freetext questions in abstract reviewing (#3175)
• Support event cloning with monthly recurrence on the last day of the month (#1580)
• Add support for custom session types (#3189)
• Move poster session flag from session settings to session type settings
• Add contribution cloning within an event (#3207)

8.1. Changelog 377


Indico Documentation, Release 3.2-dev

• Add option to include the event description in reminder emails (#3157, thanks @bpedersen2)
• Pin default themes to the top for event managers (#3166)
• Add user setting whether to show future events or not by default in a category. Also keep the per-category status
in the session (#3233, thanks @bpedersen2)
• Keep page titles in sync with conference menu item titles (#3236)
• Add option to hide an attachment folder in the display areas of an event (#3181, thanks @bpedersen2)
• Improve flower redirect URI generation (#3187, thanks @bpedersen2)
• When blocking a user account, the user will be forcefully logged out in addition to being prevented from logging
in
• Show track-related columns in abstract list only if there are tracks defined for the event (#2813)
• Show warning box to inform that reviewer roles do not apply when an event has no tracks (#2919)
• Allow specifying min/max length for registration form text fields (#3193, thanks @bpedersen2)
• Add settings to configure the scale of ‘rating’ questions in paper reviewing
• Show a nicer error message when entering an excessively high base registration fee (#3260)
• Use proper British English for person titles (#3279)
• Add event keywords in meta tags (#3262, thanks @bpedersen2)
• Improve sorting by date fields in the registrant list
• Use the user’s preferred name format in more places
• Add “back to conference” link when viewing a conference timetable using a meeting theme (#3297, thanks
@bpedersen2)
• Allow definition lists in places where Markdown or HTML is accepted (#3325)
• Include event date/time in registration emails (#3337)
• Allow div/span/pre with classes when writing raw HTML in CKEditor (#3332, thanks @bpedersen2)
• Sort abstract authors/speakers by last name (#3340)
• Improve machine-readable metadata for events and categories (#3287, thanks @bpedersen2)

Bugfixes

• Fix selecting a person’s title in a different language than English


• Fix display issue in “now happening” (#3278)
• Fix error when displaying the value of an accommodation field in the registrant list and someone has the “no
accomodation” option selected (#3272, thanks @bpedersen2)
• Use the ‘Reviewing’ realm when logging actions from the abstract/paper reviewing modules
• Fix error when printing badges/posters with empty static text fields (#3290)
• Fix error when generating a PDF timetable including contribution abstracts (#3289)
• Do not require management access to a category to select a badge template from it as a backside.
• Fix breadcrumb metadata (#3321, thanks @bpedersen2)
• Fix error when accessing certain registration pages without an active registration

378 Chapter 8. What’s New


Indico Documentation, Release 3.2-dev

• Use event timezone when displaying event log entries (#3354)


• Correctly render most markdown elements when generating a programme PDF (#3351)
• Do not send any emails when trying to approve/reject a registration that is not pending (#3358)

Internal Changes

• Rename Roles in ACL entries to Permissions. This especially affects the can_manage method whose role
argument has been renamed to permission (#3057)
• Add new registration_checkin_updated signal that can be used by plugins to perform an action
when the checkin state of a registration changes (#3161, thanks @bpedersen2)
• Add new signals that allow plugins to run custom code at the various stages of the RH execution and re-
place/modify the final response (#3227)
• Add support for building plugin wheels with date/commit-suffixed version numbers (#3232, thanks @driehle)

8.1.40 Version 2.0.3

Released on March 15, 2018

Security fixes

• Do not show contribution information (metadata including title, speakers and a partial description) in the con-
tribution list unless the user has access to a contribution

Improvements

• Show more suitable message when a service request is auto-accepted (#3264)

8.1.41 Version 2.0.2

Released on March 07, 2018

Security fixes

• Update bleach to fix an XSS vulnerability

Improvements

• Warn when editing a speaker/author would result in duplicate emails

Bugfixes

• Take ‘center’ orientation of badge/poster backgrounds into account (#3238, thanks @bpedersen2)
• Fail nicely when trying to register a local account with an already-used email confirmation link (#3250)

8.1. Changelog 379


Indico Documentation, Release 3.2-dev

8.1.42 Version 2.0.1

Released on February 6, 2018

Improvements

• Add support for admin-only designer placeholders. Such placeholders can be provided by custom plugins and
only be used in the designer by Indico admins (#3210)
• Sort contribution types alphabetically
• Add folding indicators when printing foldable badges (#3216)

Bugfixes

• Fix LaTeX rendering issue when consecutive lines starting with [ were present (#3203)
• Do not allow managers to retrieve tickets for registrants for whom ticket access is blocked by a plugin (#3208)
• Log a warning instead of an exception if the Indico version check fails (#3209)
• Wrap long lines in event log entries instead of truncating them
• Properly show message about empty agenda in reminders that have “Include agenda” enabled but an empty
timetable
• Fix overly long contribution type names pushing edit/delete buttons outside the visible area (#3215)
• Only apply plugin-imposed ticket download restrictions for tickets, not for normal badges.
• Fix switching between badge sides in IE11 (#3214)
• Do not show poster templates as possible backsides for badges
• Convert alpha-channel transparency to white in PDF backgrounds
• Make number inputs big enough to show 5 digits in chrome
• Sort chairperson list on lecture pages
• Remove whitespace before commas in speaker lists
• Hide author UI for subcontribution speakers (#3222)

8.1.43 Version 2.0

Released on January 12, 2018

Improvements

• Add author_type and is_speaker fields for persons in the JSON abstract export
• Add legacy redirect for conferenceTimeTable.py

380 Chapter 8. What’s New


Indico Documentation, Release 3.2-dev

Bugfixes

• Fix unicode error when searching external users from the “Search Users” dialog
• Fix missing event management menu/layout when creating a material package from the event management area
• Fix error when viewing a contribution with co-authors
• Fix sorting of registration form items not working anymore after moving/disabling some items
• Fix error after updating from 2.0rc1 if there are cached Mako templates
• Fix error when retrieving an image referenced in an abstract fails
• Fix rendering of time pickers in recent Firefox versions (#3194)
• Fix error when trying to use the html serializer with the timetable API
• Fix error when receiving invalid payment events that should be ignored
• Fix last occurrence not being created when cloning events (#3192)
• Fix multiple links in the same line being replaced with the first one when converting abstracts/contributions to
PDF (#2816)
• Fix PDF generation when there are links with & in the URL
• Fix incorrect spacing in abstract author/speaker lists (#3205)

8.1.44 Version 2.0rc2

Released on December 8, 2017

Improvements

• Allow changing the reloader used by the dev server (#3150)

Bugfixes

• Do not show borders above/below the message in registration emails unless both the header and body blocks are
used (#3151)
• Roll-back the database transaction when an error occurs.
• Fix rendering of the LaTeX error box (#3163)
• Fix “N/A” being displayed in a survey result if 0 is entered in a number field
• Fix “N/A” not being displayed in a survey result if nothing is selected in a multi-choice select field
• Fix error when using target_* placeholders in abstract notification emails for actions other than “Merged”
(#3171)
• Show full track title in tooltips on abstract pages
• Show correct review indicators when a reviewer still has to review an abstract in a different track
• Fix unicode error when searching external users in an LDAP backend

8.1. Changelog 381


Indico Documentation, Release 3.2-dev

Internal Changes

• Remove SCSS_DEBUG_INFO config option.

8.1.45 Version 2.0rc1

Released on November 10, 2017

Improvements

• Hide category field in event creation dialog if there are no subcategories (#3112)
• Remove length limit from registration form field captions (#3119)
• Use semicolons instead of commas as separator when exporting list values (such as multi-select registration
form fields) to CSV or Excel (#3060)
• Use custom site title in page title (#3018)
• Allow manually entering dates in datetime fields (#3136)
• Send emails through a celery task. This ensures users do not get an error if the mail server is temporarily
unavailable. Sending an email is also retried for a while in case of failure. In case of a persistent failure the
email is dumped to the temp directory and can be re-sent manually using the new indico resend_email
command (#3121)
• Reject requests containing NUL bytes in the query string (#3142)

Bugfixes

• Do not intercept HTTP exceptions containing a custom response. When raising such exceptions we do not want
the default handling but rather send the custom response to the client.
• Do not apply margin for empty root category sidebar (#3116, thanks @nop33)
• Fix alignment of info-grid items on main conference page (#3126)
• Properly align the label of the attachment folder title field
• Fix some rare unicode errors during exception handling/logging
• Clarify messages in session block rescheduling dialogs (#3080)
• Fix event header bar in IE11 (#3135)
• Fix footer on login page (#3132)
• Use correct module name for abstract notification emails in the event log
• Remove linebreaks from email subject in paper review notifications
• Fix extra padding in the CFA roles dialog (#3129)
• Do not show an extra day in timetable management if an event begins before a DST change
• Disable caching when retrieving the list of unscheduled contributions
• Process placeholders in the subject when emailing registrants
• Fix Shibboleth login with non-ascii names (#3143)

382 Chapter 8. What’s New


Indico Documentation, Release 3.2-dev

Internal Changes

• Add new is_ticket_blocked signal that can be used by plugins to disable ticket downloads for a registra-
tion.

8.1.46 Version 2.0a1

Released on October 20, 2017


This is the first release of the 2.0 series, which is an almost complete rewrite of Indico based on a modern software
stack and PostgreSQL.

8.1. Changelog 383


Indico Documentation, Release 3.2-dev

384 Chapter 8. What’s New


CHAPTER 9

Indices and tables

• genindex
• modindex

385
Indico Documentation, Release 3.2-dev

386 Chapter 9. Indices and tables


CHAPTER 10

Contact

10.1 Contact

10.1.1 Website

The official website of Indico is getindico.io, there you can find useful information related to the project.

10.1.2 IRC

We use IRC as our main means of real-time communication with the development community. Get in touch through
the official #indico channel on Libera.Chat (irc.libera.chat). It is also accessible through Matrix.

10.1.3 Forum

For more elaborate questions and discussions we encourage you to use our discussion forum.

10.1.4 Issue tracker

We use GitHub issues for specific bug reports and feature requests. Support enquiries are better suited for the IRC
channel or the forums.

10.1.5 Twitter

Indico has an official Twitter account, @getindico which is occasionally used for announcements.

387
Indico Documentation, Release 3.2-dev

388 Chapter 10. Contact


Python Module Index

i indico.modules.designer.models.templates,
indico.core.oauth, 308 321
indico.core.oauth.models.applications, indico.modules.designer.pdf, 322
308 indico.modules.designer.placeholders,
indico.core.oauth.models.tokens, 311 323
indico.core.plugins, 77 indico.modules.designer.util, 322
indico.modules.attachments, 285 indico.modules.events, 121
indico.modules.events.abstracts, 144
indico.modules.attachments.models.attachments,
285 indico.modules.events.abstracts.fields,
indico.modules.attachments.models.folders, 332
287 indico.modules.events.abstracts.models.abstracts,
indico.modules.attachments.models.principals, 144
289 indico.modules.events.abstracts.models.call_for_abs
indico.modules.attachments.operations, 148
291 indico.modules.events.abstracts.models.comments,
indico.modules.attachments.preview, 292 149
indico.modules.attachments.util, 291 indico.modules.events.abstracts.models.email_logs,
indico.modules.auth, 306 150
indico.modules.auth.models.identities, indico.modules.events.abstracts.models.email_templa
306 150
indico.modules.events.abstracts.models.fields,
indico.modules.auth.models.registration_requests,
307 152
indico.modules.auth.util, 308 indico.modules.events.abstracts.models.files,
indico.modules.categories, 266 152
indico.modules.categories.fields, 337 indico.modules.events.abstracts.models.persons,
indico.modules.categories.models.categories, 153
266 indico.modules.events.abstracts.models.related_trac
indico.modules.categories.models.principals, 153
270 indico.modules.events.abstracts.models.review_quest
indico.modules.categories.models.settings, 153
271 indico.modules.events.abstracts.models.review_ratin
indico.modules.categories.operations, 154
272 indico.modules.events.abstracts.models.reviews,
indico.modules.categories.serialize, 273 155
indico.modules.categories.settings, 274 indico.modules.events.abstracts.operations,
indico.modules.categories.util, 272 157
indico.modules.designer, 320 indico.modules.events.abstracts.placeholders,
indico.modules.designer.models.images, 159
320 indico.modules.events.abstracts.settings,
165

389
Indico Documentation, Release 3.2-dev

indico.modules.events.abstracts.util, indico.modules.events.notes.models.notes,
158 192
indico.modules.events.agreements, 166 indico.modules.events.notes.util, 194
indico.modules.events.operations, 138
indico.modules.events.agreements.models.agreements,
166 indico.modules.events.papers, 195
indico.modules.events.papers.fields, 335
indico.modules.events.agreements.placeholders,
168 indico.modules.events.papers.models.call_for_papers
indico.modules.events.agreements.util, 195
168 indico.modules.events.papers.models.comments,
indico.modules.events.contributions, 169 196
indico.modules.events.contributions.fields,
indico.modules.events.papers.models.competences,
335 197
indico.modules.events.contributions.models.contributions,
indico.modules.events.papers.models.files,
169 197
indico.modules.events.contributions.models.fields,
indico.modules.events.papers.models.papers,
173 198
indico.modules.events.contributions.models.persons,
indico.modules.events.papers.models.review_question
175 199
indico.modules.events.contributions.models.principals,
indico.modules.events.papers.models.review_ratings,
176 200
indico.modules.events.contributions.models.references,
indico.modules.events.papers.models.reviews,
177 200
indico.modules.events.contributions.models.subcontributions,
indico.modules.events.papers.models.revisions,
178 203
indico.modules.events.contributions.models.types,
indico.modules.events.papers.models.templates,
179 204
indico.modules.events.contributions.operations,
indico.modules.events.papers.models.user_contributi
180 205
indico.modules.events.contributions.util,indico.modules.events.papers.operations,
181 205
indico.modules.events.features, 182 indico.modules.events.papers.util, 206
indico.modules.events.features.util, 182 indico.modules.events.payment, 209
indico.modules.events.fields, 331 indico.modules.events.payment.models.transactions,
indico.modules.events.layout, 182 209
indico.modules.events.layout.models.images,
indico.modules.events.payment.plugins,
183 211
indico.modules.events.layout.models.menu,indico.modules.events.payment.util, 211
183 indico.modules.events.persons, 212
indico.modules.events.layout.util, 186 indico.modules.events.persons.operations,
indico.modules.events.models.events, 121 212
indico.modules.events.models.persons, indico.modules.events.persons.placeholders,
128 212
indico.modules.events.models.principals, indico.modules.events.registration, 214
130 indico.modules.events.registration.models.form_fiel
indico.modules.events.models.references, 219
131 indico.modules.events.registration.models.forms,
indico.modules.events.models.reviews, 221
133 indico.modules.events.registration.models.invitatio
indico.modules.events.models.series, 135 224
indico.modules.events.models.settings, indico.modules.events.registration.models.items,
135 225
indico.modules.events.models.static_list_links,
indico.modules.events.registration.models.registrat
137 214
indico.modules.events.notes, 192 indico.modules.events.registration.placeholders.inv

390 Python Module Index


Indico Documentation, Release 3.2-dev

234 259
indico.modules.events.registration.placeholders.registrations,
indico.modules.events.timetable.reschedule,
232 261
indico.modules.events.registration.settings,
indico.modules.events.timetable.util,
235 260
indico.modules.events.registration.stats,indico.modules.events.tracks, 262
236 indico.modules.events.tracks.models.principals,
indico.modules.events.registration.util, 263
229 indico.modules.events.tracks.models.tracks,
indico.modules.events.reminders, 237 262
indico.modules.events.reminders.models.reminders,
indico.modules.events.tracks.operations,
237 264
indico.modules.events.reminders.util, indico.modules.events.util, 139
239 indico.modules.groups, 314
indico.modules.events.requests, 239 indico.modules.groups.core, 314
indico.modules.events.requests.base, 240 indico.modules.groups.models.groups, 314
indico.modules.groups.util, 315
indico.modules.events.requests.models.requests,
239 indico.modules.logs, 187
indico.modules.events.requests.util, 240 indico.modules.logs.models.entries, 187
indico.modules.events.sessions, 242 indico.modules.logs.renderers, 190
indico.modules.events.sessions.fields, indico.modules.logs.util, 190
337 indico.modules.networks, 329
indico.modules.networks.fields, 337
indico.modules.events.sessions.models.blocks,
244 indico.modules.networks.models.networks,
indico.modules.events.sessions.models.persons, 329
246 indico.modules.networks.util, 330
indico.modules.news, 330
indico.modules.events.sessions.models.principals,
246 indico.modules.news.models.news, 330
indico.modules.news.util, 331
indico.modules.events.sessions.models.sessions,
242 indico.modules.rb, 293
indico.modules.events.sessions.operations,
indico.modules.rb.models.blocked_rooms,
247 298
indico.modules.events.sessions.util, 247 indico.modules.rb.models.blocking_principals,
indico.modules.events.settings, 206 298
indico.modules.events.static, 264 indico.modules.rb.models.blockings, 297
indico.modules.rb.models.equipment, 299
indico.modules.events.static.models.static,
265 indico.modules.rb.models.locations, 299
indico.modules.events.static.util, 266 indico.modules.rb.models.map_areas, 300
indico.modules.events.surveys, 248 indico.modules.rb.models.photos, 300
indico.modules.events.surveys.models.items,
indico.modules.rb.models.reservation_edit_logs,
251 303
indico.modules.events.surveys.models.submissions,
indico.modules.rb.models.reservation_occurrences,
253 304
indico.modules.events.surveys.models.surveys,
indico.modules.rb.models.reservations,
248 300
indico.modules.events.surveys.operations,indico.modules.rb.models.room_attributes,
254 296
indico.modules.events.surveys.util, 255 indico.modules.rb.models.room_bookable_hours,
indico.modules.events.timetable, 256 296
indico.modules.events.timetable.models.breaks,
indico.modules.rb.models.room_nonbookable_periods,
256 297
indico.modules.rb.models.rooms, 293
indico.modules.events.timetable.models.entries,
257 indico.modules.rb.models.util, 305
indico.modules.rb.statistics, 306
indico.modules.events.timetable.operations,

Python Module Index 391


Indico Documentation, Release 3.2-dev

indico.modules.rb.util, 305
indico.modules.search.base, 70
indico.modules.search.result_schemas,
71
indico.modules.users, 275
indico.modules.users.ext, 284
indico.modules.users.models.affiliations,
280
indico.modules.users.models.emails, 280
indico.modules.users.models.favorites,
280
indico.modules.users.models.settings,
281
indico.modules.users.models.suggestions,
280
indico.modules.users.models.users, 275
indico.modules.users.operations, 282
indico.modules.users.util, 283
indico.modules.vc, 315
indico.modules.vc.exceptions, 320
indico.modules.vc.models.vc_rooms, 316
indico.modules.vc.plugins, 318
indico.modules.vc.util, 318
indico.web.forms.fields, 338

392 Python Module Index


Index

A attribute), 166
absolute_download_url (in- abstract_updated (in module in-
dico.modules.attachments.models.attachments.Attachment dico.core.signals.event), 84
attribute), 285 AbstractAction (class in in-
Abstract (class in in- dico.modules.events.abstracts.models.reviews),
dico.modules.events.abstracts.models.abstracts), 155
144 AbstractComment (class in in-
dico.modules.events.abstracts.models.comments),
abstract (indico.modules.events.abstracts.models.comments.AbstractComment
attribute), 149 149
AbstractCommentVisibility (class in in-
abstract (indico.modules.events.abstracts.models.email_logs.AbstractEmailLogEntry
attribute), 150 dico.modules.events.abstracts.models.reviews),
abstract (indico.modules.events.abstracts.models.files.AbstractFile155
attribute), 152 AbstractEmailLogEntry (class in in-
dico.modules.events.abstracts.models.email_logs),
abstract (indico.modules.events.abstracts.models.reviews.AbstractReview
attribute), 155 150
AbstractEmailTemplate
abstract (indico.modules.events.contributions.models.contributions.Contribution (class in in-
attribute), 169 dico.modules.events.abstracts.models.email_templates),
abstract_created (in module in- 150
dico.core.signals.event), 84 AbstractField (class in in-
abstract_deleted (in module in- dico.modules.events.abstracts.fields), 332
dico.core.signals.event), 84 AbstractFieldValue (class in in-
dico.modules.events.abstracts.models.fields),
abstract_id (indico.modules.events.abstracts.models.comments.AbstractComment
attribute), 149 152
AbstractFile
abstract_id (indico.modules.events.abstracts.models.email_logs.AbstractEmailLogEntry(class in in-
attribute), 150 dico.modules.events.abstracts.models.files),
152
abstract_id (indico.modules.events.abstracts.models.fields.AbstractFieldValue
attribute), 152 AbstractIDPlaceholder (class in in-
dico.modules.events.abstracts.placeholders),
abstract_id (indico.modules.events.abstracts.models.files.AbstractFile
attribute), 152 160
AbstractInvitationURLPlaceholder
abstract_id (indico.modules.events.abstracts.models.persons.AbstractPersonLink (class in
attribute), 153 indico.modules.events.abstracts.placeholders),
160
abstract_id (indico.modules.events.abstracts.models.reviews.AbstractReview
attribute), 155 AbstractPersonLink (class in in-
dico.modules.events.abstracts.models.persons),
abstract_id (indico.modules.events.contributions.models.contributions.Contribution
attribute), 169 153
abstract_state_changed (in module in- AbstractPersonLinkListField (class in in-
dico.core.signals.event), 84 dico.modules.events.abstracts.fields), 332
abstract_title (in- AbstractPublicState (class in in-
dico.modules.events.abstracts.settings.BOASortField dico.modules.events.abstracts.models.abstracts),
147

393
Indico Documentation, Release 3.2-dev

AbstractReview (class in in- attribute), 303


dico.modules.events.abstracts.models.reviews), accepted_condition_types (in-
155 dico.modules.events.abstracts.fields.EmailRuleListField
AbstractReviewingState (class in in- attribute), 334
dico.modules.events.abstracts.models.abstracts), accepted_contrib_type (in-
147 dico.modules.events.abstracts.models.abstracts.Abstract
AbstractReviewQuestion (class in in- attribute), 145
dico.modules.events.abstracts.models.review_questions),
accepted_contrib_type_id (in-
153 dico.modules.events.abstracts.models.abstracts.Abstract
AbstractReviewRating (class in in- attribute), 145
dico.modules.events.abstracts.models.review_ratings),
accepted_on_behalf (in-
154 dico.modules.events.agreements.models.agreements.AgreementSta
AbstractSessionPlaceholder (class in in- attribute), 168
dico.modules.events.abstracts.placeholders), accepted_revision (in-
161 dico.modules.events.papers.models.papers.Paper
AbstractState (class in in- attribute), 198
dico.modules.events.abstracts.models.abstracts), accepted_track (in-
148 dico.modules.events.abstracts.models.abstracts.Abstract
AbstractTitlePlaceholder (class in in- attribute), 145
dico.modules.events.abstracts.placeholders), accepted_track_id (in-
160 dico.modules.events.abstracts.models.abstracts.Abstract
AbstractTrackPlaceholder (class in in- attribute), 145
dico.modules.events.abstracts.placeholders), access_key (indico.modules.attachments.models.attachments.Attachmen
161 attribute), 285
AbstractURLPlaceholder (class in in- access_key (indico.modules.attachments.models.folders.AttachmentFold
dico.modules.events.abstracts.placeholders), attribute), 287
160 access_key (indico.modules.categories.models.categories.Category
accept (indico.modules.events.abstracts.models.reviews.AbstractAction
attribute), 266
attribute), 155 access_key (indico.modules.events.contributions.models.contributions.C
accept (indico.modules.events.papers.models.reviews.PaperAction attribute), 169
attribute), 200 access_key (indico.modules.events.models.events.Event
accept() (indico.modules.events.agreements.models.agreements.Agreement
attribute), 122
method), 166 access_key (indico.modules.events.sessions.models.sessions.Session
accept() (indico.modules.events.requests.base.RequestDefinitionBaseattribute), 243
class method), 240 access_key (indico.modules.events.tracks.models.tracks.Track
accept() (indico.modules.rb.models.reservations.Reservation attribute), 262
method), 301 access_key (indico.modules.rb.models.rooms.Room
accepted (indico.modules.events.abstracts.models.abstracts.AbstractPublicState
attribute), 293
attribute), 147 access_token (indico.core.oauth.models.tokens.TokenModelBase
accepted (indico.modules.events.abstracts.models.abstracts.AbstractState
attribute), 313
attribute), 148 access_token_hash (in-
accepted (indico.modules.events.agreements.models.agreements.Agreement
dico.core.oauth.models.tokens.OAuthToken
attribute), 166 attribute), 312
accepted (indico.modules.events.agreements.models.agreements.AgreementState
access_token_hash (in-
attribute), 168 dico.core.oauth.models.tokens.TokenModelBase
accepted (indico.modules.events.papers.models.revisions.PaperRevisionState
attribute), 313
attribute), 204 AccessControlListField (class in in-
accepted (indico.modules.events.registration.models.invitations.InvitationState
dico.web.forms.fields), 348
attribute), 224 AccommodationStats (class in in-
accepted (indico.modules.events.requests.models.requests.RequestState
dico.modules.events.registration.stats), 236
attribute), 240 acl (indico.modules.attachments.models.attachments.Attachment
accepted (indico.modules.rb.models.blocked_rooms.BlockedRoomState attribute), 285
attribute), 298 acl (indico.modules.attachments.models.folders.AttachmentFolder
accepted (indico.modules.rb.models.reservations.ReservationState attribute), 287

394 Index
Indico Documentation, Release 3.2-dev

acl_entries (indico.modules.attachments.models.attachments.Attachment
add_file_date_column (in-
attribute), 285 dico.modules.events.papers.models.files.PaperFile
acl_entries (indico.modules.attachments.models.folders.AttachmentFolder
attribute), 197
attribute), 287 add_file_date_column (in-
acl_entries (indico.modules.categories.models.categories.Category dico.modules.events.papers.models.templates.PaperTemplate
attribute), 267 attribute), 204
acl_entries (indico.modules.events.contributions.models.contributions.Contribution
add_file_date_column (in-
attribute), 169 dico.modules.events.registration.models.registrations.Registration
acl_entries (indico.modules.events.models.events.Event attribute), 218
attribute), 122 add_file_date_column (in-
acl_entries (indico.modules.events.sessions.models.sessions.Sessiondico.modules.events.static.models.static.StaticSite
attribute), 243 attribute), 265
acl_entries (indico.modules.events.tracks.models.tracks.Track
add_form_fields (in module in-
attribute), 262 dico.core.signals.core), 83
acl_entries (indico.modules.rb.models.rooms.Room add_principal() (in-
attribute), 293 dico.modules.events.settings.EventACLProxy
acl_event_settings (in- method), 142, 206
dico.core.plugins.IndicoPlugin attribute), add_survey_question() (in module in-
77 dico.modules.events.surveys.operations),
acl_proxy_class (in- 254
dico.modules.events.settings.EventSettingsProxy add_survey_section() (in module in-
attribute), 143, 208 dico.modules.events.surveys.operations),
acl_settings (indico.core.plugins.IndicoPlugin at- 255
tribute), 77 add_survey_text() (in module in-
acl_settings (indico.modules.vc.plugins.VCPluginMixin dico.modules.events.surveys.operations),
attribute), 318 255
active (indico.modules.search.base.IndicoSearchProvideradd_url_rule() (in-
attribute), 70 dico.core.plugins.IndicoPluginBlueprintSetupState
active_and_answered (in- method), 79
dico.modules.events.surveys.models.surveys.SurveyState
additional_info (in-
attribute), 250 dico.modules.events.models.events.Event
active_and_clean (in- attribute), 122
address (indico.modules.events.models.persons.EventPerson
dico.modules.events.surveys.models.surveys.SurveyState
attribute), 250 attribute), 128
active_fields (in- address (indico.modules.events.models.persons.PersonLinkBase
attribute), 130
dico.modules.events.registration.models.forms.RegistrationForm
attribute), 221 address (indico.modules.events.registration.models.items.PersonalDataTy
active_fields (in- attribute), 225
address (indico.modules.search.result_schemas.LocationResultSchema
dico.modules.events.registration.models.items.RegistrationFormSection
attribute), 228 attribute), 73
active_registrations (in- address (indico.modules.users.models.users.User at-
tribute), 276
dico.modules.events.registration.models.forms.RegistrationForm
attribute), 221 adjust_payment_form_data() (in-
add_abstract_files() (in module in- dico.modules.events.payment.plugins.PaymentPluginMixin
dico.modules.events.abstracts.operations), method), 211
157 advanced (indico.modules.events.abstracts.placeholders.AbstractURLPla
add_attachment_link() (in module in- attribute), 160
dico.modules.attachments.operations), 291 advanced (indico.modules.events.abstracts.placeholders.ContributionURL
add_edit_log() (in- attribute), 165
dico.modules.rb.models.reservations.Reservation advanced (indico.modules.events.abstracts.placeholders.SubmitterFirstNa
method), 301 attribute), 162
add_file_date_column (in- advanced (indico.modules.events.abstracts.placeholders.SubmitterLastNa
dico.modules.events.abstracts.models.files.AbstractFile attribute), 162
attribute), 152 advanced (indico.modules.events.abstracts.placeholders.TargetSubmitterF

Index 395
Indico Documentation, Release 3.2-dev

attribute), 164 dico.modules.events.abstracts.models.call_for_abstracts.CallForA


advanced (indico.modules.events.abstracts.placeholders.TargetSubmitterLastNamePlaceholder
attribute), 148
attribute), 164 allow_category_roles (in-
advanced (indico.modules.events.abstracts.placeholders.TargetSubmitterNamePlaceholder
dico.modules.attachments.models.principals.AttachmentFolderPri
attribute), 163 attribute), 289
advanced (indico.modules.events.registration.placeholders.registrations.FieldPlaceholder
allow_category_roles (in-
attribute), 233 dico.modules.attachments.models.principals.AttachmentPrincipal
affiliation (indico.modules.events.models.persons.EventPerson attribute), 290
attribute), 128 allow_category_roles (in-
affiliation (indico.modules.events.models.persons.PersonLinkBase dico.modules.categories.models.principals.CategoryPrincipal
attribute), 130 attribute), 270
affiliation (indico.modules.events.registration.models.invitations.RegistrationInvitation
allow_category_roles (in-
attribute), 224 dico.modules.events.contributions.models.principals.Contribution
affiliation (indico.modules.events.registration.models.items.PersonalDataType
attribute), 176
attribute), 225 allow_category_roles (in-
affiliation (indico.modules.search.result_schemas.PersonSchema dico.modules.events.models.principals.EventPrincipal
attribute), 73 attribute), 130
affiliation (indico.modules.users.models.users.User allow_category_roles (in-
attribute), 276 dico.modules.events.models.settings.EventSettingPrincipal
after_commit (in module indico.core.signals.core), attribute), 136
83 allow_category_roles (in-
after_process (in module indico.core.signals.core), dico.modules.events.sessions.models.principals.SessionPrincipal
83 attribute), 246
after_registration_form_clone (in module allow_category_roles (in-
indico.core.signals.event), 84 dico.modules.events.tracks.models.principals.TrackPrincipal
AggregationSchema (class in in- attribute), 263
dico.modules.search.result_schemas), 68 allow_comments (in-
Agreement (class in in- dico.modules.events.abstracts.models.call_for_abstracts.CallForA
dico.modules.events.agreements.models.agreements), attribute), 148
166 allow_contributors_in_comments (in-
AgreementLinkPlaceholder (class in in- dico.modules.events.abstracts.models.call_for_abstracts.CallForA
dico.modules.events.agreements.placeholders), attribute), 148
168 allow_convener_judgment (in-
AgreementState (class in in- dico.modules.events.abstracts.models.call_for_abstracts.CallForA
dico.modules.events.agreements.models.agreements), attribute), 148
168 allow_convener_track_change (in-
all (indico.modules.events.abstracts.settings.SubmissionRightsType dico.modules.events.abstracts.models.call_for_abstracts.CallForA
attribute), 166 attribute), 148
all_emails (indico.modules.users.models.users.User allow_editing (in-
attribute), 276 dico.modules.events.abstracts.models.call_for_abstracts.CallForA
all_files (indico.modules.attachments.models.attachments.Attachmentattribute), 148
attribute), 285 allow_emails (indico.modules.events.contributions.models.principals.C
all_notes (indico.modules.events.models.events.Event attribute), 176
attribute), 122 allow_emails (indico.modules.events.models.principals.EventPrincipal
all_recipients (in- attribute), 130
allow_emails (indico.modules.events.sessions.models.principals.Session
dico.modules.events.reminders.models.reminders.EventReminder
attribute), 237 attribute), 246
allocate_friendly_ids() (in- allow_event_roles (in-
dico.modules.events.contributions.models.contributions.Contribution
dico.modules.attachments.models.principals.AttachmentFolderPri
class method), 169 attribute), 289
allow_access_key (in- allow_event_roles (in-
dico.modules.events.models.events.Event dico.modules.attachments.models.principals.AttachmentPrincipal
attribute), 122 attribute), 290
allow_attachments (in- allow_event_roles (in-

396 Index
Indico Documentation, Release 3.2-dev

dico.modules.events.contributions.models.principals.ContributionPrincipal
dico.modules.events.contributions.models.contributions.Contribut
attribute), 176 attribute), 169
allow_event_roles (in- allow_relationship_preloading (in-
dico.modules.events.models.principals.EventPrincipal dico.modules.events.sessions.models.sessions.Session
attribute), 131 attribute), 243
allow_event_roles (in- allowed (indico.modules.rb.models.blockings.Blocking
dico.modules.events.models.settings.EventSettingPrincipal attribute), 297
attribute), 136 allowed_always (in-
allow_event_roles (in- dico.modules.events.registration.models.forms.ModificationMode
attribute), 221
dico.modules.events.sessions.models.principals.SessionPrincipal
attribute), 246 ALLOWED_CONTENT_TYPE (in-
allow_event_roles (in- dico.modules.attachments.preview.ImagePreviewer
dico.modules.events.tracks.models.principals.TrackPrincipalattribute), 292
attribute), 263 ALLOWED_CONTENT_TYPE (in-
allow_location_inheritance (in- dico.modules.attachments.preview.MarkdownPreviewer
dico.modules.events.models.events.Event attribute), 292
attribute), 122 ALLOWED_CONTENT_TYPE (in-
allow_networks (in- dico.modules.attachments.preview.PDFPreviewer
attribute), 292
dico.modules.categories.models.principals.CategoryPrincipal
attribute), 270 ALLOWED_CONTENT_TYPE (in-
allow_networks (in- dico.modules.attachments.preview.Previewer
dico.modules.events.models.principals.EventPrincipal attribute), 292
attribute), 131 ALLOWED_CONTENT_TYPE (in-
allow_no_access_contact (in- dico.modules.attachments.preview.TextPreviewer
dico.modules.categories.models.categories.Category attribute), 293
attribute), 267 allowed_link_types (in-
allow_no_access_contact (in- dico.modules.attachments.models.folders.AttachmentFolder
dico.modules.events.models.events.Event attribute), 287
attribute), 122 allowed_link_types (in-
allow_none_protection_parent (in- dico.modules.events.notes.models.notes.EventNote
dico.modules.events.models.events.Event attribute), 192
attribute), 122 allowed_link_types (in-
allow_pkce_flow (in- dico.modules.rb.models.reservations.ReservationLink
dico.core.oauth.models.applications.OAuthApplication attribute), 303
attribute), 309 allowed_scopes (in-
allow_registration_forms (in- dico.core.oauth.models.applications.OAuthApplication
attribute), 309
dico.modules.attachments.models.principals.AttachmentFolderPrincipal
attribute), 289 allowed_types_for_editable (in-
allow_registration_forms (in- dico.modules.events.contributions.models.contributions.Contribut
attribute), 170
dico.modules.attachments.models.principals.AttachmentPrincipal
attribute), 290 allowed_until_approved (in-
allow_registration_forms (in- dico.modules.events.registration.models.forms.ModificationMode
attribute), 221
dico.modules.events.contributions.models.principals.ContributionPrincipal
attribute), 176 allowed_until_payment (in-
allow_registration_forms (in- dico.modules.events.registration.models.forms.ModificationMode
dico.modules.events.models.principals.EventPrincipal attribute), 221
attribute), 131 AllowEditingType (class in in-
allow_registration_forms (in- dico.modules.events.abstracts.settings), 165
amount (indico.modules.events.payment.models.transactions.PaymentTran
dico.modules.events.sessions.models.principals.SessionPrincipal
attribute), 246 attribute), 209
allow_relationship_preloading (in- anchor (indico.modules.news.models.news.NewsItem
dico.modules.categories.models.categories.Category attribute), 330
attribute), 267 announcement (indico.modules.events.abstracts.models.call_for_abstrac
allow_relationship_preloading (in- attribute), 148

Index 397
Indico Documentation, Release 3.2-dev

announcement (indico.modules.events.papers.models.call_for_papers.CallForPapers
attribute), 166
attribute), 195 ATTACHMENT_FOLDER_ID_COLUMN (in-
anonymous (indico.modules.events.surveys.models.surveys.Survey dico.modules.categories.models.categories.Category
attribute), 249 attribute), 266
answer_data (indico.modules.events.surveys.models.submissions.SurveyAnswer
ATTACHMENT_FOLDER_ID_COLUMN (in-
attribute), 253 dico.modules.events.contributions.models.contributions.Contribut
answers (indico.modules.events.surveys.models.submissions.SurveySubmission
attribute), 169
attribute), 254 ATTACHMENT_FOLDER_ID_COLUMN (in-
api_key (indico.modules.users.models.users.User at- dico.modules.events.contributions.models.subcontributions.SubCo
tribute), 276 attribute), 178
app_created (in module indico.core.signals.core), 83 ATTACHMENT_FOLDER_ID_COLUMN (in-
app_user_link (in- dico.modules.events.models.events.Event
dico.core.oauth.models.tokens.OAuthToken attribute), 122
attribute), 312 ATTACHMENT_FOLDER_ID_COLUMN (in-
app_user_link_id (in- dico.modules.events.sessions.models.sessions.Session
dico.core.oauth.models.tokens.OAuthToken attribute), 243
attribute), 312 attachment_id (in-
application (indico.core.oauth.models.applications.OAuthApplicationUserLink
dico.modules.attachments.models.attachments.AttachmentFile
attribute), 311 attribute), 286
application (indico.core.oauth.models.tokens.OAuthTokenattachment_id (in-
attribute), 312 dico.modules.attachments.models.principals.AttachmentPrincipal
application_id (in- attribute), 290
dico.core.oauth.models.applications.OAuthApplicationUserLink
attachment_id (in-
attribute), 311 dico.modules.search.result_schemas.AttachmentResultSchema
approve() (indico.modules.rb.models.blocked_rooms.BlockedRoomattribute), 72
method), 298 ATTACHMENT_STORAGE (built-in variable), 55
as_principal (indico.modules.groups.core.GroupProxy attachment_type (in-
attribute), 315 dico.modules.search.result_schemas.AttachmentResultSchema
as_principal (indico.modules.users.models.users.User attribute), 72
attribute), 276 attachment_updated (in module in-
assignees (indico.modules.events.papers.models.call_for_papers.CallForPapers
dico.core.signals.attachments), 82
attribute), 195 AttachmentFile (class in in-
attach_ical (indico.modules.events.registration.models.forms.RegistrationForm
dico.modules.attachments.models.attachments),
attribute), 221 286
attach_ical (indico.modules.events.reminders.models.reminders.EventReminder
AttachmentFolder (class in in-
attribute), 237 dico.modules.attachments.models.folders),
Attachment (class in in- 287
dico.modules.attachments.models.attachments), AttachmentFolderPrincipal (class in in-
285 dico.modules.attachments.models.principals),
attachment (indico.modules.events.agreements.models.agreements.Agreement
289
attribute), 166 AttachmentPrincipal (class in in-
attachment (indico.modules.search.base.SearchTarget dico.modules.attachments.models.principals),
attribute), 70 290
attachment_access_override (in- AttachmentResultSchema (class in in-
dico.modules.networks.models.networks.IPNetworkGroup dico.modules.search.result_schemas), 72
attribute), 329 attachments (indico.modules.attachments.models.folders.AttachmentFol
attachment_accessed (in module in- attribute), 287
dico.core.signals.attachments), 82 AttachmentType (class in in-
attachment_created (in module in- dico.modules.attachments.models.attachments),
dico.core.signals.attachments), 82 287
attachment_deleted (in module in- attr (indico.modules.events.settings.EventSettingProperty
dico.core.signals.attachments), 82 attribute), 143, 207
attachment_filename (in- attribute (indico.modules.rb.models.room_attributes.RoomAttributeAss
attribute), 296
dico.modules.events.agreements.models.agreements.Agreement

398 Index
Indico Documentation, Release 3.2-dev

attribute_id (indico.modules.rb.models.room_attributes.RoomAttributeAssociation
backside_template_id (in-
attribute), 296 dico.modules.designer.models.templates.DesignerTemplate
attributes (indico.modules.rb.models.rooms.Room attribute), 321
attribute), 293 base_price (indico.modules.events.registration.models.forms.Registratio
AUTH_PROVIDERS (built-in variable), 48 attribute), 221
author_type (indico.modules.events.abstracts.models.persons.AbstractPersonLink
base_price (indico.modules.events.registration.models.registrations.Reg
attribute), 153 attribute), 214
author_type (indico.modules.events.contributions.models.persons.ContributionPersonLink
BASE_URL (built-in variable), 56
attribute), 175 before_check_registration_email (in mod-
author_type (indico.modules.events.contributions.models.persons.SubContributionPersonLink
ule indico.core.signals.event), 84
attribute), 176 before_notification_send (in module in-
AUTHORS_SPEAKERS_DISPLAY_ORDER_ATTR (in- dico.core.signals.core), 83
before_process (in module indico.core.signals.rh),
dico.modules.events.abstracts.models.abstracts.Abstract
attribute), 145 90
AUTHORS_SPEAKERS_DISPLAY_ORDER_ATTR (in- belongs_to() (indico.modules.events.agreements.models.agreements.Ag
dico.modules.events.models.persons.AuthorsSpeakersMixin method), 166
attribute), 128 best_unit (indico.web.forms.fields.TimeDeltaField at-
AuthorsSpeakersMixin (class in in- tribute), 343
dico.modules.events.models.persons), 128 billable_data (in-
AuthorType (class in in- dico.modules.events.registration.models.registrations.Registration
dico.modules.events.contributions.models.persons), attribute), 214
175 block (indico.modules.vc.models.vc_rooms.VCRoomLinkType
available_equipment (in- attribute), 317
dico.modules.rb.models.rooms.Room attribute), blocked_rooms (in-
293 dico.modules.rb.models.blockings.Blocking
avatar_bg_color (in- attribute), 297
dico.modules.users.models.users.User at- blocked_rooms (in-
tribute), 276 dico.modules.rb.models.rooms.Room attribute),
avatar_url (indico.modules.events.registration.models.registrations.Registration
293
attribute), 214 BlockedRoom (class in in-
avatar_url (indico.modules.users.models.users.User dico.modules.rb.models.blocked_rooms),
attribute), 276 298
awaiting (indico.modules.events.abstracts.models.abstracts.AbstractPublicState
BlockedRoomState (class in in-
attribute), 147 dico.modules.rb.models.blocked_rooms),
298
B Blocking (class in in-
background_color (in- dico.modules.rb.models.blockings), 297
blocking_id (indico.modules.rb.models.blocked_rooms.BlockedRoom
dico.modules.events.sessions.models.sessions.Session
attribute), 243 attribute), 298
background_color (in- blocking_id (indico.modules.rb.models.blocking_principals.BlockingPr
dico.modules.events.timetable.models.breaks.Break attribute), 298
attribute), 256 BlockingPrincipal (class in in-
background_image (in- dico.modules.rb.models.blocking_principals),
dico.modules.designer.models.templates.DesignerTemplate 298
attribute), 321 blocks (indico.modules.events.sessions.models.sessions.Session
background_image_id (in- attribute), 243
BOACorrespondingAuthorType
dico.modules.designer.models.templates.DesignerTemplate (class in in-
attribute), 321 dico.modules.events.abstracts.settings), 165
background_position (in- BOALinkFormat (class in in-
dico.modules.designer.pdf.TplData attribute), dico.modules.events.abstracts.settings), 165
323 board_number (indico.modules.events.abstracts.settings.BOASortField
backside_template (in- attribute), 166
board_number
dico.modules.designer.models.templates.DesignerTemplate (indico.modules.events.contributions.models.contribution
attribute), 321 attribute), 170

Index 399
Indico Documentation, Release 3.2-dev

BOASortField (class in in- attribute), 68


dico.modules.events.abstracts.settings), 165 BucketSchema (class in in-
body (indico.modules.events.abstracts.models.email_logs.AbstractEmailLogEntry
dico.modules.search.result_schemas), 68
attribute), 150 build_default_email_template() (in module
body (indico.modules.events.abstracts.models.email_templates.AbstractEmailTemplate
indico.modules.events.abstracts.util), 158
attribute), 151 build_menu_entry_name() (in module in-
bookable_hours (in- dico.modules.events.layout.util), 186
dico.modules.rb.models.rooms.Room attribute), build_note_api_data() (in module in-
293 dico.modules.events.notes.util), 194
BookableHours (class in in- build_note_legacy_api_data() (in module in-
dico.modules.rb.models.room_bookable_hours), dico.modules.events.notes.util), 194
296 build_registration_api_data() (in module
booked_for_id (in- indico.modules.events.registration.util), 229
dico.modules.rb.models.reservations.Reservation build_registrations_api_data() (in module
attribute), 301 indico.modules.events.registration.util), 229
booked_for_name (in- build_rooms_spritesheet() (in module in-
dico.modules.rb.models.reservations.Reservation dico.modules.rb.util), 305
attribute), 301 build_user_search_query() (in module in-
booked_for_user (in- dico.modules.users.util), 283
dico.modules.rb.models.reservations.Reservation building (indico.modules.rb.models.rooms.Room at-
attribute), 301 tribute), 293
booking_created (in module indico.core.signals.rb),
89 C
booking_deleted (in module indico.core.signals.rb), CACHE_DIR (built-in variable), 53
89 calculate_price() (in-
booking_limit_days (in- dico.modules.events.registration.models.form_fields.RegistrationF
dico.modules.rb.models.rooms.Room attribute), method), 219
293 calculate_rooms_bookable_time() (in mod-
booking_modified (in module in- ule indico.modules.rb.statistics), 306
dico.core.signals.rb), 89 calculate_rooms_booked_time() (in module
booking_occurrence_state_changed (in mod- indico.modules.rb.statistics), 306
ule indico.core.signals.rb), 89 calculate_rooms_occupancy() (in module in-
booking_reason (in- dico.modules.rb.statistics), 306
dico.modules.rb.models.reservations.Reservation call_for_proposals_attr (in-
attribute), 301 dico.modules.events.abstracts.models.abstracts.Abstract
booking_state_changed (in module in- attribute), 145
dico.core.signals.rb), 90 call_for_proposals_attr (in-
both (indico.modules.events.abstracts.models.abstracts.EditTrackMode
dico.modules.events.models.reviews.ProposalMixin
attribute), 148 attribute), 134
bottom_right_latitude (in- call_for_proposals_attr (in-
dico.modules.rb.models.map_areas.MapArea dico.modules.events.papers.models.papers.Paper
attribute), 300 attribute), 198
bottom_right_longitude (in- CallForAbstracts (class in in-
dico.modules.rb.models.map_areas.MapArea dico.modules.events.abstracts.models.call_for_abstracts),
attribute), 300 148
Break (class in indico.modules.events.timetable.models.breaks),
CallForPapers (class in in-
256 dico.modules.events.papers.models.call_for_papers),
BREAK (indico.modules.events.timetable.models.entries.TimetableEntryType
195
attribute), 259 can_accept() (indico.modules.rb.models.reservations.Reservation
break_ (indico.modules.events.timetable.models.entries.TimetableEntry
method), 301
attribute), 257 can_access (in module indico.core.signals.acl), 81
break_id (indico.modules.events.timetable.models.entries.TimetableEntry
can_access() (indico.modules.attachments.models.attachments.Attachm
attribute), 257 method), 285
buckets (indico.modules.search.result_schemas.AggregationSchema

400 Index
Indico Documentation, Release 3.2-dev

can_access() (indico.modules.attachments.models.folders.AttachmentFolder
can_convene() (in-
method), 287 dico.modules.events.abstracts.models.abstracts.Abstract
can_access() (indico.modules.events.abstracts.models.abstracts.Abstract
method), 145
method), 145 can_convene() (in-
can_access() (indico.modules.events.contributions.models.subcontributions.SubContribution
dico.modules.events.tracks.models.tracks.Track
method), 178 method), 262
can_access() (indico.modules.events.sessions.models.blocks.SessionBlock
can_create_events() (in-
method), 244 dico.modules.categories.models.categories.Category
can_access() (indico.modules.events.timetable.models.breaks.Break method), 267
method), 256 can_create_invited_abstracts() (in module
can_access() (indico.modules.rb.models.rooms.Room indico.modules.events.abstracts.util), 158
method), 293 can_create_unlisted_events() (in module in-
can_access_judging_area() (in- dico.modules.categories.util), 272
can_delete() (indico.modules.events.tracks.models.tracks.Track
dico.modules.events.papers.models.call_for_papers.CallForPapers
method), 195 method), 262
can_access_reviewing_area() (in- can_delete() (indico.modules.rb.models.blockings.Blocking
method), 297
dico.modules.events.papers.models.call_for_papers.CallForPapers
method), 195 can_delete() (indico.modules.rb.models.reservations.Reservation
can_be_managed() (in- method), 301
can_delete() (indico.modules.rb.models.rooms.Room
dico.modules.events.requests.base.RequestDefinitionBase
class method), 241 method), 293
can_be_modified (in- can_display() (in-
dico.modules.events.registration.models.registrations.Registration
dico.modules.events.models.events.Event
attribute), 215 method), 122
can_be_modified (in- can_edit() (indico.modules.events.abstracts.models.abstracts.Abstract
dico.modules.events.requests.models.requests.Request method), 145
attribute), 239 can_edit() (indico.modules.events.abstracts.models.comments.AbstractC
can_be_modified() (in- method), 149
can_edit() (indico.modules.events.abstracts.models.reviews.AbstractRe
dico.modules.events.payment.plugins.PaymentPluginMixin
method), 211 method), 155
can_be_modified() (in- can_edit() (indico.modules.events.contributions.models.contributions.C
dico.modules.users.models.users.User method), 170
method), 276 can_edit() (indico.modules.events.contributions.models.subcontribution
can_be_withdrawn (in- method), 178
can_edit() (indico.modules.events.models.reviews.ProposalCommentMi
dico.modules.events.registration.models.registrations.Registration
attribute), 215 method), 133
can_book() (indico.modules.rb.models.rooms.Room can_edit() (indico.modules.events.models.reviews.ProposalReviewMixi
method), 293 method), 134
can_cancel() (indico.modules.rb.models.reservation_occurrences.ReservationOccurrence
can_edit() (indico.modules.events.papers.models.comments.PaperRevie
method), 304 method), 196
can_cancel() (indico.modules.rb.models.reservations.Reservation
can_edit() (indico.modules.events.papers.models.reviews.PaperReview
method), 301 method), 201
can_change_tracks() (in- can_edit() (indico.modules.rb.models.blockings.Blocking
dico.modules.events.abstracts.models.abstracts.Abstract method), 297
method), 145 can_edit() (indico.modules.rb.models.reservations.Reservation
can_comment() (in- method), 301
can_edit() (indico.modules.rb.models.rooms.Room
dico.modules.events.abstracts.models.abstracts.Abstract
method), 145 method), 293
can_comment() (in- can_edit_abstracts() (in-
dico.modules.events.models.reviews.ProposalMixin dico.modules.events.abstracts.models.call_for_abstracts.CallForA
method), 134 method), 148
can_comment() (in- can_edit_note() (in module in-
dico.modules.events.papers.models.papers.Paper dico.modules.events.notes.util), 194
method), 198 can_edit_note() (in-

Index 401
Indico Documentation, Release 3.2-dev

dico.modules.events.sessions.models.blocks.SessionBlock attribute), 334


method), 245 CAN_POPULATE (indico.modules.events.abstracts.fields.TrackRoleField
can_get_all_multipass_groups (in- attribute), 335
dico.modules.users.models.users.User at- CAN_POPULATE (indico.modules.events.papers.fields.PaperEmailSettingsF
tribute), 276 attribute), 336
can_judge() (indico.modules.events.abstracts.models.abstracts.Abstract
CAN_POPULATE (indico.web.forms.fields.IndicoLocationField
method), 145 attribute), 349
can_judge() (indico.modules.events.papers.models.papers.Paper
CAN_POPULATE (indico.web.forms.fields.IndicoPalettePickerField
method), 198 attribute), 343
can_lock() (indico.modules.events.models.events.Event CAN_POPULATE (indico.web.forms.fields.JSONField at-
method), 122 tribute), 339
can_manage (in module indico.core.signals.acl), 81 CAN_POPULATE (indico.web.forms.fields.OccurrencesField
can_manage() (indico.modules.events.contributions.models.contributions.Contribution
attribute), 344
method), 170 can_prebook() (in-
can_manage() (indico.modules.events.contributions.models.subcontributions.SubContribution
dico.modules.rb.models.rooms.Room method),
method), 178 294
can_manage() (indico.modules.events.papers.models.papers.Paper
can_preview() (in-
method), 198 dico.modules.attachments.preview.PDFPreviewer
can_manage() (indico.modules.events.sessions.models.blocks.SessionBlock
class method), 292
method), 245 can_preview() (in-
can_manage() (indico.modules.rb.models.rooms.Room dico.modules.attachments.preview.Previewer
method), 293 class method), 292
can_manage_attachments() (in module in- can_propose_events() (in-
dico.modules.attachments.util), 291 dico.modules.categories.models.categories.Category
can_manage_attachments() (in- method), 267
can_reject() (indico.modules.rb.models.reservation_occurrences.Rese
dico.modules.events.sessions.models.blocks.SessionBlock
method), 245 method), 304
can_manage_blocks() (in- can_reject() (indico.modules.rb.models.reservations.Reservation
dico.modules.events.sessions.models.sessions.Session method), 301
method), 243 can_review() (indico.modules.events.abstracts.models.abstracts.Abstra
can_manage_contributions() (in- method), 145
can_review() (indico.modules.events.models.reviews.ProposalMixin
dico.modules.events.sessions.models.sessions.Session
method), 243 method), 134
can_manage_sessions() (in module in- can_review() (indico.modules.events.papers.models.papers.Paper
dico.modules.events.sessions.util), 247 method), 198
can_manage_vc() (in- can_review_abstracts() (in-
dico.modules.vc.plugins.VCPluginMixin dico.modules.events.tracks.models.tracks.Track
method), 318 method), 262
can_manage_vc_room() (in- can_see_reviews() (in-
dico.modules.vc.plugins.VCPluginMixin dico.modules.events.abstracts.models.abstracts.Abstract
method), 318 method), 145
can_manage_vc_rooms() (in- can_submit() (indico.modules.events.papers.models.papers.Paper
dico.modules.vc.plugins.VCPluginMixin method), 198
method), 318 can_submit() (indico.modules.events.registration.models.forms.Registra
can_moderate() (in- method), 221
dico.modules.rb.models.rooms.Room method), can_submit() (indico.modules.events.surveys.models.surveys.Survey
294 method), 249
can_override() (in- can_submit_abstracts() (in-
dico.modules.rb.models.blockings.Blocking dico.modules.events.abstracts.models.call_for_abstracts.CallForA
method), 297 method), 148
can_override() (in- can_submit_proceedings() (in-
dico.modules.rb.models.rooms.Room method), dico.modules.events.contributions.models.contributions.Contribut
294 method), 170
CAN_POPULATE (indico.modules.events.abstracts.fields.EmailRuleListField
can_swap_entry() (in module in-

402 Index
Indico Documentation, Release 3.2-dev

dico.modules.events.timetable.operations), category (indico.modules.logs.models.entries.CategoryLogRealm


259 attribute), 188
can_view() (indico.modules.attachments.models.folders.AttachmentFolder
category (indico.modules.rb.models.reservations.ReservationLink
method), 288 attribute), 303
can_view() (indico.modules.events.abstracts.models.comments.AbstractComment
category (indico.modules.search.base.SearchTarget
method), 149 attribute), 70
can_view() (indico.modules.events.abstracts.models.reviews.AbstractReview
category (indico.modules.users.models.suggestions.SuggestedCategory
method), 155 attribute), 280
can_view() (indico.modules.events.papers.models.comments.PaperReviewComment
category (indico.modules.vc.plugins.VCPluginMixin
method), 196 attribute), 318
can_view() (indico.modules.events.papers.models.reviews.PaperReview
category_chain_overlaps() (in-
method), 201 dico.modules.events.models.events.Event
can_view() (indico.modules.events.timetable.models.entries.TimetableEntry
class method), 122
method), 257 CATEGORY_CLEANUP (built-in variable), 57
can_withdraw() (in- category_id (indico.modules.attachments.models.folders.AttachmentFol
dico.modules.events.abstracts.models.abstracts.Abstract attribute), 288
method), 145 category_id (indico.modules.categories.models.principals.CategoryPrin
cancel (indico.modules.events.payment.models.transactions.TransactionAction
attribute), 270
attribute), 210 category_id (indico.modules.categories.models.settings.CategorySetting
cancel() (indico.modules.rb.models.reservation_occurrences.ReservationOccurrence
attribute), 271
method), 304 category_id (indico.modules.designer.models.templates.DesignerTempl
cancel() (indico.modules.rb.models.reservations.Reservation attribute), 321
method), 301 category_id (indico.modules.events.models.events.Event
cancelled (indico.modules.events.payment.models.transactions.TransactionStatus
attribute), 122
attribute), 210 category_id (indico.modules.events.notes.models.notes.EventNote
cancelled (indico.modules.rb.models.reservation_occurrences.ReservationOccurrenceState
attribute), 192
attribute), 305 category_id (indico.modules.logs.models.entries.CategoryLogEntry
cancelled (indico.modules.rb.models.reservations.ReservationStateattribute), 187
attribute), 303 category_id (indico.modules.rb.models.reservations.ReservationLink
candidate_contrib_types (in- attribute), 303
category_id (indico.modules.users.models.suggestions.SuggestedCatego
dico.modules.events.abstracts.models.abstracts.Abstract
attribute), 145 attribute), 281
candidate_tracks (in- category_path (in-
dico.modules.events.abstracts.models.abstracts.Abstract dico.modules.search.result_schemas.ResultSchemaBase
attribute), 145 attribute), 71
capacity (indico.modules.rb.models.rooms.Room at- category_role (in-
tribute), 294 dico.modules.attachments.models.principals.AttachmentFolderPri
Category (class in in- attribute), 290
dico.modules.categories.models.categories), category_role (in-
266 dico.modules.attachments.models.principals.AttachmentPrincipal
category (indico.core.plugins.IndicoPlugin attribute), attribute), 290
77 category_role (in-
category (indico.modules.attachments.models.folders.AttachmentFolder
dico.modules.categories.models.principals.CategoryPrincipal
attribute), 288 attribute), 271
category (indico.modules.categories.models.settings.CategorySetting
category_role (in-
attribute), 271 dico.modules.events.contributions.models.principals.Contribution
category (indico.modules.designer.models.templates.DesignerTemplate
attribute), 176
attribute), 321 category_role (in-
category (indico.modules.events.models.events.Event dico.modules.events.models.principals.EventPrincipal
attribute), 122 attribute), 131
category (indico.modules.events.notes.models.notes.EventNote
category_role (in-
attribute), 192 dico.modules.events.models.settings.EventSettingPrincipal
category (indico.modules.events.payment.plugins.PaymentPluginMixin
attribute), 136
attribute), 211 category_role (in-

Index 403
Indico Documentation, Release 3.2-dev

CELERY_BROKER (built-in variable), 49


dico.modules.events.sessions.models.principals.SessionPrincipal
attribute), 246 CELERY_CONFIG (built-in variable), 49
category_role (in- CELERY_RESULT_BACKEND (built-in variable), 49
Cell (class in indico.modules.events.registration.stats),
dico.modules.events.tracks.models.principals.TrackPrincipal
attribute), 263 236
category_role (in- cfa (indico.modules.events.models.events.Event at-
tribute), 122
dico.modules.rb.models.blocking_principals.BlockingPrincipal
attribute), 298 cfp (indico.modules.events.models.events.Event at-
category_role_id (in- tribute), 122
cfp (indico.modules.events.models.reviews.ProposalMixin
dico.modules.attachments.models.principals.AttachmentFolderPrincipal
attribute), 290 attribute), 134
category_role_id (in- chain_query (indico.modules.categories.models.categories.Category
attribute), 267
dico.modules.attachments.models.principals.AttachmentPrincipal
attribute), 290 change (indico.modules.logs.models.entries.LogKind
category_role_id (in- attribute), 190
dico.modules.categories.models.principals.CategoryPrincipal
change_tracks (in-
attribute), 271 dico.modules.events.abstracts.models.reviews.AbstractAction
category_role_id (in- attribute), 155
check_access (in module indico.core.signals.rh), 90
dico.modules.events.contributions.models.principals.ContributionPrincipal
attribute), 176 check_advance_days() (in-
category_role_id (in- dico.modules.rb.models.rooms.Room method),
dico.modules.events.models.principals.EventPrincipal 294
attribute), 131 check_bookable_hours() (in-
category_role_id (in- dico.modules.rb.models.rooms.Room method),
dico.modules.events.models.settings.EventSettingPrincipal 294
attribute), 136 check_client() (in-
category_role_id (in- dico.core.oauth.models.tokens.OAuthToken
method), 312
dico.modules.events.sessions.models.principals.SessionPrincipal
attribute), 246 check_client_secret() (in-
category_role_id (in- dico.core.oauth.models.applications.OAuthApplication
dico.modules.events.tracks.models.principals.TrackPrincipalmethod), 309
attribute), 263 check_endpoint_auth_method() (in-
category_role_id (in- dico.core.oauth.models.applications.OAuthApplication
method), 309
dico.modules.rb.models.blocking_principals.BlockingPrincipal
attribute), 299 check_event_locked() (in module in-
category_roles (in- dico.modules.events.util), 140
dico.modules.events.abstracts.fields.TrackRoleField
check_grant_type() (in-
attribute), 335 dico.core.oauth.models.applications.OAuthApplication
CategoryField (class in in- method), 309
dico.modules.categories.fields), 337 check_password_secure (in module in-
CategoryLogEntry (class in in- dico.core.signals.core), 83
dico.modules.logs.models.entries), 187 check_permissions() (in module in-
CategoryLogRealm (class in in- dico.modules.events.util), 140
dico.modules.logs.models.entries), 188 check_redirect_uri() (in-
CategoryPrincipal (class in in- dico.core.oauth.models.applications.OAuthApplication
dico.modules.categories.models.principals), method), 309
270 check_registration_email() (in module in-
CategorySetting (class in in- dico.modules.events.registration.util), 229
dico.modules.categories.models.settings), check_response_type() (in-
271 dico.core.oauth.models.applications.OAuthApplication
CategorySettingsProxy (class in in- method), 310
dico.modules.categories.settings), 274 checked_in (indico.modules.events.registration.models.registrations.Reg
CategoryTitlePlaceholder (class in in- attribute), 215
dico.modules.designer.placeholders), 327 checked_in_dt (in-

404 Index
Indico Documentation, Release 3.2-dev

dico.modules.events.registration.models.registrations.Registration
close_cfa() (in module in-
attribute), 215 dico.modules.events.abstracts.operations),
checkin (indico.core.oauth.models.applications.SystemAppType 157
attribute), 311 close_cfp() (in module in-
children (indico.modules.categories.models.categories.Category dico.modules.events.papers.operations),
attribute), 267 205
children (indico.modules.events.layout.models.menu.MenuEntry
CoAuthorsPlaceholder (class in in-
attribute), 184 dico.modules.events.abstracts.placeholders),
children (indico.modules.events.registration.models.form_fields.RegistrationFormField
161
attribute), 219 code (indico.modules.events.contributions.models.contributions.Contributi
children (indico.modules.events.registration.models.form_fields.RegistrationFormPersonalDataField
attribute), 170
attribute), 220 code (indico.modules.events.contributions.models.subcontributions.SubCo
children (indico.modules.events.registration.models.items.RegistrationFormItem
attribute), 178
attribute), 226 code (indico.modules.events.sessions.models.blocks.SessionBlock
children (indico.modules.events.registration.models.items.RegistrationFormPersonalDataSection
attribute), 245
attribute), 227 code (indico.modules.events.sessions.models.sessions.Session
children (indico.modules.events.registration.models.items.RegistrationFormSection
attribute), 243
attribute), 228 code (indico.modules.events.tracks.models.tracks.Track
children (indico.modules.events.registration.models.items.RegistrationFormText
attribute), 262
attribute), 228 collect_static_files() (in module in-
children (indico.modules.events.surveys.models.items.SurveySection dico.modules.events.static.util), 266
attribute), 252 colorlinks (indico.modules.events.abstracts.settings.BOALinkFormat
children (indico.modules.events.timetable.models.entries.TimetableEntry
attribute), 165
attribute), 257 column (indico.modules.events.registration.models.items.PersonalDataTyp
choices (indico.web.forms.fields.RelativeDeltaField attribute), 225
attribute), 350 comment (indico.modules.auth.models.registration_requests.RegistrationR
choices (indico.web.forms.fields.TimeDeltaField at- attribute), 307
tribute), 344 comment (indico.modules.events.abstracts.models.reviews.AbstractReview
clear_boa_cache() (in module in- attribute), 155
dico.modules.events.abstracts.util), 158 comment (indico.modules.events.papers.models.reviews.PaperReview
cli (in module indico.core.signals.plugin), 88 attribute), 201
client_id (indico.core.oauth.models.applications.OAuthApplication
comment (indico.modules.events.requests.models.requests.Request
attribute), 310 attribute), 239
client_secret (in- comments (indico.modules.rb.models.rooms.Room at-
dico.core.oauth.models.applications.OAuthApplication tribute), 294
attribute), 310 COMMUNITY_HUB_URL (built-in variable), 52
clone_event() (in module in- competences (indico.modules.events.papers.models.competences.PaperC
dico.modules.events.operations), 138 attribute), 197
clone_into_event() (in module in- complete (indico.modules.events.payment.models.transactions.Transactio
dico.modules.events.operations), 138 attribute), 210
clone_room() (indico.modules.vc.plugins.VCPluginMixin complete (indico.modules.events.registration.models.registrations.Registr
method), 318 attribute), 219
cloned (in module indico.core.signals.event), 84 condition_choices (in-
cloned_from (indico.modules.events.models.events.Event dico.modules.events.abstracts.fields.EmailRuleListField
attribute), 122 attribute), 334
cloned_from_id (in- condition_class_map (in-
dico.modules.events.models.events.Event dico.modules.events.abstracts.fields.EmailRuleListField
attribute), 122 attribute), 334
close() (indico.modules.events.abstracts.models.call_for_abstracts.CallForAbstracts
conference (indico.modules.events.models.events.EventType
method), 148 attribute), 127
close() (indico.modules.events.papers.models.call_for_papers.CallForPapers
configurable (indico.core.plugins.IndicoPlugin at-
method), 195 tribute), 77
close() (indico.modules.events.surveys.models.surveys.Survey
conflicting (indico.modules.events.abstracts.models.abstracts.Abstract
method), 249 attribute), 147

Index 405
Indico Documentation, Release 3.2-dev

ConflictingOccurrences, 300 content_type (indico.modules.events.papers.models.templates.PaperTem


contact_email (in- attribute), 204
dico.modules.rb.models.reservations.Reservation content_type (indico.modules.events.registration.models.registrations.R
attribute), 301 attribute), 218
contact_emails (in- content_type (indico.modules.events.static.models.static.StaticSite
dico.modules.events.models.events.Event attribute), 265
attribute), 122 Contribution (class in in-
contact_info (indico.modules.events.registration.models.forms.RegistrationForm
dico.modules.events.contributions.models.contributions),
attribute), 221 169
contact_phones (in- contribution (indico.modules.attachments.models.folders.AttachmentF
dico.modules.events.models.events.Event attribute), 288
attribute), 122 contribution (indico.modules.events.notes.models.notes.EventNote
contact_title (in- attribute), 192
dico.modules.events.models.events.Event contribution (indico.modules.events.timetable.models.entries.Timetabl
attribute), 122 attribute), 257
contains_ip() (in- CONTRIBUTION (indico.modules.events.timetable.models.entries.Timetabl
dico.modules.networks.models.networks.IPNetworkGroup attribute), 259
method), 329 contribution (indico.modules.rb.models.reservations.ReservationLink
contains_user() (in- attribute), 303
dico.modules.events.settings.EventACLProxy contribution (indico.modules.search.base.SearchTarget
method), 142, 207 attribute), 70
content (indico.modules.events.papers.models.reviews.PaperReviewType
contribution (indico.modules.vc.models.vc_rooms.VCRoomLinkType
attribute), 202 attribute), 317
content (indico.modules.news.models.news.NewsItem contribution_count (in-
attribute), 330 dico.modules.events.sessions.models.blocks.SessionBlock
content (indico.modules.search.result_schemas.EventNoteResultSchema
attribute), 245
attribute), 73 contribution_created (in module in-
content (indico.modules.search.result_schemas.HighlightSchema dico.core.signals.event), 84
attribute), 73 contribution_deleted (in module in-
content_review_questions (in- dico.core.signals.event), 84
dico.modules.events.papers.models.call_for_papers.CallForPapers
contribution_field (in-
attribute), 195 dico.modules.events.abstracts.models.fields.AbstractFieldValue
content_reviewer_deadline (in- attribute), 152
dico.modules.events.papers.models.call_for_papers.CallForPapers
contribution_field (in-
attribute), 195 dico.modules.events.contributions.models.fields.ContributionField
content_reviewer_deadline_enforced (in- attribute), 174
dico.modules.events.papers.models.call_for_papers.CallForPapers
contribution_field (in-
attribute), 195 dico.modules.events.contributions.models.fields.ContributionField
content_reviewers (in- attribute), 174
dico.modules.events.papers.models.call_for_papers.CallForPapers
contribution_field_backref_name (in-
attribute), 195 dico.modules.events.abstracts.models.fields.AbstractFieldValue
content_reviewing_enabled (in- attribute), 152
dico.modules.events.papers.models.call_for_papers.CallForPapers
contribution_field_backref_name (in-
attribute), 195 dico.modules.events.contributions.models.fields.ContributionField
content_type (indico.modules.attachments.models.attachments.AttachmentFile
attribute), 174
attribute), 286 contribution_field_backref_name (in-
content_type (indico.modules.designer.models.images.DesignerImageFile
dico.modules.events.contributions.models.fields.ContributionField
attribute), 321 attribute), 174
content_type (indico.modules.events.abstracts.models.files.AbstractFile
contribution_field_id (in-
attribute), 152 dico.modules.events.abstracts.models.fields.AbstractFieldValue
content_type (indico.modules.events.layout.models.images.ImageFile
attribute), 152
attribute), 183 contribution_field_id (in-
content_type (indico.modules.events.papers.models.files.PaperFile
dico.modules.events.contributions.models.fields.ContributionField
attribute), 197 attribute), 174

406 Index
Indico Documentation, Release 3.2-dev

contribution_field_id (in- 174


ContributionFieldValueBase (class in in-
dico.modules.events.contributions.models.fields.ContributionFieldValueBase
attribute), 174 dico.modules.events.contributions.models.fields),
contribution_id (in- 174
ContributionFieldVisibility (class in in-
dico.modules.attachments.models.folders.AttachmentFolder
attribute), 288 dico.modules.events.contributions.models.fields),
contribution_id (in- 174
dico.modules.events.contributions.models.fields.ContributionFieldValue
ContributionPersonLink (class in in-
attribute), 174 dico.modules.events.contributions.models.persons),
contribution_id (in- 175
ContributionPersonLinkListField (class in
dico.modules.events.contributions.models.persons.ContributionPersonLink
attribute), 175 indico.modules.events.contributions.fields),
contribution_id (in- 335
dico.modules.events.contributions.models.principals.ContributionPrincipal
ContributionPrincipal (class in in-
attribute), 176 dico.modules.events.contributions.models.principals),
contribution_id (in- 176
dico.modules.events.contributions.models.references.ContributionReference
ContributionReference (class in in-
attribute), 177 dico.modules.events.contributions.models.references),
contribution_id (in- 177
ContributionResultSchema (class in in-
dico.modules.events.contributions.models.subcontributions.SubContribution
attribute), 178 dico.modules.search.result_schemas), 71
contribution_id (in- ContributionsPlaceholder (class in in-
dico.modules.events.notes.models.notes.EventNote dico.modules.events.persons.placeholders),
attribute), 192 212
contribution_id (in- ContributionType (class in in-
dico.modules.events.timetable.models.entries.TimetableEntrydico.modules.events.contributions.models.types),
attribute), 257 179
contribution_id (in- ContributionTypePlaceholder (class in in-
dico.modules.rb.models.reservations.ReservationLink dico.modules.events.abstracts.placeholders),
attribute), 303 164
contribution_id (in- ContributionURLPlaceholder (class in in-
dico.modules.search.result_schemas.AttachmentResultSchema dico.modules.events.abstracts.placeholders),
attribute), 72 165
contribution_id (in- contributors (indico.modules.events.abstracts.models.reviews.Abstract
dico.modules.search.result_schemas.ContributionResultSchemaattribute), 155
attribute), 71 contributors (indico.modules.events.papers.models.reviews.PaperCom
contribution_id (in- attribute), 201
conveners (indico.modules.events.abstracts.models.reviews.AbstractCom
dico.modules.search.result_schemas.EventNoteResultSchema
attribute), 73 attribute), 155
contribution_id (in- conveners (indico.modules.events.sessions.models.sessions.Session
dico.modules.vc.models.vc_rooms.VCRoomEventAssociationattribute), 243
attribute), 316 count (indico.modules.search.result_schemas.BucketSchema
contribution_submitters (in- attribute), 68
country (indico.modules.events.registration.models.items.PersonalDataTy
dico.modules.events.abstracts.models.call_for_abstracts.CallForAbstracts
attribute), 148 attribute), 225
contribution_type_row() (in module in- create() (indico.modules.events.models.static_list_links.StaticListLink
dico.modules.events.contributions.util), 181 class method), 137
contribution_updated (in module in- create_abstract() (in module in-
dico.core.signals.event), 84 dico.modules.events.abstracts.operations),
ContributionField (class in in- 157
dico.modules.events.contributions.models.fields), create_abstract_comment() (in module in-
173 dico.modules.events.abstracts.operations),
ContributionFieldValue (class in in- 157
dico.modules.events.contributions.models.fields), create_abstract_review() (in module in-

Index 407
Indico Documentation, Release 3.2-dev

dico.modules.events.abstracts.operations), class method), 150


157 create_from_user() (in-
create_boa() (in module in- dico.modules.events.models.persons.EventPerson
dico.modules.events.abstracts.util), 158 class method), 128
create_boa_tex() (in module in- create_invitation() (in module in-
dico.modules.events.abstracts.util), 158 dico.modules.events.registration.util), 229
create_break_entry() (in module in- create_judgment_endpoint (in-
dico.modules.events.timetable.operations), dico.modules.events.abstracts.models.abstracts.Abstract
259 attribute), 145
create_category() (in module in- create_judgment_endpoint (in-
dico.modules.categories.operations), 272 dico.modules.events.models.reviews.ProposalMixin
create_comment() (in module in- attribute), 134
dico.modules.events.papers.operations), create_manager_form() (in-
205 dico.modules.events.requests.base.RequestDefinitionBase
create_comment_endpoint (in- class method), 241
dico.modules.events.abstracts.models.abstracts.Abstract
create_mock_abstract() (in module in-
attribute), 145 dico.modules.events.abstracts.util), 158
create_comment_endpoint (in- create_next() (in-
dico.modules.events.models.reviews.ProposalMixin dico.modules.events.payment.models.transactions.PaymentTransa
attribute), 134 class method), 209
create_competences() (in module in- create_occurrences() (in-
dico.modules.events.papers.operations), dico.modules.rb.models.reservations.Reservation
205 method), 301
create_contribution() (in module in- create_paper_revision() (in module in-
dico.modules.events.contributions.operations), dico.modules.events.papers.operations), 205
180 create_paper_template() (in module in-
create_contribution_from_abstract() dico.modules.events.papers.operations), 205
(in module in- create_personal_data_fields() (in module
dico.modules.events.contributions.operations), indico.modules.events.registration.util), 230
180 create_reference_type() (in module in-
create_event() (in module in- dico.modules.events.operations), 138
dico.modules.events.operations), 138 create_registration() (in module in-
create_event_label() (in module in- dico.modules.events.registration.util), 230
dico.modules.events.operations), 138 create_review() (in module in-
create_event_logo_tmp_file() (in module in- dico.modules.events.papers.operations),
dico.modules.events.util), 140 205
create_event_references() (in module in- create_review_endpoint (in-
dico.modules.events.operations), 138 dico.modules.events.abstracts.models.abstracts.Abstract
create_event_request() (in module in- attribute), 145
dico.modules.events.operations), 138 create_review_endpoint (in-
create_form() (in- dico.modules.events.models.reviews.ProposalMixin
dico.modules.events.requests.base.RequestDefinitionBase attribute), 134
class method), 241 create_reviewing_question() (in module in-
create_form() (in- dico.modules.events.operations), 138
dico.modules.vc.plugins.VCPluginMixin create_revision() (in-
method), 318 dico.modules.events.notes.models.notes.EventNote
create_from_data() (in- method), 192
dico.modules.events.agreements.models.agreements.Agreement
create_room() (in-
static method), 166 dico.modules.vc.plugins.VCPluginMixin
create_from_data() (in- method), 319
dico.modules.rb.models.reservations.Reservation create_series() (in-
class method), 301 dico.modules.rb.models.reservation_occurrences.ReservationOcc
create_from_email() (in- class method), 304
dico.modules.events.abstracts.models.email_logs.AbstractEmailLogEntry
create_series_for_reservation() (in-

408 Index
Indico Documentation, Release 3.2-dev

dico.modules.rb.models.reservation_occurrences.ReservationOccurrence
dico.modules.vc.models.vc_rooms.VCRoom
class method), 304 attribute), 316
create_session() (in module in- created_dt (indico.core.oauth.models.tokens.OAuthToken
dico.modules.events.sessions.operations), attribute), 313
247 created_dt (indico.core.oauth.models.tokens.TokenModelBase
create_session_block() (in module in- attribute), 313
dico.modules.events.sessions.operations), created_dt (indico.modules.attachments.models.attachments.Attachmen
247 attribute), 286
create_session_block_entry() (in module in- created_dt (indico.modules.designer.models.images.DesignerImageFile
dico.modules.events.timetable.operations), 259 attribute), 321
create_subcontribution() (in module in- created_dt (indico.modules.events.abstracts.models.comments.AbstractC
dico.modules.events.contributions.operations), attribute), 149
180 created_dt (indico.modules.events.abstracts.models.files.AbstractFile
create_timetable_entry() (in module in- attribute), 152
dico.modules.events.timetable.operations), created_dt (indico.modules.events.abstracts.models.reviews.AbstractRe
259 attribute), 155
create_track() (in module in- created_dt (indico.modules.events.layout.models.images.ImageFile
dico.modules.events.tracks.operations), 264 attribute), 183
create_track_group() (in module in- created_dt (indico.modules.events.models.events.Event
dico.modules.events.tracks.operations), 264 attribute), 122
create_untrusted_persons (in- created_dt (indico.modules.events.models.static_list_links.StaticListLin
attribute), 137
dico.modules.events.abstracts.fields.AbstractPersonLinkListField
attribute), 332 created_dt (indico.modules.events.notes.models.notes.EventNoteRevisio
create_untrusted_persons (in- attribute), 194
dico.modules.events.fields.PersonLinkListFieldBasecreated_dt (indico.modules.events.papers.models.comments.PaperRevie
attribute), 331 attribute), 196
create_user() (in module in- created_dt (indico.modules.events.papers.models.files.PaperFile
dico.modules.users.operations), 282 attribute), 197
created (in module indico.core.signals.category), 82 created_dt (indico.modules.events.papers.models.reviews.PaperJudgme
created (in module indico.core.signals.event), 84 attribute), 201
created (indico.modules.vc.models.vc_rooms.VCRoomStatus created_dt (indico.modules.events.papers.models.reviews.PaperReview
attribute), 318 attribute), 201
created_by_id (in- created_dt (indico.modules.events.papers.models.templates.PaperTempl
dico.modules.events.requests.models.requests.Request attribute), 204
attribute), 239 created_dt (indico.modules.events.registration.models.registrations.Reg
created_by_id (in- attribute), 218
dico.modules.rb.models.blockings.Blocking created_dt (indico.modules.events.reminders.models.reminders.EventRe
attribute), 297 attribute), 238
created_by_id (in- created_dt (indico.modules.events.requests.models.requests.Request
dico.modules.rb.models.reservations.Reservation attribute), 239
attribute), 301 created_dt (indico.modules.events.static.models.static.StaticSite
created_by_id (in- attribute), 265
dico.modules.vc.models.vc_rooms.VCRoom created_dt (indico.modules.news.models.news.NewsItem
attribute), 316 attribute), 330
created_by_user (in- created_dt (indico.modules.rb.models.blockings.Blocking
dico.modules.events.requests.models.requests.Request attribute), 297
attribute), 239 created_dt (indico.modules.rb.models.reservations.Reservation
created_by_user (in- attribute), 301
dico.modules.rb.models.blockings.Blocking created_dt (indico.modules.vc.models.vc_rooms.VCRoom
attribute), 297 attribute), 316
created_by_user (in- creator (indico.modules.events.models.events.Event
dico.modules.rb.models.reservations.Reservation attribute), 122
attribute), 301 creator (indico.modules.events.reminders.models.reminders.EventRemin
created_by_user (in- attribute), 238

Index 409
Indico Documentation, Release 3.2-dev

creator (indico.modules.events.static.models.static.StaticSite
custom_boa_id (in-
attribute), 265 dico.modules.events.models.events.Event
creator_id (indico.modules.events.models.events.Event attribute), 123
attribute), 122 CUSTOM_COUNTRIES (built-in variable), 51
creator_id (indico.modules.events.reminders.models.reminders.EventReminder
CUSTOM_LANGUAGES (built-in variable), 51
attribute), 238 CustomFieldsMixin (class in in-
creator_id (indico.modules.events.static.models.static.StaticSite dico.modules.events.contributions.models.contributions),
attribute), 265 173
currency (indico.modules.events.payment.models.transactions.PaymentTransaction
CUSTOMIZATION_DEBUG (built-in variable), 50
attribute), 209 CUSTOMIZATION_DIR (built-in variable), 50
currency (indico.modules.events.registration.models.forms.RegistrationForm
attribute), 222 D
currency (indico.modules.events.registration.models.registrations.Registration
danger (indico.modules.categories.models.categories.EventMessageMode
attribute), 215 attribute), 270
current_data (indico.modules.events.registration.models.form_fields.RegistrationFormField
data (indico.modules.auth.models.identities.Identity at-
attribute), 219 tribute), 306
current_data (indico.modules.events.registration.models.form_fields.RegistrationFormPersonalDataField
data (indico.modules.designer.models.templates.DesignerTemplate
attribute), 220 attribute), 321
current_data (indico.modules.events.registration.models.items.RegistrationFormItem
data (indico.modules.events.abstracts.models.email_logs.AbstractEmailLo
attribute), 226 attribute), 150
current_data (indico.modules.events.registration.models.items.RegistrationFormPersonalDataSection
data (indico.modules.events.abstracts.models.fields.AbstractFieldValue
attribute), 227 attribute), 152
current_data (indico.modules.events.registration.models.items.RegistrationFormSection
data (indico.modules.events.agreements.models.agreements.Agreement
attribute), 228 attribute), 167
current_data (indico.modules.events.registration.models.items.RegistrationFormText
data (indico.modules.events.contributions.models.fields.ContributionFieldV
attribute), 229 attribute), 174
current_data_id (in- data (indico.modules.events.contributions.models.fields.ContributionFieldV
dico.modules.events.registration.models.form_fields.RegistrationFormField
attribute), 174
attribute), 219 data (indico.modules.events.models.static_list_links.StaticListLink
current_data_id (in- attribute), 137
dico.modules.events.registration.models.form_fields.RegistrationFormPersonalDataField
data (indico.modules.events.payment.models.transactions.PaymentTransac
attribute), 220 attribute), 209
current_data_id (in- data (indico.modules.events.registration.models.form_fields.RegistrationFo
dico.modules.events.registration.models.items.RegistrationFormItem
attribute), 219
attribute), 226 data (indico.modules.events.registration.models.form_fields.RegistrationFo
current_data_id (in- attribute), 220
dico.modules.events.registration.models.items.RegistrationFormPersonalDataSection
data (indico.modules.events.registration.models.items.RegistrationFormIte
attribute), 227 attribute), 226
current_data_id (in- data (indico.modules.events.registration.models.items.RegistrationFormPe
dico.modules.events.registration.models.items.RegistrationFormSection
attribute), 227
attribute), 228 data (indico.modules.events.registration.models.items.RegistrationFormSe
current_data_id (in- attribute), 228
dico.modules.events.registration.models.items.RegistrationFormText
data (indico.modules.events.registration.models.items.RegistrationFormTex
attribute), 229 attribute), 229
current_revision (in- data (indico.modules.events.registration.models.registrations.Registration
dico.modules.events.notes.models.notes.EventNote attribute), 215
attribute), 192 data (indico.modules.events.registration.models.registrations.RegistrationD
current_revision_id (in- attribute), 218
dico.modules.events.notes.models.notes.EventNotedata (indico.modules.events.requests.models.requests.Request
attribute), 192 attribute), 239
custom (indico.modules.users.models.users.ProfilePictureSource
data (indico.modules.events.surveys.models.submissions.SurveyAnswer
attribute), 276 attribute), 253
custom_boa (indico.modules.events.models.events.Event data (indico.modules.logs.models.entries.CategoryLogEntry
attribute), 123 attribute), 187

410 Index
Indico Documentation, Release 3.2-dev

data (indico.modules.logs.models.entries.EventLogEntry default (indico.modules.events.registration.models.items.PersonalDataTy


attribute), 188 attribute), 225
data (indico.modules.logs.models.entries.LogEntryBase default_badge_template (in-
attribute), 189 dico.modules.categories.models.categories.Category
data (indico.modules.rb.models.photos.Photo attribute), attribute), 267
300 default_badge_template_id (in-
data (indico.modules.vc.models.vc_rooms.VCRoom at- dico.modules.categories.models.categories.Category
tribute), 316 attribute), 267
data (indico.modules.vc.models.vc_rooms.VCRoomEventAssociation
default_colors (in-
attribute), 316 dico.modules.events.sessions.models.sessions.Session
data (indico.web.forms.fields.IndicoQuerySelectMultipleField attribute), 243
attribute), 348 default_colors (in-
data_by_field (in- dico.modules.events.timetable.models.breaks.Break
dico.modules.events.abstracts.models.abstracts.Abstract attribute), 256
attribute), 145 default_contribution_duration (in-
data_by_field (in- dico.modules.events.sessions.models.sessions.Session
attribute), 243
dico.modules.events.registration.models.registrations.Registration
attribute), 215 default_data (indico.core.oauth.models.applications.SystemAppType
data_versions (in- attribute), 311
default_data (indico.modules.events.layout.models.menu.MenuEntryM
dico.modules.events.registration.models.form_fields.RegistrationFormField
attribute), 219 attribute), 185
data_versions (in- default_event_settings (in-
dico.modules.events.registration.models.form_fields.RegistrationFormPersonalDataField
dico.core.plugins.IndicoPlugin attribute),
attribute), 220 77
data_versions (in- default_event_themes (in-
dico.modules.events.registration.models.items.RegistrationFormItem
dico.modules.categories.models.categories.Category
attribute), 226 attribute), 267
data_versions (in- default_list_config (in-
dico.modules.events.registration.models.items.RegistrationFormPersonalDataSection
dico.modules.events.util.ListGeneratorBase
attribute), 227 attribute), 139
data_versions (in- DEFAULT_LOCALE (built-in variable), 57
default_options (indico.web.forms.fields.FileField
dico.modules.events.registration.models.items.RegistrationFormSection
attribute), 228 attribute), 346
data_versions (in- default_page (indico.modules.events.models.events.Event
attribute), 123
dico.modules.events.registration.models.items.RegistrationFormText
attribute), 229 default_page_id (in-
DataItem (class in in- dico.modules.events.models.events.Event
dico.modules.events.registration.stats), 236 attribute), 123
date (indico.modules.rb.models.reservation_occurrences.ReservationOccurrence
default_protection_mode (in-
attribute), 304 dico.modules.rb.models.rooms.Room attribute),
DAY (indico.modules.rb.models.reservations.RepeatFrequency 294
attribute), 300 default_redirect_uri (in-
day_number_data (in- dico.core.oauth.models.applications.OAuthApplication
dico.web.forms.fields.IndicoWeekDayRepetitionField attribute), 310
attribute), 350 default_render_mode (in-
DB_LOG (built-in variable), 52 dico.modules.categories.models.categories.Category
db_schema_created (in module in- attribute), 267
dico.core.signals.core), 83 default_render_mode (in-
DEBUG (built-in variable), 52 dico.modules.events.abstracts.models.abstracts.Abstract
declined (indico.modules.events.registration.models.invitations.InvitationState
attribute), 145
attribute), 224 default_render_mode (in-
deep_children_query (in- dico.modules.events.abstracts.models.reviews.AbstractReview
dico.modules.categories.models.categories.Category attribute), 155
attribute), 267 default_render_mode (in-

Index 411
Indico Documentation, Release 3.2-dev

dico.modules.events.contributions.models.contributions.Contribution
default_user_settings (in-
attribute), 170 dico.core.plugins.IndicoPlugin attribute),
default_render_mode (in- 77
defaults (indico.modules.events.settings.ThemeSettingsProxy
dico.modules.events.contributions.models.subcontributions.SubContribution
attribute), 178 attribute), 144, 209
default_render_mode (in- definition (indico.modules.events.agreements.models.agreements.Agree
dico.modules.events.models.events.Event attribute), 167
attribute), 123 definition (indico.modules.events.requests.models.requests.Request
default_render_mode (in- attribute), 239
delete() (indico.modules.categories.settings.CategorySettingsProxy
dico.modules.events.papers.models.reviews.PaperReview
attribute), 201 method), 274
default_render_mode (in- delete() (indico.modules.events.models.events.Event
dico.modules.events.papers.models.revisions.PaperRevision method), 123
attribute), 203 delete() (indico.modules.events.notes.models.notes.EventNote
default_render_mode (in- method), 192
delete() (indico.modules.events.settings.EventSettingsProxy
dico.modules.events.sessions.models.sessions.Session
attribute), 243 method), 143, 208
default_render_mode (in- delete() (indico.modules.users.models.settings.UserSettingsProxy
dico.modules.events.surveys.models.items.SurveyItem method), 281
attribute), 251 delete() (indico.modules.vc.models.vc_rooms.VCRoomEventAssociation
default_render_mode (in- method), 316
dico.modules.events.timetable.models.breaks.Break delete_abstract() (in module in-
attribute), 256 dico.modules.events.abstracts.operations),
default_render_mode (in- 157
dico.modules.events.tracks.models.tracks.Track delete_abstract_comment() (in module in-
attribute), 262 dico.modules.events.abstracts.operations),
default_session (in- 157
dico.modules.events.tracks.models.tracks.Track delete_abstract_files() (in module in-
attribute), 262 dico.modules.events.abstracts.operations),
default_session_id (in- 157
dico.modules.events.tracks.models.tracks.Track delete_all() (indico.modules.categories.settings.CategorySettingsProx
attribute), 262 method), 274
default_settings (in- delete_all() (indico.modules.events.settings.EventSettingsProxy
dico.core.plugins.IndicoPlugin attribute), method), 143, 208
77 delete_all() (indico.modules.users.models.settings.UserSettingsProxy
default_settings (in- method), 281
dico.modules.events.payment.plugins.PaymentPluginMixin
delete_category() (in module in-
attribute), 211 dico.modules.categories.operations), 272
default_settings (in- delete_comment() (in module in-
dico.modules.vc.plugins.VCPluginMixin dico.modules.events.papers.operations),
attribute), 319 205
default_sort_alpha (in- delete_comment_endpoint (in-
dico.modules.events.abstracts.fields.AbstractPersonLinkListField
dico.modules.events.abstracts.models.abstracts.Abstract
attribute), 332 attribute), 145
default_sort_alpha (in- delete_comment_endpoint (in-
dico.modules.events.fields.PersonLinkListFieldBase dico.modules.events.models.reviews.ProposalMixin
attribute), 331 attribute), 134
default_ticket_template (in- delete_contribution() (in module in-
dico.modules.categories.models.categories.Category dico.modules.events.contributions.operations),
attribute), 267 180
default_ticket_template_id (in- delete_event_label() (in module in-
dico.modules.categories.models.categories.Category dico.modules.events.operations), 139
attribute), 267 delete_paper_template() (in module in-
DEFAULT_TIMEZONE (built-in variable), 57 dico.modules.events.papers.operations), 205

412 Index
Indico Documentation, Release 3.2-dev

delete_reference_type() (in module in- description (indico.modules.designer.placeholders.RegistrationCountry


dico.modules.events.operations), 139 attribute), 327
delete_reviewing_question() (in module in- description (indico.modules.designer.placeholders.RegistrationEmailP
dico.modules.events.operations), 139 attribute), 326
delete_session() (in module in- description (indico.modules.designer.placeholders.RegistrationFirstNa
dico.modules.events.sessions.operations), attribute), 325
247 description (indico.modules.designer.placeholders.RegistrationFriendl
delete_session_block() (in module in- attribute), 326
dico.modules.events.sessions.operations), description (indico.modules.designer.placeholders.RegistrationFullNam
247 attribute), 324
delete_subcontribution() (in module in- description (indico.modules.designer.placeholders.RegistrationFullNam
dico.modules.events.contributions.operations), attribute), 324
180 description (indico.modules.designer.placeholders.RegistrationFullNam
delete_timetable_entry() (in module in- attribute), 325
dico.modules.events.timetable.operations), description (indico.modules.designer.placeholders.RegistrationFullNam
259 attribute), 325
delete_track() (in module in- description (indico.modules.designer.placeholders.RegistrationFullNam
dico.modules.events.tracks.operations), 264 attribute), 324
delete_track_group() (in module in- description (indico.modules.designer.placeholders.RegistrationFullNam
dico.modules.events.tracks.operations), 264 attribute), 324
deleted (in module indico.core.signals.category), 82 description (indico.modules.designer.placeholders.RegistrationFullNam
deleted (in module indico.core.signals.event), 84 attribute), 324
deleted (indico.modules.vc.models.vc_rooms.VCRoomStatus description (indico.modules.designer.placeholders.RegistrationFullNam
attribute), 318 attribute), 325
description (indico.core.oauth.models.applications.OAuthApplication
description (indico.modules.designer.placeholders.RegistrationLastNa
attribute), 310 attribute), 325
description (indico.modules.attachments.models.attachments.Attachment
description (indico.modules.designer.placeholders.RegistrationPhoneP
attribute), 285 attribute), 327
description (indico.modules.attachments.models.folders.AttachmentFolder
description (indico.modules.designer.placeholders.RegistrationPosition
attribute), 288 attribute), 327
description (indico.modules.designer.placeholders.CategoryTitlePlaceholder
description (indico.modules.designer.placeholders.RegistrationPricePl
attribute), 327 attribute), 326
description (indico.modules.designer.placeholders.EventDatesPlaceholder
description (indico.modules.designer.placeholders.RegistrationTicketQ
attribute), 323 attribute), 325
description (indico.modules.designer.placeholders.EventDescriptionPlaceholder
description (indico.modules.designer.placeholders.RegistrationTitlePla
attribute), 323 attribute), 325
description (indico.modules.designer.placeholders.EventLogoPlaceholder
description (indico.modules.events.abstracts.models.review_questions.
attribute), 329 attribute), 154
description (indico.modules.designer.placeholders.EventOrgTextPlaceholder
description (indico.modules.events.abstracts.placeholders.AbstractIDP
attribute), 324 attribute), 160
description (indico.modules.designer.placeholders.EventRoomPlaceholder
description (indico.modules.events.abstracts.placeholders.AbstractInvi
attribute), 328 attribute), 160
description (indico.modules.designer.placeholders.EventSpeakersPlaceholder
description (indico.modules.events.abstracts.placeholders.AbstractSess
attribute), 328 attribute), 161
description (indico.modules.designer.placeholders.EventTitlePlaceholder
description (indico.modules.events.abstracts.placeholders.AbstractTitle
attribute), 327 attribute), 160
description (indico.modules.designer.placeholders.EventVenuePlaceholder
description (indico.modules.events.abstracts.placeholders.AbstractTra
attribute), 328 attribute), 161
description (indico.modules.designer.placeholders.RegistrationAddressPlaceholder
description (indico.modules.events.abstracts.placeholders.AbstractURL
attribute), 327 attribute), 160
description (indico.modules.designer.placeholders.RegistrationAffiliationPlaceholder
description (indico.modules.events.abstracts.placeholders.CoAuthorsP
attribute), 327 attribute), 161
description (indico.modules.designer.placeholders.RegistrationAmountPlaceholder
description (indico.modules.events.abstracts.placeholders.Contribution
attribute), 326 attribute), 164

Index 413
Indico Documentation, Release 3.2-dev

description (indico.modules.events.abstracts.placeholders.ContributionURLPlaceholder
description (indico.modules.events.registration.models.form_fields.Reg
attribute), 165 attribute), 220
description (indico.modules.events.abstracts.placeholders.EventTitlePlaceholder
description (indico.modules.events.registration.models.items.Registrati
attribute), 159 attribute), 226
description (indico.modules.events.abstracts.placeholders.EventURLPlaceholder
description (indico.modules.events.registration.models.items.Registrati
attribute), 159 attribute), 227
description (indico.modules.events.abstracts.placeholders.JudgmentCommentPlaceholder
description (indico.modules.events.registration.models.items.Registrati
attribute), 164 attribute), 228
description (indico.modules.events.abstracts.placeholders.PrimaryAuthorsPlaceholder
description (indico.modules.events.registration.models.items.Registrati
attribute), 161 attribute), 229
description (indico.modules.events.abstracts.placeholders.SubmitterFirstNamePlaceholder
description (indico.modules.events.registration.placeholders.invitation
attribute), 162 attribute), 234
description (indico.modules.events.abstracts.placeholders.SubmitterLastNamePlaceholder
description (indico.modules.events.registration.placeholders.invitation
attribute), 162 attribute), 235
description (indico.modules.events.abstracts.placeholders.SubmitterNamePlaceholder
description (indico.modules.events.registration.placeholders.invitation
attribute), 162 attribute), 235
description (indico.modules.events.abstracts.placeholders.SubmitterTitlePlaceholder
description (indico.modules.events.registration.placeholders.registratio
attribute), 163 attribute), 232
description (indico.modules.events.abstracts.placeholders.TargetAbstractIDPlaceholder
description (indico.modules.events.registration.placeholders.registratio
attribute), 163 attribute), 232
description (indico.modules.events.abstracts.placeholders.TargetAbstractTitlePlaceholder
description (indico.modules.events.registration.placeholders.registratio
attribute), 163 attribute), 233
description (indico.modules.events.abstracts.placeholders.TargetSubmitterFirstNamePlaceholder
description (indico.modules.events.registration.placeholders.registratio
attribute), 164 attribute), 233
description (indico.modules.events.abstracts.placeholders.TargetSubmitterLastNamePlaceholder
description (indico.modules.events.registration.placeholders.registratio
attribute), 164 attribute), 233
description (indico.modules.events.abstracts.placeholders.TargetSubmitterNamePlaceholder
description (indico.modules.events.registration.placeholders.registratio
attribute), 163 attribute), 234
description (indico.modules.events.agreements.placeholders.AgreementLinkPlaceholder
description (indico.modules.events.registration.placeholders.registratio
attribute), 168 attribute), 234
description (indico.modules.events.agreements.placeholders.PersonNamePlaceholder
description (indico.modules.events.registration.placeholders.registratio
attribute), 169 attribute), 234
description (indico.modules.events.contributions.models.fields.ContributionField
description (indico.modules.networks.models.networks.IPNetworkGrou
attribute), 173 attribute), 329
description (indico.modules.events.contributions.models.types.ContributionType
description (indico.modules.search.result_schemas.ContributionResult
attribute), 179 attribute), 71
description (indico.modules.events.papers.models.review_questions.PaperReviewQuestion
description (indico.modules.search.result_schemas.EventResultSchema
attribute), 199 attribute), 71
description (indico.modules.events.papers.models.templates.PaperTemplate
description (indico.modules.search.result_schemas.HighlightSchema
attribute), 204 attribute), 73
description (indico.modules.events.persons.placeholders.EmailPlaceholder
DesignerImageFile (class in in-
attribute), 213 dico.modules.designer.models.images), 320
description (indico.modules.events.persons.placeholders.EventLinkPlaceholder
DesignerPDFBase (class in in-
attribute), 213 dico.modules.designer.pdf ), 322
description (indico.modules.events.persons.placeholders.EventTitlePlaceholder
DesignerTemplate (class in in-
attribute), 213 dico.modules.designer.models.templates),
description (indico.modules.events.persons.placeholders.FirstNamePlaceholder
321
attribute), 213 details_url (indico.modules.rb.models.rooms.Room
description (indico.modules.events.persons.placeholders.LastNamePlaceholder
attribute), 294
attribute), 214 DISABLE_CELERY_CHECK (built-in variable), 52
description (indico.modules.events.persons.placeholders.RegisterLinkPlaceholder
disable_protection_mode (in-
attribute), 214 dico.modules.events.tracks.models.tracks.Track
description (indico.modules.events.registration.models.form_fields.RegistrationFormField
attribute), 262
attribute), 219 disabled (indico.modules.categories.models.categories.EventMessageMo

414 Index
Indico Documentation, Release 3.2-dev

attribute), 270 attribute), 129


disabled_sections (in- display_order (in-
dico.modules.events.registration.models.forms.RegistrationForm
dico.modules.events.models.persons.PersonLinkBase
attribute), 222 attribute), 130
disallowed_protection_modes (in- display_order (in-
dico.modules.categories.models.categories.Category dico.modules.events.sessions.models.persons.SessionBlockPerson
attribute), 267 attribute), 246
disallowed_protection_modes (in- display_order_key (in-
dico.modules.events.contributions.models.contributions.Contribution
dico.modules.events.models.persons.PersonLinkBase
attribute), 170 attribute), 130
disallowed_protection_modes (in- display_order_key_lastname (in-
dico.modules.events.contributions.models.principals.ContributionPrincipal
dico.modules.events.models.persons.PersonLinkBase
attribute), 176 attribute), 130
disallowed_protection_modes (in- display_tzinfo (in-
dico.modules.events.models.events.Event dico.modules.categories.models.categories.Category
attribute), 123 attribute), 267
disallowed_protection_modes (in- display_tzinfo (in-
dico.modules.events.sessions.models.principals.SessionPrincipal
dico.modules.events.models.events.Event
attribute), 246 attribute), 123
disallowed_protection_modes (in- division (indico.modules.rb.models.rooms.Room at-
dico.modules.events.sessions.models.sessions.Session tribute), 294
attribute), 243 DoublePaymentTransaction, 209
disallowed_protection_modes (in- download_url (indico.modules.attachments.models.attachments.Attachm
dico.modules.rb.models.rooms.Room attribute), attribute), 285
294 download_url (indico.modules.designer.models.images.DesignerImageF
display_as_section (in- attribute), 321
dr (indico.modules.users.models.users.UserTitle at-
dico.modules.events.surveys.models.items.SurveyItem
attribute), 251 tribute), 279
display_as_section (in- draw_item_on_badge (in module in-
dico.modules.events.surveys.models.items.SurveyQuestion dico.core.signals.event), 84
attribute), 252 dump() (indico.modules.search.base.SearchOptions
display_as_section (in- method), 70
duplicate (indico.modules.events.abstracts.models.abstracts.AbstractPu
dico.modules.events.surveys.models.items.SurveySection
attribute), 252 attribute), 147
display_as_section (in- duplicate (indico.modules.events.abstracts.models.abstracts.AbstractSta
dico.modules.events.surveys.models.items.SurveyText attribute), 148
attribute), 253 duplicate_of (indico.modules.events.abstracts.models.abstracts.Abstra
display_full_name (in- attribute), 145
dico.modules.events.registration.models.registrations.Registration
duplicate_of_id (in-
attribute), 215 dico.modules.events.abstracts.models.abstracts.Abstract
display_full_name (in- attribute), 145
dico.modules.users.models.users.PersonMixin duration (indico.modules.events.contributions.models.contributions.Con
attribute), 275 attribute), 170
display_order (in- duration (indico.modules.events.contributions.models.subcontributions.S
attribute), 178
dico.modules.events.abstracts.models.persons.AbstractPersonLink
attribute), 153 duration (indico.modules.events.models.events.Event
display_order (in- attribute), 123
duration (indico.modules.events.sessions.models.blocks.SessionBlock
dico.modules.events.contributions.models.persons.ContributionPersonLink
attribute), 175 attribute), 245
display_order (in- duration (indico.modules.events.timetable.models.breaks.Break
attribute), 256
dico.modules.events.contributions.models.persons.SubContributionPersonLink
attribute), 176 duration (indico.modules.events.timetable.models.entries.TimetableEntry
display_order (in- attribute), 257
dico.modules.events.models.persons.EventPersonLinkduration (indico.modules.events.timetable.reschedule.RescheduleMode

Index 415
Indico Documentation, Release 3.2-dev

attribute), 261 email (indico.modules.events.models.persons.EventPerson


duration (indico.modules.search.result_schemas.ContributionResultSchema
attribute), 128
attribute), 71 email (indico.modules.events.models.persons.PersonLinkBase
duration_display (in- attribute), 130
email (indico.modules.events.models.principals.EventPrincipal
dico.modules.events.contributions.models.contributions.Contribution
attribute), 170 attribute), 131
duration_poster (in- email (indico.modules.events.models.settings.EventSettingPrincipal
attribute), 136
dico.modules.events.contributions.models.contributions.Contribution
attribute), 170 email (indico.modules.events.registration.models.invitations.RegistrationIn
attribute), 224
E email (indico.modules.events.registration.models.items.PersonalDataType
earliest_date (in- attribute), 225
dico.web.forms.fields.IndicoDateField at- email (indico.modules.events.registration.models.registrations.Registration
tribute), 349 attribute), 215
earliest_dt (indico.web.forms.fields.IndicoDateTimeField email (indico.modules.events.sessions.models.principals.SessionPrincipal
attribute), 344 attribute), 246
edit_comment_endpoint (in- email (indico.modules.events.tracks.models.principals.TrackPrincipal
dico.modules.events.abstracts.models.abstracts.Abstract attribute), 263
attribute), 145 email (indico.modules.rb.models.blocking_principals.BlockingPrincipal
edit_comment_endpoint (in- attribute), 299
dico.modules.events.models.reviews.ProposalMixin email (indico.modules.users.models.emails.UserEmail
attribute), 134 attribute), 280
email (indico.modules.users.models.users.User at-
edit_logs (indico.modules.rb.models.reservations.Reservation
attribute), 301 tribute), 276
edit_review_endpoint (in- email_added (in module indico.core.signals.users), 90
email_template
dico.modules.events.abstracts.models.abstracts.Abstract (in-
attribute), 145 dico.modules.events.abstracts.models.email_logs.AbstractEmailL
edit_review_endpoint (in- attribute), 150
dico.modules.events.models.reviews.ProposalMixin email_template_id (in-
attribute), 134 dico.modules.events.abstracts.models.email_logs.AbstractEmailL
edit_track_mode (in- attribute), 150
EmailListField (class in indico.web.forms.fields),
dico.modules.events.abstracts.models.abstracts.Abstract
attribute), 145 341
editable_types (in- EmailPlaceholder (class in in-
dico.modules.events.models.events.Event dico.modules.events.persons.placeholders),
attribute), 123 213
EditableFileField (class in in- EmailRenderer (class in in-
dico.web.forms.fields), 348 dico.modules.logs.renderers), 190
EditTrackMode (class in in- EmailRuleListField (class in in-
dico.modules.events.abstracts.models.abstracts), dico.modules.events.abstracts.fields), 333
148 emails (indico.modules.logs.models.entries.EventLogRealm
effective_icon_url (in- attribute), 189
ENABLE_ROOMBOOKING (built-in variable), 57
dico.modules.categories.models.categories.Category
attribute), 267 enabled_editables (in-
dico.modules.events.contributions.models.contributions.Contribut
email (indico.modules.attachments.models.principals.AttachmentFolderPrincipal
attribute), 290 attribute), 170
end_date (indico.modules.rb.models.blockings.Blocking
email (indico.modules.attachments.models.principals.AttachmentPrincipal
attribute), 290 attribute), 297
end_dt (indico.modules.events.abstracts.models.call_for_abstracts.CallFo
email (indico.modules.auth.models.registration_requests.RegistrationRequest
attribute), 307 attribute), 148
end_dt (indico.modules.events.contributions.models.contributions.Contrib
email (indico.modules.categories.models.principals.CategoryPrincipal
attribute), 271 attribute), 170
end_dt (indico.modules.events.models.events.Event
email (indico.modules.events.contributions.models.principals.ContributionPrincipal at-
attribute), 176 tribute), 123

416 Index
Indico Documentation, Release 3.2-dev

end_dt (indico.modules.events.papers.models.call_for_papers.CallForPapers
attribute), 297
attribute), 195 endpoint (indico.modules.events.util.ListGeneratorBase
end_dt (indico.modules.events.registration.models.forms.RegistrationForm
attribute), 139
attribute), 222 ends_after() (indico.modules.events.models.events.Event
end_dt (indico.modules.events.sessions.models.blocks.SessionBlock method), 123
attribute), 245 enforced_data (in-
end_dt (indico.modules.events.sessions.models.sessions.Session dico.core.oauth.models.applications.SystemAppType
attribute), 243 attribute), 311
end_dt (indico.modules.events.surveys.models.surveys.Survey
entry_changed (in module indico.core.signals.acl),
attribute), 249 81
end_dt (indico.modules.events.timetable.models.breaks.Break
entry_parent (indico.modules.events.util.ListGeneratorBase
attribute), 256 attribute), 139
end_dt (indico.modules.events.timetable.models.entries.TimetableEntry
EquipmentType (class in in-
attribute), 257 dico.modules.rb.models.equipment), 299
end_dt (indico.modules.rb.models.reservation_occurrences.ReservationOccurrence
Event (class in indico.modules.events.models.events),
attribute), 304 121
end_dt (indico.modules.rb.models.reservations.Reservationevent (indico.modules.attachments.models.folders.AttachmentFolder
attribute), 301 attribute), 288
end_dt (indico.modules.rb.models.room_nonbookable_periods.NonBookablePeriod
event (indico.modules.designer.models.templates.DesignerTemplate
attribute), 297 attribute), 321
end_dt (indico.modules.search.result_schemas.ContributionResultSchema
event (indico.modules.events.abstracts.fields.AbstractField
attribute), 71 attribute), 332
end_dt (indico.modules.search.result_schemas.EventResultSchema
event (indico.modules.events.abstracts.models.abstracts.Abstract
attribute), 71 attribute), 145
end_dt_display (in- event (indico.modules.events.abstracts.models.email_templates.AbstractE
attribute), 151
dico.modules.events.contributions.models.contributions.Contribution
attribute), 170 event (indico.modules.events.abstracts.models.review_questions.AbstractR
end_dt_display (in- attribute), 154
dico.modules.events.models.events.Event event (indico.modules.events.agreements.models.agreements.Agreement
attribute), 123 attribute), 167
end_dt_local (indico.modules.events.models.events.Event event (indico.modules.events.contributions.models.contributions.Contribu
attribute), 123 attribute), 170
end_dt_override (in- event (indico.modules.events.contributions.models.fields.ContributionFiel
dico.modules.events.models.events.Event attribute), 173
attribute), 123 event (indico.modules.events.contributions.models.subcontributions.SubC
end_dt_poster (in- attribute), 178
event (indico.modules.events.contributions.models.types.ContributionType
dico.modules.events.contributions.models.contributions.Contribution
attribute), 170 attribute), 179
end_notification_daily (in- event (indico.modules.events.fields.PersonLinkListFieldBase
dico.modules.rb.models.rooms.Room attribute), attribute), 331
294 event (indico.modules.events.layout.models.images.ImageFile
end_notification_monthly (in- attribute), 183
dico.modules.rb.models.rooms.Room attribute), event (indico.modules.events.layout.models.menu.EventPage
294 attribute), 183
end_notification_sent (in- event (indico.modules.events.layout.models.menu.MenuEntry
dico.modules.rb.models.reservations.Reservation attribute), 184
attribute), 301 event (indico.modules.events.models.events.Event at-
end_notification_weekly (in- tribute), 123
dico.modules.rb.models.rooms.Room attribute), event (indico.modules.events.models.persons.EventPerson
294 attribute), 128
end_notifications_enabled (in- event (indico.modules.events.models.settings.EventSetting
dico.modules.rb.models.rooms.Room attribute), attribute), 135
294 event (indico.modules.events.models.settings.EventSettingPrincipal
end_time (indico.modules.rb.models.room_bookable_hours.BookableHours
attribute), 136

Index 417
Indico Documentation, Release 3.2-dev

event (indico.modules.events.models.settings.EventSettingsMixin
event (indico.modules.vc.models.vc_rooms.VCRoomLinkType
attribute), 137 attribute), 317
event (indico.modules.events.models.static_list_links.StaticListLink
event_backref_name (in-
attribute), 137 dico.modules.events.abstracts.models.review_questions.AbstractR
event (indico.modules.events.notes.models.notes.EventNote attribute), 154
attribute), 192 event_backref_name (in-
event (indico.modules.events.papers.fields.PaperEmailSettingsField dico.modules.events.papers.models.review_questions.PaperReview
attribute), 336 attribute), 199
event (indico.modules.events.papers.models.competences.PaperCompetence
event_creation_mode (in-
attribute), 197 dico.modules.categories.models.categories.Category
event (indico.modules.events.papers.models.papers.Paper attribute), 267
attribute), 198 event_creation_notification_emails (in-
event (indico.modules.events.papers.models.review_questions.PaperReviewQuestion
dico.modules.categories.models.categories.Category
attribute), 199 attribute), 267
event (indico.modules.events.papers.models.templates.PaperTemplate
event_id (indico.modules.attachments.models.folders.AttachmentFolder
attribute), 204 attribute), 288
event (indico.modules.events.registration.models.forms.RegistrationForm
event_id (indico.modules.designer.models.templates.DesignerTemplate
attribute), 222 attribute), 321
event (indico.modules.events.registration.models.registrations.Registration
event_id (indico.modules.events.abstracts.models.abstracts.Abstract
attribute), 215 attribute), 145
event (indico.modules.events.reminders.models.reminders.EventReminder
event_id (indico.modules.events.abstracts.models.email_templates.Abstr
attribute), 238 attribute), 151
event (indico.modules.events.requests.models.requests.Request
event_id (indico.modules.events.abstracts.models.review_questions.Abst
attribute), 239 attribute), 154
event (indico.modules.events.sessions.models.blocks.SessionBlock
event_id (indico.modules.events.agreements.models.agreements.Agreeme
attribute), 245 attribute), 167
event (indico.modules.events.sessions.models.sessions.Session
event_id (indico.modules.events.contributions.models.contributions.Con
attribute), 243 attribute), 170
event (indico.modules.events.static.models.static.StaticSiteevent_id (indico.modules.events.contributions.models.fields.Contribution
attribute), 265 attribute), 173
event (indico.modules.events.surveys.models.surveys.Survey event_id (indico.modules.events.contributions.models.types.Contribution
attribute), 249 attribute), 179
event (indico.modules.events.timetable.models.breaks.Break event_id (indico.modules.events.layout.models.images.ImageFile
attribute), 256 attribute), 183
event (indico.modules.events.timetable.models.entries.TimetableEntry
event_id (indico.modules.events.layout.models.menu.EventPage
attribute), 257 attribute), 183
event (indico.modules.events.tracks.models.tracks.Track event_id (indico.modules.events.layout.models.menu.MenuEntry
attribute), 262 attribute), 184
event (indico.modules.events.util.ListGeneratorBase event_id (indico.modules.events.models.persons.EventPerson
attribute), 139 attribute), 128
event (indico.modules.logs.models.entries.CategoryLogEntry event_id (indico.modules.events.models.persons.EventPersonLink
attribute), 187 attribute), 129
event (indico.modules.logs.models.entries.EventLogEntry event_id (indico.modules.events.models.principals.EventPrincipal
attribute), 188 attribute), 131
event (indico.modules.logs.models.entries.EventLogRealmevent_id (indico.modules.events.models.references.EventReference
attribute), 189 attribute), 131
event (indico.modules.rb.models.reservations.Reservationevent_id (indico.modules.events.models.settings.EventSetting
attribute), 301 attribute), 135
event (indico.modules.rb.models.reservations.ReservationLinkevent_id (indico.modules.events.models.settings.EventSettingPrincipal
attribute), 303 attribute), 136
event (indico.modules.search.base.SearchTarget event_id (indico.modules.events.models.settings.EventSettingsMixin
attribute), 70 attribute), 137
event (indico.modules.vc.models.vc_rooms.VCRoomEventAssociation
event_id (indico.modules.events.models.static_list_links.StaticListLink
attribute), 317 attribute), 137

418 Index
Indico Documentation, Release 3.2-dev

event_id (indico.modules.events.notes.models.notes.EventNote attribute), 185


attribute), 192 event_role (indico.modules.attachments.models.principals.AttachmentF
event_id (indico.modules.events.papers.models.competences.PaperCompetence
attribute), 290
attribute), 197 event_role (indico.modules.attachments.models.principals.AttachmentP
event_id (indico.modules.events.papers.models.review_questions.PaperReviewQuestion
attribute), 290
attribute), 199 event_role (indico.modules.categories.models.principals.CategoryPrinc
event_id (indico.modules.events.papers.models.templates.PaperTemplate
attribute), 271
attribute), 204 event_role (indico.modules.events.contributions.models.principals.Cont
event_id (indico.modules.events.registration.models.forms.RegistrationForm
attribute), 176
attribute), 222 event_role (indico.modules.events.models.principals.EventPrincipal
event_id (indico.modules.events.registration.models.registrations.Registration
attribute), 131
attribute), 215 event_role (indico.modules.events.models.settings.EventSettingPrincipa
event_id (indico.modules.events.reminders.models.reminders.EventReminder
attribute), 136
attribute), 238 event_role (indico.modules.events.sessions.models.principals.SessionPr
event_id (indico.modules.events.requests.models.requests.Request attribute), 246
attribute), 239 event_role (indico.modules.events.tracks.models.principals.TrackPrinci
event_id (indico.modules.events.sessions.models.sessions.Session attribute), 264
attribute), 243 event_role (indico.modules.rb.models.blocking_principals.BlockingPrin
event_id (indico.modules.events.static.models.static.StaticSite attribute), 299
attribute), 265 event_role_id (in-
event_id (indico.modules.events.surveys.models.surveys.Survey dico.modules.attachments.models.principals.AttachmentFolderPri
attribute), 249 attribute), 290
event_id (indico.modules.events.timetable.models.entries.TimetableEntry
event_role_id (in-
attribute), 257 dico.modules.attachments.models.principals.AttachmentPrincipal
event_id (indico.modules.events.tracks.models.tracks.Track attribute), 291
attribute), 262 event_role_id (in-
event_id (indico.modules.logs.models.entries.EventLogEntry dico.modules.categories.models.principals.CategoryPrincipal
attribute), 188 attribute), 271
event_id (indico.modules.rb.models.reservations.ReservationLink
event_role_id (in-
attribute), 303 dico.modules.events.contributions.models.principals.Contribution
event_id (indico.modules.search.result_schemas.AttachmentResultSchema
attribute), 176
attribute), 72 event_role_id (in-
event_id (indico.modules.search.result_schemas.ContributionResultSchema
dico.modules.events.models.principals.EventPrincipal
attribute), 71 attribute), 131
event_id (indico.modules.search.result_schemas.EventNoteResultSchema
event_role_id (in-
attribute), 73 dico.modules.events.models.settings.EventSettingPrincipal
event_id (indico.modules.search.result_schemas.EventResultSchema attribute), 136
attribute), 71 event_role_id (in-
event_id (indico.modules.vc.models.vc_rooms.VCRoomEventAssociation dico.modules.events.sessions.models.principals.SessionPrincipal
attribute), 317 attribute), 246
event_message (in- event_role_id (in-
dico.modules.categories.models.categories.Category dico.modules.events.tracks.models.principals.TrackPrincipal
attribute), 267 attribute), 264
event_message_mode (in- event_role_id (in-
dico.modules.categories.models.categories.Category dico.modules.rb.models.blocking_principals.BlockingPrincipal
attribute), 267 attribute), 299
event_note (indico.modules.search.base.SearchTarget event_roles (indico.modules.events.abstracts.fields.TrackRoleField
attribute), 70 attribute), 335
event_notes_revisions (in- event_settings (indico.core.plugins.IndicoPlugin
dico.modules.users.models.users.User at- attribute), 77
tribute), 276 event_settings_converters (in-
event_or_id() (in module in- dico.core.plugins.IndicoPlugin attribute),
dico.modules.events.settings), 144, 209 77
event_ref (indico.modules.events.layout.models.menu.MenuEntryMixin
event_settings_form (in-

Index 419
Indico Documentation, Release 3.2-dev

dico.modules.events.payment.plugins.PaymentPluginMixin 130
attribute), 211 EventReference (class in in-
event_start_delta (in- dico.modules.events.models.references),
dico.modules.events.reminders.models.reminders.EventReminder 131
attribute), 238 EventReminder (class in in-
event_type (indico.modules.search.result_schemas.EventResultSchema dico.modules.events.reminders.models.reminders),
attribute), 71 237
EventACLProxy (class in in- EventRequestList (class in in-
dico.modules.events.settings), 142, 206 dico.modules.categories.fields), 337
EventCreationMode (class in in- EventResultSchema (class in in-
dico.modules.categories.models.categories), dico.modules.search.result_schemas), 71
270 EventRoomPlaceholder (class in in-
EventDatesPlaceholder (class in in- dico.modules.designer.placeholders), 328
dico.modules.designer.placeholders), 323 events (indico.modules.logs.models.entries.CategoryLogRealm
EventDescriptionPlaceholder (class in in- attribute), 188
dico.modules.designer.placeholders), 323 events_backref_name (in-
EventLinkPlaceholder (class in in- dico.modules.attachments.models.folders.AttachmentFolder
dico.modules.events.persons.placeholders), attribute), 288
213 events_backref_name (in-
EventLinkPlaceholder (class in in- dico.modules.events.notes.models.notes.EventNote
dico.modules.events.registration.placeholders.registrations),attribute), 192
232 events_backref_name (in-
EventLogEntry (class in in- dico.modules.rb.models.reservations.ReservationLink
dico.modules.logs.models.entries), 188 attribute), 303
EventLogoPlaceholder (class in in- EventSeries (class in in-
dico.modules.designer.placeholders), 329 dico.modules.events.models.series), 135
EventLogRealm (class in in- EventSetting (class in in-
dico.modules.logs.models.entries), 189 dico.modules.events.models.settings), 135
EventLogRendererBase (class in in- EventSettingPrincipal (class in in-
dico.modules.logs.renderers), 190 dico.modules.events.models.settings), 136
EventMessageMode (class in in- EventSettingProperty (class in in-
dico.modules.categories.models.categories), dico.modules.events.settings), 143, 207
270 EventSettingsMixin (class in in-
EventNote (class in in- dico.modules.events.models.settings), 137
dico.modules.events.notes.models.notes), EventSettingsProxy (class in in-
192 dico.modules.events.settings), 143, 207
EventNoteResultSchema (class in in- EventSpeakersPlaceholder (class in in-
dico.modules.search.result_schemas), 73 dico.modules.designer.placeholders), 328
EventNoteRevision (class in in- EventTitlePlaceholder (class in in-
dico.modules.events.notes.models.notes), dico.modules.designer.placeholders), 327
194 EventTitlePlaceholder (class in in-
EventOrgTextPlaceholder (class in in- dico.modules.events.abstracts.placeholders),
dico.modules.designer.placeholders), 324 159
EventPage (class in in- EventTitlePlaceholder (class in in-
dico.modules.events.layout.models.menu), dico.modules.events.persons.placeholders),
183 213
EventPerson (class in in- EventTitlePlaceholder (class in in-
dico.modules.events.models.persons), 128 dico.modules.events.registration.placeholders.registrations),
EventPersonLink (class in in- 232
dico.modules.events.models.persons), 129 EventType (class in in-
EventPersonLinkListField (class in in- dico.modules.events.models.events), 127
dico.modules.events.fields), 331 EventURLPlaceholder (class in in-
EventPrincipal (class in in- dico.modules.events.abstracts.placeholders),
dico.modules.events.models.principals), 159

420 Index
Indico Documentation, Release 3.2-dev

EventVenuePlaceholder (class in in- external_url (indico.modules.events.models.events.Event


dico.modules.designer.placeholders), 328 attribute), 123
EXPERIMENTAL_EDITING_SERVICE (built-in vari- extra_cc_emails (in-
able), 54 dico.modules.events.abstracts.models.email_templates.AbstractEm
expired (indico.modules.events.static.models.static.StaticSiteState attribute), 151
attribute), 266 extra_emails (indico.modules.auth.models.registration_requests.Regist
extend_defaults() (in- attribute), 307
dico.modules.users.ext.ExtraUserPreferences extra_events (in module in-
method), 284 dico.core.signals.category), 82
extend_end_dt() (in- extra_key_cols (in-
dico.modules.events.timetable.models.entries.TimetableEntrydico.modules.events.models.settings.EventSettingPrincipal
method), 257 attribute), 136
extend_form() (in- ExtraUserPreferences (class in in-
dico.modules.users.ext.ExtraUserPreferences dico.modules.users.ext), 284
method), 284
extend_parent() (in- F
dico.modules.events.timetable.models.entries.TimetableEntry
f_last (indico.modules.users.models.users.NameFormat
method), 257 attribute), 275
extend_start_dt() (in- f_last_upper (indico.modules.users.models.users.NameFormat
dico.modules.events.timetable.models.entries.TimetableEntryattribute), 275
method), 258 failed (indico.modules.events.payment.models.transactions.TransactionS
extension (indico.modules.attachments.models.attachments.AttachmentFile
attribute), 210
attribute), 287 failed (indico.modules.events.static.models.static.StaticSiteState
extension (indico.modules.designer.models.images.DesignerImageFile attribute), 266
attribute), 321 FAILED_LOGIN_RATE_LIMIT (built-in variable), 48
extension (indico.modules.events.abstracts.models.files.AbstractFile
favorite_categories (in-
attribute), 152 dico.modules.users.models.users.User at-
extension (indico.modules.events.layout.models.images.ImageFile tribute), 276
attribute), 183 favorite_of (indico.modules.rb.models.rooms.Room
extension (indico.modules.events.papers.models.files.PaperFile attribute), 294
attribute), 197 favorite_users (in-
extension (indico.modules.events.papers.models.templates.PaperTemplate
dico.modules.users.models.users.User at-
attribute), 204 tribute), 277
extension (indico.modules.events.registration.models.registrations.RegistrationData
features (indico.modules.rb.models.equipment.EquipmentType
attribute), 218 attribute), 299
extension (indico.modules.events.static.models.static.StaticSite
field (indico.modules.designer.placeholders.RegistrationAddressPlacehol
attribute), 265 attribute), 327
external_cancellation_url (in- field (indico.modules.designer.placeholders.RegistrationAffiliationPlaceh
dico.modules.rb.models.reservation_occurrences.ReservationOccurrence
attribute), 327
attribute), 304 field (indico.modules.designer.placeholders.RegistrationCountryPlaceho
external_details_url (in- attribute), 327
dico.modules.rb.models.blockings.Blocking field (indico.modules.designer.placeholders.RegistrationEmailPlaceholde
attribute), 298 attribute), 326
external_details_url (in- field (indico.modules.designer.placeholders.RegistrationFirstNamePlace
dico.modules.rb.models.reservations.Reservation attribute), 325
attribute), 302 field (indico.modules.designer.placeholders.RegistrationFriendlyIDPlace
external_identities (in- attribute), 326
dico.modules.users.models.users.User at- field (indico.modules.designer.placeholders.RegistrationLastNamePlaceh
tribute), 276 attribute), 325
external_logo_url (in- field (indico.modules.designer.placeholders.RegistrationPhonePlacehold
dico.modules.events.models.events.Event attribute), 327
attribute), 123 field (indico.modules.designer.placeholders.RegistrationPositionPlaceho
EXTERNAL_REGISTRATION_URL (built-in variable), attribute), 327
48

Index 421
Indico Documentation, Release 3.2-dev

field (indico.modules.designer.placeholders.RegistrationTitlePlaceholder
attribute), 145
attribute), 325 field_values (indico.modules.events.contributions.models.contribution
field (indico.modules.events.abstracts.models.review_questions.AbstractReviewQuestion
attribute), 170
attribute), 154 FieldPlaceholder (class in in-
field (indico.modules.events.contributions.models.fields.ContributionField
dico.modules.events.registration.placeholders.registrations),
attribute), 173 233
field (indico.modules.events.papers.models.review_questions.PaperReviewQuestion
fields (indico.modules.events.registration.models.items.RegistrationForm
attribute), 199 attribute), 228
field (indico.modules.events.registration.models.items.RegistrationFormItemType
fields (indico.modules.users.ext.ExtraUserPreferences
attribute), 227 attribute), 284
field (indico.modules.events.surveys.models.items.SurveyQuestion
FieldStats (class in in-
attribute), 252 dico.modules.events.registration.stats), 237
field_data (indico.modules.events.abstracts.models.review_questions.AbstractReviewQuestion
file (indico.modules.attachments.models.attachments.Attachment
attribute), 154 attribute), 285
field_data (indico.modules.events.contributions.models.fields.ContributionField
file (indico.modules.attachments.models.attachments.AttachmentType
attribute), 173 attribute), 287
field_data (indico.modules.events.papers.models.review_questions.PaperReviewQuestion
file (indico.modules.events.registration.models.registrations.RegistrationD
attribute), 199 attribute), 218
FIELD_DATA (indico.modules.events.registration.models.items.PersonalDataType
file_id (indico.modules.attachments.models.attachments.Attachment
attribute), 225 attribute), 285
field_data (indico.modules.events.registration.models.registrations.RegistrationData
file_required (in-
attribute), 218 dico.modules.events.registration.models.registrations.Registration
field_data (indico.modules.events.surveys.models.items.SurveyItem attribute), 218
attribute), 251 file_required (in-
field_data (indico.modules.events.surveys.models.items.SurveyQuestion
dico.modules.events.static.models.static.StaticSite
attribute), 252 attribute), 265
field_data (indico.modules.events.surveys.models.items.SurveySection
FileField (class in indico.web.forms.fields), 345
attribute), 252 filename (indico.modules.attachments.models.attachments.AttachmentFi
field_data (indico.modules.events.surveys.models.items.SurveyText attribute), 287
attribute), 253 filename (indico.modules.designer.models.images.DesignerImageFile
field_data_id (in- attribute), 321
filename (indico.modules.events.abstracts.models.files.AbstractFile
dico.modules.events.registration.models.registrations.RegistrationData
attribute), 218 attribute), 152
field_id (indico.modules.events.registration.models.form_fields.RegistrationFormFieldData
filename (indico.modules.events.layout.models.images.ImageFile
attribute), 220 attribute), 183
field_impl (indico.modules.events.registration.models.form_fields.RegistrationFormField
filename (indico.modules.events.papers.models.files.PaperFile
attribute), 219 attribute), 197
field_pd (indico.modules.events.registration.models.items.RegistrationFormItemType
filename (indico.modules.events.papers.models.templates.PaperTemplate
attribute), 227 attribute), 204
field_type (indico.modules.events.abstracts.models.review_questions.AbstractReviewQuestion
filename (indico.modules.events.registration.models.registrations.Registr
attribute), 154 attribute), 218
field_type (indico.modules.events.contributions.models.fields.ContributionField
filename (indico.modules.events.static.models.static.StaticSite
attribute), 173 attribute), 265
field_type (indico.modules.events.papers.models.review_questions.PaperReviewQuestion
filename (indico.modules.search.result_schemas.AttachmentResultSchem
attribute), 199 attribute), 72
field_type (indico.modules.events.surveys.models.items.SurveyItem
files (indico.modules.events.papers.models.papers.Paper
attribute), 251 attribute), 198
field_type (indico.modules.events.surveys.models.items.SurveyQuestion
filter (indico.modules.search.result_schemas.BucketSchema
attribute), 252 attribute), 68
field_type (indico.modules.events.surveys.models.items.SurveySection
filter_available() (in-
attribute), 252 dico.modules.rb.models.rooms.Room static
field_type (indico.modules.events.surveys.models.items.SurveyText method), 294
attribute), 253 filter_bookable_hours() (in-
field_values (indico.modules.events.abstracts.models.abstracts.Abstract
dico.modules.rb.models.rooms.Room static

422 Index
Indico Documentation, Release 3.2-dev

method), 294 first_name (indico.modules.events.registration.models.items.PersonalDa


filter_choices (in- attribute), 225
first_name (indico.modules.events.registration.models.registrations.Reg
dico.modules.events.contributions.models.fields.ContributionField
attribute), 173 attribute), 215
filter_field_values() (in module in- first_name (indico.modules.users.models.users.User
dico.modules.events.abstracts.util), 158 attribute), 277
filter_nonbookable_periods() (in- FirstNamePlaceholder (class in in-
dico.modules.rb.models.rooms.Room static dico.modules.events.persons.placeholders),
method), 294 213
filter_overlap() (in- FirstNamePlaceholder (class in in-
dico.modules.rb.models.reservation_occurrences.ReservationOccurrence
dico.modules.events.registration.placeholders.invitations),
static method), 304 234
filter_selectable_badges (in module in- FirstNamePlaceholder (class in in-
dico.core.signals.event), 85 dico.modules.events.registration.placeholders.registrations),
find_event_vc_rooms() (in module in- 233
dico.modules.vc.util), 318 fit_session_block_entry() (in module in-
find_excluded_days() (in- dico.modules.events.timetable.operations),
dico.modules.rb.models.reservations.Reservation 259
method), 302 fits_period() (in-
find_for_event() (in- dico.modules.rb.models.room_bookable_hours.BookableHours
dico.modules.vc.models.vc_rooms.VCRoomEventAssociationmethod), 297
class method), 317 flash_info_message() (in-
find_latest_entry_end_dt() (in module in- dico.modules.events.util.ListGeneratorBase
dico.modules.events.timetable.util), 260 method), 139
find_latest_for_event() (in- floor (indico.modules.rb.models.rooms.Room at-
dico.modules.events.requests.models.requests.Request tribute), 294
class method), 239 folder (indico.modules.attachments.models.attachments.Attachment
find_next_start_dt() (in module in- attribute), 285
dico.modules.events.timetable.util), 260 folder_created (in module in-
find_overlapping() (in- dico.core.signals.attachments), 82
dico.modules.rb.models.reservations.Reservation folder_deleted (in module in-
method), 302 dico.core.signals.attachments), 82
find_overlapping_with() (in- folder_id (indico.modules.attachments.models.attachments.Attachment
attribute), 285
dico.modules.rb.models.reservation_occurrences.ReservationOccurrence
class method), 304 folder_id (indico.modules.attachments.models.principals.AttachmentFo
find_overlapping_with() (in- attribute), 290
dico.modules.rb.models.reservations.Reservation folder_id (indico.modules.search.result_schemas.AttachmentResultSche
static method), 302 attribute), 72
find_with_attribute() (in- folder_updated (in module in-
dico.modules.rb.models.rooms.Room class dico.core.signals.attachments), 82
method), 294 for_user() (indico.modules.events.models.persons.EventPerson
finished (indico.modules.events.surveys.models.surveys.SurveyStateclass method), 128
attribute), 250 form (indico.modules.events.requests.base.RequestDefinitionBase
first_last (indico.modules.users.models.users.NameFormat attribute), 241
attribute), 275 form_defaults (in-
first_last_upper (in- dico.modules.events.requests.base.RequestDefinitionBase
dico.modules.users.models.users.NameFormat attribute), 241
attribute), 275 form_items (indico.modules.events.registration.models.forms.Registratio
first_name (indico.modules.events.models.persons.EventPerson attribute), 222
attribute), 128 form_validated (in module in-
first_name (indico.modules.events.models.persons.PersonLinkBase dico.core.signals.core), 83
attribute), 130 format_display_full_name() (in module in-
first_name (indico.modules.events.registration.models.invitations.RegistrationInvitation
dico.modules.users.models.users), 280
attribute), 224 format_feature_names() (in module in-

Index 423
Indico Documentation, Release 3.2-dev

dico.modules.events.features.util), 182 G
format_visibility() (in module in- generate_content() (in-
dico.modules.categories.util), 272 dico.modules.attachments.preview.MarkdownPreviewer
frame (indico.modules.events.abstracts.settings.BOALinkFormat class method), 292
attribute), 165 generate_content() (in-
friendly_data (in- dico.modules.attachments.preview.Previewer
dico.modules.events.contributions.models.fields.ContributionFieldValueBase
class method), 292
attribute), 174 generate_content() (in-
friendly_data (in- dico.modules.attachments.preview.TextPreviewer
dico.modules.events.registration.models.registrations.RegistrationData
class method), 293
attribute), 218 generate_name() (in-
friendly_id (indico.modules.events.abstracts.models.abstracts.Abstract
dico.modules.rb.models.rooms.Room method),
attribute), 145 295
friendly_id (indico.modules.events.contributions.models.contributions.Contribution
generate_pdf_from_sessions() (in module in-
attribute), 171 dico.modules.events.sessions.util), 248
friendly_id (indico.modules.events.contributions.models.subcontributions.SubContribution
generate_spreadsheet_from_abstracts()
attribute), 178 (in module in-
friendly_id (indico.modules.events.registration.models.registrations.Registration
dico.modules.events.abstracts.util), 158
attribute), 215 generate_spreadsheet_from_contributions()
friendly_id (indico.modules.events.sessions.models.sessions.Session (in module in-
attribute), 243 dico.modules.events.contributions.util), 181
friendly_id (indico.modules.events.surveys.models.submissions.SurveySubmission
generate_spreadsheet_from_occurrences()
attribute), 254 (in module indico.modules.rb.util), 305
friendly_name (in- generate_spreadsheet_from_registrations()
dico.modules.vc.plugins.VCPluginMixin (in module in-
attribute), 319 dico.modules.events.registration.util), 230
full_access (indico.modules.categories.models.principals.CategoryPrincipal
generate_spreadsheet_from_sessions() (in
attribute), 271 module indico.modules.events.sessions.util),
full_access (indico.modules.events.contributions.models.principals.ContributionPrincipal
248
attribute), 176 generate_spreadsheet_from_survey() (in
full_access (indico.modules.events.models.principals.EventPrincipal module indico.modules.events.surveys.util),
attribute), 131 255
full_access (indico.modules.events.sessions.models.principals.SessionPrincipal
generate_static_url() (in-
attribute), 246 dico.modules.events.util.ListGeneratorBase
full_access (indico.modules.events.tracks.models.principals.TrackPrincipal
method), 139
attribute), 264 generate_ticket() (in module in-
full_name (indico.modules.events.registration.models.registrations.Registration
dico.modules.events.registration.util), 230
attribute), 215 generate_ticket_qr_code (in module in-
full_name (indico.modules.rb.models.rooms.Room at- dico.core.signals.event), 85
tribute), 294 generate_ticket_qr_code() (in module in-
full_name (indico.modules.users.models.users.PersonMixin dico.modules.events.registration.util), 230
attribute), 275 get() (indico.modules.categories.settings.CategorySettingsProxy
full_title (indico.modules.events.models.reviews.ProposalGroupProxy method), 274
attribute), 133 get() (indico.modules.events.settings.EventACLProxy
full_title (indico.modules.events.sessions.models.blocks.SessionBlock
method), 142, 207
attribute), 245 get() (indico.modules.events.settings.EventSettingsProxy
full_title (indico.modules.events.tracks.models.tracks.Track method), 143, 208
attribute), 262 get() (indico.modules.users.models.settings.UserSettingsProxy
full_title_attr (in- method), 281
dico.modules.events.models.reviews.ProposalGroupProxy
get_access_list() (in-
attribute), 133 dico.modules.events.contributions.models.subcontributions.SubCo
full_title_with_group (in- method), 178
dico.modules.events.tracks.models.tracks.Track get_active_payment_plugins() (in module in-
attribute), 262 dico.modules.events.payment.util), 211

424 Index
Indico Documentation, Release 3.2-dev

get_admin_emails() (in module in- get_category_stats() (in module in-


dico.modules.users.util), 283 dico.modules.categories.util), 272
get_agreement_definitions() (in module in- get_category_timetable() (in module in-
dico.modules.events.agreements.util), 168 dico.modules.events.timetable.util), 260
get_all() (indico.modules.categories.settings.CategorySettingsProxy
get_client_id() (in-
method), 274 dico.core.oauth.models.applications.OAuthApplication
get_all() (indico.modules.events.settings.EventSettingsProxy method), 310
method), 143, 208 get_cloners (in module in-
get_all() (indico.modules.users.models.settings.UserSettingsProxydico.core.signals.event_management), 88
method), 282 get_color_for_user_id() (in module in-
get_all_for_event() (in- dico.modules.users.util), 283
dico.modules.events.registration.models.registrations.Registration
get_conditions (in module in-
class method), 215 dico.core.signals.core), 83
get_all_templates() (in module in- get_conference_themes (in module in-
dico.modules.designer.util), 322 dico.core.signals.plugin), 88
get_all_user_roles() (in module in- get_conflicting_occurrences() (in-
dico.modules.events.util), 140 dico.modules.rb.models.reservations.Reservation
get_allowed_scope() (in- method), 302
dico.core.oauth.models.applications.OAuthApplication
get_contribs_by_year() (in module in-
method), 310 dico.modules.categories.util), 272
get_allowed_sender_emails() (in- get_contribution() (in-
dico.modules.events.models.events.Event dico.modules.events.models.events.Event
method), 123 method), 124
get_attached_folders() (in module in- get_contribution_field() (in-
dico.modules.attachments.util), 291 dico.modules.events.models.events.Event
get_attached_items() (in module in- method), 124
dico.modules.attachments.util), 291 get_contributions_for_person() (in module
get_attachment_count() (in module in- indico.modules.events.contributions.util), 181
dico.modules.categories.util), 272 get_contributions_with_paper_submitted_by_user()
get_attribute_by_name() (in- (in module indico.modules.events.papers.util),
dico.modules.rb.models.rooms.Room method), 206
295 get_contributions_with_user_as_submitter()
get_attribute_value() (in- (in module in-
dico.modules.rb.models.rooms.Room method), dico.modules.events.contributions.util), 181
295 get_css_file_data() (in module in-
get_auth_time() (in- dico.modules.events.layout.util), 187
dico.core.oauth.models.tokens.OAuth2AuthorizationCode
get_css_url() (in module in-
method), 312 dico.modules.events.layout.util), 187
get_avatar_url_from_name() (in module in- get_data() (indico.modules.logs.renderers.EventLogRendererBase
dico.modules.users.util), 283 class method), 190
get_badge_format() (in module in- get_data() (indico.modules.logs.renderers.SimpleRenderer
dico.modules.designer.util), 322 class method), 191
get_blocked_rooms() (in- get_default_badge_on_category() (in mod-
dico.modules.rb.models.rooms.Room method), ule indico.modules.designer.util), 322
295 get_default_folder_names() (in module in-
get_blueprints (in module in- dico.modules.attachments.util), 292
dico.core.signals.plugin), 88 get_default_redirect_uri() (in-
get_blueprints() (in- dico.core.oauth.models.applications.OAuthApplication
dico.core.plugins.IndicoPlugin method), method), 310
78 get_default_ticket_on_category() (in mod-
get_boa_export_formats() (in module in- ule indico.modules.designer.util), 322
dico.modules.events.contributions.util), 181 get_definitions (in module in-
get_booking_params_for_event() (in module dico.core.signals.agreements), 82
indico.modules.rb.util), 305 get_delete_comment_url() (in-

Index 425
Indico Documentation, Release 3.2-dev

dico.modules.events.models.reviews.ProposalMixin get_events_with_submitted_surveys() (in


method), 134 module indico.modules.events.surveys.util),
get_disallowed_features() (in module in- 255
dico.modules.events.features.util), 182 get_expires_in() (in-
get_download_url() (in- dico.core.oauth.models.tokens.TokenModelBase
dico.modules.attachments.models.attachments.Attachment method), 313
method), 285 get_extra_delete_msg() (in-
get_editable() (in- dico.modules.vc.plugins.VCPluginMixin
method), 319
dico.modules.events.contributions.models.contributions.Contribution
method), 171 get_feature_definition() (in module in-
get_enabled_features() (in module in- dico.modules.events.features.util), 182
dico.modules.events.features.util), 182 get_feature_definitions (in module in-
get_event() (in module in- dico.core.signals.event), 85
dico.modules.attachments.util), 292 get_feature_definitions() (in module in-
get_event_from_url() (in module in- dico.modules.events.features.util), 182
dico.modules.events.util), 140 get_field_value() (in-
get_event_management_url() (in- dico.modules.events.contributions.models.contributions.CustomFi
dico.modules.events.payment.plugins.PaymentPluginMixin method), 173
method), 211 get_field_values() (in module in-
get_event_regforms() (in module in- dico.modules.events.util), 140
dico.modules.events.registration.util), 230 get_fields (in module indico.core.signals.core), 83
get_event_regforms_registrations() get_file_previewer() (in module in-
(in module in- dico.modules.attachments.preview), 293
dico.modules.events.registration.util), 230 get_file_previewers (in module in-
get_event_request_definitions (in module dico.core.signals.attachments), 82
indico.core.signals.plugin), 88 get_file_previewers() (in module in-
get_event_section_data() (in module in- dico.modules.attachments.preview), 293
dico.modules.events.registration.util), 231 get_flat_section_positions_setup_data()
get_event_themes_files (in module in- (in module in-
dico.core.signals.plugin), 88 dico.modules.events.registration.util), 231
get_events_by_year() (in module in- get_flat_section_setup_data() (in module
dico.modules.categories.util), 272 indico.modules.events.registration.util), 231
get_events_created_by() (in module in- get_flat_section_submission_data()
dico.modules.events.util), 140 (in module in-
get_events_managed_by() (in module in- dico.modules.events.registration.util), 231
dico.modules.events.util), 140 get_for_event() (in-
get_events_registered() (in module in- dico.modules.events.layout.models.menu.MenuEntry
dico.modules.events.registration.util), 231 static method), 184
get_events_with_abstract_persons() (in get_for_linked_object() (in-
module indico.modules.events.abstracts.util), dico.modules.attachments.models.folders.AttachmentFolder
158 class method), 288
get_events_with_abstract_reviewer_convener() get_for_linked_object() (in-
(in module in- dico.modules.events.notes.models.notes.EventNote
dico.modules.events.abstracts.util), 158 class method), 192
get_events_with_linked_contributions() get_format_placeholders() (in module in-
(in module in- dico.modules.rb.util), 305
dico.modules.events.contributions.util), 181 get_friendly_data() (in-
get_events_with_linked_event_persons() dico.modules.events.registration.models.form_fields.RegistrationF
(in module indico.modules.events.util), 140 method), 219
get_events_with_linked_sessions() (in get_friendly_data() (in-
module indico.modules.events.sessions.util), dico.modules.events.registration.models.registrations.Registration
248 method), 218
get_events_with_paper_roles() (in module get_full_name() (in-
indico.modules.events.papers.util), 206 dico.modules.events.registration.models.registrations.Registration

426 Index
Indico Documentation, Release 3.2-dev

method), 215 get_logo_data() (in module in-


get_full_name() (in- dico.modules.events.layout.util), 187
dico.modules.users.models.users.PersonMixin get_managed_vc_plugins() (in module in-
method), 275 dico.modules.vc.util), 318
get_full_name() (in- get_management_permissions (in module in-
dico.modules.users.models.users.User dico.core.signals.acl), 81
method), 277 get_manager_list() (in-
get_gravatar_for_user() (in module in- dico.modules.events.contributions.models.subcontributions.SubCo
dico.modules.users.util), 283 method), 178
get_hidden_events() (in- get_manager_notification_emails() (in-
dico.modules.categories.models.categories.Category dico.modules.events.requests.base.RequestDefinitionBase
method), 267 class method), 241
get_highest (indico.modules.events.contributions.models.persons.AuthorType
get_members() (in-
attribute), 175 dico.modules.groups.core.GroupProxy
get_icon_data_cte() (in- method), 315
get_menu_entries_from_signal() (in module
dico.modules.categories.models.categories.Category
class method), 267 indico.modules.events.layout.util), 187
get_identity() (in- get_menu_entry_by_name() (in module in-
dico.modules.users.models.users.User dico.modules.events.layout.util), 187
method), 277 get_merged_from_users_recursive()
get_image_data() (in module in- (indico.modules.users.models.users.User
dico.modules.categories.util), 272 method), 277
get_image_placeholder_types() (in module get_message() (in-
indico.modules.designer.util), 322 dico.modules.rb.models.reservations.RepeatMapping
get_inherited_templates() (in module in- class method), 300
dico.modules.designer.util), 322 get_method_name() (in-
get_invalid_regforms() (in- dico.modules.events.payment.plugins.PaymentPluginMixin
dico.modules.events.payment.plugins.PaymentPluginMixin method), 211
method), 211 get_min_year() (in module in-
get_label_markup() (in- dico.modules.categories.util), 272
dico.modules.events.models.events.Event get_nested_entries() (in module in-
method), 124 dico.modules.events.timetable.util), 261
get_last_revision() (in- get_nested_placeholder_options() (in mod-
dico.modules.events.models.reviews.ProposalMixin ule indico.modules.designer.util), 322
method), 134 get_next_position() (in module in-
get_last_revision() (in- dico.modules.events.tracks.models.tracks),
dico.modules.events.papers.models.papers.Paper 263
method), 198 get_non_inheriting_objects() (in-
get_linked_events() (in module in- dico.modules.events.contributions.models.contributions.Contribut
dico.modules.users.util), 283 method), 171
get_linked_for_event() (in- get_non_inheriting_objects() (in-
dico.modules.vc.models.vc_rooms.VCRoomEventAssociationdico.modules.events.models.events.Event
class method), 317 method), 124
get_linked_object() (in module in- get_non_inheriting_objects() (in-
dico.modules.rb.util), 305 dico.modules.events.sessions.models.sessions.Session
get_linked_to_description() (in module in- method), 243
dico.modules.vc.util), 318 get_nonce() (indico.core.oauth.models.tokens.OAuth2AuthorizationCod
get_list_url() (in- method), 312
dico.modules.events.util.ListGeneratorBase get_not_deletable_templates() (in module
method), 139 indico.modules.designer.util), 322
get_log_renderers (in module in- get_notification_bcc_list() (in-
dico.core.signals.event), 85 dico.modules.vc.plugins.VCPluginMixin
get_log_renderers() (in module in- method), 319
dico.modules.logs.util), 190 get_notification_cc_list() (in-

Index 427
Indico Documentation, Release 3.2-dev

dico.modules.vc.plugins.VCPluginMixin dico.core.plugins), 80
method), 319 get_prebooking_collisions() (in module in-
get_notification_reply_email() (in- dico.modules.rb.util), 305
dico.modules.events.requests.base.RequestDefinitionBase
get_protection_cte() (in-
class method), 241 dico.modules.categories.models.categories.Category
get_notification_template() (in- class method), 267
dico.modules.events.requests.base.RequestDefinitionBase
get_protection_parent_cte() (in-
class method), 241 dico.modules.categories.models.categories.Category
get_object_from_args() (in module in- method), 267
dico.modules.events.util), 140 get_published_registrations() (in module
get_or_create() (in- indico.modules.events.registration.util), 231
dico.modules.attachments.models.folders.AttachmentFolder
get_questions_for_review_type() (in-
class method), 288 dico.modules.events.papers.models.call_for_papers.CallForPaper
get_or_create() (in- method), 195
dico.modules.events.notes.models.notes.EventNoteget_random_color() (in module in-
class method), 193 dico.modules.events.util), 141
get_or_create_default() (in- get_recent_news() (in module in-
dico.modules.attachments.models.folders.AttachmentFolder dico.modules.news.util), 331
class method), 288 get_redirect_uri() (in-
get_overlap() (in- dico.core.oauth.models.tokens.OAuth2AuthorizationCode
method), 312
dico.modules.rb.models.reservation_occurrences.ReservationOccurrence
method), 304 get_registered_event_persons() (in module
get_overridden_value() (in- indico.modules.events.registration.util), 231
dico.web.forms.fields.OverrideMultipleItemsField get_registration() (in-
method), 347 dico.modules.events.registration.models.forms.RegistrationForm
get_participant_list_columns() (in- method), 222
get_registrations_with_tickets() (in mod-
dico.modules.events.registration.settings.RegistrationSettingsProxy
method), 235 ule indico.modules.events.registration.util), 231
get_participant_list_form_ids() (in- get_related_categories() (in module in-
dico.modules.users.util), 283
dico.modules.events.registration.settings.RegistrationSettingsProxy
method), 235 get_relative_event_ids() (in-
get_payment_plugins() (in module in- dico.modules.events.models.events.Event
dico.modules.events.payment.util), 211 method), 124
get_pdf() (indico.modules.designer.pdf.DesignerPDFBase get_request_definitions() (in module in-
method), 322 dico.modules.events.requests.util), 240
get_permissions_for_user() (in- get_resized_room_photo() (in module in-
dico.modules.rb.models.rooms.Room class dico.modules.rb.util), 305
method), 295 get_reviewed_for_groups() (in-
get_personal_data() (in- dico.modules.events.abstracts.models.abstracts.Abstract
method), 145
dico.modules.events.registration.models.registrations.Registration
method), 215 get_reviewed_for_groups() (in-
get_personal_data_field_id() (in- dico.modules.events.models.reviews.ProposalRevisionMixin
method), 135
dico.modules.events.registration.models.forms.RegistrationForm
method), 222 get_reviewed_for_groups() (in-
get_placeholder_options() (in module in- dico.modules.events.papers.models.revisions.PaperRevision
dico.modules.designer.util), 322 method), 203
get_placeholders (in module in- get_reviewer_render_data() (in-
dico.core.signals.core), 83 dico.modules.events.models.reviews.ProposalRevisionMixin
get_placeholders() (in- method), 135
dico.modules.search.base.IndicoSearchProvider get_reviewing_state() (in-
method), 69, 70 dico.modules.events.papers.models.call_for_papers.CallForPaper
get_plugin_conference_themes() (in module method), 195
indico.modules.events.layout.util), 187 get_reviews() (in-
get_plugin_template_module() (in module in- dico.modules.events.models.reviews.ProposalRevisionMixin

428 Index
Indico Documentation, Release 3.2-dev

method), 135 method), 70


get_reviews() (in- get_sorted_tracks() (in-
dico.modules.events.papers.models.revisions.PaperRevision dico.modules.events.models.events.Event
method), 203 method), 124
get_revisions() (in- get_spotlight_file() (in-
dico.modules.events.models.reviews.ProposalMixin dico.modules.events.papers.models.revisions.PaperRevision
method), 134 method), 203
get_revisions() (in- get_storage_backends (in module in-
dico.modules.events.papers.models.papers.Paper dico.core.signals.core), 84
method), 198 get_suggested_categories() (in module in-
get_root() (indico.modules.categories.models.categories.Categorydico.modules.users.util), 283
class method), 267 get_summary() (in-
get_row_key() (in- dico.modules.events.surveys.models.items.SurveyQuestion
dico.web.forms.fields.OverrideMultipleItemsField method), 252
method), 347 get_system_user() (in-
get_save_comment_url() (in- dico.modules.users.models.users.User static
dico.modules.events.models.reviews.ProposalMixin method), 277
method), 134 get_table() (indico.modules.events.registration.stats.FieldStats
get_save_judgment_url() (in- method), 237
dico.modules.events.models.reviews.ProposalMixin get_template_customization_paths (in mod-
method), 134 ule indico.core.signals.plugin), 88
get_save_review_url() (in- get_theme() (in module indico.modules.events.util),
dico.modules.events.models.reviews.ProposalMixin 141
method), 134 get_themes_for() (in-
get_scheduled_notes() (in module in- dico.modules.events.settings.ThemeSettingsProxy
dico.modules.events.notes.util), 194 method), 144, 209
get_scope() (indico.core.oauth.models.tokens.OAuth2AuthorizationCode
get_ticket_attachments() (in module in-
method), 312 dico.modules.events.registration.util), 231
get_scope() (indico.core.oauth.models.tokens.OAuthToken get_time_changes_notifications() (in mod-
method), 313 ule indico.modules.events.timetable.util), 261
get_search_provider() (in module in- get_timeline() (in-
dico.modules.search.base), 70 dico.modules.events.abstracts.models.abstracts.Abstract
get_search_providers (in module in- method), 145
dico.core.signals.core), 84 get_timeline() (in-
get_session() (in- dico.modules.events.models.reviews.ProposalRevisionMixin
dico.modules.events.models.events.Event method), 135
method), 124 get_timeline() (in-
get_session_block() (in- dico.modules.events.papers.models.revisions.PaperRevision
dico.modules.events.models.events.Event method), 203
method), 124 get_timetable_offline_pdf_generator()
get_session_block_entries() (in module in- (in module in-
dico.modules.events.timetable.util), 261 dico.modules.events.timetable.util), 261
get_session_timetable_pdf() (in module in- get_title() (indico.modules.events.registration.models.items.PersonalD
dico.modules.events.sessions.util), 248 method), 225
get_sessions_for_user() (in module in- get_title_uuid() (in module in-
dico.modules.events.sessions.util), 248 dico.modules.events.registration.util), 231
get_short_name() (in- get_top_level_entries() (in module in-
dico.modules.rb.models.reservations.RepeatMapping dico.modules.events.timetable.util), 261
class method), 300 get_track_question_scores() (in-
get_sibling_entry() (in module in- dico.modules.events.abstracts.models.abstracts.Abstract
dico.modules.events.timetable.operations), method), 145
259 get_track_reviewer_abstract_counts() (in
get_sort_options() (in- module indico.modules.events.abstracts.util),
dico.modules.search.base.IndicoSearchProvider 158

Index 429
Indico Documentation, Release 3.2-dev

get_track_reviewing_state() (in- gravatar (indico.modules.users.models.users.ProfilePictureSource


dico.modules.events.abstracts.models.abstracts.Abstract attribute), 276
method), 146 group (indico.modules.designer.placeholders.CategoryTitlePlaceholder
get_track_score() (in- attribute), 328
group (indico.modules.designer.placeholders.EventDatesPlaceholder
dico.modules.events.abstracts.models.abstracts.Abstract
method), 146 attribute), 323
get_tree_cte() (in- group (indico.modules.designer.placeholders.EventDescriptionPlaceholde
dico.modules.categories.models.categories.Category attribute), 323
class method), 267 group (indico.modules.designer.placeholders.EventLogoPlaceholder
get_unlisted_events() (in module in- attribute), 329
dico.modules.users.util), 283 group (indico.modules.designer.placeholders.EventOrgTextPlaceholder
get_upcoming_events() (in module in- attribute), 324
dico.modules.categories.util), 272 group (indico.modules.designer.placeholders.EventRoomPlaceholder
get_user_abstracts() (in module in- attribute), 328
dico.modules.events.abstracts.util), 159 group (indico.modules.designer.placeholders.EventSpeakersPlaceholder
get_user_by_email() (in module in- attribute), 328
dico.modules.users.util), 283 group (indico.modules.designer.placeholders.EventTitlePlaceholder
get_user_contributions_to_review() (in attribute), 327
module indico.modules.events.papers.util), 206 group (indico.modules.designer.placeholders.EventVenuePlaceholder
get_user_reviewed_contributions() (in attribute), 328
module indico.modules.events.papers.util), 206 group (indico.modules.designer.placeholders.RegistrationTicketQRPlaceho
get_user_submittable_contributions() (in attribute), 325
module indico.modules.events.papers.util), 206 group (indico.modules.events.models.reviews.ProposalReviewMixin
get_user_tracks() (in module in- attribute), 134
dico.modules.events.abstracts.util), 159 group (indico.modules.groups.core.GroupProxy at-
get_vars_js() (indico.core.plugins.IndicoPlugin tribute), 315
method), 78 group_attr (indico.modules.events.abstracts.models.reviews.AbstractRe
get_vc_plugins() (in module in- attribute), 156
dico.modules.vc.util), 318 group_attr (indico.modules.events.models.reviews.ProposalReviewMixi
get_vc_room_attach_form_defaults() attribute), 134
(indico.modules.vc.plugins.VCPluginMixin group_attr (indico.modules.events.papers.models.reviews.PaperReview
method), 319 attribute), 201
get_vc_room_form_defaults() (in- group_by_occurrence_date() (in module in-
dico.modules.vc.plugins.VCPluginMixin dico.modules.rb.util), 305
method), 319 group_id (indico.modules.networks.models.networks.IPNetwork
get_verbose_title() (in- attribute), 329
dico.modules.events.models.events.Event group_proxy_cls (in-
method), 124 dico.modules.events.models.reviews.ProposalReviewMixin
get_visibility_options() (in module in- attribute), 134
dico.modules.categories.util), 273 group_proxy_cls (in-
get_visible_categories_cte() (in- dico.modules.events.papers.models.reviews.PaperReview
dico.modules.categories.models.categories.Category attribute), 201
static method), 268 GroupProxy (class in indico.modules.groups.core),
get_visible_reviewed_for_tracks() (in 314
module indico.modules.events.abstracts.util),
159 H
get_with_data() (in- happens_between() (in-
dico.modules.rb.models.reservations.Reservation dico.modules.events.models.events.Event
static method), 302 method), 124
get_with_data() (in- has_attribute() (in-
dico.modules.rb.models.rooms.Room static dico.modules.rb.models.rooms.Room method),
method), 295 295
getBody() (indico.modules.events.sessions.util.SessionListToPDF
has_conflict() (in-
method), 247 dico.modules.events.registration.models.registrations.Registration

430 Index
Indico Documentation, Release 3.2-dev

method), 215 dico.modules.events.sessions.util), 248


has_contributions_with_user_as_submitter() has_started (indico.modules.events.abstracts.models.call_for_abstracts
(in module in- attribute), 148
dico.modules.events.contributions.util), 181 has_started (indico.modules.events.papers.models.call_for_papers.Cal
has_contributions_with_user_paper_submission_rights() attribute), 195
(in module indico.modules.events.papers.util), has_started (indico.modules.events.registration.models.forms.Registrat
206 attribute), 222
has_custom_boa (in- has_started (indico.modules.events.surveys.models.surveys.Survey
dico.modules.events.models.events.Event attribute), 249
attribute), 124 has_stylesheet (in-
has_effective_icon (in- dico.modules.events.models.events.Event
dico.modules.categories.models.categories.Category attribute), 124
attribute), 268 has_user_reviewed() (in-
has_ended (indico.modules.events.abstracts.models.call_for_abstracts.CallForAbstracts
dico.modules.events.papers.models.revisions.PaperRevision
attribute), 148 method), 203
has_ended (indico.modules.events.models.events.Event has_user_tracks() (in module in-
attribute), 124 dico.modules.events.abstracts.util), 159
has_ended (indico.modules.events.papers.models.call_for_papers.CallForPapers
height (indico.modules.designer.pdf.TplData at-
attribute), 195 tribute), 323
has_ended (indico.modules.events.registration.models.forms.RegistrationForm
height_cm (indico.modules.designer.pdf.TplData at-
attribute), 222 tribute), 323
has_ended (indico.modules.events.surveys.models.surveys.Survey
HELP_URL (built-in variable), 51
attribute), 249 hidden (indico.modules.networks.models.networks.IPNetworkGroup
has_equipment() (in- attribute), 329
dico.modules.rb.models.rooms.Room method), HiddenEnumField (class in indico.web.forms.fields),
295 345
has_feature() (in- HiddenFieldList (class in indico.web.forms.fields),
dico.modules.events.models.events.Event 339
method), 124 hide_participant_list (in module in-
has_files (indico.modules.events.registration.models.registrations.Registration
dico.core.signals.event), 85
attribute), 216 highlight (indico.modules.search.result_schemas.ContributionResultSch
has_icon (indico.modules.categories.models.categories.Category attribute), 72
attribute), 268 highlight (indico.modules.search.result_schemas.EventNoteResultSchem
has_logo (indico.modules.categories.models.categories.Category attribute), 73
attribute), 268 highlight (indico.modules.search.result_schemas.EventResultSchema
has_logo (indico.modules.events.models.events.Event attribute), 71
attribute), 124 HighlightSchema (class in in-
has_member() (indico.modules.groups.core.GroupProxy dico.modules.search.result_schemas), 73
method), 315 html (indico.modules.events.layout.models.menu.EventPage
has_note (indico.modules.events.sessions.models.blocks.SessionBlock
attribute), 183
attribute), 245 html (indico.modules.events.notes.models.notes.EventNote
has_photo (indico.modules.rb.models.rooms.Room at- attribute), 193
tribute), 295 html (indico.modules.events.notes.models.notes.EventNoteRevision
has_picture (indico.modules.users.models.users.User attribute), 194
attribute), 277 html_field_name (in-
has_published_editables (in- dico.modules.events.registration.models.form_fields.RegistrationF
attribute), 219
dico.modules.events.contributions.models.contributions.Contribution
attribute), 171 html_field_name (in-
has_regform_in_acl (in- dico.modules.events.registration.models.form_fields.RegistrationF
dico.modules.events.models.events.Event attribute), 221
attribute), 124 html_matches() (in-
has_role() (indico.modules.events.models.persons.EventPerson dico.modules.events.notes.models.notes.EventNote
method), 128 class method), 193
has_sessions_for_user() (in module in-

Index 431
Indico Documentation, Release 3.2-dev

I id (indico.modules.events.abstracts.models.review_questions.AbstractRevie
icon (indico.modules.categories.models.categories.Category attribute), 154
attribute), 268 id (indico.modules.events.abstracts.models.review_ratings.AbstractReviewR
icon_metadata (in- attribute), 154
id
dico.modules.categories.models.categories.Category (indico.modules.events.abstracts.models.reviews.AbstractReview
attribute), 268 attribute), 156
id
icon_url (indico.modules.categories.models.categories.Category(indico.modules.events.abstracts.settings.BOASortField
attribute), 268 attribute), 166
icon_url (indico.modules.vc.plugins.VCPluginMixin id (indico.modules.events.agreements.models.agreements.Agreement
attribute), 319 attribute), 167
id (indico.core.oauth.models.applications.OAuthApplication id (indico.modules.events.contributions.models.contributions.Contribution
attribute), 311 attribute), 171
id (indico.modules.events.contributions.models.fields.ContributionField
id (indico.core.oauth.models.applications.OAuthApplicationUserLink
attribute), 311 attribute), 173
id (indico.core.oauth.models.tokens.OAuthToken at- id (indico.modules.events.contributions.models.persons.ContributionPerson
tribute), 313 attribute), 175
id (indico.core.oauth.models.tokens.TokenModelBase id (indico.modules.events.contributions.models.persons.SubContributionPe
attribute), 314 attribute), 176
id
id (indico.modules.attachments.models.attachments.Attachment (indico.modules.events.contributions.models.principals.ContributionPrin
attribute), 286 attribute), 176
id (indico.modules.events.contributions.models.references.ContributionRef
id (indico.modules.attachments.models.attachments.AttachmentFile
attribute), 287 attribute), 177
id
id (indico.modules.attachments.models.folders.AttachmentFolder(indico.modules.events.contributions.models.references.SubContribution
attribute), 288 attribute), 177
id (indico.modules.events.contributions.models.subcontributions.SubContr
id (indico.modules.attachments.models.principals.AttachmentFolderPrincipal
attribute), 290 attribute), 178
id (indico.modules.events.contributions.models.types.ContributionType
id (indico.modules.attachments.models.principals.AttachmentPrincipal
attribute), 291 attribute), 179
id (indico.modules.auth.models.identities.Identity id (indico.modules.events.layout.models.images.ImageFile
attribute), 306 attribute), 183
id (indico.modules.events.layout.models.menu.EventPage
id (indico.modules.auth.models.registration_requests.RegistrationRequest
attribute), 307 attribute), 184
id (indico.modules.categories.models.categories.Category id (indico.modules.events.layout.models.menu.MenuEntry
attribute), 268 attribute), 184
id (indico.modules.events.layout.models.menu.TransientMenuEntry
id (indico.modules.categories.models.principals.CategoryPrincipal
attribute), 271 attribute), 185
id
id (indico.modules.categories.models.settings.CategorySetting (indico.modules.events.models.events.Event at-
attribute), 271 tribute), 124
id (indico.modules.designer.models.images.DesignerImageFileid (indico.modules.events.models.persons.EventPerson
attribute), 321 attribute), 128
id (indico.modules.events.models.persons.EventPersonLink
id (indico.modules.designer.models.templates.DesignerTemplate
attribute), 321 attribute), 129
id (indico.modules.events.models.persons.PersonLinkBase
id (indico.modules.events.abstracts.models.abstracts.Abstract
attribute), 146 attribute), 130
id (indico.modules.events.models.principals.EventPrincipal
id (indico.modules.events.abstracts.models.comments.AbstractComment
attribute), 149 attribute), 131
id (indico.modules.events.models.references.EventReference
id (indico.modules.events.abstracts.models.email_logs.AbstractEmailLogEntry
attribute), 150 attribute), 131
id (indico.modules.events.models.references.ReferenceModelBase
id (indico.modules.events.abstracts.models.email_templates.AbstractEmailTemplate
attribute), 151 attribute), 132
id
id (indico.modules.events.abstracts.models.files.AbstractFile (indico.modules.events.models.references.ReferenceType
attribute), 152 attribute), 132
id (indico.modules.events.models.reviews.ProposalGroupProxy
id (indico.modules.events.abstracts.models.persons.AbstractPersonLink
attribute), 153 attribute), 133

432 Index
Indico Documentation, Release 3.2-dev

id (indico.modules.events.models.series.EventSeries at- id (indico.modules.events.sessions.models.blocks.SessionBlock


tribute), 135 attribute), 245
id (indico.modules.events.models.settings.EventSetting id (indico.modules.events.sessions.models.persons.SessionBlockPersonLink
attribute), 135 attribute), 246
id (indico.modules.events.models.settings.EventSettingPrincipal
id (indico.modules.events.sessions.models.principals.SessionPrincipal
attribute), 136 attribute), 246
id (indico.modules.events.models.static_list_links.StaticListLink
id (indico.modules.events.sessions.models.sessions.Session
attribute), 137 attribute), 243
id (indico.modules.events.notes.models.notes.EventNote id (indico.modules.events.static.models.static.StaticSite
attribute), 193 attribute), 265
id (indico.modules.events.notes.models.notes.EventNoteRevision
id (indico.modules.events.surveys.models.items.SurveyItem
attribute), 194 attribute), 251
id (indico.modules.events.papers.models.comments.PaperReviewComment
id (indico.modules.events.surveys.models.items.SurveyQuestion
attribute), 196 attribute), 252
id (indico.modules.events.papers.models.competences.PaperCompetence
id (indico.modules.events.surveys.models.items.SurveySection
attribute), 197 attribute), 252
id (indico.modules.events.papers.models.files.PaperFile id (indico.modules.events.surveys.models.items.SurveyText
attribute), 197 attribute), 253
id (indico.modules.events.papers.models.review_questions.PaperReviewQuestion
id (indico.modules.events.surveys.models.submissions.SurveySubmission
attribute), 199 attribute), 254
id (indico.modules.events.papers.models.review_ratings.PaperReviewRating
id (indico.modules.events.surveys.models.surveys.Survey
attribute), 200 attribute), 249
id (indico.modules.events.papers.models.reviews.PaperReview id (indico.modules.events.timetable.models.breaks.Break
attribute), 201 attribute), 256
id (indico.modules.events.papers.models.revisions.PaperRevision
id (indico.modules.events.timetable.models.entries.TimetableEntry
attribute), 203 attribute), 258
id (indico.modules.events.papers.models.templates.PaperTemplate
id (indico.modules.events.tracks.models.principals.TrackPrincipal
attribute), 204 attribute), 264
id (indico.modules.events.payment.models.transactions.PaymentTransaction
id (indico.modules.events.tracks.models.tracks.Track at-
attribute), 209 tribute), 262
id (indico.modules.events.registration.models.form_fields.RegistrationFormField
id (indico.modules.groups.models.groups.LocalGroup
attribute), 219 attribute), 314
id (indico.modules.events.registration.models.form_fields.RegistrationFormFieldData
id (indico.modules.logs.models.entries.CategoryLogEntry
attribute), 220 attribute), 187
id (indico.modules.events.registration.models.form_fields.RegistrationFormPersonalDataField
id (indico.modules.logs.models.entries.EventLogEntry
attribute), 221 attribute), 188
id (indico.modules.events.registration.models.forms.RegistrationForm
id (indico.modules.logs.models.entries.LogEntryBase
attribute), 222 attribute), 189
id (indico.modules.events.registration.models.invitations.RegistrationInvitation
id (indico.modules.networks.models.networks.IPNetworkGroup
attribute), 224 attribute), 330
id (indico.modules.events.registration.models.items.RegistrationFormItem
id (indico.modules.news.models.news.NewsItem at-
attribute), 226 tribute), 330
id (indico.modules.events.registration.models.items.RegistrationFormPersonalDataSection
id (indico.modules.rb.models.blocked_rooms.BlockedRoom
attribute), 227 attribute), 298
id (indico.modules.events.registration.models.items.RegistrationFormSection
id (indico.modules.rb.models.blocking_principals.BlockingPrincipal
attribute), 228 attribute), 299
id (indico.modules.events.registration.models.items.RegistrationFormText
id (indico.modules.rb.models.blockings.Blocking at-
attribute), 229 tribute), 298
id (indico.modules.events.registration.models.registrations.Registration
id (indico.modules.rb.models.equipment.EquipmentType
attribute), 216 attribute), 299
id (indico.modules.events.reminders.models.reminders.EventReminder
id (indico.modules.rb.models.locations.Location at-
attribute), 238 tribute), 299
id (indico.modules.events.requests.models.requests.Requestid (indico.modules.rb.models.map_areas.MapArea at-
attribute), 240 tribute), 300

Index 433
Indico Documentation, Release 3.2-dev

id (indico.modules.rb.models.photos.Photo attribute), ImageFile (class in in-


300 dico.modules.events.layout.models.images),
id (indico.modules.rb.models.reservation_edit_logs.ReservationEditLog 183
attribute), 304 ImagePreviewer (class in in-
id (indico.modules.rb.models.reservations.Reservation dico.modules.attachments.preview), 292
attribute), 302 impersonate_user() (in module in-
id (indico.modules.rb.models.reservations.ReservationLink dico.modules.auth.util), 308
attribute), 303 import_contributions_from_csv() (in mod-
id (indico.modules.rb.models.room_attributes.RoomAttribute ule indico.modules.events.contributions.util),
attribute), 296 181
id (indico.modules.rb.models.rooms.Room attribute), import_invitations_from_csv() (in module
295 indico.modules.events.registration.util), 231
id (indico.modules.users.models.affiliations.UserAffiliation import_registrations_from_csv() (in mod-
attribute), 280 ule indico.modules.events.registration.util), 232
id (indico.modules.users.models.emails.UserEmail at- import_tasks (in module indico.core.signals.core),
tribute), 280 84
id (indico.modules.users.models.settings.UserSetting at- import_user_records_from_csv() (in module
tribute), 281 indico.modules.events.registration.util), 232
id (indico.modules.users.models.users.User attribute), imported (in module indico.core.signals.event), 85
277 in_progress (indico.modules.events.abstracts.models.abstracts.Abstract
id (indico.modules.vc.models.vc_rooms.VCRoom at- attribute), 147
tribute), 316 include_authors (in-
id (indico.modules.vc.models.vc_rooms.VCRoomEventAssociation dico.modules.events.abstracts.models.email_templates.AbstractEm
attribute), 317 attribute), 151
identicon (indico.modules.users.models.users.ProfilePictureSource
include_coauthors (in-
attribute), 276 dico.modules.events.abstracts.models.email_templates.AbstractEm
identifier (indico.modules.auth.models.identities.Identity attribute), 151
attribute), 306 include_description (in-
identifier (indico.modules.events.agreements.models.agreements.Agreement
dico.modules.events.reminders.models.reminders.EventReminder
attribute), 167 attribute), 238
identifier (indico.modules.events.models.persons.EventPerson include_submitter (in-
attribute), 128 dico.modules.events.abstracts.models.email_templates.AbstractEm
identifier (indico.modules.events.registration.models.forms.RegistrationForm
attribute), 151
attribute), 222 include_summary (in-
identifier (indico.modules.groups.core.GroupProxy dico.modules.events.reminders.models.reminders.EventReminder
attribute), 315 attribute), 238
identifier (indico.modules.users.models.users.User indico.core.oauth (module), 308
attribute), 277 indico.core.oauth.models.applications
identities (indico.modules.users.models.users.User (module), 308
attribute), 277 indico.core.oauth.models.tokens (module),
Identity (class in in- 311
dico.modules.auth.models.identities), 306 indico.core.plugins (module), 77
identity_data (in- indico.modules.attachments (module), 285
dico.modules.auth.models.registration_requests.RegistrationRequest
indico.modules.attachments.models.attachments
attribute), 307 (module), 285
IDENTITY_PROVIDERS (built-in variable), 48 indico.modules.attachments.models.folders
IDPlaceholder (class in in- (module), 287
dico.modules.events.registration.placeholders.registrations),
indico.modules.attachments.models.principals
233 (module), 289
IgnoredTransactionAction, 209 indico.modules.attachments.operations
image_created (in module in- (module), 291
dico.core.signals.event_management), 88 indico.modules.attachments.preview (mod-
image_deleted (in module in- ule), 292
dico.core.signals.event_management), 88 indico.modules.attachments.util (module),

434 Index
Indico Documentation, Release 3.2-dev

291 indico.modules.events.abstracts.models.related_trac
indico.modules.auth (module), 306 (module), 153
indico.modules.auth.models.identities indico.modules.events.abstracts.models.review_quest
(module), 306 (module), 153
indico.modules.auth.models.registration_requests
indico.modules.events.abstracts.models.review_ratin
(module), 307 (module), 154
indico.modules.auth.util (module), 308 indico.modules.events.abstracts.models.reviews
indico.modules.categories (module), 266 (module), 155
indico.modules.categories.fields (mod- indico.modules.events.abstracts.operations
ule), 337 (module), 157
indico.modules.categories.models.categoriesindico.modules.events.abstracts.placeholders
(module), 266 (module), 159
indico.modules.categories.models.principalsindico.modules.events.abstracts.settings
(module), 270 (module), 165
indico.modules.categories.models.settings indico.modules.events.abstracts.util
(module), 271 (module), 158
indico.modules.categories.operations indico.modules.events.agreements (mod-
(module), 272 ule), 166
indico.modules.categories.serialize indico.modules.events.agreements.models.agreements
(module), 273 (module), 166
indico.modules.categories.settings (mod- indico.modules.events.agreements.placeholders
ule), 274 (module), 168
indico.modules.categories.util (module), indico.modules.events.agreements.util
272 (module), 168
indico.modules.designer (module), 320 indico.modules.events.contributions
indico.modules.designer.models.images (module), 169
(module), 320 indico.modules.events.contributions.fields
indico.modules.designer.models.templates (module), 335
(module), 321 indico.modules.events.contributions.models.contribu
indico.modules.designer.pdf (module), 322 (module), 169
indico.modules.designer.placeholders indico.modules.events.contributions.models.fields
(module), 323 (module), 173
indico.modules.designer.util (module), 322 indico.modules.events.contributions.models.persons
indico.modules.events (module), 121 (module), 175
indico.modules.events.abstracts (module), indico.modules.events.contributions.models.principa
144 (module), 176
indico.modules.events.abstracts.fields indico.modules.events.contributions.models.referenc
(module), 332 (module), 177
indico.modules.events.abstracts.models.abstracts
indico.modules.events.contributions.models.subcontr
(module), 144 (module), 178
indico.modules.events.abstracts.models.call_for_abstracts
indico.modules.events.contributions.models.types
(module), 148 (module), 179
indico.modules.events.abstracts.models.comments
indico.modules.events.contributions.operations
(module), 149 (module), 180
indico.modules.events.abstracts.models.email_logs
indico.modules.events.contributions.util
(module), 150 (module), 181
indico.modules.events.features (module),
indico.modules.events.abstracts.models.email_templates
(module), 150 182
indico.modules.events.abstracts.models.fields
indico.modules.events.features.util
(module), 152 (module), 182
indico.modules.events.fields (module), 331
indico.modules.events.abstracts.models.files
(module), 152 indico.modules.events.layout (module), 182
indico.modules.events.abstracts.models.persons
indico.modules.events.layout.models.images
(module), 153 (module), 183

Index 435
Indico Documentation, Release 3.2-dev

indico.modules.events.layout.models.menuindico.modules.events.papers.util (mod-
(module), 183 ule), 206
indico.modules.events.layout.util (mod- indico.modules.events.payment (module),
ule), 186 209
indico.modules.events.models.events indico.modules.events.payment.models.transactions
(module), 121 (module), 209
indico.modules.events.models.persons indico.modules.events.payment.plugins
(module), 128 (module), 211
indico.modules.events.models.principals indico.modules.events.payment.util (mod-
(module), 130 ule), 211
indico.modules.events.models.references indico.modules.events.persons (module),
(module), 131 212
indico.modules.events.models.reviews indico.modules.events.persons.operations
(module), 133 (module), 212
indico.modules.events.models.series indico.modules.events.persons.placeholders
(module), 135 (module), 212
indico.modules.events.models.settings indico.modules.events.registration (mod-
(module), 135 ule), 214
indico.modules.events.models.static_list_links
indico.modules.events.registration.models.form_fiel
(module), 137 (module), 219
indico.modules.events.notes (module), 192 indico.modules.events.registration.models.forms
indico.modules.events.notes.models.notes (module), 221
(module), 192 indico.modules.events.registration.models.invitatio
indico.modules.events.notes.util (mod- (module), 224
ule), 194 indico.modules.events.registration.models.items
indico.modules.events.operations (mod- (module), 225
ule), 138 indico.modules.events.registration.models.registrat
indico.modules.events.papers (module), 195 (module), 214
indico.modules.events.papers.fields indico.modules.events.registration.placeholders.inv
(module), 335 (module), 234
indico.modules.events.papers.models.call_for_papers
indico.modules.events.registration.placeholders.reg
(module), 195 (module), 232
indico.modules.events.papers.models.comments
indico.modules.events.registration.settings
(module), 196 (module), 235
indico.modules.events.papers.models.competences
indico.modules.events.registration.stats
(module), 197 (module), 236
indico.modules.events.papers.models.files indico.modules.events.registration.util
(module), 197 (module), 229
indico.modules.events.papers.models.papers indico.modules.events.reminders (module),
(module), 198 237
indico.modules.events.papers.models.review_questions
indico.modules.events.reminders.models.reminders
(module), 199 (module), 237
indico.modules.events.papers.models.review_ratings
indico.modules.events.reminders.util
(module), 200 (module), 239
indico.modules.events.papers.models.reviewsindico.modules.events.requests (module),
(module), 200 239
indico.modules.events.papers.models.revisions
indico.modules.events.requests.base
(module), 203 (module), 240
indico.modules.events.papers.models.templates
indico.modules.events.requests.models.requests
(module), 204 (module), 239
indico.modules.events.papers.models.user_contributions
indico.modules.events.requests.util
(module), 205 (module), 240
indico.modules.events.papers.operations indico.modules.events.sessions (module),
(module), 205 242

436 Index
Indico Documentation, Release 3.2-dev

indico.modules.events.sessions.fields indico.modules.groups.core (module), 314


(module), 337 indico.modules.groups.models.groups
indico.modules.events.sessions.models.blocks (module), 314
(module), 244 indico.modules.groups.util (module), 315
indico.modules.events.sessions.models.persons indico.modules.logs (module), 187
(module), 246 indico.modules.logs.models.entries (mod-
indico.modules.events.sessions.models.principals ule), 187
(module), 246 indico.modules.logs.renderers (module),
indico.modules.events.sessions.models.sessions 190
(module), 242 indico.modules.logs.util (module), 190
indico.modules.events.sessions.operations indico.modules.networks (module), 329
(module), 247 indico.modules.networks.fields (module),
indico.modules.events.sessions.util 337
(module), 247 indico.modules.networks.models.networks
indico.modules.events.settings (module), (module), 329
142, 206 indico.modules.networks.util (module), 330
indico.modules.events.static (module), 264 indico.modules.news (module), 330
indico.modules.events.static.models.static indico.modules.news.models.news (module),
(module), 265 330
indico.modules.events.static.util (mod- indico.modules.news.util (module), 331
ule), 266 indico.modules.rb (module), 293
indico.modules.events.surveys (module), indico.modules.rb.models.blocked_rooms
248 (module), 298
indico.modules.events.surveys.models.items indico.modules.rb.models.blocking_principals
(module), 251 (module), 298
indico.modules.rb.models.blockings (mod-
indico.modules.events.surveys.models.submissions
(module), 253 ule), 297
indico.modules.events.surveys.models.surveys indico.modules.rb.models.equipment (mod-
(module), 248 ule), 299
indico.modules.events.surveys.operationsindico.modules.rb.models.locations (mod-
(module), 254 ule), 299
indico.modules.events.surveys.util (mod- indico.modules.rb.models.map_areas (mod-
ule), 255 ule), 300
indico.modules.events.timetable (module), indico.modules.rb.models.photos (module),
256 300
indico.modules.events.timetable.models.breaks indico.modules.rb.models.reservation_edit_logs
(module), 256 (module), 303
indico.modules.events.timetable.models.entriesindico.modules.rb.models.reservation_occurrences
(module), 257 (module), 304
indico.modules.events.timetable.operations indico.modules.rb.models.reservations
(module), 259 (module), 300
indico.modules.events.timetable.reschedule indico.modules.rb.models.room_attributes
(module), 261 (module), 296
indico.modules.events.timetable.util indico.modules.rb.models.room_bookable_hours
(module), 260 (module), 296
indico.modules.events.tracks (module), 262 indico.modules.rb.models.room_nonbookable_periods
indico.modules.events.tracks.models.principals (module), 297
(module), 263 indico.modules.rb.models.rooms (module),
indico.modules.events.tracks.models.tracks 293
(module), 262 indico.modules.rb.models.util (module),
indico.modules.events.tracks.operations 305
(module), 264 indico.modules.rb.statistics (module), 306
indico.modules.events.util (module), 139 indico.modules.rb.util (module), 305
indico.modules.groups (module), 314 indico.modules.search.base (module), 70

Index 437
Indico Documentation, Release 3.2-dev

indico.modules.search.result_schemas dico.web.forms.fields), 348


(module), 71 IndicoRadioField (class in in-
indico.modules.users (module), 275 dico.web.forms.fields), 338
indico.modules.users.ext (module), 284 IndicoSearchProvider (class in in-
indico.modules.users.models.affiliations dico.modules.search.base), 69, 70
(module), 280 IndicoSelectMultipleCheckboxBooleanField
indico.modules.users.models.emails (mod- (class in indico.web.forms.fields), 349
ule), 280 IndicoSelectMultipleCheckboxField (class
indico.modules.users.models.favorites in indico.web.forms.fields), 338
(module), 280 IndicoSinglePalettePickerField (class in in-
indico.modules.users.models.settings dico.web.forms.fields), 343
(module), 281 IndicoStaticTextField (class in in-
indico.modules.users.models.suggestions dico.web.forms.fields), 342
(module), 280 IndicoTagListField (class in in-
indico.modules.users.models.users (mod- dico.web.forms.fields), 342
ule), 275 IndicoThemeSelectField (class in in-
indico.modules.users.operations (module), dico.modules.events.fields), 331
282 IndicoTimeField (class in indico.web.forms.fields),
indico.modules.users.util (module), 283 352
indico.modules.vc (module), 315 IndicoTimezoneSelectField (class in in-
indico.modules.vc.exceptions (module), 320 dico.web.forms.fields), 345
indico.modules.vc.models.vc_rooms (mod- IndicoWeekDayRepetitionField (class in in-
ule), 316 dico.web.forms.fields), 350
indico.modules.vc.plugins (module), 318 info (indico.modules.categories.models.categories.EventMessageMode
indico.modules.vc.util (module), 318 attribute), 270
indico.web.forms.fields (module), 338 info (indico.modules.rb.models.reservation_edit_logs.ReservationEditLog
IndicoDateField (class in indico.web.forms.fields), attribute), 304
349 inherit_location (in-
IndicoDateTimeField (class in in- dico.modules.events.contributions.models.contributions.Contribut
dico.web.forms.fields), 344 attribute), 171
IndicoEmailRecipientsField (class in in- inherit_location (in-
dico.web.forms.fields), 351 dico.modules.events.models.events.Event
IndicoEnumRadioField (class in in- attribute), 124
dico.web.forms.fields), 345 inherit_location (in-
IndicoEnumSelectField (class in in- dico.modules.events.sessions.models.blocks.SessionBlock
dico.web.forms.fields), 345 attribute), 245
IndicoLocationField (class in in- inherit_location (in-
dico.web.forms.fields), 349 dico.modules.events.sessions.models.sessions.Session
IndicoMarkdownField (class in in- attribute), 243
dico.web.forms.fields), 349 inherit_location (in-
IndicoPalettePickerField (class in in- dico.modules.events.timetable.models.breaks.Break
dico.web.forms.fields), 343 attribute), 256
IndicoPasswordField (class in in- inheriting_have_acl (in-
dico.web.forms.fields), 342 dico.modules.categories.models.categories.Category
IndicoPlugin (class in indico.core.plugins), 77 attribute), 268
IndicoPluginBlueprint (class in in- inheriting_have_acl (in-
dico.core.plugins), 79 dico.modules.events.contributions.models.contributions.Contribut
IndicoPluginBlueprintSetupState (class in attribute), 171
indico.core.plugins), 79 inheriting_have_acl (in-
IndicoProtectionField (class in in- dico.modules.events.models.events.Event
dico.web.forms.fields), 349 attribute), 124
IndicoQuerySelectMultipleCheckboxField inheriting_have_acl (in-
(class in indico.web.forms.fields), 349 dico.modules.events.sessions.models.sessions.Session
IndicoQuerySelectMultipleField (class in in- attribute), 243

438 Index
Indico Documentation, Release 3.2-dev

init() (indico.core.plugins.IndicoPlugin method), 78 dico.modules.attachments.models.principals.AttachmentFolderPri


init() (indico.modules.events.payment.plugins.PaymentPluginMixinattribute), 290
method), 212 ip_network_group (in-
init() (indico.modules.vc.plugins.VCPluginMixin dico.modules.attachments.models.principals.AttachmentPrincipal
method), 319 attribute), 291
initial_statuses (in- ip_network_group (in-
dico.modules.events.payment.models.transactions.TransactionStatusTransition
dico.modules.categories.models.principals.CategoryPrincipal
attribute), 210 attribute), 271
inject_bundle (in module in- ip_network_group (in-
dico.core.signals.plugin), 89 dico.modules.events.contributions.models.principals.Contribution
inject_bundle() (indico.core.plugins.IndicoPlugin attribute), 176
method), 78 ip_network_group (in-
inject_vars_js() (in- dico.modules.events.models.principals.EventPrincipal
dico.core.plugins.IndicoPlugin method), attribute), 131
78 ip_network_group (in-
input_type (indico.modules.events.registration.models.form_fields.RegistrationFormField
dico.modules.events.models.settings.EventSettingPrincipal
attribute), 219 attribute), 136
input_type (indico.modules.events.registration.models.form_fields.RegistrationFormPersonalDataField
ip_network_group (in-
attribute), 221 dico.modules.events.sessions.models.principals.SessionPrincipal
input_type (indico.modules.events.registration.models.items.RegistrationFormItem
attribute), 247
attribute), 226 ip_network_group (in-
input_type (indico.modules.events.registration.models.items.RegistrationFormPersonalDataSection
dico.modules.events.tracks.models.principals.TrackPrincipal
attribute), 227 attribute), 264
input_type (indico.modules.events.registration.models.items.RegistrationFormSection
ip_network_group (in-
attribute), 228 dico.modules.rb.models.blocking_principals.BlockingPrincipal
input_type (indico.modules.events.registration.models.items.RegistrationFormText
attribute), 299
attribute), 229 ip_network_group_id (in-
insert() (indico.modules.events.layout.models.menu.MenuEntry dico.modules.attachments.models.principals.AttachmentFolderPri
method), 184 attribute), 290
internal_link (in- ip_network_group_id (in-
dico.modules.events.layout.models.menu.MenuEntryType dico.modules.attachments.models.principals.AttachmentPrincipal
attribute), 185 attribute), 291
introduction (indico.modules.events.registration.models.forms.RegistrationForm
ip_network_group_id (in-
attribute), 222 dico.modules.categories.models.principals.CategoryPrincipal
introduction (indico.modules.events.surveys.models.surveys.Survey attribute), 271
attribute), 249 ip_network_group_id (in-
InvalidManualTransactionAction, 209 dico.modules.events.contributions.models.principals.Contribution
InvalidTransactionAction, 209 attribute), 177
InvalidTransactionStatus, 209 ip_network_group_id (in-
InvitationLinkPlaceholder (class in in- dico.modules.events.models.principals.EventPrincipal
dico.modules.events.registration.placeholders.invitations), attribute), 131
235 ip_network_group_id (in-
invitations (indico.modules.events.registration.models.forms.RegistrationForm
dico.modules.events.models.settings.EventSettingPrincipal
attribute), 222 attribute), 136
InvitationState (class in in- ip_network_group_id (in-
dico.modules.events.registration.models.invitations), dico.modules.events.sessions.models.principals.SessionPrincipal
224 attribute), 247
invited (indico.modules.events.abstracts.models.abstracts.AbstractPublicState
ip_network_group_id (in-
attribute), 147 dico.modules.events.tracks.models.principals.TrackPrincipal
invited (indico.modules.events.abstracts.models.abstracts.AbstractState
attribute), 264
attribute), 148 ip_network_group_id (in-
invited_dt (indico.modules.events.models.persons.EventPerson dico.modules.rb.models.blocking_principals.BlockingPrincipal
attribute), 128 attribute), 299
ip_network_group (in- IPNetwork (class in in-

Index 439
Indico Documentation, Release 3.2-dev

dico.modules.networks.models.networks), attribute), 237


329 is_default (indico.modules.attachments.models.folders.AttachmentFold
IPNetworkGroup (class in in- attribute), 288
dico.modules.networks.models.networks), is_default (indico.modules.events.layout.models.menu.EventPage
329 attribute), 184
is_accepted (indico.modules.rb.models.reservations.Reservation
is_default (indico.modules.rb.models.map_areas.MapArea
attribute), 302 attribute), 300
is_active (indico.modules.events.contributions.models.fields.ContributionField
is_deleted (indico.modules.attachments.models.attachments.Attachmen
attribute), 173 attribute), 286
is_active (indico.modules.events.registration.models.forms.RegistrationForm
is_deleted (indico.modules.attachments.models.folders.AttachmentFold
attribute), 222 attribute), 288
is_active (indico.modules.events.registration.models.registrations.Registration
is_deleted (indico.modules.categories.models.categories.Category
attribute), 216 attribute), 268
is_active (indico.modules.events.surveys.models.surveys.Survey
is_deleted (indico.modules.events.abstracts.models.abstracts.Abstract
attribute), 249 attribute), 146
is_active() (indico.modules.users.ext.ExtraUserPreferences
is_deleted (indico.modules.events.abstracts.models.comments.AbstractC
class method), 284 attribute), 149
is_active_at() (in- is_deleted (indico.modules.events.abstracts.models.review_questions.A
dico.modules.rb.models.blockings.Blocking attribute), 154
method), 298 is_deleted (indico.modules.events.contributions.models.contributions.C
is_admin (indico.modules.users.models.users.User at- attribute), 171
tribute), 277 is_deleted (indico.modules.events.contributions.models.subcontribution
is_always_visible (in- attribute), 178
is_deleted (indico.modules.events.models.events.Event
dico.modules.attachments.models.folders.AttachmentFolder
attribute), 288 attribute), 124
is_anonymous (indico.modules.events.surveys.models.submissions.SurveySubmission
is_deleted (indico.modules.events.notes.models.notes.EventNote
attribute), 254 attribute), 193
is_archived (indico.modules.rb.models.reservations.Reservation
is_deleted (indico.modules.events.papers.models.comments.PaperRevie
attribute), 302 attribute), 196
is_author (indico.modules.events.contributions.models.persons.ContributionPersonLink
is_deleted (indico.modules.events.papers.models.review_questions.Pap
attribute), 175 attribute), 199
is_auto_confirm (in- is_deleted (indico.modules.events.registration.models.form_fields.Regis
dico.modules.rb.models.rooms.Room attribute), attribute), 219
295 is_deleted (indico.modules.events.registration.models.form_fields.Regis
is_blocked (indico.modules.users.models.users.User attribute), 221
attribute), 277 is_deleted (indico.modules.events.registration.models.forms.Registratio
is_booked_for() (in- attribute), 222
dico.modules.rb.models.reservations.Reservation is_deleted (indico.modules.events.registration.models.items.Registratio
method), 302 attribute), 226
is_booking_start_within_grace_period() is_deleted (indico.modules.events.registration.models.items.Registratio
(in module indico.modules.rb.util), 305 attribute), 227
is_cancelled (indico.modules.events.registration.models.registrations.Registration
is_deleted (indico.modules.events.registration.models.items.Registratio
attribute), 216 attribute), 228
is_cancelled (indico.modules.rb.models.reservation_occurrences.ReservationOccurrence
is_deleted (indico.modules.events.registration.models.items.Registratio
attribute), 304 attribute), 229
is_cancelled (indico.modules.rb.models.reservations.Reservation
is_deleted (indico.modules.events.registration.models.registrations.Reg
attribute), 302 attribute), 216
is_clonable (indico.modules.designer.models.templates.DesignerTemplate
is_deleted (indico.modules.events.sessions.models.sessions.Session
attribute), 321 attribute), 243
is_currency_shown (in- is_deleted (indico.modules.events.surveys.models.surveys.Survey
dico.modules.events.registration.stats.FieldStats attribute), 249
attribute), 237 is_deleted (indico.modules.rb.models.locations.Location
is_currency_shown (in- attribute), 299
dico.modules.events.registration.stats.StatsBase is_deleted (indico.modules.rb.models.rooms.Room

440 Index
Indico Documentation, Release 3.2-dev

attribute), 295 dico.modules.events.papers.models.papers.Paper


is_deleted (indico.modules.users.models.users.User attribute), 198
attribute), 277 is_internal_link (in-
is_descendant_of() (in- dico.modules.events.layout.models.menu.MenuEntryMixin
dico.modules.categories.models.categories.Category attribute), 185
method), 268 is_judge() (indico.modules.events.papers.models.call_for_papers.CallF
is_empty (indico.modules.categories.models.categories.Category method), 195
attribute), 268 is_last_revision (in-
is_empty (indico.modules.events.surveys.models.submissions.SurveyAnswer
dico.modules.events.papers.models.revisions.PaperRevision
attribute), 254 attribute), 203
is_enabled (indico.core.oauth.models.applications.OAuthApplication
is_link (indico.modules.events.layout.models.menu.MenuEntryMixin
attribute), 311 attribute), 185
is_enabled (indico.modules.events.layout.models.menu.MenuEntry
is_locked (indico.modules.events.models.events.Event
attribute), 184 attribute), 124
is_enabled (indico.modules.events.registration.models.form_fields.RegistrationFormField
is_manager() (indico.modules.events.papers.models.call_for_papers.Ca
attribute), 220 method), 195
is_enabled (indico.modules.events.registration.models.form_fields.RegistrationFormPersonalDataField
is_manager_only (in-
attribute), 221 dico.modules.events.registration.models.form_fields.RegistrationF
is_enabled (indico.modules.events.registration.models.items.RegistrationFormItem
attribute), 220
attribute), 226 is_manager_only (in-
is_enabled (indico.modules.events.registration.models.items.RegistrationFormPersonalDataSection
dico.modules.events.registration.models.form_fields.RegistrationF
attribute), 227 attribute), 221
is_enabled (indico.modules.events.registration.models.items.RegistrationFormSection
is_manager_only (in-
attribute), 228 dico.modules.events.registration.models.items.RegistrationFormIt
is_enabled (indico.modules.events.registration.models.items.RegistrationFormText
attribute), 226
attribute), 229 is_manager_only (in-
is_expired() (indico.core.oauth.models.tokens.OAuth2AuthorizationCode
dico.modules.events.registration.models.items.RegistrationFormPe
method), 312 attribute), 227
is_expired() (indico.core.oauth.models.tokens.TokenModelBase
is_manager_only (in-
method), 314 dico.modules.events.registration.models.items.RegistrationFormSe
is_feature_enabled() (in module in- attribute), 228
dico.modules.events.features.util), 182 is_manager_only (in-
is_field (indico.modules.events.registration.models.items.RegistrationFormItem
dico.modules.events.registration.models.items.RegistrationFormTe
attribute), 226 attribute), 229
is_flat_view_enabled (in- is_manual (indico.modules.events.payment.models.transactions.Payment
dico.modules.categories.models.categories.Category attribute), 210
attribute), 268 is_menu_entry_enabled() (in module in-
is_hidden (indico.modules.attachments.models.folders.AttachmentFolder
dico.modules.events.layout.util), 187
attribute), 288 is_modification_allowed() (in-
is_hidden (indico.modules.rb.models.room_attributes.RoomAttribute dico.modules.events.registration.models.forms.RegistrationForm
attribute), 296 method), 222
is_ignored (indico.modules.users.models.suggestions.SuggestedCategory
is_modification_open (in-
attribute), 281 dico.modules.events.registration.models.forms.RegistrationForm
is_image (indico.modules.designer.placeholders.EventLogoPlaceholder
attribute), 222
attribute), 329 is_open (indico.modules.events.abstracts.models.call_for_abstracts.CallF
is_image (indico.modules.designer.placeholders.RegistrationTicketQRPlaceholder
attribute), 148
attribute), 326 is_open (indico.modules.events.papers.models.call_for_papers.CallForPa
is_in_final_state (in- attribute), 195
is_open (indico.modules.events.registration.models.forms.RegistrationFor
dico.modules.events.abstracts.models.abstracts.Abstract
attribute), 146 attribute), 222
is_in_final_state (in- is_orphan() (indico.modules.events.agreements.models.agreements.Agr
dico.modules.events.models.reviews.ProposalMixin method), 167
attribute), 134 is_orphaned (indico.modules.events.layout.models.menu.MenuEntryMix
is_in_final_state (in- attribute), 185

Index 441
Indico Documentation, Release 3.2-dev

is_overdue (indico.modules.events.reminders.models.reminders.EventReminder
attribute), 173
attribute), 238 is_required (indico.modules.events.papers.models.review_questions.Pa
is_owned_by() (in- attribute), 200
dico.modules.rb.models.reservations.Reservation is_required (indico.modules.events.registration.models.form_fields.Reg
method), 302 attribute), 220
is_page (indico.modules.events.layout.models.menu.MenuEntryMixin
is_required (indico.modules.events.registration.models.form_fields.Reg
attribute), 185 attribute), 221
is_paid (indico.modules.events.registration.models.registrations.Registration
is_required (indico.modules.events.registration.models.items.PersonalD
attribute), 216 attribute), 225
is_paper_reviewer() (in- is_required (indico.modules.events.registration.models.items.Registrati
attribute), 226
dico.modules.events.contributions.models.contributions.Contribution
method), 171 is_required (indico.modules.events.registration.models.items.Registrati
is_parallel() (in- attribute), 227
is_required (indico.modules.events.registration.models.items.Registrati
dico.modules.events.timetable.models.entries.TimetableEntry
method), 258 attribute), 228
is_participation (in- is_required (indico.modules.events.registration.models.items.Registrati
attribute), 229
dico.modules.events.registration.models.forms.RegistrationForm
attribute), 222 is_required (indico.modules.events.surveys.models.items.SurveyItem
is_pending (indico.modules.rb.models.reservations.Reservation attribute), 251
attribute), 302 is_required (indico.modules.events.surveys.models.items.SurveyQuestio
is_pending (indico.modules.users.models.users.User attribute), 252
attribute), 277 is_required (indico.modules.events.surveys.models.items.SurveySection
is_plugin_link (in- attribute), 252
is_required (indico.modules.events.surveys.models.items.SurveyText
dico.modules.events.layout.models.menu.MenuEntryMixin
attribute), 185 attribute), 253
is_poster (indico.modules.events.sessions.models.sessions.Session
is_reservable (in-
attribute), 243 dico.modules.rb.models.rooms.Room attribute),
is_previewable (in- 295
dico.modules.attachments.models.attachments.AttachmentFile
is_reviewer() (in-
attribute), 287 dico.modules.events.papers.models.call_for_papers.CallForPaper
is_primary (indico.modules.users.models.emails.UserEmail method), 195
attribute), 280 is_revoked() (indico.core.oauth.models.tokens.OAuthToken
is_private (indico.modules.events.contributions.models.types.ContributionType
method), 313
attribute), 179 is_root (indico.modules.categories.models.categories.Category
is_protected (indico.modules.events.contributions.models.subcontributions.SubContribution
attribute), 268
attribute), 178 is_root (indico.modules.events.layout.models.menu.MenuEntry
is_public (indico.modules.events.contributions.models.fields.ContributionField
attribute), 184
attribute), 173 is_scheduled (indico.modules.events.abstracts.models.call_for_abstrac
is_publishable (in- attribute), 149
is_scheduled (indico.modules.events.contributions.models.contribution
dico.modules.events.registration.models.registrations.Registration
attribute), 216 attribute), 171
is_rejected (indico.modules.rb.models.reservation_occurrences.ReservationOccurrence
is_scheduled (indico.modules.events.registration.models.forms.Registra
attribute), 304 attribute), 222
is_rejected (indico.modules.rb.models.reservations.Reservation
is_section (indico.modules.events.registration.models.items.Registratio
attribute), 302 attribute), 226
is_relative (indico.modules.events.reminders.models.reminders.EventReminder
is_sent (indico.modules.events.reminders.models.reminders.EventRemin
attribute), 238 attribute), 238
is_repeating (indico.modules.rb.models.reservations.Reservation
is_separator (indico.modules.events.layout.models.menu.MenuEntryM
attribute), 302 attribute), 185
is_request_manager() (in module in- is_speaker (indico.modules.events.abstracts.models.persons.AbstractPe
dico.modules.events.requests.util), 240 attribute), 153
is_required (indico.modules.events.abstracts.models.review_questions.AbstractReviewQuestion
is_speaker (indico.modules.events.contributions.models.persons.Contrib
attribute), 154 attribute), 175
is_required (indico.modules.events.contributions.models.fields.ContributionField
is_speaker (indico.modules.events.contributions.models.persons.SubCo

442 Index
Indico Documentation, Release 3.2-dev

attribute), 176 attribute), 185


is_staff() (indico.modules.events.papers.models.call_for_papers.CallForPapers
is_user_registered() (in-
method), 195 dico.modules.events.models.events.Event
is_submission_in_progress() (in module in- method), 125
dico.modules.events.surveys.util), 255 is_valid (indico.modules.rb.models.reservation_occurrences.Reservatio
is_submitted (indico.modules.events.surveys.models.submissions.SurveySubmission
attribute), 304
attribute), 254 is_visible (indico.modules.events.layout.models.menu.MenuEntryMixin
is_submitter (indico.modules.events.contributions.models.persons.ContributionPersonLink
attribute), 185
attribute), 175 is_visible (indico.modules.events.registration.models.items.Registratio
is_submitter (indico.modules.events.models.persons.EventPersonLink attribute), 226
attribute), 129 is_visible (indico.modules.events.surveys.models.surveys.Survey
is_system (indico.modules.users.models.users.User attribute), 249
attribute), 277 is_visible_in() (in-
is_system_template (in- dico.modules.events.models.events.Event
dico.modules.designer.models.templates.DesignerTemplate class method), 125
attribute), 321 is_within_cancel_grace_period (in-
is_ticket (indico.modules.designer.models.templates.DesignerTemplate
dico.modules.rb.models.reservation_occurrences.ReservationOcc
attribute), 322 attribute), 304
is_ticket (indico.modules.designer.placeholders.RegistrationTicketQRPlaceholder
items (in module indico.core.signals.menu), 88
attribute), 326 items (indico.modules.designer.pdf.TplData attribute),
is_ticket_blocked (in module in- 323
dico.core.signals.event), 85 items (indico.modules.events.surveys.models.surveys.Survey
is_ticket_blocked (in- attribute), 249
dico.modules.events.registration.models.registrations.Registration
iter_all_multipass_groups() (in-
attribute), 216 dico.modules.users.models.users.User
is_ticketing_handled (in module in- method), 277
dico.core.signals.event), 85 iter_choices() (in-
is_track_group (in- dico.web.forms.fields.IndicoEnumSelectField
dico.modules.events.tracks.models.tracks.Track method), 345
attribute), 262 iter_choices() (in-
is_trusted (indico.core.oauth.models.applications.OAuthApplication dico.web.forms.fields.IndicoSelectMultipleCheckboxBooleanField
attribute), 311 method), 350
is_type_reviewing_possible() (in module in- iter_create_occurrences() (in-
dico.modules.events.papers.util), 206 dico.modules.rb.models.reservation_occurrences.ReservationOcc
is_unlisted (indico.modules.events.models.events.Event class method), 304
attribute), 125 iter_days() (indico.modules.events.models.events.Event
is_untrusted (indico.modules.events.models.persons.EventPersonmethod), 125
attribute), 128 iter_identifiers() (in-
is_user_admin() (in- dico.modules.users.models.users.User
dico.modules.rb.models.rooms.Room static method), 277
method), 295 iter_param_info() (in-
is_user_associated() (in- dico.modules.events.persons.placeholders.ContributionsPlacehold
class method), 212
dico.modules.events.contributions.models.contributions.Contribution
method), 171 iter_param_info() (in-
is_user_associated() (in- dico.modules.events.registration.placeholders.registrations.FieldP
class method), 233
dico.modules.events.contributions.models.subcontributions.SubContribution
method), 178 iter_start_time() (in-
is_user_deleted (in- dico.modules.rb.models.reservation_occurrences.ReservationOcc
dico.modules.users.models.emails.UserEmail static method), 304
attribute), 280
is_user_editable (in- J
dico.modules.events.contributions.models.fields.ContributionField
JSONField (class in indico.web.forms.fields), 338
attribute), 173 judge (indico.modules.events.abstracts.models.abstracts.Abstract
is_user_link (indico.modules.events.layout.models.menu.MenuEntryMixin
attribute), 146

Index 443
Indico Documentation, Release 3.2-dev

judge (indico.modules.events.papers.models.revisions.PaperRevision
kind (indico.modules.logs.models.entries.LogEntryBase
attribute), 203 attribute), 189
judge_abstract() (in module in-
dico.modules.events.abstracts.operations), L
157 label (indico.modules.events.models.events.Event at-
judge_deadline (in- tribute), 125
dico.modules.events.papers.models.call_for_papers.CallForPapers
label (indico.modules.search.result_schemas.AggregationSchema
attribute), 195 attribute), 68
judge_id (indico.modules.events.abstracts.models.abstracts.Abstract
label_id (indico.modules.events.models.events.Event
attribute), 146 attribute), 125
judge_id (indico.modules.events.papers.models.revisions.PaperRevision
label_message (in-
attribute), 203 dico.modules.events.models.events.Event
judge_paper() (in module in- attribute), 125
dico.modules.events.papers.operations), last_f (indico.modules.users.models.users.NameFormat
205 attribute), 275
judges (indico.modules.events.abstracts.models.reviews.AbstractCommentVisibility
last_f_upper (indico.modules.users.models.users.NameFormat
attribute), 155 attribute), 275
judges (indico.modules.events.papers.models.call_for_papers.CallForPapers
last_first (indico.modules.users.models.users.NameFormat
attribute), 195 attribute), 275
judges (indico.modules.events.papers.models.reviews.PaperCommentVisibility
last_first_upper (in-
attribute), 201 dico.modules.users.models.users.NameFormat
judgment_comment (in- attribute), 275
dico.modules.events.abstracts.models.abstracts.Abstract
last_login_dt (in-
attribute), 146 dico.modules.auth.models.identities.Identity
judgment_comment (in- attribute), 306
dico.modules.events.papers.models.papers.Paper last_login_dt (in-
attribute), 198 dico.modules.users.models.users.User at-
judgment_comment (in- tribute), 278
dico.modules.events.papers.models.revisions.PaperRevision
last_login_ip (in-
attribute), 203 dico.modules.auth.models.identities.Identity
judgment_dt (indico.modules.events.abstracts.models.abstracts.Abstract
attribute), 306
attribute), 146 last_name (indico.modules.events.models.persons.EventPerson
judgment_dt (indico.modules.events.papers.models.revisions.PaperRevision
attribute), 128
attribute), 203 last_name (indico.modules.events.models.persons.PersonLinkBase
judgment_instructions (in- attribute), 130
dico.modules.events.abstracts.models.call_for_abstracts.CallForAbstracts
last_name (indico.modules.events.registration.models.invitations.Registr
attribute), 149 attribute), 224
JudgmentCommentPlaceholder (class in in- last_name (indico.modules.events.registration.models.items.PersonalDat
dico.modules.events.abstracts.placeholders), attribute), 225
164 last_name (indico.modules.events.registration.models.registrations.Regis
attribute), 216
K last_name (indico.modules.users.models.users.User
key (indico.modules.search.result_schemas.BucketSchema attribute), 278
attribute), 68 last_revision (in-
key_location (indico.modules.rb.models.rooms.Room dico.modules.events.papers.models.papers.Paper
attribute), 295 attribute), 198
keywords (indico.modules.events.contributions.models.contributions.Contribution
last_used_dt (indico.core.oauth.models.tokens.OAuthToken
attribute), 171 attribute), 313
keywords (indico.modules.events.models.events.Event last_used_dt (indico.core.oauth.models.tokens.TokenModelBase
attribute), 125 attribute), 314
kind (indico.modules.logs.models.entries.CategoryLogEntrylast_used_dt (indico.modules.events.models.static_list_links.StaticListL
attribute), 187 attribute), 137
kind (indico.modules.logs.models.entries.EventLogEntry last_used_ip (indico.core.oauth.models.tokens.OAuthToken
attribute), 188 attribute), 313

444 Index
Indico Documentation, Release 3.2-dev

last_used_ip (indico.core.oauth.models.tokens.TokenModelBase dico.modules.attachments.models.folders.AttachmentFolder


attribute), 314 attribute), 288
LastNamePlaceholder (class in in- link_backref_name (in-
dico.modules.events.persons.placeholders), dico.modules.attachments.models.folders.AttachmentFolder
214 attribute), 288
LastNamePlaceholder (class in in- link_backref_name (in-
dico.modules.events.registration.placeholders.invitations), dico.modules.events.notes.models.notes.EventNote
235 attribute), 193
LastNamePlaceholder (class in in- link_backref_name (in-
dico.modules.events.registration.placeholders.registrations),dico.modules.rb.models.reservations.ReservationLink
234 attribute), 303
latest_date (indico.web.forms.fields.IndicoDateField link_fk_name (indico.modules.logs.models.entries.CategoryLogEntry
attribute), 349 attribute), 187
latest_dt (indico.web.forms.fields.IndicoDateTimeField link_fk_name (indico.modules.logs.models.entries.EventLogEntry
attribute), 344 attribute), 188
latitude (indico.modules.rb.models.rooms.Room at- link_fk_name (indico.modules.logs.models.entries.LogEntryBase
tribute), 295 attribute), 189
layout (indico.modules.events.papers.models.reviews.PaperReviewType
link_id (indico.modules.rb.models.reservations.Reservation
attribute), 202 attribute), 302
layout_review_questions (in- link_object (indico.modules.vc.models.vc_rooms.VCRoomEventAssoci
attribute), 317
dico.modules.events.papers.models.call_for_papers.CallForPapers
attribute), 195 link_type (indico.modules.attachments.models.folders.AttachmentFolder
layout_reviewer_deadline (in- attribute), 288
link_type (indico.modules.events.notes.models.notes.EventNote
dico.modules.events.papers.models.call_for_papers.CallForPapers
attribute), 195 attribute), 193
layout_reviewer_deadline_enforced (in- link_type (indico.modules.rb.models.reservations.ReservationLink
attribute), 303
dico.modules.events.papers.models.call_for_papers.CallForPapers
attribute), 195 link_type (indico.modules.vc.models.vc_rooms.VCRoomEventAssociatio
layout_reviewers (in- attribute), 317
link_url (indico.modules.attachments.models.attachments.Attachment
dico.modules.events.papers.models.call_for_papers.CallForPapers
attribute), 195 attribute), 286
layout_reviewing_enabled (in- link_url (indico.modules.events.layout.models.menu.MenuEntry
attribute), 184
dico.modules.events.papers.models.call_for_papers.CallForPapers
attribute), 196 link_user_by_email() (in-
lecture (indico.modules.events.models.events.EventType dico.modules.events.models.persons.EventPerson
attribute), 127 class method), 128
legacy_id (indico.modules.events.contributions.models.fields.ContributionField
linked_block (indico.modules.vc.models.vc_rooms.VCRoomEventAssoc
attribute), 173 attribute), 317
legacy_name (indico.modules.events.models.events.EventType linked_contrib (in-
attribute), 127 dico.modules.vc.models.vc_rooms.VCRoomEventAssociation
limit_reached (in- attribute), 317
dico.modules.events.registration.models.forms.RegistrationForm
linked_date_validator (in-
attribute), 222 dico.web.forms.fields.IndicoDateField at-
limit_reached (in- tribute), 349
dico.modules.events.surveys.models.surveys.Survey linked_datetime_validator (in-
attribute), 249 dico.web.forms.fields.IndicoDateTimeField
limit_reached (in- attribute), 344
linked_event (indico.modules.attachments.models.folders.AttachmentF
dico.modules.events.surveys.models.surveys.SurveyState
attribute), 250 attribute), 289
link (indico.modules.attachments.models.attachments.AttachmentType
linked_event (indico.modules.events.notes.models.notes.EventNote
attribute), 287 attribute), 193
link (indico.modules.rb.models.reservations.Reservation linked_event (indico.modules.rb.models.reservations.ReservationLink
attribute), 302 attribute), 303
link_backref_lazy (in- linked_event (indico.modules.vc.models.vc_rooms.VCRoomEventAssoc

Index 445
Indico Documentation, Release 3.2-dev

attribute), 317 local_group (indico.modules.attachments.models.principals.Attachment


linked_event_id (in- attribute), 291
local_group (indico.modules.categories.models.principals.CategoryPrin
dico.modules.attachments.models.folders.AttachmentFolder
attribute), 289 attribute), 271
linked_event_id (in- local_group (indico.modules.events.contributions.models.principals.Co
dico.modules.events.notes.models.notes.EventNote attribute), 177
attribute), 193 local_group (indico.modules.events.models.principals.EventPrincipal
linked_event_id (in- attribute), 131
local_group (indico.modules.events.models.settings.EventSettingPrincip
dico.modules.rb.models.reservations.ReservationLink
attribute), 303 attribute), 136
linked_event_id (in- local_group (indico.modules.events.sessions.models.principals.SessionP
dico.modules.vc.models.vc_rooms.VCRoomEventAssociationattribute), 247
attribute), 317 local_group (indico.modules.events.tracks.models.principals.TrackPrin
linked_field (indico.web.forms.fields.IndicoDateField attribute), 264
attribute), 349 local_group (indico.modules.rb.models.blocking_principals.BlockingPr
linked_field (indico.web.forms.fields.IndicoDateTimeField attribute), 299
attribute), 344 local_group_id (in-
linked_object (in- dico.modules.attachments.models.principals.AttachmentFolderPri
dico.modules.rb.models.reservations.Reservation attribute), 290
attribute), 302 local_group_id (in-
linked_object_attr (in- dico.modules.attachments.models.principals.AttachmentPrincipal
attribute), 291
dico.modules.events.abstracts.fields.AbstractPersonLinkListField
attribute), 332 local_group_id (in-
linked_object_attr (in- dico.modules.categories.models.principals.CategoryPrincipal
attribute), 271
dico.modules.events.contributions.fields.ContributionPersonLinkListField
attribute), 335 local_group_id (in-
linked_object_attr (in- dico.modules.events.contributions.models.principals.Contribution
attribute), 177
dico.modules.events.contributions.fields.SubContributionPersonLinkListField
attribute), 335 local_group_id (in-
linked_object_attr (in- dico.modules.events.models.principals.EventPrincipal
dico.modules.events.fields.EventPersonLinkListField attribute), 131
attribute), 331 local_group_id (in-
linked_object_attr (in- dico.modules.events.models.settings.EventSettingPrincipal
dico.modules.events.fields.PersonLinkListFieldBase attribute), 136
attribute), 332 local_group_id (in-
linked_object_attr (in- dico.modules.events.sessions.models.principals.SessionPrincipal
attribute), 247
dico.modules.events.sessions.fields.SessionBlockPersonLinkListField
attribute), 337 local_group_id (in-
LinkPlaceholder (class in in- dico.modules.events.tracks.models.principals.TrackPrincipal
dico.modules.events.registration.placeholders.registrations),attribute), 264
234 local_group_id (in-
list_link_type (in- dico.modules.rb.models.blocking_principals.BlockingPrincipal
dico.modules.events.util.ListGeneratorBase attribute), 299
attribute), 139 LOCAL_GROUPS (built-in variable), 47
ListGeneratorBase (class in in- LOCAL_IDENTITIES (built-in variable), 47
dico.modules.events.util), 139 local_identities (in-
load() (indico.modules.events.models.static_list_links.StaticListLinkdico.modules.users.models.users.User at-
class method), 137 tribute), 278
load() (indico.modules.users.ext.ExtraUserPreferences local_identity (in-
method), 284 dico.modules.users.models.users.User at-
load_identity_info() (in module in- tribute), 278
dico.modules.auth.util), 308 LOCAL_MODERATION (built-in variable), 48
local_group (indico.modules.attachments.models.principals.AttachmentFolderPrincipal
LOCAL_REGISTRATION (built-in variable), 48
attribute), 290 LocalGroup (class in in-

446 Index
Indico Documentation, Release 3.2-dev

dico.modules.groups.models.groups), 314 locator (indico.core.oauth.models.applications.OAuthApplication


localized_title (in- attribute), 311
locator (indico.core.oauth.models.tokens.TokenModelBase
dico.modules.events.layout.models.menu.MenuEntryMixin
attribute), 185 attribute), 314
Location (class in in- locator (indico.modules.attachments.models.attachments.Attachment
dico.modules.rb.models.locations), 299 attribute), 286
location (indico.modules.rb.models.rooms.Room at- locator (indico.modules.attachments.models.folders.AttachmentFolder
tribute), 295 attribute), 289
location (indico.modules.search.result_schemas.ContributionResultSchema
locator (indico.modules.auth.models.identities.Identity
attribute), 72 attribute), 306
location (indico.modules.search.result_schemas.EventResultSchema
locator (indico.modules.auth.models.registration_requests.RegistrationR
attribute), 71 attribute), 307
location_backref_name (in- locator (indico.modules.categories.models.categories.Category
attribute), 268
dico.modules.events.contributions.models.contributions.Contribution
attribute), 171 locator (indico.modules.designer.models.images.DesignerImageFile
location_backref_name (in- attribute), 321
dico.modules.events.models.events.Event locator (indico.modules.designer.models.templates.DesignerTemplate
attribute), 125 attribute), 322
location_backref_name (in- locator (indico.modules.events.abstracts.models.abstracts.Abstract
dico.modules.events.sessions.models.blocks.SessionBlock attribute), 146
attribute), 245 locator (indico.modules.events.abstracts.models.comments.AbstractCom
location_backref_name (in- attribute), 149
locator (indico.modules.events.abstracts.models.email_templates.Abstra
dico.modules.events.sessions.models.sessions.Session
attribute), 243 attribute), 151
location_backref_name (in- locator (indico.modules.events.abstracts.models.files.AbstractFile
dico.modules.events.timetable.models.breaks.Break attribute), 152
attribute), 256 locator (indico.modules.events.abstracts.models.persons.AbstractPerson
location_changed (in module in- attribute), 153
dico.core.signals.event), 85 locator (indico.modules.events.abstracts.models.review_questions.Abstra
location_id (indico.modules.rb.models.rooms.Room attribute), 154
attribute), 295 locator (indico.modules.events.abstracts.models.reviews.AbstractReview
location_name (in- attribute), 156
dico.modules.rb.models.reservations.Reservation locator (indico.modules.events.agreements.models.agreements.Agreemen
attribute), 302 attribute), 167
location_name (in- locator (indico.modules.events.contributions.models.contributions.Contr
dico.modules.rb.models.rooms.Room attribute), attribute), 171
295 locator (indico.modules.events.contributions.models.fields.ContributionF
location_parent (in- attribute), 173
locator (indico.modules.events.contributions.models.persons.Contributio
dico.modules.events.contributions.models.contributions.Contribution
attribute), 171 attribute), 175
location_parent (in- locator (indico.modules.events.contributions.models.subcontributions.Su
attribute), 178
dico.modules.events.contributions.models.subcontributions.SubContribution
attribute), 178 locator (indico.modules.events.contributions.models.types.ContributionT
location_parent (in- attribute), 179
locator (indico.modules.events.layout.models.images.ImageFile
dico.modules.events.sessions.models.blocks.SessionBlock
attribute), 245 attribute), 183
location_parent (in- locator (indico.modules.events.layout.models.menu.EventPage
dico.modules.events.sessions.models.sessions.Session attribute), 184
attribute), 243 locator (indico.modules.events.layout.models.menu.MenuEntryMixin
location_parent (in- attribute), 185
dico.modules.events.timetable.models.breaks.Breaklocator (indico.modules.events.models.events.Event
attribute), 256 attribute), 125
LocationResultSchema (class in in- locator (indico.modules.events.models.persons.EventPerson
dico.modules.search.result_schemas), 73 attribute), 128

Index 447
Indico Documentation, Release 3.2-dev

locator (indico.modules.events.models.references.ReferenceType
locator (indico.modules.events.surveys.models.surveys.Survey
attribute), 132 attribute), 249
locator (indico.modules.events.models.reviews.ProposalGroupProxy
locator (indico.modules.events.timetable.models.breaks.Break
attribute), 133 attribute), 256
locator (indico.modules.events.notes.models.notes.EventNote
locator (indico.modules.events.timetable.models.entries.TimetableEntry
attribute), 193 attribute), 258
locator (indico.modules.events.papers.models.comments.PaperReviewComment
locator (indico.modules.events.tracks.models.tracks.Track
attribute), 196 attribute), 263
locator (indico.modules.events.papers.models.files.PaperFile
locator (indico.modules.networks.models.networks.IPNetworkGroup
attribute), 197 attribute), 330
locator (indico.modules.events.papers.models.papers.Paper locator (indico.modules.news.models.news.NewsItem
attribute), 198 attribute), 330
locator (indico.modules.events.papers.models.review_questions.PaperReviewQuestion
locator (indico.modules.users.models.users.User at-
attribute), 200 tribute), 278
locator (indico.modules.events.papers.models.reviews.PaperReview
locator (indico.modules.vc.models.vc_rooms.VCRoom
attribute), 201 attribute), 316
locator (indico.modules.events.papers.models.reviews.PaperTypeProxy
locator (indico.modules.vc.models.vc_rooms.VCRoomEventAssociation
attribute), 202 attribute), 317
locator (indico.modules.events.papers.models.revisions.PaperRevision
lock_event() (in module in-
attribute), 203 dico.modules.events.operations), 139
locator (indico.modules.events.papers.models.templates.PaperTemplate
log() (indico.modules.categories.models.categories.Category
attribute), 204 method), 268
locator (indico.modules.events.registration.models.form_fields.RegistrationFormField
log() (indico.modules.events.abstracts.models.abstracts.Abstract
attribute), 220 method), 146
locator (indico.modules.events.registration.models.forms.RegistrationForm
log() (indico.modules.events.contributions.models.contributions.Contribu
attribute), 222 method), 171
locator (indico.modules.events.registration.models.invitations.RegistrationInvitation
log() (indico.modules.events.models.events.Event
attribute), 224 method), 125
locator (indico.modules.events.registration.models.items.RegistrationFormSection
log() (indico.modules.events.registration.models.registrations.Registration
attribute), 228 method), 216
locator (indico.modules.events.registration.models.items.RegistrationFormText
LOG_DIR (built-in variable), 53
attribute), 229 LogEntryBase (class in in-
locator (indico.modules.events.registration.models.registrations.Registration
dico.modules.logs.models.entries), 189
attribute), 216 logged_date (indico.modules.logs.models.entries.LogEntryBase
locator (indico.modules.events.registration.models.registrations.RegistrationData
attribute), 189
attribute), 218 logged_dt (indico.modules.logs.models.entries.CategoryLogEntry
locator (indico.modules.events.reminders.models.reminders.EventReminder
attribute), 188
attribute), 238 logged_dt (indico.modules.logs.models.entries.EventLogEntry
locator (indico.modules.events.requests.models.requests.Request attribute), 188
attribute), 240 logged_dt (indico.modules.logs.models.entries.LogEntryBase
locator (indico.modules.events.sessions.models.blocks.SessionBlockattribute), 189
attribute), 245 logged_in (in module indico.core.signals.users), 90
locator (indico.modules.events.sessions.models.sessions.Session
LOGGING_CONFIG_FILE (built-in variable), 55
attribute), 243 logging_disabled (in-
locator (indico.modules.events.static.models.static.StaticSite dico.modules.events.models.events.Event
attribute), 265 attribute), 125
locator (indico.modules.events.surveys.models.items.SurveyQuestion
LogKind (class in indico.modules.logs.models.entries),
attribute), 252 190
locator (indico.modules.events.surveys.models.items.SurveySection
logo (indico.modules.categories.models.categories.Category
attribute), 252 attribute), 269
locator (indico.modules.events.surveys.models.items.SurveyText
logo (indico.modules.events.models.events.Event
attribute), 253 attribute), 125
locator (indico.modules.events.surveys.models.submissions.SurveySubmission
logo_metadata (in-
attribute), 254 dico.modules.categories.models.categories.Category

448 Index
Indico Documentation, Release 3.2-dev

attribute), 269 managers (indico.modules.events.papers.models.call_for_papers.CallForP


logo_metadata (in- attribute), 196
dico.modules.events.models.events.Event managers_and_submitters (in-
attribute), 125 dico.modules.events.contributions.models.fields.ContributionField
LOGO_URL (built-in variable), 51 attribute), 174
logo_url (indico.modules.categories.models.categories.Category
managers_only (in-
attribute), 269 dico.modules.events.contributions.models.fields.ContributionField
logo_url (indico.modules.events.models.events.Event attribute), 175
attribute), 126 map_url (indico.modules.events.models.events.Event
logo_url (indico.modules.events.payment.plugins.PaymentPluginMixinattribute), 126
attribute), 212 map_url (indico.modules.rb.models.rooms.Room at-
logo_url (indico.modules.vc.plugins.VCPluginMixin tribute), 295
attribute), 319 map_url_template (in-
longitude (indico.modules.rb.models.rooms.Room at- dico.modules.rb.models.locations.Location
tribute), 295 attribute), 299
MapArea (class in in-
M dico.modules.rb.models.map_areas), 300
magnitudes (indico.web.forms.fields.RelativeDeltaField mapping (indico.modules.rb.models.reservations.RepeatMapping
attribute), 350 attribute), 300
magnitudes (indico.web.forms.fields.TimeDeltaField mark_as_duplicate (in-
attribute), 344 dico.modules.events.abstracts.models.reviews.AbstractAction
make_abstract_form() (in module in- attribute), 155
dico.modules.events.abstracts.util), 159 MarkdownPreviewer (class in in-
make_contribution_form() (in module in- dico.modules.attachments.preview), 292
dico.modules.events.contributions.util), 181 marshmallow_aliases (in-
make_diff_log() (in module in- dico.modules.events.abstracts.models.abstracts.Abstract
dico.modules.logs.util), 190 attribute), 146
make_email_primary() (in- marshmallow_aliases (in-
dico.modules.users.models.users.User dico.modules.events.abstracts.models.comments.AbstractCommen
method), 278 attribute), 150
make_registration_schema() (in module in- marshmallow_aliases (in-
dico.modules.events.registration.util), 232 dico.modules.events.abstracts.models.reviews.AbstractReview
make_reminder_email() (in module in- attribute), 156
dico.modules.events.reminders.util), 239 max_advance_days (in-
make_setup_state() (in- dico.modules.rb.models.rooms.Room attribute),
dico.core.plugins.IndicoPluginBlueprint 295
method), 79 MAX_UPLOAD_FILE_SIZE (built-in variable), 57
make_survey_form() (in module in- MAX_UPLOAD_FILES_TOTAL_SIZE (built-in vari-
dico.modules.events.surveys.util), 255 able), 57
md5 (indico.modules.attachments.models.attachments.AttachmentFile
management (indico.modules.logs.models.entries.EventLogRealm
attribute), 189 attribute), 287
management_url (in module in- md5 (indico.modules.designer.models.images.DesignerImageFile
dico.core.signals.event_management), 88 attribute), 321
md5 (indico.modules.events.abstracts.models.files.AbstractFile
manager_form (indico.modules.events.requests.base.RequestDefinitionBase
attribute), 241 attribute), 152
manager_notification_recipients (in- md5 (indico.modules.events.layout.models.images.ImageFile
attribute), 183
dico.modules.events.registration.models.forms.RegistrationForm
attribute), 222 md5 (indico.modules.events.papers.models.files.PaperFile
manager_notifications_enabled (in- attribute), 198
md5 (indico.modules.events.papers.models.templates.PaperTemplate
dico.modules.events.registration.models.forms.RegistrationForm
attribute), 222 attribute), 205
manager_save() (in- md5 (indico.modules.events.registration.models.registrations.RegistrationD
dico.modules.events.requests.base.RequestDefinitionBase attribute), 218
class method), 241 md5 (indico.modules.events.static.models.static.StaticSite

Index 449
Indico Documentation, Release 3.2-dev

attribute), 265 merged_into_user (in-


meeting (indico.modules.events.models.events.EventType dico.modules.users.models.users.User at-
attribute), 128 tribute), 278
members (indico.modules.groups.models.groups.LocalGroup message (indico.modules.events.reminders.models.reminders.EventRemin
attribute), 314 attribute), 238
MEMCACHED_SERVERS (built-in variable), 49 message_complete (in-
menu_entries_for_event() (in module in- dico.modules.events.registration.models.forms.RegistrationForm
dico.modules.events.layout.util), 187 attribute), 222
MenuEntry (class in in- message_pending (in-
dico.modules.events.layout.models.menu), dico.modules.events.registration.models.forms.RegistrationForm
184 attribute), 223
MenuEntryData (class in in- message_unpaid (in-
dico.modules.events.layout.util), 186 dico.modules.events.registration.models.forms.RegistrationForm
MenuEntryMixin (class in in- attribute), 223
dico.modules.events.layout.models.menu), meta (indico.modules.logs.models.entries.CategoryLogEntry
185 attribute), 188
MenuEntryType (class in in- meta (indico.modules.logs.models.entries.EventLogEntry
dico.modules.events.layout.models.menu), attribute), 188
185 meta (indico.modules.logs.models.entries.LogEntryBase
merge (indico.modules.events.abstracts.models.reviews.AbstractActionattribute), 189
attribute), 155 metadata_postprocess (in module in-
merge_person_info() (in- dico.core.signals.event), 85
dico.modules.events.models.persons.EventPerson mgmt_field (indico.modules.events.contributions.models.fields.Contribut
method), 129 attribute), 174
merge_users() (in module in- mixed (indico.modules.events.abstracts.models.abstracts.AbstractReviewin
dico.modules.users.util), 283 attribute), 147
merge_users() (in- moderated (indico.modules.categories.models.categories.EventCreationM
dico.modules.events.models.persons.EventPerson attribute), 270
class method), 129 moderation_enabled (in-
merge_users() (in- dico.modules.events.registration.models.forms.RegistrationForm
attribute), 223
dico.modules.events.papers.models.competences.PaperCompetence
class method), 197 modification_end_dt (in-
merge_users() (in- dico.modules.events.abstracts.models.call_for_abstracts.CallForA
attribute), 149
dico.modules.events.registration.models.registrations.Registration
class method), 216 modification_end_dt (in-
merge_users() (in- dico.modules.events.registration.models.forms.RegistrationForm
dico.modules.events.settings.EventACLProxy attribute), 223
method), 142, 207 modification_ended (in-
merge_users() (in- dico.modules.events.abstracts.models.abstracts.Abstract
dico.modules.users.models.suggestions.SuggestedCategory attribute), 146
class method), 281 modification_ended (in-
merged (in module indico.core.signals.users), 90 dico.modules.events.abstracts.models.call_for_abstracts.CallForA
merged (indico.modules.events.abstracts.models.abstracts.AbstractPublicState
attribute), 149
attribute), 147 modification_mode (in-
merged (indico.modules.events.abstracts.models.abstracts.AbstractState
dico.modules.events.registration.models.forms.RegistrationForm
attribute), 148 attribute), 223
merged_into (indico.modules.events.abstracts.models.abstracts.Abstract
ModificationMode (class in in-
attribute), 146 dico.modules.events.registration.models.forms),
merged_into_id (in- 221
modified_by (indico.modules.events.abstracts.models.abstracts.Abstract
dico.modules.events.abstracts.models.abstracts.Abstract
attribute), 146 attribute), 146
merged_into_id (in- modified_by (indico.modules.events.abstracts.models.comments.Abstrac
dico.modules.users.models.users.User at- attribute), 150
tribute), 278 modified_by (indico.modules.events.papers.models.comments.PaperRev

450 Index
Indico Documentation, Release 3.2-dev

attribute), 196 move() (indico.modules.events.timetable.models.entries.TimetableEntry


modified_by_id (in- method), 258
dico.modules.events.abstracts.models.abstracts.Abstract
move_category() (in module in-
attribute), 146 dico.modules.categories.operations), 272
modified_by_id (in- move_next_to() (in-
dico.modules.events.abstracts.models.comments.AbstractComment
dico.modules.events.timetable.models.entries.TimetableEntry
attribute), 150 method), 258
modified_by_id (in- move_start_dt() (in-
dico.modules.events.papers.models.comments.PaperReviewComment
dico.modules.events.models.events.Event
attribute), 196 method), 126
modified_dt (indico.modules.attachments.models.attachments.Attachment
move_timetable_entry() (in module in-
attribute), 286 dico.modules.events.timetable.operations),
modified_dt (indico.modules.events.abstracts.models.abstracts.Abstract
259
attribute), 146 moved (in module indico.core.signals.category), 82
modified_dt (indico.modules.events.abstracts.models.comments.AbstractComment
moved (in module indico.core.signals.event), 85
attribute), 150 mr (indico.modules.users.models.users.UserTitle at-
modified_dt (indico.modules.events.abstracts.models.reviews.AbstractReview
tribute), 279
attribute), 156 mrs (indico.modules.users.models.users.UserTitle
modified_dt (indico.modules.events.papers.models.comments.PaperReviewComment
attribute), 279
attribute), 196 ms (indico.modules.users.models.users.UserTitle at-
modified_dt (indico.modules.events.papers.models.reviews.PaperReview
tribute), 279
attribute), 202 MultiIPNetworkField (class in in-
modified_dt (indico.modules.search.result_schemas.AttachmentResultSchema
dico.modules.networks.fields), 337
attribute), 72 multipass_data (in-
modified_dt (indico.modules.search.result_schemas.EventNoteResultSchema
dico.modules.auth.models.identities.Identity
attribute), 73 attribute), 306
modified_dt (indico.modules.vc.models.vc_rooms.VCRoom multipass_group_name (in-
attribute), 316 dico.modules.attachments.models.principals.AttachmentFolderPri
modify() (indico.modules.rb.models.reservations.Reservation attribute), 290
method), 302 multipass_group_name (in-
modify_registration() (in module in- dico.modules.attachments.models.principals.AttachmentPrincipal
dico.modules.events.registration.util), 232 attribute), 291
module (indico.modules.categories.models.settings.CategorySetting
multipass_group_name (in-
attribute), 271 dico.modules.categories.models.principals.CategoryPrincipal
module (indico.modules.events.models.settings.EventSetting attribute), 271
attribute), 136 multipass_group_name (in-
module (indico.modules.events.models.settings.EventSettingPrincipaldico.modules.events.contributions.models.principals.Contribution
attribute), 136 attribute), 177
module (indico.modules.logs.models.entries.CategoryLogEntry
multipass_group_name (in-
attribute), 188 dico.modules.events.models.principals.EventPrincipal
module (indico.modules.logs.models.entries.EventLogEntry attribute), 131
attribute), 188 multipass_group_name (in-
module (indico.modules.logs.models.entries.LogEntryBase dico.modules.events.models.settings.EventSettingPrincipal
attribute), 189 attribute), 136
module (indico.modules.users.models.settings.UserSetting multipass_group_name (in-
attribute), 281 dico.modules.events.sessions.models.principals.SessionPrincipal
MONTH (indico.modules.rb.models.reservations.RepeatFrequency attribute), 247
attribute), 300 multipass_group_name (in-
move() (indico.modules.categories.models.categories.Category dico.modules.events.tracks.models.principals.TrackPrincipal
method), 269 attribute), 264
move() (indico.modules.events.layout.models.menu.MenuEntry
multipass_group_name (in-
method), 184 dico.modules.rb.models.blocking_principals.BlockingPrincipal
move() (indico.modules.events.models.events.Event attribute), 299
method), 126 multipass_group_provider (in-

Index 451
Indico Documentation, Release 3.2-dev

name (indico.modules.designer.placeholders.EventVenuePlaceholder
dico.modules.attachments.models.principals.AttachmentFolderPrincipal
attribute), 290 attribute), 328
multipass_group_provider (in- name (indico.modules.designer.placeholders.RegistrationAddressPlacehold
attribute), 327
dico.modules.attachments.models.principals.AttachmentPrincipal
attribute), 291 name (indico.modules.designer.placeholders.RegistrationAffiliationPlaceho
multipass_group_provider (in- attribute), 327
name (indico.modules.designer.placeholders.RegistrationAmountPlacehold
dico.modules.categories.models.principals.CategoryPrincipal
attribute), 271 attribute), 326
multipass_group_provider (in- name (indico.modules.designer.placeholders.RegistrationCountryPlacehold
attribute), 327
dico.modules.events.contributions.models.principals.ContributionPrincipal
attribute), 177 name (indico.modules.designer.placeholders.RegistrationEmailPlaceholder
multipass_group_provider (in- attribute), 326
name (indico.modules.designer.placeholders.RegistrationFirstNamePlaceho
dico.modules.events.models.principals.EventPrincipal
attribute), 131 attribute), 325
multipass_group_provider (in- name (indico.modules.designer.placeholders.RegistrationFriendlyIDPlaceh
dico.modules.events.models.settings.EventSettingPrincipal attribute), 326
attribute), 136 name (indico.modules.designer.placeholders.RegistrationFullNameNoTitleP
multipass_group_provider (in- attribute), 324
name (indico.modules.designer.placeholders.RegistrationFullNameNoTitleP
dico.modules.events.sessions.models.principals.SessionPrincipal
attribute), 247 attribute), 324
multipass_group_provider (in- name (indico.modules.designer.placeholders.RegistrationFullNameNoTitleP
dico.modules.events.tracks.models.principals.TrackPrincipalattribute), 325
attribute), 264 name (indico.modules.designer.placeholders.RegistrationFullNameNoTitleP
multipass_group_provider (in- attribute), 325
name (indico.modules.designer.placeholders.RegistrationFullNamePlaceho
dico.modules.rb.models.blocking_principals.BlockingPrincipal
attribute), 299 attribute), 324
MultipleItemsField (class in in- name (indico.modules.designer.placeholders.RegistrationFullNamePlaceho
dico.web.forms.fields), 346 attribute), 324
MultiStringField (class in in- name (indico.modules.designer.placeholders.RegistrationFullNamePlaceho
dico.web.forms.fields), 346 attribute), 324
mx (indico.modules.users.models.users.UserTitle at- name (indico.modules.designer.placeholders.RegistrationFullNamePlaceho
tribute), 279 attribute), 325
name (indico.modules.designer.placeholders.RegistrationLastNamePlaceho
N attribute), 325
name (indico.modules.designer.placeholders.RegistrationPhonePlaceholder
name (indico.core.oauth.models.applications.OAuthApplication
attribute), 311 attribute), 327
name (indico.modules.designer.placeholders.RegistrationPositionPlacehold
name (indico.modules.categories.models.settings.CategorySetting
attribute), 271 attribute), 327
name (indico.modules.designer.placeholders.RegistrationPricePlaceholder
name (indico.modules.designer.placeholders.CategoryTitlePlaceholder
attribute), 328 attribute), 326
name (indico.modules.designer.placeholders.RegistrationTicketQRPlacehol
name (indico.modules.designer.placeholders.EventDatesPlaceholder
attribute), 323 attribute), 326
name (indico.modules.designer.placeholders.RegistrationTitlePlaceholder
name (indico.modules.designer.placeholders.EventDescriptionPlaceholder
attribute), 323 attribute), 325
name (indico.modules.events.abstracts.placeholders.AbstractIDPlaceholde
name (indico.modules.designer.placeholders.EventLogoPlaceholder
attribute), 329 attribute), 160
name (indico.modules.events.abstracts.placeholders.AbstractInvitationURL
name (indico.modules.designer.placeholders.EventOrgTextPlaceholder
attribute), 324 attribute), 160
name
name (indico.modules.designer.placeholders.EventRoomPlaceholder (indico.modules.events.abstracts.placeholders.AbstractSessionPlaceh
attribute), 328 attribute), 161
name (indico.modules.events.abstracts.placeholders.AbstractTitlePlacehold
name (indico.modules.designer.placeholders.EventSpeakersPlaceholder
attribute), 328 attribute), 160
name
name (indico.modules.designer.placeholders.EventTitlePlaceholder(indico.modules.events.abstracts.placeholders.AbstractTrackPlacehol
attribute), 327 attribute), 161

452 Index
Indico Documentation, Release 3.2-dev

name (indico.modules.events.abstracts.placeholders.AbstractURLPlaceholder
name (indico.modules.events.persons.placeholders.EmailPlaceholder
attribute), 160 attribute), 213
name (indico.modules.events.abstracts.placeholders.CoAuthorsPlaceholder
name (indico.modules.events.persons.placeholders.EventLinkPlaceholder
attribute), 161 attribute), 213
name (indico.modules.events.abstracts.placeholders.ContributionTypePlaceholder
name (indico.modules.events.persons.placeholders.EventTitlePlaceholder
attribute), 164 attribute), 213
name (indico.modules.events.abstracts.placeholders.ContributionURLPlaceholder
name (indico.modules.events.persons.placeholders.FirstNamePlaceholder
attribute), 165 attribute), 213
name (indico.modules.events.abstracts.placeholders.EventTitlePlaceholder
name (indico.modules.events.persons.placeholders.LastNamePlaceholder
attribute), 159 attribute), 214
name (indico.modules.events.abstracts.placeholders.EventURLPlaceholder
name (indico.modules.events.persons.placeholders.RegisterLinkPlaceholde
attribute), 159 attribute), 214
name (indico.modules.events.abstracts.placeholders.JudgmentCommentPlaceholder
name (indico.modules.events.registration.models.forms.RegistrationForm
attribute), 164 attribute), 223
name (indico.modules.events.abstracts.placeholders.PrimaryAuthorsPlaceholder
name (indico.modules.events.registration.placeholders.invitations.FirstNam
attribute), 161 attribute), 234
name (indico.modules.events.abstracts.placeholders.SubmitterFirstNamePlaceholder
name (indico.modules.events.registration.placeholders.invitations.Invitation
attribute), 162 attribute), 235
name (indico.modules.events.abstracts.placeholders.SubmitterLastNamePlaceholder
name (indico.modules.events.registration.placeholders.invitations.LastNam
attribute), 162 attribute), 235
name (indico.modules.events.abstracts.placeholders.SubmitterNamePlaceholder
name (indico.modules.events.registration.placeholders.registrations.EventL
attribute), 162 attribute), 232
name (indico.modules.events.abstracts.placeholders.SubmitterTitlePlaceholder
name (indico.modules.events.registration.placeholders.registrations.EventT
attribute), 163 attribute), 233
name (indico.modules.events.abstracts.placeholders.TargetAbstractIDPlaceholder
name (indico.modules.events.registration.placeholders.registrations.FieldP
attribute), 163 attribute), 233
name (indico.modules.events.abstracts.placeholders.TargetAbstractTitlePlaceholder
name (indico.modules.events.registration.placeholders.registrations.FirstNa
attribute), 163 attribute), 233
name (indico.modules.events.abstracts.placeholders.TargetSubmitterFirstNamePlaceholder
name (indico.modules.events.registration.placeholders.registrations.IDPlac
attribute), 164 attribute), 233
name (indico.modules.events.abstracts.placeholders.TargetSubmitterLastNamePlaceholder
name (indico.modules.events.registration.placeholders.registrations.LastNa
attribute), 164 attribute), 234
name (indico.modules.events.abstracts.placeholders.TargetSubmitterNamePlaceholder
name (indico.modules.events.registration.placeholders.registrations.LinkPla
attribute), 163 attribute), 234
name (indico.modules.events.agreements.placeholders.AgreementLinkPlaceholder
name (indico.modules.events.registration.placeholders.registrations.Rejecti
attribute), 168 attribute), 234
name (indico.modules.events.agreements.placeholders.PersonNamePlaceholder
name (indico.modules.events.requests.base.RequestDefinitionBase
attribute), 169 attribute), 241
name (indico.modules.events.contributions.models.types.ContributionType
name (indico.modules.groups.models.groups.LocalGroup
attribute), 180 attribute), 314
name (indico.modules.events.layout.models.menu.MenuEntry name (indico.modules.logs.renderers.EmailRenderer at-
attribute), 184 tribute), 190
name (indico.modules.events.layout.util.MenuEntryData name (indico.modules.logs.renderers.EventLogRendererBase
attribute), 186 attribute), 191
name (indico.modules.events.models.references.ReferenceType
name (indico.modules.logs.renderers.SimpleRenderer at-
attribute), 133 tribute), 191
name (indico.modules.events.models.settings.EventSetting name (indico.modules.networks.models.networks.IPNetworkGroup
attribute), 136 attribute), 330
name (indico.modules.events.models.settings.EventSettingPrincipal
name (indico.modules.rb.models.equipment.EquipmentType
attribute), 136 attribute), 299
name (indico.modules.events.papers.models.templates.PaperTemplate
name (indico.modules.rb.models.locations.Location at-
attribute), 205 tribute), 299
name (indico.modules.events.persons.placeholders.ContributionsPlaceholder
name (indico.modules.rb.models.map_areas.MapArea
attribute), 212 attribute), 300

Index 453
Indico Documentation, Release 3.2-dev

name (indico.modules.rb.models.room_attributes.RoomAttribute attribute), 304


attribute), 296 nonbookable_periods (in-
name (indico.modules.rb.models.rooms.Room attribute), dico.modules.rb.models.rooms.Room attribute),
295 295
name (indico.modules.search.result_schemas.PersonSchemaNonBookablePeriod (class in in-
attribute), 73 dico.modules.rb.models.room_nonbookable_periods),
name (indico.modules.users.models.affiliations.UserAffiliation 297
attribute), 280 none (indico.core.oauth.models.applications.SystemAppType
name (indico.modules.users.models.settings.UserSetting attribute), 311
attribute), 281 none (indico.modules.events.abstracts.models.abstracts.EditTrackMode
name (indico.modules.users.models.users.PersonMixin attribute), 148
attribute), 275 none (indico.modules.events.abstracts.settings.BOACorrespondingAuthorT
name (indico.modules.vc.models.vc_rooms.VCRoom at- attribute), 165
tribute), 316 none (indico.modules.events.contributions.models.persons.AuthorType
name_options (indico.modules.designer.placeholders.RegistrationFullNameNoTitlePlaceholder
attribute), 175
attribute), 324 none (indico.modules.events.timetable.reschedule.RescheduleMode
name_options (indico.modules.designer.placeholders.RegistrationFullNameNoTitlePlaceholderB
attribute), 261
attribute), 324 none (indico.modules.users.models.users.UserTitle at-
name_options (indico.modules.designer.placeholders.RegistrationFullNameNoTitlePlaceholderC
tribute), 280
attribute), 325 not_allowed (indico.modules.events.registration.models.forms.Modifica
name_options (indico.modules.designer.placeholders.RegistrationFullNameNoTitlePlaceholderD
attribute), 221
attribute), 325 not_empty_answers (in-
name_options (indico.modules.designer.placeholders.RegistrationFullNamePlaceholder
dico.modules.events.surveys.models.items.SurveyQuestion
attribute), 324 attribute), 252
name_options (indico.modules.designer.placeholders.RegistrationFullNamePlaceholderB
not_ready (indico.modules.events.surveys.models.surveys.SurveyState
attribute), 324 attribute), 250
name_options (indico.modules.designer.placeholders.RegistrationFullNamePlaceholderC
not_started (indico.modules.events.abstracts.models.abstracts.Abstract
attribute), 324 attribute), 148
name_options (indico.modules.designer.placeholders.RegistrationFullNamePlaceholderD
note (indico.modules.events.contributions.models.contributions.Contributi
attribute), 325 attribute), 171
NameFormat (class in in- note (indico.modules.events.contributions.models.subcontributions.SubCo
dico.modules.users.models.users), 275 attribute), 179
negative (indico.modules.events.abstracts.models.abstracts.AbstractReviewingState
note (indico.modules.events.models.events.Event
attribute), 148 attribute), 126
negative (indico.modules.logs.models.entries.LogKind note (indico.modules.events.notes.models.notes.EventNoteRevision
attribute), 190 attribute), 194
network (indico.modules.networks.models.networks.IPNetwork note (indico.modules.events.sessions.models.blocks.SessionBlock
attribute), 329 attribute), 245
networks (indico.modules.networks.models.networks.IPNetworkGroup
note (indico.modules.events.sessions.models.sessions.Session
attribute), 330 attribute), 244
NEVER (indico.modules.rb.models.reservations.RepeatFrequency
note_added (in module indico.core.signals.event), 85
attribute), 300 note_deleted (in module indico.core.signals.event),
new_submission_emails (in- 85
dico.modules.events.surveys.models.surveys.Survey note_id (indico.modules.events.notes.models.notes.EventNoteRevision
attribute), 249 attribute), 194
new_tab (indico.modules.events.layout.models.menu.MenuEntrynote_id (indico.modules.search.result_schemas.EventNoteResultSchema
attribute), 184 attribute), 73
NewsItem (class in indico.modules.news.models.news), note_modified (in module indico.core.signals.event),
330 86
next() (indico.modules.events.payment.models.transactions.TransactionStatusTransition
note_restored (in module indico.core.signals.event),
class method), 210 86
NO_REPLY_EMAIL (built-in variable), 54 notification_before_days (in-
NO_RESERVATION_USER_STRATEGY (in- dico.modules.rb.models.rooms.Room attribute),
295
dico.modules.rb.models.reservation_occurrences.ReservationOccurrence

454 Index
Indico Documentation, Release 3.2-dev

notification_before_days_monthly (in- object_relationship_name (in-


dico.modules.rb.models.rooms.Room attribute), dico.modules.events.contributions.models.persons.SubContributio
295 attribute), 176
notification_before_days_weekly (in- object_relationship_name (in-
dico.modules.rb.models.rooms.Room attribute), dico.modules.events.models.persons.EventPersonLink
295 attribute), 129
notification_emails (in- object_relationship_name (in-
dico.modules.rb.models.rooms.Room attribute), dico.modules.events.models.persons.PersonLinkBase
295 attribute), 130
notification_sender_address (in- object_relationship_name (in-
dico.modules.events.registration.models.forms.RegistrationForm
dico.modules.events.sessions.models.persons.SessionBlockPerson
attribute), 223 attribute), 246
notification_sent (in- occurrences (indico.modules.rb.models.reservations.Reservation
attribute), 302
dico.modules.rb.models.reservation_occurrences.ReservationOccurrence
attribute), 304 OccurrencesField (class in in-
notifications_enabled (in- dico.web.forms.fields), 344
dico.modules.events.surveys.models.surveys.Surveyold_api_keys (indico.modules.users.models.users.User
attribute), 249 attribute), 278
notifications_enabled (in- open (indico.modules.categories.models.categories.EventCreationMode
dico.modules.rb.models.rooms.Room attribute), attribute), 270
295 open() (indico.modules.events.abstracts.models.call_for_abstracts.CallFo
notify_managers (in- method), 149
open() (indico.modules.events.papers.models.call_for_papers.CallForPap
dico.modules.categories.models.categories.Category
attribute), 269 method), 196
notify_participants (in- open() (indico.modules.events.surveys.models.surveys.Survey
dico.modules.events.surveys.models.surveys.Survey method), 250
attribute), 250 open_cfa() (in module in-
nth_parent() (indico.modules.categories.models.categories.Category dico.modules.events.abstracts.operations),
method), 269 157
number (indico.modules.events.papers.models.revisions.PaperRevision
open_cfp() (in module in-
attribute), 203 dico.modules.events.papers.operations),
number (indico.modules.rb.models.rooms.Room at- 205
tribute), 295 option_widget (in-
dico.web.forms.fields.IndicoEnumRadioField
O attribute), 345
OAuth2AuthorizationCode (class in in- option_widget (in-
dico.core.oauth.models.tokens), 311 dico.web.forms.fields.IndicoQuerySelectMultipleCheckboxField
OAuthApplication (class in in- attribute), 349
dico.core.oauth.models.applications), 308 option_widget (in-
OAuthApplicationUserLink (class in in- dico.web.forms.fields.IndicoSelectMultipleCheckboxField
dico.core.oauth.models.applications), 311 attribute), 338
OAuthToken (class in in- order_by_name (in-
dico.core.oauth.models.tokens), 312 dico.modules.events.registration.models.registrations.Registration
object (indico.modules.events.models.persons.PersonLinkBase attribute), 216
attribute), 130 organizer_info (in-
dico.modules.events.models.events.Event
object (indico.modules.events.timetable.models.entries.TimetableEntry
attribute), 258 attribute), 126
object_relationship_name (in- other (indico.modules.logs.models.entries.LogKind at-
tribute),
dico.modules.events.abstracts.models.persons.AbstractPersonLink 190
attribute), 153 overlaps() (indico.modules.rb.models.reservation_occurrences.Reserva
object_relationship_name (in- method), 304
overlaps() (indico.modules.rb.models.room_nonbookable_periods.NonB
dico.modules.events.contributions.models.persons.ContributionPersonLink
attribute), 175 method), 297
override_request_endpoint() (in module in-

Index 455
Indico Documentation, Release 3.2-dev

dico.modules.events.static.util), 266 attribute), 257


OverrideMultipleItemsField (class in in- own_room_id (indico.modules.events.contributions.models.contributions.
dico.web.forms.fields), 347 attribute), 172
OverviewStats (class in in- own_room_id (indico.modules.events.models.events.Event
dico.modules.events.registration.stats), 237 attribute), 126
own_address (indico.modules.events.contributions.models.contributions.Contribution
own_room_id (indico.modules.events.sessions.models.blocks.SessionBloc
attribute), 171 attribute), 245
own_address (indico.modules.events.models.events.Eventown_room_id (indico.modules.events.sessions.models.sessions.Session
attribute), 126 attribute), 244
own_address (indico.modules.events.sessions.models.blocks.SessionBlock
own_room_id (indico.modules.events.timetable.models.breaks.Break
attribute), 245 attribute), 257
own_address (indico.modules.events.sessions.models.sessions.Session
own_room_name (in-
attribute), 244 dico.modules.events.contributions.models.contributions.Contribut
own_address (indico.modules.events.timetable.models.breaks.Breakattribute), 172
attribute), 257 own_room_name (in-
own_data (indico.modules.events.registration.models.items.RegistrationFormPersonalDataSection
dico.modules.events.models.events.Event
attribute), 227 attribute), 126
own_data (indico.modules.events.registration.models.items.RegistrationFormSection
own_room_name (in-
attribute), 228 dico.modules.events.sessions.models.blocks.SessionBlock
own_map_url (indico.modules.events.models.events.Event attribute), 245
attribute), 126 own_room_name (in-
own_no_access_contact (in- dico.modules.events.sessions.models.sessions.Session
dico.modules.attachments.models.attachments.Attachment attribute), 244
attribute), 286 own_room_name (in-
own_no_access_contact (in- dico.modules.events.timetable.models.breaks.Break
dico.modules.attachments.models.folders.AttachmentFolder attribute), 257
attribute), 289 own_venue (indico.modules.events.contributions.models.contributions.Co
own_no_access_contact (in- attribute), 172
dico.modules.categories.models.categories.Categoryown_venue (indico.modules.events.models.events.Event
attribute), 269 attribute), 126
own_no_access_contact (in- own_venue (indico.modules.events.sessions.models.blocks.SessionBlock
attribute), 245
dico.modules.events.contributions.models.contributions.Contribution
attribute), 171 own_venue (indico.modules.events.sessions.models.sessions.Session
own_no_access_contact (in- attribute), 244
dico.modules.events.models.events.Event own_venue (indico.modules.events.timetable.models.breaks.Break
attribute), 126 attribute), 257
own_no_access_contact (in- own_venue_id (indico.modules.events.contributions.models.contribution
dico.modules.events.sessions.models.sessions.Session attribute), 172
attribute), 244 own_venue_id (indico.modules.events.models.events.Event
own_no_access_contact (in- attribute), 126
dico.modules.events.tracks.models.tracks.Track own_venue_id (indico.modules.events.sessions.models.blocks.SessionBlo
attribute), 263 attribute), 245
own_no_access_contact (in- own_venue_id (indico.modules.events.sessions.models.sessions.Session
dico.modules.rb.models.rooms.Room attribute), attribute), 244
295 own_venue_id (indico.modules.events.timetable.models.breaks.Break
own_room (indico.modules.events.contributions.models.contributions.Contribution
attribute), 257
attribute), 171 own_venue_name (in-
own_room (indico.modules.events.models.events.Event dico.modules.events.contributions.models.contributions.Contribut
attribute), 126 attribute), 172
own_room (indico.modules.events.sessions.models.blocks.SessionBlock
own_venue_name (in-
attribute), 245 dico.modules.events.models.events.Event
own_room (indico.modules.events.sessions.models.sessions.Session attribute), 126
attribute), 244 own_venue_name (in-
own_room (indico.modules.events.timetable.models.breaks.Break dico.modules.events.sessions.models.blocks.SessionBlock

456 Index
Indico Documentation, Release 3.2-dev

attribute), 245 197


own_venue_name (in- PaperEmailSettingsField (class in in-
dico.modules.events.sessions.models.sessions.Session dico.modules.events.papers.fields), 335
attribute), 244 PaperFile (class in in-
own_venue_name (in- dico.modules.events.papers.models.files),
dico.modules.events.timetable.models.breaks.Break 197
attribute), 257 PaperJudgmentProxy (class in in-
own_visibility_horizon (in- dico.modules.events.papers.models.reviews),
dico.modules.categories.models.categories.Category 201
attribute), 269 PaperReview (class in in-
owner (indico.modules.designer.models.templates.DesignerTemplate dico.modules.events.papers.models.reviews),
attribute), 322 201
owner (indico.modules.rb.models.rooms.Room at- PaperReviewComment (class in in-
tribute), 295 dico.modules.events.papers.models.comments),
owner_id (indico.modules.rb.models.rooms.Room at- 196
tribute), 296 PaperReviewQuestion (class in in-
dico.modules.events.papers.models.review_questions),
P 199
page (indico.modules.events.layout.models.menu.MenuEntry PaperReviewRating (class in in-
attribute), 184 dico.modules.events.papers.models.review_ratings),
page (indico.modules.events.layout.models.menu.MenuEntryType 200
attribute), 185 PaperReviewType (class in in-
page_id (indico.modules.events.layout.models.menu.MenuEntry dico.modules.events.papers.models.reviews),
attribute), 184 202
PaperRevision
Paper (class in indico.modules.events.papers.models.papers), (class in in-
198 dico.modules.events.papers.models.revisions),
203
paper (indico.modules.events.contributions.models.contributions.Contribution
attribute), 172 PaperRevisionState (class in in-
paper (indico.modules.events.papers.models.files.PaperFile dico.modules.events.papers.models.revisions),
attribute), 198 204
PaperTemplate
paper (indico.modules.events.papers.models.revisions.PaperRevision (class in in-
attribute), 203 dico.modules.events.papers.models.templates),
paper_content_reviewers (in- 204
PaperTypeProxy
dico.modules.events.contributions.models.contributions.Contribution (class in in-
attribute), 172 dico.modules.events.papers.models.reviews),
202
paper_judges (indico.modules.events.contributions.models.contributions.Contribution
attribute), 172 param_required (in-
paper_layout_reviewers (in- dico.modules.events.persons.placeholders.ContributionsPlacehold
attribute), 212
dico.modules.events.contributions.models.contributions.Contribution
attribute), 172 param_required (in-
paper_revision (in- dico.modules.events.registration.placeholders.registrations.FieldP
attribute), 233
dico.modules.events.papers.models.comments.PaperReviewComment
attribute), 196 param_restricted (in-
paper_revision (in- dico.modules.events.persons.placeholders.ContributionsPlacehold
dico.modules.events.papers.models.files.PaperFile attribute), 212
attribute), 198 param_restricted (in-
PaperAction (class in in- dico.modules.events.registration.placeholders.registrations.FieldP
dico.modules.events.papers.models.reviews), attribute), 233
200 parent_chain_query (in-
PaperCommentVisibility (class in in- dico.modules.categories.models.categories.Category
dico.modules.events.papers.models.reviews), attribute), 269
201 parent_id (indico.modules.categories.models.categories.Category
PaperCompetence (class in in- attribute), 269
dico.modules.events.papers.models.competences), parent_id (indico.modules.events.layout.models.menu.MenuEntry

Index 457
Indico Documentation, Release 3.2-dev

attribute), 184 attribute), 224


parent_id (indico.modules.events.registration.models.form_fields.RegistrationFormField
pending (indico.modules.events.registration.models.registrations.Registra
attribute), 220 attribute), 219
parent_id (indico.modules.events.registration.models.form_fields.RegistrationFormPersonalDataField
pending (indico.modules.events.requests.models.requests.RequestState
attribute), 221 attribute), 240
parent_id (indico.modules.events.registration.models.items.RegistrationFormItem
pending (indico.modules.events.static.models.static.StaticSiteState
attribute), 226 attribute), 266
parent_id (indico.modules.events.registration.models.items.RegistrationFormPersonalDataSection
pending (indico.modules.rb.models.blocked_rooms.BlockedRoomState
attribute), 227 attribute), 298
parent_id (indico.modules.events.registration.models.items.RegistrationFormSection
pending (indico.modules.rb.models.reservations.ReservationState
attribute), 228 attribute), 303
parent_id (indico.modules.events.registration.models.items.RegistrationFormText
pending_answers (in-
attribute), 229 dico.modules.events.surveys.models.submissions.SurveySubmissio
parent_id (indico.modules.events.surveys.models.items.SurveyItemattribute), 254
attribute), 251 pending_move_request (in-
parent_id (indico.modules.events.surveys.models.items.SurveyQuestiondico.modules.events.models.events.Event
attribute), 252 attribute), 126
parent_id (indico.modules.events.surveys.models.items.SurveySection
pending_paper_files (in-
attribute), 253 dico.modules.events.contributions.models.contributions.Contribut
parent_id (indico.modules.events.surveys.models.items.SurveyText attribute), 172
attribute), 253 permissions (indico.modules.categories.models.principals.CategoryPrin
parent_id (indico.modules.events.timetable.models.entries.TimetableEntry
attribute), 271
attribute), 258 permissions (indico.modules.events.contributions.models.principals.Co
partial_completion (in- attribute), 177
dico.modules.events.surveys.models.surveys.Survey permissions (indico.modules.events.models.principals.EventPrincipal
attribute), 250 attribute), 131
participants (indico.modules.logs.models.entries.EventLogRealm
permissions (indico.modules.events.sessions.models.principals.SessionP
attribute), 189 attribute), 247
participation_regform (in- permissions (indico.modules.events.tracks.models.principals.TrackPrin
dico.modules.events.models.events.Event attribute), 264
attribute), 126 permissions_info (in-
password (indico.modules.auth.models.identities.Identity dico.modules.events.abstracts.fields.TrackRoleField
attribute), 306 attribute), 335
password_hash (in- person (indico.modules.events.abstracts.models.persons.AbstractPersonLi
dico.modules.auth.models.identities.Identity attribute), 153
attribute), 306 person (indico.modules.events.contributions.models.persons.Contribution
payment_dt (indico.modules.events.registration.models.registrations.Registration
attribute), 175
attribute), 216 person (indico.modules.events.contributions.models.persons.SubContribu
PaymentPluginMixin (class in in- attribute), 176
dico.modules.events.payment.plugins), 211 person (indico.modules.events.models.persons.EventPersonLink
PaymentTransaction (class in in- attribute), 129
dico.modules.events.payment.models.transactions), person (indico.modules.events.models.persons.PersonLinkBase
209 attribute), 130
PDFPreviewer (class in in- person (indico.modules.events.sessions.models.persons.SessionBlockPerso
dico.modules.attachments.preview), 292 attribute), 246
pending (indico.modules.events.agreements.models.agreements.Agreement
person_email (indico.modules.events.agreements.models.agreements.Ag
attribute), 167 attribute), 167
pending (indico.modules.events.agreements.models.agreements.AgreementState
person_id (indico.modules.events.abstracts.models.persons.AbstractPers
attribute), 168 attribute), 153
pending (indico.modules.events.payment.models.transactions.TransactionAction
person_id (indico.modules.events.contributions.models.persons.Contribu
attribute), 210 attribute), 175
pending (indico.modules.events.payment.models.transactions.TransactionStatus
person_id (indico.modules.events.contributions.models.persons.SubCont
attribute), 210 attribute), 176
pending (indico.modules.events.registration.models.invitations.InvitationState
person_id (indico.modules.events.models.persons.EventPersonLink

458 Index
Indico Documentation, Release 3.2-dev

attribute), 129 dico.modules.events.contributions.models.contributions.Contribut


person_id (indico.modules.events.models.persons.PersonLinkBase attribute), 172
attribute), 130 person_link_relation_name (in-
person_id (indico.modules.events.sessions.models.persons.SessionBlockPersonLink
dico.modules.events.models.events.Event
attribute), 246 attribute), 126
person_link_backref_name (in- person_link_relation_name (in-
dico.modules.events.abstracts.models.persons.AbstractPersonLink
dico.modules.events.models.persons.PersonLinkMixin
attribute), 153 attribute), 130
person_link_backref_name (in- person_link_unique_columns (in-
dico.modules.events.contributions.models.contributions.Contribution
dico.modules.events.abstracts.models.persons.AbstractPersonLink
attribute), 172 attribute), 153
person_link_backref_name (in- person_link_unique_columns (in-
dico.modules.events.contributions.models.persons.ContributionPersonLink
dico.modules.events.contributions.models.persons.ContributionPe
attribute), 175 attribute), 176
person_link_backref_name (in- person_link_unique_columns (in-
dico.modules.events.contributions.models.persons.SubContributionPersonLink
dico.modules.events.contributions.models.persons.SubContributio
attribute), 176 attribute), 176
person_link_backref_name (in- person_link_unique_columns (in-
dico.modules.events.models.events.Event dico.modules.events.models.persons.EventPersonLink
attribute), 126 attribute), 129
person_link_backref_name (in- person_link_unique_columns (in-
dico.modules.events.models.persons.EventPersonLink dico.modules.events.models.persons.PersonLinkBase
attribute), 129 attribute), 130
person_link_backref_name (in- person_link_unique_columns (in-
dico.modules.events.models.persons.PersonLinkBase dico.modules.events.sessions.models.persons.SessionBlockPerson
attribute), 130 attribute), 246
person_link_backref_name (in- person_links (indico.modules.events.abstracts.models.abstracts.Abstra
dico.modules.events.models.persons.PersonLinkMixin attribute), 146
attribute), 130 person_links (indico.modules.events.contributions.models.contribution
person_link_backref_name (in- attribute), 172
person_links (indico.modules.events.contributions.models.subcontribut
dico.modules.events.sessions.models.persons.SessionBlockPersonLink
attribute), 246 attribute), 179
person_link_cls (in- person_links (indico.modules.events.models.events.Event
attribute), 126
dico.modules.events.abstracts.fields.AbstractPersonLinkListField
attribute), 332 person_links (indico.modules.events.models.persons.PersonLinkMixin
person_link_cls (in- attribute), 130
person_links (indico.modules.events.sessions.models.blocks.SessionBlo
dico.modules.events.contributions.fields.ContributionPersonLinkListField
attribute), 335 attribute), 245
person_link_cls (in- person_name (indico.modules.events.agreements.models.agreements.Agr
attribute), 167
dico.modules.events.contributions.fields.SubContributionPersonLinkListField
attribute), 335 person_updated (in module in-
person_link_cls (in- dico.core.signals.event), 86
dico.modules.events.fields.EventPersonLinkListField
personal_data_type (in-
attribute), 331 dico.modules.events.registration.models.form_fields.RegistrationF
person_link_cls (in- attribute), 220
dico.modules.events.fields.PersonLinkListFieldBasepersonal_data_type (in-
attribute), 332 dico.modules.events.registration.models.form_fields.RegistrationF
person_link_cls (in- attribute), 221
dico.modules.events.sessions.fields.SessionBlockPersonLinkListField
personal_data_type (in-
attribute), 337 dico.modules.events.registration.models.items.RegistrationFormIt
person_link_data (in- attribute), 226
dico.modules.events.models.persons.PersonLinkMixinpersonal_data_type (in-
attribute), 130 dico.modules.events.registration.models.items.RegistrationFormPe
person_link_relation_name (in- attribute), 227

Index 459
Indico Documentation, Release 3.2-dev

personal_data_type (in- attribute), 242


plugin (indico.modules.logs.renderers.EventLogRendererBase
dico.modules.events.registration.models.items.RegistrationFormSection
attribute), 228 attribute), 191
personal_data_type (in- plugin (indico.modules.vc.models.vc_rooms.VCRoom
attribute), 316
dico.modules.events.registration.models.items.RegistrationFormText
attribute), 229 plugin_link (indico.modules.events.layout.models.menu.MenuEntryTyp
PersonalDataType (class in in- attribute), 185
dico.modules.events.registration.models.items), plugin_url_rule_to_js() (in module in-
225 dico.core.plugins), 80
PersonLinkBase (class in in- PluginCategory (class in indico.core.plugins), 80
dico.modules.events.models.persons), 129 PLUGINS (built-in variable), 57
PersonLinkListFieldBase (class in in- populate_obj() (indico.web.forms.fields.JSONField
dico.modules.events.fields), 331 method), 339
PersonLinkMixin (class in in- position (indico.modules.categories.models.categories.Category
dico.modules.events.models.persons), 130 attribute), 269
PersonMixin (class in in- position (indico.modules.events.abstracts.models.email_templates.Abstr
dico.modules.users.models.users), 275 attribute), 151
PersonNamePlaceholder (class in in- position (indico.modules.events.abstracts.models.review_questions.Abst
dico.modules.events.agreements.placeholders), attribute), 154
168 position (indico.modules.events.contributions.models.fields.Contribution
persons (indico.modules.search.result_schemas.ContributionResultSchema
attribute), 174
attribute), 72 position (indico.modules.events.contributions.models.subcontributions.S
persons (indico.modules.search.result_schemas.EventResultSchemaattribute), 179
attribute), 71 position (indico.modules.events.layout.models.menu.MenuEntry
PersonSchema (class in in- attribute), 184
dico.modules.search.result_schemas), 73 position (indico.modules.events.papers.models.review_questions.PaperR
phone (indico.modules.events.models.persons.EventPerson attribute), 200
attribute), 129 position (indico.modules.events.registration.models.form_fields.Registra
phone (indico.modules.events.models.persons.PersonLinkBase attribute), 220
attribute), 130 position (indico.modules.events.registration.models.form_fields.Registra
phone (indico.modules.events.registration.models.items.PersonalDataType
attribute), 221
attribute), 225 position (indico.modules.events.registration.models.items.PersonalData
phone (indico.modules.users.models.users.User at- attribute), 225
tribute), 278 position (indico.modules.events.registration.models.items.RegistrationFo
Photo (class in indico.modules.rb.models.photos), 300 attribute), 226
photo (indico.modules.rb.models.rooms.Room at- position (indico.modules.events.registration.models.items.RegistrationFo
tribute), 296 attribute), 227
photo_id (indico.modules.rb.models.rooms.Room at- position (indico.modules.events.registration.models.items.RegistrationFo
tribute), 296 attribute), 228
picture (indico.modules.users.models.users.User at- position (indico.modules.events.registration.models.items.RegistrationFo
tribute), 278 attribute), 229
picture_metadata (in- position (indico.modules.events.surveys.models.items.SurveyItem
dico.modules.users.models.users.User at- attribute), 251
tribute), 279 position (indico.modules.events.surveys.models.items.SurveyQuestion
picture_source (in- attribute), 252
dico.modules.users.models.users.User at- position (indico.modules.events.surveys.models.items.SurveySection
tribute), 279 attribute), 253
plugin (indico.modules.events.layout.models.menu.MenuEntry position (indico.modules.events.surveys.models.items.SurveyText
attribute), 184 attribute), 253
plugin (indico.modules.events.layout.util.MenuEntryDataposition (indico.modules.events.tracks.models.tracks.Track
attribute), 186 attribute), 263
plugin (indico.modules.events.payment.models.transactions.PaymentTransaction
positive (indico.modules.events.abstracts.models.abstracts.AbstractRevi
attribute), 210 attribute), 148
plugin (indico.modules.events.requests.base.RequestDefinitionBase
positive (indico.modules.logs.models.entries.LogKind

460 Index
Indico Documentation, Release 3.2-dev

attribute), 190 method), 332


possible_render_modes (in- pre_validate() (in-
dico.modules.categories.models.categories.Category dico.modules.networks.fields.MultiIPNetworkField
attribute), 269 method), 337
possible_render_modes (in- pre_validate() (in-
dico.modules.events.abstracts.models.abstracts.Abstract dico.web.forms.fields.IndicoDateTimeField
attribute), 146 method), 344
possible_render_modes (in- pre_validate() (in-
dico.modules.events.abstracts.models.reviews.AbstractReviewdico.web.forms.fields.IndicoPalettePickerField
attribute), 156 method), 343
possible_render_modes (in- pre_validate() (in-
dico.modules.events.contributions.models.contributions.Contribution
dico.web.forms.fields.IndicoSinglePalettePickerField
attribute), 172 method), 343
possible_render_modes (in- pre_validate() (in-
dico.modules.events.contributions.models.subcontributions.SubContribution
dico.web.forms.fields.MultipleItemsField
attribute), 179 method), 347
possible_render_modes (in- pre_validate() (in-
dico.modules.events.models.events.Event dico.web.forms.fields.MultiStringField
attribute), 126 method), 346
possible_render_modes (in- pre_validate() (in-
dico.modules.events.papers.models.reviews.PaperReview dico.web.forms.fields.OverrideMultipleItemsField
attribute), 202 method), 347
possible_render_modes (in- pre_validate() (in-
dico.modules.events.papers.models.revisions.PaperRevision dico.web.forms.fields.RelativeDeltaField
attribute), 203 method), 350
possible_render_modes (in- pre_validate() (in-
dico.modules.events.sessions.models.sessions.Session dico.web.forms.fields.TextListField method),
attribute), 244 341
possible_render_modes (in- pre_validate() (in-
dico.modules.events.surveys.models.items.SurveyItem dico.web.forms.fields.TimeDeltaField method),
attribute), 251 344
possible_render_modes (in- preferences (in module indico.core.signals.users), 90
dico.modules.events.timetable.models.breaks.Break preload_acl_entries() (in-
attribute), 257 dico.modules.events.contributions.models.contributions.Contribut
possible_render_modes (in- class method), 172
dico.modules.events.tracks.models.tracks.Track preload_acl_entries() (in-
attribute), 263 dico.modules.events.sessions.models.sessions.Session
pre_validate() (in- class method), 244
dico.modules.events.abstracts.fields.AbstractFieldpreload_all_acl_entries() (in-
method), 332 dico.modules.events.models.events.Event
pre_validate() (in- method), 126
dico.modules.events.abstracts.fields.AbstractPersonLinkListField
PRELOAD_EVENT_ATTACHED_ITEMS (in-
method), 333 dico.modules.events.contributions.models.contributions.Contribut
pre_validate() (in- attribute), 169
dico.modules.events.abstracts.fields.EmailRuleListField
PRELOAD_EVENT_ATTACHED_ITEMS (in-
method), 334 dico.modules.events.contributions.models.subcontributions.SubCo
pre_validate() (in- attribute), 178
dico.modules.events.contributions.fields.ContributionPersonLinkListField
PRELOAD_EVENT_ATTACHED_ITEMS (in-
method), 335 dico.modules.events.sessions.models.sessions.Session
pre_validate() (in- attribute), 243
dico.modules.events.fields.EventPersonLinkListField
PRELOAD_EVENT_NOTES (in-
method), 331 dico.modules.events.contributions.models.contributions.Contribut
pre_validate() (in- attribute), 169
dico.modules.events.fields.ReferencesField PRELOAD_EVENT_NOTES (in-

Index 461
Indico Documentation, Release 3.2-dev

dico.modules.events.contributions.models.subcontributions.SubContribution
dico.modules.categories.models.principals.CategoryPrincipal
attribute), 178 attribute), 271
PRELOAD_EVENT_NOTES (in- principal_for (in-
dico.modules.events.sessions.models.sessions.Session dico.modules.events.contributions.models.principals.Contribution
attribute), 243 attribute), 177
Previewer (class in in- principal_for (in-
dico.modules.attachments.preview), 292 dico.modules.events.models.principals.EventPrincipal
price (indico.modules.events.registration.models.registrations.Registration
attribute), 131
attribute), 216 principal_for (in-
price (indico.modules.events.registration.models.registrations.RegistrationData
dico.modules.events.sessions.models.principals.SessionPrincipal
attribute), 218 attribute), 247
price_adjustment (in- principal_for (in-
dico.modules.events.registration.models.registrations.Registration
dico.modules.events.tracks.models.principals.TrackPrincipal
attribute), 216 attribute), 264
primary (indico.modules.events.contributions.models.persons.AuthorType
principal_order (in-
attribute), 175 dico.modules.events.registration.models.forms.RegistrationForm
primary_authors (in- attribute), 223
dico.modules.events.models.persons.AuthorsSpeakersMixin
principal_order (in-
attribute), 128 dico.modules.groups.core.GroupProxy at-
primary_email_changed (in module in- tribute), 315
dico.core.signals.users), 90 principal_order (in-
PrimaryAuthorsPlaceholder (class in in- dico.modules.networks.models.networks.IPNetworkGroup
dico.modules.events.abstracts.placeholders), attribute), 330
161 principal_order (in-
principal (indico.modules.events.models.persons.EventPerson dico.modules.users.models.users.User at-
attribute), 129 tribute), 279
principal_backref_name (in- principal_type (in-
dico.modules.attachments.models.principals.AttachmentFolderPrincipal
dico.modules.events.registration.models.forms.RegistrationForm
attribute), 290 attribute), 223
principal_backref_name (in- principal_type (in-
dico.modules.attachments.models.principals.AttachmentPrincipal
dico.modules.networks.models.networks.IPNetworkGroup
attribute), 291 attribute), 330
principal_backref_name (in- principal_type (in-
dico.modules.categories.models.principals.CategoryPrincipal dico.modules.users.models.users.User at-
attribute), 271 tribute), 279
principal_backref_name (in- PrincipalField (class in indico.web.forms.fields),
348
dico.modules.events.contributions.models.principals.ContributionPrincipal
attribute), 177 PrincipalListField (class in in-
principal_backref_name (in- dico.web.forms.fields), 347
dico.modules.events.models.principals.EventPrincipal
print_badge_template (in module in-
attribute), 131 dico.core.signals.event), 86
principal_backref_name (in- private (indico.modules.events.surveys.models.surveys.Survey
dico.modules.events.models.settings.EventSettingPrincipal attribute), 250
attribute), 136 process (in module indico.core.signals.rh), 90
principal_backref_name (in- process_args (in module indico.core.signals.rh), 90
dico.modules.events.sessions.models.principals.SessionPrincipal
process_data() (in-
attribute), 247 dico.modules.categories.fields.CategoryField
principal_backref_name (in- method), 337
dico.modules.events.tracks.models.principals.TrackPrincipal
process_data() (in-
attribute), 264 dico.modules.networks.fields.MultiIPNetworkField
principal_backref_name (in- method), 337
dico.modules.rb.models.blocking_principals.BlockingPrincipal
process_data() (in-
attribute), 299 dico.web.forms.fields.IndicoEmailRecipientsField
principal_for (in- method), 351

462 Index
Indico Documentation, Release 3.2-dev

process_data() (in- process_formdata() (in-


dico.web.forms.fields.IndicoPalettePickerField dico.web.forms.fields.IndicoSinglePalettePickerField
method), 343 method), 343
process_data() (in- process_formdata() (in-
dico.web.forms.fields.IndicoStaticTextField dico.web.forms.fields.IndicoWeekDayRepetitionField
method), 342 method), 350
process_data() (in- process_formdata() (in-
dico.web.forms.fields.IndicoTimezoneSelectField dico.web.forms.fields.JSONField method),
method), 345 339
process_form_data() (in- process_formdata() (in-
dico.modules.users.ext.ExtraUserPreferences dico.web.forms.fields.MultipleItemsField
method), 284 method), 347
process_formdata() (in- process_formdata() (in-
dico.modules.categories.fields.CategoryField dico.web.forms.fields.MultiStringField
method), 337 method), 346
process_formdata() (in- process_formdata() (in-
dico.modules.events.fields.PersonLinkListFieldBase dico.web.forms.fields.OccurrencesField
method), 332 method), 344
process_formdata() (in- process_formdata() (in-
dico.modules.events.fields.ReferencesField dico.web.forms.fields.OverrideMultipleItemsField
method), 332 method), 347
process_formdata() (in- process_formdata() (in-
dico.modules.events.papers.fields.PaperEmailSettingsField dico.web.forms.fields.PrincipalField method),
method), 337 348
process_formdata() (in- process_formdata() (in-
dico.modules.networks.fields.MultiIPNetworkField dico.web.forms.fields.PrincipalListField
method), 338 method), 348
process_formdata() (in- process_formdata() (in-
dico.web.forms.fields.EditableFileField dico.web.forms.fields.RelativeDeltaField
method), 348 method), 350
process_formdata() (in- process_formdata() (in-
dico.web.forms.fields.EmailListField method), dico.web.forms.fields.TextListField method),
341 341
process_formdata() (in- process_formdata() (in-
dico.web.forms.fields.FileField method), dico.web.forms.fields.TimeDeltaField method),
346 344
process_formdata() (in- processed_by_id (in-
dico.web.forms.fields.HiddenEnumField dico.modules.events.requests.models.requests.Request
method), 345 attribute), 240
process_formdata() (in- processed_by_user (in-
dico.web.forms.fields.HiddenFieldList method), dico.modules.events.requests.models.requests.Request
340 attribute), 240
process_formdata() (in- processed_dt (indico.modules.events.requests.models.requests.Request
dico.web.forms.fields.IndicoDateTimeField attribute), 240
method), 344 prof (indico.modules.users.models.users.UserTitle at-
process_formdata() (in- tribute), 280
dico.web.forms.fields.IndicoLocationField PROFILE (built-in variable), 52
method), 349 ProfilePictureSource (class in in-
process_formdata() (in- dico.modules.users.models.users), 276
dico.web.forms.fields.IndicoPalettePickerField proposal (indico.modules.events.models.reviews.ProposalRevisionMixin
method), 343 attribute), 135
process_formdata() (in- proposal_attr (in-
dico.web.forms.fields.IndicoSelectMultipleCheckboxBooleanField
dico.modules.events.models.reviews.ProposalRevisionMixin
method), 350 attribute), 135

Index 463
Indico Documentation, Release 3.2-dev

proposal_attr (in- protection_mode (in-


dico.modules.events.papers.models.revisions.PaperRevision dico.modules.events.contributions.models.contributions.Contribut
attribute), 203 attribute), 172
proposal_type (in- protection_mode (in-
dico.modules.events.abstracts.models.abstracts.Abstract dico.modules.events.models.events.Event
attribute), 146 attribute), 126
proposal_type (in- protection_mode (in-
dico.modules.events.models.reviews.ProposalMixin dico.modules.events.sessions.models.sessions.Session
attribute), 134 attribute), 244
proposal_type (in- protection_mode (in-
dico.modules.events.papers.models.papers.Paper dico.modules.events.tracks.models.tracks.Track
attribute), 199 attribute), 263
ProposalCommentMixin (class in in- protection_mode (in-
dico.modules.events.models.reviews), 133 dico.modules.rb.models.rooms.Room attribute),
ProposalGroupProxy (class in in- 296
dico.modules.events.models.reviews), 133 protection_parent (in-
ProposalMixin (class in in- dico.modules.attachments.models.attachments.Attachment
dico.modules.events.models.reviews), 134 attribute), 286
ProposalReviewMixin (class in in- protection_parent (in-
dico.modules.events.models.reviews), 134 dico.modules.attachments.models.folders.AttachmentFolder
ProposalRevisionMixin (class in in- attribute), 289
dico.modules.events.models.reviews), 135 protection_parent (in-
proposed_action (in- dico.modules.categories.models.categories.Category
attribute), 270
dico.modules.events.abstracts.models.reviews.AbstractReview
attribute), 156 protection_parent (in-
proposed_action (in- dico.modules.events.contributions.models.contributions.Contribut
dico.modules.events.papers.models.reviews.PaperReview attribute), 172
attribute), 202 protection_parent (in-
proposed_contribution_type (in- dico.modules.events.models.events.Event
attribute), 126
dico.modules.events.abstracts.models.reviews.AbstractReview
attribute), 156 protection_parent (in-
proposed_contribution_type_id (in- dico.modules.events.sessions.models.sessions.Session
attribute), 244
dico.modules.events.abstracts.models.reviews.AbstractReview
attribute), 156 protection_parent (in-
proposed_related_abstract (in- dico.modules.rb.models.rooms.Room attribute),
296
dico.modules.events.abstracts.models.reviews.AbstractReview
attribute), 156 provider (indico.modules.auth.models.identities.Identity
proposed_related_abstract_id (in- attribute), 307
provider (indico.modules.events.payment.models.transactions.PaymentTr
dico.modules.events.abstracts.models.reviews.AbstractReview
attribute), 156 attribute), 210
proposed_tracks (in- PROVIDER_MAP (built-in variable), 48
proxied_attr (indico.modules.events.papers.models.papers.Paper
dico.modules.events.abstracts.models.reviews.AbstractReview
attribute), 156 attribute), 199
protection_changed (in module in- proxy (indico.modules.groups.models.groups.LocalGroup
dico.core.signals.acl), 81 attribute), 314
protection_mode (in- proxy_to_reservation_if_last_valid_occurrence()
dico.modules.attachments.models.attachments.Attachment (in module indico.modules.rb.models.util), 305
attribute), 286 public (indico.modules.events.contributions.models.fields.ContributionFie
protection_mode (in- attribute), 175
dico.modules.attachments.models.folders.AttachmentFolder
public_regform_access (in-
attribute), 289 dico.modules.events.models.events.Event
protection_mode (in- attribute), 126
dico.modules.categories.models.categories.Categorypublic_state (indico.modules.events.abstracts.models.abstracts.Abstra
attribute), 269 attribute), 146

464 Index
Indico Documentation, Release 3.2-dev

PUBLIC_SUPPORT_EMAIL (built-in variable), 54 rating_range (indico.modules.events.papers.models.call_for_papers.Ca


publish_checkin_enabled (in- attribute), 196
dico.modules.events.registration.models.forms.RegistrationForm
RatingReviewField (class in in-
attribute), 223 dico.modules.events.fields), 332
publish_registration_count (in- rb_check_user_access() (in module in-
dico.modules.rb.util), 305
dico.modules.events.registration.models.forms.RegistrationForm
attribute), 223 rb_is_admin() (in module indico.modules.rb.util),
publish_registrations_enabled (in- 305
read_access (indico.modules.categories.models.principals.CategoryPrin
dico.modules.events.registration.models.forms.RegistrationForm
attribute), 223 attribute), 271
published_registrations (in- read_access (indico.modules.events.contributions.models.principals.Co
dico.modules.events.models.events.Event attribute), 177
attribute), 126 read_access (indico.modules.events.models.principals.EventPrincipal
attribute), 131
Q read_access (indico.modules.events.sessions.models.principals.SessionP
query (indico.modules.categories.settings.CategorySettingsProxy attribute), 247
attribute), 274 read_access (indico.modules.events.tracks.models.principals.TrackPrin
query (indico.modules.events.settings.EventSettingsProxy attribute), 264
attribute), 144, 208 ready_to_open (in-
query (indico.modules.users.models.settings.UserSettingsProxy dico.modules.events.surveys.models.surveys.SurveyState
attribute), 282 attribute), 250
query_active_surveys() (in module in- real_visibility_horizon (in-
dico.modules.events.surveys.util), 255 dico.modules.categories.models.categories.Category
query_personal_tokens() (in- attribute), 270
dico.modules.users.models.users.User realm (indico.modules.logs.models.entries.CategoryLogEntry
method), 279 attribute), 188
realm (indico.modules.logs.models.entries.EventLogEntry
question (indico.modules.events.abstracts.models.review_ratings.AbstractReviewRating
attribute), 154 attribute), 188
reason (indico.modules.events.agreements.models.agreements.Agreement
question (indico.modules.events.papers.models.review_ratings.PaperReviewRating
attribute), 200 attribute), 167
reason (indico.modules.rb.models.blockings.Blocking
question (indico.modules.events.surveys.models.items.SurveyItemType
attribute), 251 attribute), 298
recipients (indico.modules.events.abstracts.models.email_logs.Abstrac
question (indico.modules.events.surveys.models.submissions.SurveyAnswer
attribute), 254 attribute), 150
question_class (in- recipients (indico.modules.events.reminders.models.reminders.EventRe
attribute), 238
dico.modules.events.abstracts.models.review_ratings.AbstractReviewRating
attribute), 154 redirect_to_login() (in module in-
question_class (in- dico.modules.auth.util), 308
redirect_uri (indico.core.oauth.models.tokens.OAuth2AuthorizationCo
dico.modules.events.papers.models.review_ratings.PaperReviewRating
attribute), 200 attribute), 312
redirect_uris
question_id (indico.modules.events.abstracts.models.review_ratings.AbstractReviewRating (in-
attribute), 155 dico.core.oauth.models.applications.OAuthApplication
attribute), 311
question_id (indico.modules.events.papers.models.review_ratings.PaperReviewRating
attribute), 200 REDIS_CACHE_URL (built-in variable), 49
reference_backref_name
question_id (indico.modules.events.surveys.models.submissions.SurveyAnswer (in-
attribute), 254 dico.modules.events.contributions.models.references.Contribution
questions (indico.modules.events.surveys.models.surveys.Survey attribute), 177
attribute), 250 reference_backref_name (in-
dico.modules.events.contributions.models.references.SubContribu
R attribute), 177
reference_backref_name
radio_widget (indico.web.forms.fields.IndicoProtectionField (in-
attribute), 349 dico.modules.events.models.references.EventReference
attribute), 132
rating_range (indico.modules.events.abstracts.models.call_for_abstracts.CallForAbstracts
attribute), 149 reference_backref_name (in-

Index 465
Indico Documentation, Release 3.2-dev

dico.modules.events.models.references.ReferenceModelBasedico.modules.events.util), 141
attribute), 132 register_transaction() (in module in-
reference_type (in- dico.modules.events.payment.util), 211
dico.modules.events.contributions.models.references.ContributionReference
register_user() (in module in-
attribute), 177 dico.modules.auth.util), 308
reference_type (in- registered (in module indico.core.signals.users), 90
dico.modules.events.contributions.models.references.SubContributionReference
registered_only (in-
attribute), 177 dico.modules.events.layout.models.menu.MenuEntry
reference_type (in- attribute), 184
dico.modules.events.models.references.EventReference
RegisterLinkPlaceholder (class in in-
attribute), 132 dico.modules.events.persons.placeholders),
reference_type (in- 214
dico.modules.events.models.references.ReferenceModelBase
Registration (class in in-
attribute), 132 dico.modules.events.registration.models.registrations),
reference_type_id (in- 214
registration (indico.modules.events.payment.models.transactions.Paym
dico.modules.events.contributions.models.references.ContributionReference
attribute), 177 attribute), 210
reference_type_id (in- registration (indico.modules.events.registration.models.invitations.Reg
attribute), 225
dico.modules.events.contributions.models.references.SubContributionReference
attribute), 177 registration_checkin_updated (in module in-
reference_type_id (in- dico.core.signals.event), 86
dico.modules.events.models.references.EventReference
registration_created (in module in-
attribute), 132 dico.core.signals.event), 86
reference_type_id (in- registration_deleted (in module in-
dico.modules.events.models.references.ReferenceModelBasedico.core.signals.event), 86
attribute), 132 registration_form (in-
ReferenceModelBase (class in in- dico.modules.attachments.models.principals.AttachmentFolderPri
dico.modules.events.models.references), attribute), 290
132 registration_form (in-
references (indico.modules.events.contributions.models.contributions.Contribution
dico.modules.attachments.models.principals.AttachmentPrincipal
attribute), 172 attribute), 291
references (indico.modules.events.contributions.models.subcontributions.SubContribution
registration_form (in-
attribute), 179 dico.modules.categories.models.principals.CategoryPrincipal
references (indico.modules.events.models.events.Event attribute), 271
attribute), 126 registration_form (in-
ReferencesField (class in in- dico.modules.events.contributions.models.principals.Contribution
dico.modules.events.fields), 332 attribute), 177
ReferenceType (class in in- registration_form (in-
dico.modules.events.models.references), dico.modules.events.models.principals.EventPrincipal
132 attribute), 131
refresh_event_persons() (in- registration_form (in-
dico.modules.events.models.events.Event dico.modules.events.models.settings.EventSettingPrincipal
method), 126 attribute), 136
register_event_time_change() (in module in- registration_form (in-
dico.modules.events.util), 141 dico.modules.events.sessions.models.principals.SessionPrincipal
register_link_events() (in- attribute), 247
dico.modules.vc.models.vc_rooms.VCRoomEventAssociation
registration_form (in-
class method), 317 dico.modules.events.tracks.models.principals.TrackPrincipal
register_location_change() (in module in- attribute), 264
dico.modules.events.util), 141 registration_form (in-
register_login() (in- dico.modules.rb.models.blocking_principals.BlockingPrincipal
dico.modules.auth.models.identities.Identity attribute), 299
method), 307 registration_form_created (in module in-
register_time_change() (in module in- dico.core.signals.event), 86

466 Index
Indico Documentation, Release 3.2-dev

registration_form_deleted (in module in- attribute), 299


dico.core.signals.event), 86 registration_form_wtform_created (in mod-
registration_form_edited (in module in- ule indico.core.signals.event), 86
dico.core.signals.event), 86 registration_id (in-
registration_form_id (in- dico.modules.events.payment.models.transactions.PaymentTransa
attribute), 210
dico.modules.attachments.models.principals.AttachmentFolderPrincipal
attribute), 290 registration_id (in-
registration_form_id (in- dico.modules.events.registration.models.invitations.RegistrationIn
attribute), 225
dico.modules.attachments.models.principals.AttachmentPrincipal
attribute), 291 registration_id (in-
registration_form_id (in- dico.modules.events.registration.models.registrations.Registration
dico.modules.categories.models.principals.CategoryPrincipal attribute), 218
attribute), 271 registration_limit (in-
registration_form_id (in- dico.modules.events.registration.models.forms.RegistrationForm
attribute), 223
dico.modules.events.contributions.models.principals.ContributionPrincipal
attribute), 177 registration_personal_data_modified (in
registration_form_id (in- module indico.core.signals.event), 86
dico.modules.events.models.principals.EventPrincipal
registration_requested (in module in-
attribute), 131 dico.core.signals.users), 91
registration_form_id (in- registration_state_updated (in module in-
dico.modules.events.models.settings.EventSettingPrincipal dico.core.signals.event), 86
attribute), 136 registration_updated (in module in-
registration_form_id (in- dico.core.signals.event), 86
RegistrationAddressPlaceholder (class in in-
dico.modules.events.registration.models.form_fields.RegistrationFormField
attribute), 220 dico.modules.designer.placeholders), 327
registration_form_id (in- RegistrationAffiliationPlaceholder (class
in indico.modules.designer.placeholders), 327
dico.modules.events.registration.models.form_fields.RegistrationFormPersonalDataField
attribute), 221 RegistrationAmountPlaceholder (class in in-
registration_form_id (in- dico.modules.designer.placeholders), 326
RegistrationCountryPlaceholder (class in in-
dico.modules.events.registration.models.invitations.RegistrationInvitation
attribute), 225 dico.modules.designer.placeholders), 327
registration_form_id (in- RegistrationData (class in in-
dico.modules.events.registration.models.items.RegistrationFormItem
dico.modules.events.registration.models.registrations),
attribute), 226 217
registration_form_id (in- RegistrationEmailPlaceholder (class in in-
dico.modules.designer.placeholders), 326
dico.modules.events.registration.models.items.RegistrationFormPersonalDataSection
attribute), 227 RegistrationFirstNamePlaceholder (class in
registration_form_id (in- indico.modules.designer.placeholders), 325
dico.modules.events.registration.models.items.RegistrationFormSection
RegistrationForm (class in in-
attribute), 228 dico.modules.events.registration.models.forms),
registration_form_id (in- 221
dico.modules.events.registration.models.items.RegistrationFormText
RegistrationFormField (class in in-
attribute), 229 dico.modules.events.registration.models.form_fields),
registration_form_id (in- 219
RegistrationFormFieldData (class in in-
dico.modules.events.registration.models.registrations.Registration
attribute), 217 dico.modules.events.registration.models.form_fields),
registration_form_id (in- 220
dico.modules.events.sessions.models.principals.SessionPrincipal
RegistrationFormItem (class in in-
attribute), 247 dico.modules.events.registration.models.items),
registration_form_id (in- 225
RegistrationFormItemType (class in in-
dico.modules.events.tracks.models.principals.TrackPrincipal
attribute), 264 dico.modules.events.registration.models.items),
registration_form_id (in- 227
dico.modules.rb.models.blocking_principals.BlockingPrincipal
RegistrationFormPersonalDataField

Index 467
Indico Documentation, Release 3.2-dev

(class in in- 235


dico.modules.events.registration.models.form_fields),
RegistrationState (class in in-
220 dico.modules.events.registration.models.registrations),
RegistrationFormPersonalDataSection 219
(class in in- RegistrationTicketQRPlaceholder (class in
dico.modules.events.registration.models.items), indico.modules.designer.placeholders), 325
227 RegistrationTitlePlaceholder (class in in-
RegistrationFormSection (class in in- dico.modules.designer.placeholders), 325
dico.modules.events.registration.models.items), reject (indico.modules.events.abstracts.models.reviews.AbstractAction
227 attribute), 155
RegistrationFormText (class in in- reject (indico.modules.events.papers.models.reviews.PaperAction
dico.modules.events.registration.models.items), attribute), 201
228 reject (indico.modules.events.payment.models.transactions.TransactionA
RegistrationFriendlyIDPlaceholder (class attribute), 210
in indico.modules.designer.placeholders), 326 reject() (indico.modules.events.agreements.models.agreements.Agreeme
RegistrationFullNameNoTitlePlaceholder method), 167
(class in in- reject() (indico.modules.events.requests.base.RequestDefinitionBase
dico.modules.designer.placeholders), 324 class method), 242
RegistrationFullNameNoTitlePlaceholderB reject() (indico.modules.rb.models.blocked_rooms.BlockedRoom
(class in in- method), 298
dico.modules.designer.placeholders), 324 reject() (indico.modules.rb.models.reservation_occurrences.Reservatio
RegistrationFullNameNoTitlePlaceholderC method), 304
(class in in- reject() (indico.modules.rb.models.reservations.Reservation
dico.modules.designer.placeholders), 325 method), 302
RegistrationFullNameNoTitlePlaceholderD rejected (indico.modules.events.abstracts.models.abstracts.AbstractPub
(class in in- attribute), 147
dico.modules.designer.placeholders), 325 rejected (indico.modules.events.abstracts.models.abstracts.AbstractState
RegistrationFullNamePlaceholder (class in attribute), 148
indico.modules.designer.placeholders), 323 rejected (indico.modules.events.agreements.models.agreements.Agreeme
RegistrationFullNamePlaceholderB (class in attribute), 167
indico.modules.designer.placeholders), 324 rejected (indico.modules.events.agreements.models.agreements.Agreeme
RegistrationFullNamePlaceholderC (class in attribute), 168
indico.modules.designer.placeholders), 324 rejected (indico.modules.events.papers.models.revisions.PaperRevisionS
RegistrationFullNamePlaceholderD (class in attribute), 204
indico.modules.designer.placeholders), 325 rejected (indico.modules.events.payment.models.transactions.Transactio
RegistrationInvitation (class in in- attribute), 210
rejected (indico.modules.events.registration.models.registrations.Registr
dico.modules.events.registration.models.invitations),
224 attribute), 219
RegistrationLastNamePlaceholder (class in rejected (indico.modules.events.requests.models.requests.RequestState
indico.modules.designer.placeholders), 325 attribute), 240
RegistrationPhonePlaceholder (class in in- rejected (indico.modules.rb.models.blocked_rooms.BlockedRoomState
dico.modules.designer.placeholders), 327 attribute), 298
RegistrationPositionPlaceholder (class in rejected (indico.modules.rb.models.reservation_occurrences.Reservatio
indico.modules.designer.placeholders), 327 attribute), 305
RegistrationPricePlaceholder (class in in- rejected (indico.modules.rb.models.reservations.ReservationState
dico.modules.designer.placeholders), 326 attribute), 303
RegistrationRequest (class in in- rejected_by (indico.modules.rb.models.blocked_rooms.BlockedRoom
dico.modules.auth.models.registration_requests), attribute), 298
307 rejected_on_behalf (in-
registrations (in- dico.modules.events.agreements.models.agreements.AgreementSta
attribute), 168
dico.modules.events.registration.models.forms.RegistrationForm
attribute), 223 rejection_reason (in-
RegistrationSettingsProxy (class in in- dico.modules.events.registration.models.registrations.Registration
dico.modules.events.registration.settings), attribute), 217

468 Index
Indico Documentation, Release 3.2-dev

rejection_reason (in- class method), 160


dico.modules.rb.models.blocked_rooms.BlockedRoom render() (indico.modules.events.abstracts.placeholders.CoAuthorsPlace
attribute), 298 class method), 162
rejection_reason (in- render() (indico.modules.events.abstracts.placeholders.ContributionTyp
class method), 164
dico.modules.rb.models.reservation_occurrences.ReservationOccurrence
attribute), 304 render() (indico.modules.events.abstracts.placeholders.ContributionURL
rejection_reason (in- class method), 165
dico.modules.rb.models.reservations.Reservation render() (indico.modules.events.abstracts.placeholders.EventTitlePlaceh
attribute), 302 class method), 159
RejectionReasonPlaceholder (class in in- render() (indico.modules.events.abstracts.placeholders.EventURLPlaceh
dico.modules.events.registration.placeholders.registrations),class method), 159
234 render() (indico.modules.events.abstracts.placeholders.JudgmentComme
RelativeDeltaField (class in in- class method), 164
dico.web.forms.fields), 350 render() (indico.modules.events.abstracts.placeholders.PrimaryAuthorsP
remove_principal() (in- class method), 161
dico.modules.events.settings.EventACLProxy render() (indico.modules.events.abstracts.placeholders.SubmitterFirstNa
method), 142, 207 class method), 162
remove_room_spritesheet_photo() (in mod- render() (indico.modules.events.abstracts.placeholders.SubmitterLastNa
ule indico.modules.rb.util), 305 class method), 162
render() (indico.modules.designer.placeholders.CategoryTitlePlaceholder
render() (indico.modules.events.abstracts.placeholders.SubmitterNameP
class method), 328 class method), 162
render() (indico.modules.designer.placeholders.EventDatesPlaceholder
render() (indico.modules.events.abstracts.placeholders.SubmitterTitlePl
class method), 323 class method), 163
render() (indico.modules.designer.placeholders.EventDescriptionPlaceholder
render() (indico.modules.events.abstracts.placeholders.TargetAbstractID
class method), 323 class method), 163
render() (indico.modules.designer.placeholders.EventLogoPlaceholder
render() (indico.modules.events.abstracts.placeholders.TargetAbstractTi
class method), 329 class method), 163
render() (indico.modules.designer.placeholders.EventOrgTextPlaceholder
render() (indico.modules.events.abstracts.placeholders.TargetSubmitterF
class method), 324 class method), 164
render() (indico.modules.designer.placeholders.EventRoomPlaceholder
render() (indico.modules.events.abstracts.placeholders.TargetSubmitterL
class method), 328 class method), 164
render() (indico.modules.designer.placeholders.EventSpeakersPlaceholder
render() (indico.modules.events.abstracts.placeholders.TargetSubmitterN
class method), 328 class method), 163
render() (indico.modules.designer.placeholders.EventTitlePlaceholder
render() (indico.modules.events.agreements.models.agreements.Agreeme
class method), 327 method), 167
render() (indico.modules.designer.placeholders.EventVenuePlaceholder
render() (indico.modules.events.agreements.placeholders.AgreementLin
class method), 328 class method), 168
render() (indico.modules.designer.placeholders.RegistrationAmountPlaceholder
render() (indico.modules.events.agreements.placeholders.PersonNameP
class method), 326 class method), 169
render() (indico.modules.designer.placeholders.RegistrationPricePlaceholder
render() (indico.modules.events.persons.placeholders.ContributionsPlac
class method), 326 class method), 212
render() (indico.modules.designer.placeholders.RegistrationTicketQRPlaceholder
render() (indico.modules.events.persons.placeholders.EmailPlaceholder
class method), 326 class method), 213
render() (indico.modules.events.abstracts.placeholders.AbstractIDPlaceholder
render() (indico.modules.events.persons.placeholders.EventLinkPlaceho
class method), 160 class method), 213
render() (indico.modules.events.abstracts.placeholders.AbstractInvitationURLPlaceholder
render() (indico.modules.events.persons.placeholders.EventTitlePlaceho
class method), 161 class method), 213
render() (indico.modules.events.abstracts.placeholders.AbstractSessionPlaceholder
render() (indico.modules.events.persons.placeholders.FirstNamePlaceho
class method), 161 class method), 213
render() (indico.modules.events.abstracts.placeholders.AbstractTitlePlaceholder
render() (indico.modules.events.persons.placeholders.LastNamePlaceho
class method), 160 class method), 214
render() (indico.modules.events.abstracts.placeholders.AbstractTrackPlaceholder
render() (indico.modules.events.persons.placeholders.RegisterLinkPlace
class method), 161 class method), 214
render() (indico.modules.events.abstracts.placeholders.AbstractURLPlaceholder
render() (indico.modules.events.registration.placeholders.invitations.Fir

Index 469
Indico Documentation, Release 3.2-dev

class method), 234 dico.modules.vc.plugins.VCPluginMixin


render() (indico.modules.events.registration.placeholders.invitations.InvitationLinkPlaceholder
method), 319
class method), 235 render_manage_event_info_box() (in-
render() (indico.modules.events.registration.placeholders.invitations.LastNamePlaceholder
dico.modules.vc.plugins.VCPluginMixin
class method), 235 method), 320
render() (indico.modules.events.registration.placeholders.registrations.EventLinkPlaceholder
render_mode (indico.modules.categories.models.categories.Category
class method), 232 attribute), 270
render() (indico.modules.events.registration.placeholders.registrations.EventTitlePlaceholder
render_mode (indico.modules.events.abstracts.models.abstracts.Abstract
class method), 233 attribute), 147
render() (indico.modules.events.registration.placeholders.registrations.FieldPlaceholder
render_mode (indico.modules.events.abstracts.models.comments.Abstrac
class method), 233 attribute), 150
render() (indico.modules.events.registration.placeholders.registrations.FirstNamePlaceholder
render_mode (indico.modules.events.abstracts.models.reviews.AbstractR
class method), 233 attribute), 156
render() (indico.modules.events.registration.placeholders.registrations.IDPlaceholder
render_mode (indico.modules.events.contributions.models.contributions.
class method), 233 attribute), 172
render() (indico.modules.events.registration.placeholders.registrations.LastNamePlaceholder
render_mode (indico.modules.events.contributions.models.subcontributio
class method), 234 attribute), 179
render() (indico.modules.events.registration.placeholders.registrations.LinkPlaceholder
render_mode (indico.modules.events.models.events.Event
class method), 234 attribute), 126
render() (indico.modules.events.registration.placeholders.registrations.RejectionReasonPlaceholder
render_mode (indico.modules.events.notes.models.notes.EventNoteRevis
class method), 234 attribute), 194
render() (indico.modules.logs.models.entries.LogEntryBaserender_mode (indico.modules.events.papers.models.comments.PaperRev
method), 189 attribute), 197
render_archive() (in module in- render_mode (indico.modules.events.papers.models.reviews.PaperReview
dico.modules.events.contributions.util), 181 attribute), 202
render_base_price() (in- render_mode (indico.modules.events.papers.models.revisions.PaperRevis
attribute), 204
dico.modules.events.registration.models.forms.RegistrationForm
method), 223 render_mode (indico.modules.events.sessions.models.sessions.Session
render_base_price() (in- attribute), 244
render_mode (indico.modules.events.surveys.models.items.SurveyItem
dico.modules.events.registration.models.registrations.Registration
method), 217 attribute), 251
render_buttons() (in- render_mode (indico.modules.events.surveys.models.items.SurveyQuestio
dico.modules.vc.plugins.VCPluginMixin attribute), 252
method), 319 render_mode (indico.modules.events.surveys.models.items.SurveySection
render_changes() (in module in- attribute), 253
dico.modules.logs.util), 190 render_mode (indico.modules.events.surveys.models.items.SurveyText
render_details() (in- attribute), 253
render_mode (indico.modules.events.timetable.models.breaks.Break
dico.modules.events.payment.models.transactions.PaymentTransaction
method), 210 attribute), 257
render_entry() (in- render_mode (indico.modules.events.tracks.models.tracks.Track
dico.modules.logs.renderers.EventLogRendererBase attribute), 263
class method), 191 render_payment_form() (in-
render_entry_info_balloon() (in module in- dico.modules.events.payment.plugins.PaymentPluginMixin
dico.modules.events.timetable.util), 261 method), 212
render_event_buttons() (in- render_pdf() (in module in-
dico.modules.vc.plugins.VCPluginMixin dico.modules.events.contributions.util), 181
method), 319 render_price() (in-
render_form() (in- dico.modules.events.registration.models.registrations.Registration
dico.modules.events.requests.base.RequestDefinitionBase method), 217
class method), 242 render_price() (in-
render_form() (in- dico.modules.events.registration.models.registrations.Registration
dico.modules.vc.plugins.VCPluginMixin method), 218
method), 319 render_price_adjustment() (in-
render_info_box() (in- dico.modules.events.registration.models.registrations.Registration

470 Index
Indico Documentation, Release 3.2-dev

method), 217 attribute), 168


render_protection_message() (in- required (indico.modules.events.registration.placeholders.invitations.Inv
dico.web.forms.fields.IndicoProtectionField attribute), 235
method), 349 RescheduleMode (class in in-
render_session_timetable() (in module in- dico.modules.events.timetable.reschedule),
dico.modules.events.timetable.util), 261 261
render_session_type_row() (in module in- Rescheduler (class in in-
dico.modules.events.sessions.util), 248 dico.modules.events.timetable.reschedule),
render_template_func() (in- 261
dico.core.plugins.WPJinjaMixinPlugin static Reservation (class in in-
method), 80 dico.modules.rb.models.reservations), 300
render_transaction_details() (in- reservation_id (in-
dico.modules.events.payment.plugins.PaymentPluginMixin dico.modules.rb.models.reservation_edit_logs.ReservationEditLog
method), 212 attribute), 304
renderer (indico.modules.logs.models.entries.LogEntryBasereservation_id (in-
attribute), 189 dico.modules.rb.models.reservation_occurrences.ReservationOcc
repeat_frequency (in- attribute), 304
dico.modules.rb.models.reservations.Reservation ReservationEditLog (class in in-
attribute), 302 dico.modules.rb.models.reservation_edit_logs),
repeat_interval (in- 303
dico.modules.rb.models.reservations.Reservation ReservationLink (class in in-
attribute), 302 dico.modules.rb.models.reservations), 302
RepeatFrequency (class in in- ReservationOccurrence (class in in-
dico.modules.rb.models.reservations), 300 dico.modules.rb.models.reservation_occurrences),
RepeatMapping (class in in- 304
dico.modules.rb.models.reservations), 300 ReservationOccurrenceState (class in in-
repetition (indico.modules.rb.models.reservations.Reservation dico.modules.rb.models.reservation_occurrences),
attribute), 302 305
reply_to_address (in- reservations (indico.modules.events.models.events.Event
attribute), 126
dico.modules.events.abstracts.models.email_templates.AbstractEmailTemplate
attribute), 151 reservations (indico.modules.rb.models.rooms.Room
reply_to_address (in- attribute), 296
dico.modules.events.reminders.models.reminders.EventReminder
reservations_need_confirmation (in-
attribute), 238 dico.modules.rb.models.rooms.Room attribute),
Request (class in in- 296
dico.modules.events.requests.models.requests), ReservationState (class in in-
239 dico.modules.rb.models.reservations), 303
RequestDefinitionBase (class in in- reset() (indico.modules.events.agreements.models.agreements.Agreemen
dico.modules.events.requests.base), 240 method), 167
requested_dt (indico.modules.events.static.models.static.StaticSite
reset_abstract_state() (in module in-
attribute), 265 dico.modules.events.abstracts.operations),
RequestState (class in in- 157
dico.modules.events.requests.models.requests), reset_approval() (in-
240 dico.modules.rb.models.reservations.Reservation
require_feature() (in module in- method), 302
dico.modules.events.features.util), 182 reset_client_secret() (in-
require_login (in- dico.core.oauth.models.applications.OAuthApplication
method), 311
dico.modules.events.registration.models.forms.RegistrationForm
attribute), 223 reset_paper_state() (in module in-
require_user (indico.modules.events.registration.models.forms.RegistrationForm
dico.modules.events.papers.operations),
attribute), 223 205
require_user (indico.modules.events.surveys.models.surveys.Survey
reset_signing_secret() (in-
attribute), 250 dico.modules.users.models.users.User
required (indico.modules.events.agreements.placeholders.AgreementLinkPlaceholder
method), 279

Index 471
Indico Documentation, Release 3.2-dev

reset_state() (in- revision_attr (in-


dico.modules.events.abstracts.models.abstracts.Abstract dico.modules.events.models.reviews.ProposalReviewMixin
method), 147 attribute), 134
reset_state() (in- revision_attr (in-
dico.modules.events.papers.models.papers.Paper dico.modules.events.papers.models.reviews.PaperReview
method), 199 attribute), 202
resolve_title() (in module in- revision_count (in-
dico.modules.vc.util), 318 dico.modules.events.papers.models.papers.Paper
restore() (indico.modules.events.models.events.Event attribute), 199
method), 127 revision_id (indico.modules.events.papers.models.comments.PaperRev
restored (in module indico.core.signals.event), 86 attribute), 197
restricted (indico.modules.categories.models.categories.EventCreationMode
revision_id (indico.modules.events.papers.models.files.PaperFile
attribute), 270 attribute), 198
RESULTS_PER_PAGE (in- revision_id (indico.modules.events.papers.models.reviews.PaperReview
dico.modules.search.base.IndicoSearchProvider attribute), 202
attribute), 70 revisions (indico.modules.events.notes.models.notes.EventNote
ResultSchemaBase (class in in- attribute), 194
dico.modules.search.result_schemas), 71 revisions (indico.modules.events.papers.models.papers.Paper
review (indico.modules.events.abstracts.models.review_ratings.AbstractReviewRating
attribute), 199
attribute), 155 revisions_enabled (in-
review (indico.modules.events.papers.models.review_ratings.PaperReviewRating
dico.modules.events.abstracts.models.abstracts.Abstract
attribute), 200 attribute), 147
review_class (indico.modules.events.abstracts.models.review_ratings.AbstractReviewRating
revisions_enabled (in-
attribute), 155 dico.modules.events.models.reviews.ProposalMixin
review_class (indico.modules.events.papers.models.review_ratings.PaperReviewRating
attribute), 134
attribute), 200 revisions_enabled (in-
review_id (indico.modules.events.abstracts.models.review_ratings.AbstractReviewRating
dico.modules.events.models.reviews.ProposalRevisionMixin
attribute), 155 attribute), 135
review_id (indico.modules.events.papers.models.review_ratings.PaperReviewRating
revisions_enabled (in-
attribute), 200 dico.modules.events.papers.models.papers.Paper
reviewed_for (indico.modules.events.abstracts.models.abstracts.EditTrackMode
attribute), 199
attribute), 148 rewrite_css_urls() (in module in-
reviewed_for_tracks (in- dico.modules.events.static.util), 266
dico.modules.events.abstracts.models.abstracts.Abstract
rewrite_static_url() (in module in-
attribute), 147 dico.modules.events.static.util), 266
reviewers (indico.modules.events.abstracts.models.reviews.AbstractCommentVisibility
RewrittenManifest (class in in-
attribute), 155 dico.modules.events.static.util), 266
reviewers (indico.modules.events.papers.models.reviews.PaperCommentVisibility
RHManageEventBase (class in in-
attribute), 201 dico.modules.events.management.controllers),
reviewing (indico.modules.logs.models.entries.EventLogRealm 191
attribute), 189 roles (indico.modules.events.abstracts.fields.AbstractPersonLinkListField
reviewing_instructions (in- attribute), 333
roles (indico.modules.events.contributions.fields.ContributionPersonLinkL
dico.modules.events.abstracts.models.call_for_abstracts.CallForAbstracts
attribute), 149 attribute), 335
reviewing_state (in- roles (indico.modules.events.fields.EventPersonLinkListField
dico.modules.events.abstracts.models.abstracts.Abstract attribute), 331
attribute), 147 Room (class in indico.modules.rb.models.rooms), 293
revision (indico.modules.events.models.reviews.ProposalReviewMixin
room_id (indico.modules.rb.models.blocked_rooms.BlockedRoom
attribute), 134 attribute), 298
revision (indico.modules.events.papers.models.reviews.PaperReview
room_id (indico.modules.rb.models.reservations.Reservation
attribute), 202 attribute), 302
revision_attr (in- room_id (indico.modules.rb.models.room_attributes.RoomAttributeAssoci
attribute), 296
dico.modules.events.abstracts.models.reviews.AbstractReview
attribute), 156 room_id (indico.modules.rb.models.room_bookable_hours.BookableHour

472 Index
Indico Documentation, Release 3.2-dev

attribute), 297 259


room_id (indico.modules.rb.models.room_nonbookable_periods.NonBookablePeriod
scheduled_dt (indico.modules.events.reminders.models.reminders.Even
attribute), 297 attribute), 238
room_name (indico.modules.events.contributions.models.subcontributions.SubContribution
scheduled_notes (in-
attribute), 179 dico.modules.events.models.events.Event
room_name (indico.modules.search.result_schemas.LocationResultSchemaattribute), 127
attribute), 73 SCHEDULED_TASK_OVERRIDE (built-in variable), 49
room_name_format (in- schema_post_dump (in module in-
dico.modules.rb.models.locations.Location dico.core.signals.plugin), 89
attribute), 300 schema_post_load (in module in-
RoomAttribute (class in in- dico.core.signals.plugin), 89
dico.modules.rb.models.room_attributes), schema_pre_load (in module in-
296 dico.core.signals.plugin), 89
RoomAttributeAssociation (class in in- scheme (indico.modules.events.models.references.ReferenceType
dico.modules.rb.models.room_attributes), attribute), 133
296 scope (indico.core.oauth.models.tokens.OAuth2AuthorizationCode
rooms (indico.modules.rb.models.locations.Location at- attribute), 312
tribute), 300 scopes (indico.core.oauth.models.applications.OAuthApplicationUserLink
ROUTE_OLD_URLS (built-in variable), 56 attribute), 311
rules (indico.modules.events.abstracts.models.email_templates.AbstractEmailTemplate
scopes (indico.core.oauth.models.tokens.TokenModelBase
attribute), 151 attribute), 314
run() (indico.modules.events.timetable.reschedule.Rescheduler
score (indico.modules.events.abstracts.models.abstracts.Abstract
method), 262 attribute), 147
running (indico.modules.events.static.models.static.StaticSiteState
score (indico.modules.events.abstracts.models.reviews.AbstractReview
attribute), 266 attribute), 156
score (indico.modules.events.models.reviews.ProposalReviewMixin
S attribute), 135
safe_last_login_dt (in- score (indico.modules.events.papers.models.reviews.PaperReview
dico.modules.auth.models.identities.Identity attribute), 202
attribute), 307 score (indico.modules.users.models.suggestions.SuggestedCategory
save() (indico.modules.users.ext.ExtraUserPreferences attribute), 281
method), 285 search() (indico.modules.groups.core.GroupProxy
save_identity_info() (in module in- class method), 315
dico.modules.auth.util), 308 search() (indico.modules.search.base.IndicoSearchProvider
save_submitted_survey_to_session() (in method), 70
module indico.modules.events.surveys.util), search_data (indico.modules.events.registration.models.registrations.Re
256 attribute), 219
search_payload
schedule (indico.modules.events.abstracts.settings.BOASortField (in-
attribute), 166 dico.modules.events.abstracts.fields.AbstractField
attribute), 332
schedule() (indico.modules.events.abstracts.models.call_for_abstracts.CallForAbstracts
method), 149 search_url (indico.modules.events.abstracts.fields.AbstractField
attribute), 332
schedule() (indico.modules.events.papers.models.call_for_papers.CallForPapers
method), 196 search_users() (in module in-
schedule_board_number (in- dico.modules.users.util), 284
SearchOption (class in indico.modules.search.base),
dico.modules.events.abstracts.settings.BOASortField
attribute), 166 70
schedule_cfa() (in module in- SearchOptions (class in in-
dico.modules.events.abstracts.operations), dico.modules.search.base), 70
157 SearchTarget (class in indico.modules.search.base),
schedule_cfp() (in module in- 70
dico.modules.events.papers.operations), secondary (indico.modules.events.contributions.models.persons.AuthorT
205 attribute), 175
schedule_contribution() (in module in- secondary_authors (in-
dico.modules.events.timetable.operations), dico.modules.events.models.persons.AuthorsSpeakersMixin

Index 473
Indico Documentation, Release 3.2-dev

attribute), 128 serialize_booking_details() (in module in-


secondary_emails (in- dico.modules.rb.util), 305
dico.modules.users.models.users.User at- serialize_categories_ical() (in module in-
tribute), 279 dico.modules.categories.serialize), 273
secondary_local_identities (in- serialize_category() (in module in-
dico.modules.users.models.users.User at- dico.modules.categories.serialize), 273
tribute), 279 serialize_category_atom() (in module in-
SECRET_KEY (built-in variable), 55 dico.modules.categories.serialize), 273
section (indico.modules.events.registration.models.items.RegistrationFormItemType
serialize_category_chain() (in module in-
attribute), 227 dico.modules.categories.serialize), 273
section (indico.modules.events.surveys.models.items.SurveyItemType
serialize_category_role() (in module in-
attribute), 251 dico.modules.categories.util), 273
section_pd (indico.modules.events.registration.models.items.RegistrationFormItemType
serialize_concurrent_pre_bookings() (in
attribute), 227 module indico.modules.rb.util), 306
sections (in module indico.core.signals.menu), 88 serialize_contribution_for_ical()
sections (indico.modules.events.registration.models.forms.RegistrationForm
(in module in-
attribute), 223 dico.modules.events.contributions.util), 181
sections (indico.modules.events.surveys.models.surveys.Survey
serialize_event_for_ical() (in module in-
attribute), 250 dico.modules.events.util), 141
sections_with_answered_fields (in- serialize_event_for_json_ld() (in module
indico.modules.events.util), 141
dico.modules.events.registration.models.registrations.Registration
attribute), 217 serialize_group() (in module in-
send() (indico.modules.events.reminders.models.reminders.EventReminder
dico.modules.groups.util), 315
method), 238 serialize_ip_network_group() (in module in-
send() (indico.modules.events.requests.base.RequestDefinitionBase dico.modules.networks.util), 330
class method), 242 serialize_log_entry() (in module in-
send_avatar() (in module in- dico.modules.logs.util), 190
dico.modules.users.util), 284 serialize_nonbookable_periods() (in mod-
send_default_avatar() (in module in- ule indico.modules.rb.util), 306
dico.modules.users.util), 284 serialize_occurrences() (in module in-
send_new_agreements() (in module in- dico.modules.rb.util), 306
dico.modules.events.agreements.util), 168 serialize_person_for_json_ld() (in module
send_start_notification() (in- indico.modules.events.util), 141
dico.modules.events.surveys.models.surveys.Survey serialize_registration_form() (in module
method), 250 indico.modules.events.registration.util), 232
send_submission_notification() (in- serialize_unbookable_hours() (in module in-
dico.modules.events.surveys.models.surveys.Survey dico.modules.rb.util), 306
method), 250 serialize_user() (in module in-
send_to_participants (in- dico.modules.users.util), 284
series (indico.modules.events.models.events.Event at-
dico.modules.events.reminders.models.reminders.EventReminder
attribute), 238 tribute), 127
send_to_speakers (in- series_id (indico.modules.events.models.events.Event
dico.modules.events.reminders.models.reminders.EventReminderattribute), 127
attribute), 238 service_name (indico.modules.vc.plugins.VCPluginMixin
sent_dt (indico.modules.events.abstracts.models.email_logs.AbstractEmailLogEntry
attribute), 320
attribute), 150 Session (class in in-
SENTRY_DSN (built-in variable), 55 dico.modules.events.sessions.models.sessions),
SENTRY_LOGGING_LEVEL (built-in variable), 55 242
separator (indico.modules.events.layout.models.menu.MenuEntryType
session (indico.modules.attachments.models.folders.AttachmentFolder
attribute), 185 attribute), 289
serialize_availability() (in module in- session (indico.modules.events.contributions.models.contributions.Contr
dico.modules.rb.util), 305 attribute), 172
serialize_blockings() (in module in- session (indico.modules.events.contributions.models.subcontributions.Su
dico.modules.rb.util), 305 attribute), 179

474 Index
Indico Documentation, Release 3.2-dev

session (indico.modules.events.notes.models.notes.EventNote attribute), 166


attribute), 194 session_coordinator_priv_enabled() (in
session (indico.modules.events.sessions.models.sessions.Session module indico.modules.events.sessions.util),
attribute), 244 248
session (indico.modules.rb.models.reservations.ReservationLink
session_deleted (in module in-
attribute), 303 dico.core.signals.event), 87
session_block (in- session_id (indico.modules.attachments.models.folders.AttachmentFold
dico.modules.attachments.models.folders.AttachmentFolder attribute), 289
attribute), 289 session_id (indico.modules.events.contributions.models.contributions.C
session_block (in- attribute), 172
session_id (indico.modules.events.notes.models.notes.EventNote
dico.modules.events.contributions.models.contributions.Contribution
attribute), 172 attribute), 194
session_block (in- session_id (indico.modules.events.sessions.models.blocks.SessionBlock
dico.modules.events.notes.models.notes.EventNote attribute), 246
attribute), 194 session_id (indico.modules.events.sessions.models.principals.SessionPr
session_block (in- attribute), 247
session_id (indico.modules.rb.models.reservations.ReservationLink
dico.modules.events.timetable.models.entries.TimetableEntry
attribute), 258 attribute), 303
SESSION_BLOCK (in- SESSION_LIFETIME (built-in variable), 55
dico.modules.events.timetable.models.entries.TimetableEntryType
session_schedule_board (in-
attribute), 259 dico.modules.events.abstracts.settings.BOASortField
session_block (in- attribute), 166
dico.modules.rb.models.reservations.ReservationLink
session_siblings (in-
attribute), 303 dico.modules.events.timetable.models.entries.TimetableEntry
session_block_count (in- attribute), 258
dico.modules.events.models.events.Event session_title (in-
attribute), 127 dico.modules.events.abstracts.settings.BOASortField
session_block_deleted (in module in- attribute), 166
dico.core.signals.event), 86 session_updated (in module in-
session_block_id (in- dico.core.signals.event), 87
dico.modules.attachments.models.folders.AttachmentFolder
SessionBlock (class in in-
attribute), 289 dico.modules.events.sessions.models.blocks),
session_block_id (in- 244
dico.modules.events.contributions.models.contributions.Contribution
SessionBlockPersonLink (class in in-
attribute), 172 dico.modules.events.sessions.models.persons),
session_block_id (in- 246
dico.modules.events.notes.models.notes.EventNoteSessionBlockPersonLinkListField (class in
attribute), 194 indico.modules.events.sessions.fields), 337
session_block_id (in- SessionListToPDF (class in in-
dico.modules.events.sessions.util), 247
dico.modules.events.sessions.models.persons.SessionBlockPersonLink
attribute), 246 SessionPrincipal (class in in-
session_block_id (in- dico.modules.events.sessions.models.principals),
dico.modules.events.timetable.models.entries.TimetableEntry246
attribute), 258 set() (indico.modules.categories.settings.CategorySettingsProxy
session_block_id (in- method), 274
set() (indico.modules.events.settings.EventACLProxy
dico.modules.rb.models.reservations.ReservationLink
attribute), 303 method), 143, 207
session_block_id (in- set() (indico.modules.events.settings.EventSettingsProxy
dico.modules.vc.models.vc_rooms.VCRoomEventAssociationmethod), 144, 208
attribute), 317 set() (indico.modules.users.models.settings.UserSettingsProxy
session_block_updated (in module in- method), 282
dico.core.signals.event), 87 set_attribute_value() (in-
session_board_number (in- dico.modules.rb.models.rooms.Room method),
dico.modules.events.abstracts.settings.BOASortField 296

Index 475
Indico Documentation, Release 3.2-dev

set_custom_field() (in- attribute), 212


dico.modules.events.contributions.models.contributions.CustomFieldsMixin
settings_form (in-
method), 173 dico.modules.vc.plugins.VCPluginMixin
set_custom_fields() (in module in- attribute), 320
dico.modules.events.util), 141 settings_form_field_opts (in-
set_deadline() (in module in- dico.core.plugins.IndicoPlugin attribute),
dico.modules.events.papers.operations), 78
205 shell_context (in module in-
set_feature_enabled() (in module in- dico.core.signals.plugin), 89
dico.modules.events.features.util), 182 shift_following_entries() (in module in-
set_multi() (indico.modules.categories.settings.CategorySettingsProxy
dico.modules.events.timetable.util), 261
method), 274 short_external_url (in-
set_multi() (indico.modules.events.settings.EventSettingsProxy dico.modules.events.models.events.Event
method), 144, 208 attribute), 127
set_multi() (indico.modules.users.models.settings.UserSettingsProxy
short_title (indico.modules.events.tracks.models.tracks.Track
method), 282 attribute), 263
set_participant_list_columns() (in- short_title_with_group (in-
dico.modules.events.registration.settings.RegistrationSettingsProxy
dico.modules.events.tracks.models.tracks.Track
method), 235 attribute), 263
set_participant_list_form_ids() (in- short_url (indico.modules.events.models.events.Event
attribute), 127
dico.modules.events.registration.settings.RegistrationSettingsProxy
method), 236 should_show_draft_warning() (in module in-
set_reviewing_state() (in module in- dico.modules.events.util), 141
dico.modules.events.papers.operations), show (indico.modules.vc.models.vc_rooms.VCRoomEventAssociation
205 attribute), 317
set_reviewing_state() (in- show_links (indico.modules.events.models.series.EventSeries
attribute), 135
dico.modules.events.papers.models.call_for_papers.CallForPapers
method), 196 show_sequence_in_title (in-
set_user_avatar() (in module in- dico.modules.events.models.series.EventSeries
dico.modules.users.util), 284 attribute), 135
settings (indico.core.plugins.IndicoPlugin attribute), siblings (indico.modules.events.timetable.models.entries.TimetableEntry
78 attribute), 258
settings (indico.modules.auth.models.registration_requests.RegistrationRequest
siblings_query (in-
attribute), 307 dico.modules.events.timetable.models.entries.TimetableEntry
settings (indico.modules.events.settings.ThemeSettingsProxy attribute), 258
attribute), 144, 209 sidemenu (in module indico.core.signals.event), 87
settings (indico.modules.users.models.users.User at- signed_dt (indico.modules.events.agreements.models.agreements.Agreem
tribute), 279 attribute), 167
settings_backref_name (in- signed_from_ip (in-
dico.modules.events.models.settings.EventSetting dico.modules.events.agreements.models.agreements.Agreement
attribute), 136 attribute), 167
settings_backref_name (in- signed_on_behalf (in-
dico.modules.events.models.settings.EventSettingPrincipal dico.modules.events.agreements.models.agreements.Agreement
attribute), 136 attribute), 167
settings_backref_name (in- signing_secret (in-
dico.modules.events.models.settings.EventSettingsMixin dico.modules.users.models.users.User at-
attribute), 137 tribute), 279
settings_converters (in- SimpleRenderer (class in in-
dico.core.plugins.IndicoPlugin attribute), dico.modules.logs.renderers), 191
78 site (indico.modules.rb.models.rooms.Room attribute),
settings_form (indico.core.plugins.IndicoPlugin at- 296
tribute), 78 size (indico.modules.attachments.models.attachments.AttachmentFile
settings_form (in- attribute), 287
size (indico.modules.designer.models.images.DesignerImageFile
dico.modules.events.payment.plugins.PaymentPluginMixin

476 Index
Indico Documentation, Release 3.2-dev

attribute), 321 attribute), 350


size (indico.modules.events.abstracts.models.files.AbstractFile
spotlight_file (in-
attribute), 152 dico.modules.events.papers.models.revisions.PaperRevision
size (indico.modules.events.layout.models.images.ImageFile attribute), 204
attribute), 183 sprite_position (in-
size (indico.modules.events.papers.models.files.PaperFile dico.modules.rb.models.rooms.Room attribute),
attribute), 198 296
size (indico.modules.events.papers.models.templates.PaperTemplate
SQLALCHEMY_DATABASE_URI (built-in variable), 51
attribute), 205 SQLALCHEMY_POOL_RECYCLE (built-in variable), 51
size (indico.modules.events.registration.models.registrations.RegistrationData
SQLALCHEMY_POOL_SIZE (built-in variable), 51
attribute), 219 SQLALCHEMY_POOL_TIMEOUT (built-in variable), 51
size (indico.modules.events.static.models.static.StaticSite standard (indico.modules.users.models.users.ProfilePictureSource
attribute), 265 attribute), 276
skip_moderation (in- start_date (indico.modules.rb.models.blockings.Blocking
attribute), 298
dico.modules.events.registration.models.invitations.RegistrationInvitation
attribute), 225 start_dt (indico.modules.events.abstracts.models.call_for_abstracts.Cal
slug (indico.modules.events.contributions.models.contributions.Contribution
attribute), 149
attribute), 172 start_dt (indico.modules.events.contributions.models.contributions.Con
slug (indico.modules.events.contributions.models.subcontributions.SubContribution
attribute), 172
attribute), 179 start_dt (indico.modules.events.models.events.Event
slug (indico.modules.events.sessions.models.blocks.SessionBlock attribute), 127
attribute), 246 start_dt (indico.modules.events.papers.models.call_for_papers.CallForP
slug (indico.modules.news.models.news.NewsItem at- attribute), 196
tribute), 331 start_dt (indico.modules.events.registration.models.forms.RegistrationF
SMTP_ALLOWED_SENDERS (built-in variable), 53 attribute), 223
SMTP_CERTFILE (built-in variable), 53 start_dt (indico.modules.events.sessions.models.blocks.SessionBlock
SMTP_KEYFILE (built-in variable), 53 attribute), 246
SMTP_LOGIN (built-in variable), 53 start_dt (indico.modules.events.sessions.models.sessions.Session
SMTP_PASSWORD (built-in variable), 53 attribute), 244
SMTP_SENDER_FALLBACK (built-in variable), 54 start_dt (indico.modules.events.surveys.models.surveys.Survey
SMTP_SERVER (built-in variable), 53 attribute), 250
SMTP_TIMEOUT (built-in variable), 53 start_dt (indico.modules.events.timetable.models.breaks.Break
SMTP_USE_CELERY (built-in variable), 52 attribute), 257
SMTP_USE_TLS (built-in variable), 53 start_dt (indico.modules.events.timetable.models.entries.TimetableEntry
sort_contribs() (in module in- attribute), 258
dico.modules.events.contributions.util), 181 start_dt (indico.modules.rb.models.reservation_occurrences.Reservatio
sort_reviewing_questions() (in module in- attribute), 304
dico.modules.events.operations), 139 start_dt (indico.modules.rb.models.reservations.Reservation
sorted_person_links (in- attribute), 302
dico.modules.events.models.persons.PersonLinkMixin start_dt (indico.modules.rb.models.room_nonbookable_periods.NonBoo
attribute), 130 attribute), 297
source (indico.modules.events.notes.models.notes.EventNoteRevision
start_dt (indico.modules.search.result_schemas.ContributionResultSche
attribute), 194 attribute), 72
speaker (indico.modules.events.abstracts.settings.BOASortField
start_dt (indico.modules.search.result_schemas.EventResultSchema
attribute), 166 attribute), 71
speakers (indico.modules.events.abstracts.settings.BOACorrespondingAuthorType
start_dt_display (in-
attribute), 165 dico.modules.events.contributions.models.contributions.Contribut
speakers (indico.modules.events.abstracts.settings.SubmissionRightsType
attribute), 172
attribute), 166 start_dt_display (in-
speakers (indico.modules.events.contributions.models.subcontributions.SubContribution
dico.modules.events.models.events.Event
attribute), 179 attribute), 127
speakers (indico.modules.events.models.persons.AuthorsSpeakersMixin
start_dt_local (in-
attribute), 128 dico.modules.events.models.events.Event
split_data (indico.web.forms.fields.RelativeDeltaField attribute), 127

Index 477
Indico Documentation, Release 3.2-dev

start_dt_override (in- 137


dico.modules.events.models.events.Event StaticSite (class in in-
attribute), 127 dico.modules.events.static.models.static),
start_dt_poster (in- 265
dico.modules.events.contributions.models.contributions.Contribution
StaticSiteState (class in in-
attribute), 172 dico.modules.events.static.models.static),
start_notification_emails (in- 265
dico.modules.events.surveys.models.surveys.Survey StatsBase (class in in-
attribute), 250 dico.modules.events.registration.stats), 237
start_notification_recipients (in- status (indico.modules.events.payment.models.transactions.PaymentTran
dico.modules.events.surveys.models.surveys.Survey attribute), 210
attribute), 250 status (indico.modules.vc.models.vc_rooms.VCRoom
start_notification_sent (in- attribute), 316
dico.modules.events.surveys.models.surveys.Survey stop_on_match (in-
attribute), 250 dico.modules.events.abstracts.models.email_templates.AbstractEm
start_time (indico.modules.rb.models.room_bookable_hours.BookableHours
attribute), 151
attribute), 297 storage_backend (in-
starts_between() (in- dico.modules.attachments.models.attachments.AttachmentFile
dico.modules.events.models.events.Event attribute), 287
method), 127 storage_backend (in-
state (indico.modules.events.abstracts.models.abstracts.Abstract dico.modules.designer.models.images.DesignerImageFile
attribute), 147 attribute), 321
state (indico.modules.events.agreements.models.agreements.Agreement
storage_backend (in-
attribute), 167 dico.modules.events.abstracts.models.files.AbstractFile
state (indico.modules.events.papers.models.papers.Paper attribute), 153
attribute), 199 storage_backend (in-
state (indico.modules.events.papers.models.revisions.PaperRevisiondico.modules.events.layout.models.images.ImageFile
attribute), 204 attribute), 183
state (indico.modules.events.registration.models.invitations.RegistrationInvitation
storage_backend (in-
attribute), 225 dico.modules.events.papers.models.files.PaperFile
state (indico.modules.events.registration.models.registrations.Registration
attribute), 198
attribute), 217 storage_backend (in-
state (indico.modules.events.requests.models.requests.Request dico.modules.events.papers.models.templates.PaperTemplate
attribute), 240 attribute), 205
state (indico.modules.events.static.models.static.StaticSitestorage_backend (in-
attribute), 265 dico.modules.events.registration.models.registrations.Registration
state (indico.modules.events.surveys.models.surveys.Survey attribute), 219
attribute), 250 storage_backend (in-
State (indico.modules.rb.models.blocked_rooms.BlockedRoom dico.modules.events.static.models.static.StaticSite
attribute), 298 attribute), 265
state (indico.modules.rb.models.blocked_rooms.BlockedRoom STORAGE_BACKENDS (built-in variable), 55
attribute), 298 storage_file_id (in-
state (indico.modules.rb.models.reservation_occurrences.ReservationOccurrence
dico.modules.attachments.models.attachments.AttachmentFile
attribute), 305 attribute), 287
state (indico.modules.rb.models.reservations.Reservationstorage_file_id (in-
attribute), 302 dico.modules.designer.models.images.DesignerImageFile
state_name (indico.modules.rb.models.blocked_rooms.BlockedRoom attribute), 321
attribute), 298 storage_file_id (in-
STATIC_FILE_METHOD (built-in variable), 56 dico.modules.events.abstracts.models.files.AbstractFile
static_items (indico.modules.events.util.ListGeneratorBase attribute), 153
attribute), 139 storage_file_id (in-
STATIC_SITE_STORAGE (built-in variable), 56 dico.modules.events.layout.models.images.ImageFile
StaticListLink (class in in- attribute), 183
dico.modules.events.models.static_list_links), storage_file_id (in-

478 Index
Indico Documentation, Release 3.2-dev

dico.modules.events.papers.models.files.PaperFile dico.modules.attachments.models.folders.AttachmentFolder
attribute), 198 attribute), 289
storage_file_id (in- subcontribution_id (in-
dico.modules.events.papers.models.templates.PaperTemplatedico.modules.events.contributions.models.persons.SubContributio
attribute), 205 attribute), 176
storage_file_id (in- subcontribution_id (in-
dico.modules.events.registration.models.registrations.RegistrationData
dico.modules.events.contributions.models.references.SubContribu
attribute), 219 attribute), 177
storage_file_id (in- subcontribution_id (in-
dico.modules.events.static.models.static.StaticSite dico.modules.events.notes.models.notes.EventNote
attribute), 265 attribute), 194
store_configuration() (in- subcontribution_id (in-
dico.modules.events.util.ListGeneratorBase dico.modules.rb.models.reservations.ReservationLink
method), 140 attribute), 303
stored_file_class (in- subcontribution_id (in-
dico.modules.attachments.models.attachments.Attachment dico.modules.search.result_schemas.AttachmentResultSchema
attribute), 286 attribute), 72
stored_file_fkey (in- subcontribution_id (in-
dico.modules.attachments.models.attachments.Attachment dico.modules.search.result_schemas.EventNoteResultSchema
attribute), 286 attribute), 73
stored_file_table (in- subcontribution_id (in-
dico.modules.attachments.models.attachments.Attachment dico.modules.search.result_schemas.SubContributionResultSchem
attribute), 286 attribute), 72
STRICT_LATEX (built-in variable), 54 subcontribution_updated (in module in-
strict_settings (indico.core.plugins.IndicoPlugin dico.core.signals.event), 87
attribute), 78 SubContributionPersonLink (class in in-
stylesheet (indico.modules.events.models.events.Event dico.modules.events.contributions.models.persons),
attribute), 127 176
stylesheet_metadata (in- SubContributionPersonLinkListField (class
dico.modules.events.models.events.Event in indico.modules.events.contributions.fields),
attribute), 127 335
SubContribution (class in in- SubContributionReference (class in in-
dico.modules.events.contributions.models.subcontributions),dico.modules.events.contributions.models.references),
178 177
subcontribution (in- SubContributionResultSchema (class in in-
dico.modules.attachments.models.folders.AttachmentFolder dico.modules.search.result_schemas), 72
attribute), 289 subcontributions (in-
subcontribution (in- dico.modules.events.contributions.models.contributions.Contribut
dico.modules.events.notes.models.notes.EventNote attribute), 172
attribute), 194 subject (indico.modules.events.abstracts.models.email_logs.AbstractEma
subcontribution (in- attribute), 150
dico.modules.rb.models.reservations.ReservationLink subject (indico.modules.events.abstracts.models.email_templates.Abstra
attribute), 303 attribute), 152
subcontribution (in- submission_comment (in-
dico.modules.search.base.SearchTarget at- dico.modules.events.abstracts.models.abstracts.Abstract
tribute), 70 attribute), 147
subcontribution_count (in- submission_id (in-
dico.modules.events.contributions.models.contributions.Contribution
dico.modules.events.surveys.models.submissions.SurveyAnswer
attribute), 172 attribute), 254
subcontribution_created (in module in- submission_instructions (in-
dico.core.signals.event), 87 dico.modules.events.abstracts.models.call_for_abstracts.CallForA
subcontribution_deleted (in module in- attribute), 149
dico.core.signals.event), 87 submission_limit (in-
subcontribution_id (in- dico.modules.events.surveys.models.surveys.Survey

Index 479
Indico Documentation, Release 3.2-dev

attribute), 250 dico.modules.events.abstracts.placeholders),


SubmissionRightsType (class in in- 162
dico.modules.events.abstracts.settings), 166 submitters (indico.modules.events.contributions.models.contributions.C
submissions (indico.modules.events.surveys.models.surveys.Surveyattribute), 172
attribute), 250 SubmitterTitlePlaceholder (class in in-
submitted (indico.modules.events.abstracts.models.abstracts.AbstractState
dico.modules.events.abstracts.placeholders),
attribute), 148 162
submitted (indico.modules.events.papers.models.revisions.PaperRevisionState
success (indico.modules.events.static.models.static.StaticSiteState
attribute), 204 attribute), 266
submitted_contrib_type (in- successful (indico.modules.events.payment.models.transactions.Transa
dico.modules.events.abstracts.models.abstracts.Abstract attribute), 210
attribute), 147 suggested_categories (in-
submitted_contrib_type_id (in- dico.modules.users.models.users.User at-
dico.modules.events.abstracts.models.abstracts.Abstract tribute), 279
attribute), 147 SuggestedCategory (class in in-
submitted_dt (indico.modules.events.abstracts.models.abstracts.Abstract
dico.modules.users.models.suggestions),
attribute), 147 280
submitted_dt (indico.modules.events.papers.models.revisions.PaperRevision
suggestions_disabled (in-
attribute), 204 dico.modules.categories.models.categories.Category
submitted_dt (indico.modules.events.registration.models.registrations.Registration
attribute), 270
attribute), 217 summary (indico.modules.logs.models.entries.CategoryLogEntry
submitted_dt (indico.modules.events.surveys.models.submissions.SurveySubmission
attribute), 188
attribute), 254 summary (indico.modules.logs.models.entries.EventLogEntry
submitted_for_tracks (in- attribute), 188
summary (indico.modules.logs.models.entries.LogEntryBase
dico.modules.events.abstracts.models.abstracts.Abstract
attribute), 147 attribute), 189
submitter (indico.modules.events.abstracts.models.abstracts.Abstract
summary_data (indico.modules.events.registration.models.registrations.R
attribute), 147 attribute), 217
submitter (indico.modules.events.abstracts.settings.AllowEditingType
summary_data (indico.modules.events.registration.models.registrations.R
attribute), 165 attribute), 219
submitter (indico.modules.events.abstracts.settings.BOACorrespondingAuthorType
SUPPORT_EMAIL (built-in variable), 54
attribute), 165 supports_currency() (in-
submitter (indico.modules.events.papers.models.revisions.PaperRevision
dico.modules.events.payment.plugins.PaymentPluginMixin
attribute), 204 method), 212
submitter_all (in- surface_area (indico.modules.rb.models.rooms.Room
dico.modules.events.abstracts.settings.AllowEditingType attribute), 296
attribute), 165 Survey (class in in-
submitter_authors (in- dico.modules.events.surveys.models.surveys),
dico.modules.events.abstracts.settings.AllowEditingType 248
attribute), 165 survey_id (indico.modules.events.surveys.models.items.SurveyItem
submitter_id (indico.modules.events.abstracts.models.abstracts.Abstract
attribute), 251
attribute), 147 survey_id (indico.modules.events.surveys.models.items.SurveyQuestion
submitter_id (indico.modules.events.papers.models.revisions.PaperRevision
attribute), 252
attribute), 204 survey_id (indico.modules.events.surveys.models.items.SurveySection
submitter_primary (in- attribute), 253
survey_id (indico.modules.events.surveys.models.items.SurveyText
dico.modules.events.abstracts.settings.AllowEditingType
attribute), 165 attribute), 253
SubmitterFirstNamePlaceholder (class in survey_id (indico.modules.events.surveys.models.submissions.SurveySub
indico.modules.events.abstracts.placeholders), attribute), 254
162 SurveyAnswer (class in in-
SubmitterLastNamePlaceholder (class in in- dico.modules.events.surveys.models.submissions),
dico.modules.events.abstracts.placeholders), 253
162 SurveyItem (class in in-
SubmitterNamePlaceholder (class in in- dico.modules.events.surveys.models.items),

480 Index
Indico Documentation, Release 3.2-dev

251 (class in in-


SurveyItemType (class in in- dico.modules.events.abstracts.placeholders),
dico.modules.events.surveys.models.items), 164
251 TargetSubmitterLastNamePlaceholder
SurveyQuestion (class in in- (class in in-
dico.modules.events.surveys.models.items), dico.modules.events.abstracts.placeholders),
251 164
SurveySection (class in in- TargetSubmitterNamePlaceholder (class in
dico.modules.events.surveys.models.items), indico.modules.events.abstracts.placeholders),
252 163
SurveyState (class in in- telephone (indico.modules.rb.models.rooms.Room at-
dico.modules.events.surveys.models.surveys), tribute), 296
250 TEMP_DIR (built-in variable), 53
SurveySubmission (class in in- TEMPLATE (indico.modules.attachments.preview.ImagePreviewer
dico.modules.events.surveys.models.submissions), attribute), 292
254 TEMPLATE (indico.modules.attachments.preview.PDFPreviewer
SurveyText (class in in- attribute), 292
dico.modules.events.surveys.models.items), TEMPLATE (indico.modules.attachments.preview.Previewer
253 attribute), 292
swap_timetable_entry() (in module in- template (indico.modules.designer.models.images.DesignerImageFile
dico.modules.events.timetable.operations), attribute), 321
259 template_hook (in module in-
sync_state() (indico.modules.events.registration.models.registrations.Registration
dico.core.signals.plugin), 89
method), 217 template_hook() (indico.core.plugins.IndicoPlugin
sync_user() (indico.modules.events.models.persons.EventPerson method), 79
method), 129 template_id (indico.modules.designer.models.images.DesignerImageFil
syncable_fields (in module in- attribute), 321
dico.modules.users.models.users), 280 template_kwargs (in-
synced_fields (in- dico.modules.logs.renderers.EventLogRendererBase
dico.modules.users.models.users.User at- attribute), 191
tribute), 279 template_kwargs (in-
synced_values (in- dico.modules.logs.renderers.SimpleRenderer
dico.modules.users.models.users.User at- attribute), 191
tribute), 279 template_name (in-
synchronize_data() (in- dico.modules.logs.renderers.EmailRenderer
dico.modules.users.models.users.User attribute), 190
method), 279 template_name (in-
system_app_type (in- dico.modules.logs.renderers.EventLogRendererBase
dico.core.oauth.models.applications.OAuthApplication attribute), 191
attribute), 311 template_name (in-
SYSTEM_NOTICES_URL (built-in variable), 52 dico.modules.logs.renderers.SimpleRenderer
SystemAppType (class in in- attribute), 191
dico.core.oauth.models.applications), 311 TEMPLATES_DIR (in-
dico.modules.attachments.preview.Previewer
T attribute), 292
TempReservationConcurrentOccurrence
tags (indico.modules.events.registration.models.registrations.Registration (in
attribute), 217 module indico.modules.rb.util), 305
TargetAbstractIDPlaceholder (class in in- TempReservationOccurrence (in module in-
dico.modules.events.abstracts.placeholders), dico.modules.rb.util), 305
163 text (indico.modules.events.registration.models.items.RegistrationFormIte
TargetAbstractTitlePlaceholder (class in attribute), 227
indico.modules.events.abstracts.placeholders), text (indico.modules.events.surveys.models.items.SurveyItemType
163 attribute), 251
TargetSubmitterFirstNamePlaceholder text_color (indico.modules.events.sessions.models.sessions.Session

Index 481
Indico Documentation, Release 3.2-dev

attribute), 244 timestamp (indico.modules.events.payment.models.transactions.Payment


text_color (indico.modules.events.timetable.models.breaks.Break attribute), 210
attribute), 257 timestamp (indico.modules.rb.models.reservation_edit_logs.ReservationE
TextListField (class in indico.web.forms.fields), 340 attribute), 304
TextPreviewer (class in in- timetable_buttons (in module in-
dico.modules.attachments.preview), 292 dico.core.signals.event), 87
theme (indico.modules.events.models.events.Event at- timetable_entries (in-
tribute), 127 dico.modules.events.models.events.Event
themes (indico.modules.events.settings.ThemeSettingsProxy attribute), 127
attribute), 144, 209 timetable_entry (in-
ThemeSettingsProxy (class in in- dico.modules.events.contributions.models.subcontributions.SubCo
dico.modules.events.settings), 144, 209 attribute), 179
ticket_on_email (in- timetable_entry_created (in module in-
dico.core.signals.event), 87
dico.modules.events.registration.models.forms.RegistrationForm
attribute), 223 timetable_entry_deleted (in module in-
ticket_on_event_page (in- dico.core.signals.event), 87
timetable_entry_updated (in module in-
dico.modules.events.registration.models.forms.RegistrationForm
attribute), 223 dico.core.signals.event), 87
ticket_on_summary_page (in- TimetableEntry (class in in-
dico.modules.events.registration.models.forms.RegistrationForm
dico.modules.events.timetable.models.entries),
attribute), 223 257
ticket_template (in- TimetableEntryType (class in in-
dico.modules.events.registration.models.forms.RegistrationForm
dico.modules.events.timetable.models.entries),
attribute), 223 258
ticket_template_id (in- timezone (indico.modules.categories.models.categories.Category
attribute), 270
dico.modules.events.registration.models.forms.RegistrationForm
attribute), 224 timezone (indico.modules.events.models.events.Event
ticket_uuid (indico.modules.events.registration.models.registrations.Registration
attribute), 127
attribute), 217 timezone (indico.web.forms.fields.IndicoDateTimeField
tickets_enabled (in- attribute), 344
timezone (indico.web.forms.fields.OccurrencesField
dico.modules.events.registration.models.forms.RegistrationForm
attribute), 224 attribute), 345
time (indico.modules.events.timetable.reschedule.RescheduleMode
timezone_field (in-
attribute), 261 dico.web.forms.fields.IndicoDateTimeField
TimeDeltaField (class in indico.web.forms.fields), attribute), 344
343 timezone_field (in-
timeline (indico.modules.events.papers.models.revisions.PaperRevision
dico.web.forms.fields.OccurrencesField at-
attribute), 204 tribute), 345
timeline_item_type (in- title (indico.modules.attachments.models.attachments.Attachment
dico.modules.events.models.reviews.ProposalCommentMixinattribute), 286
attribute), 133 title (indico.modules.attachments.models.folders.AttachmentFolder
timeline_item_type (in- attribute), 289
title (indico.modules.categories.models.categories.Category
dico.modules.events.models.reviews.ProposalReviewMixin
attribute), 135 attribute), 270
timeline_item_type (in- title (indico.modules.designer.models.templates.DesignerTemplate
attribute), 322
dico.modules.events.papers.models.reviews.PaperJudgmentProxy
attribute), 201 title (indico.modules.events.abstracts.models.abstracts.Abstract
TIMELINE_TYPE (in- attribute), 147
title (indico.modules.events.abstracts.models.email_templates.AbstractE
dico.modules.events.papers.models.reviews.PaperReview
attribute), 201 attribute), 152
times_changed (in module indico.core.signals.event), title (indico.modules.events.abstracts.models.review_questions.AbstractR
87 attribute), 154
timestamp (indico.modules.events.agreements.models.agreements.Agreement
title (indico.modules.events.contributions.models.contributions.Contribu
attribute), 167 attribute), 173

482 Index
Indico Documentation, Release 3.2-dev

title (indico.modules.events.contributions.models.fields.ContributionField
title (indico.modules.rb.models.room_attributes.RoomAttribute
attribute), 174 attribute), 296
title (indico.modules.events.contributions.models.subcontributions.SubContribution
title (indico.modules.search.result_schemas.AttachmentResultSchema
attribute), 179 attribute), 72
title (indico.modules.events.layout.models.menu.MenuEntry title (indico.modules.search.result_schemas.ContributionResultSchema
attribute), 184 attribute), 72
title (indico.modules.events.models.events.Event at- title (indico.modules.search.result_schemas.EventNoteResultSchema
tribute), 127 attribute), 73
title (indico.modules.events.models.persons.PersonLinkBasetitle (indico.modules.search.result_schemas.EventResultSchema
attribute), 130 attribute), 71
title (indico.modules.events.models.reviews.ProposalGroupProxy
title (indico.modules.users.models.users.PersonMixin
attribute), 133 attribute), 276
title (indico.modules.events.papers.models.papers.Papertitle_attr (indico.modules.events.models.reviews.ProposalGroupProxy
attribute), 199 attribute), 133
title (indico.modules.events.papers.models.review_questions.PaperReviewQuestion
title_required (in-
attribute), 200 dico.modules.attachments.models.attachments.Attachment
title (indico.modules.events.registration.models.form_fields.RegistrationFormField
attribute), 286
attribute), 220 title_with_group (in-
title (indico.modules.events.registration.models.form_fields.RegistrationFormPersonalDataField
dico.modules.events.tracks.models.tracks.Track
attribute), 221 attribute), 263
title (indico.modules.events.registration.models.forms.RegistrationForm
to_be_corrected (in-
attribute), 224 dico.modules.events.papers.models.reviews.PaperAction
title (indico.modules.events.registration.models.items.PersonalDataType
attribute), 201
attribute), 225 to_be_corrected (in-
title (indico.modules.events.registration.models.items.RegistrationFormItem
dico.modules.events.papers.models.revisions.PaperRevisionState
attribute), 226 attribute), 204
title (indico.modules.events.registration.models.items.RegistrationFormPersonalDataSection
to_dict() (indico.modules.events.surveys.models.items.SurveyItem
attribute), 227 method), 251
title (indico.modules.events.registration.models.items.RegistrationFormSection
to_dict() (indico.modules.events.surveys.models.items.SurveyQuestion
attribute), 228 method), 252
title (indico.modules.events.registration.models.items.RegistrationFormText
to_dict() (indico.modules.events.surveys.models.items.SurveySection
attribute), 229 method), 253
title (indico.modules.events.requests.base.RequestDefinitionBase
to_dict() (indico.modules.events.surveys.models.items.SurveyText
attribute), 242 method), 253
title (indico.modules.events.sessions.models.blocks.SessionBlock
TokenModelBase (class in in-
attribute), 246 dico.core.oauth.models.tokens), 313
title (indico.modules.events.sessions.models.sessions.Session
top_left_latitude (in-
attribute), 244 dico.modules.rb.models.map_areas.MapArea
title (indico.modules.events.surveys.models.items.SurveyItem attribute), 300
attribute), 251 top_left_longitude (in-
title (indico.modules.events.surveys.models.items.SurveyQuestion dico.modules.rb.models.map_areas.MapArea
attribute), 252 attribute), 300
title (indico.modules.events.surveys.models.items.SurveySection
TplData (class in indico.modules.designer.pdf ), 322
attribute), 253 Track (class in indico.modules.events.tracks.models.tracks),
title (indico.modules.events.surveys.models.items.SurveyText 262
attribute), 253 track (indico.modules.events.abstracts.models.reviews.AbstractReview
title (indico.modules.events.surveys.models.surveys.Survey attribute), 156
attribute), 250 track (indico.modules.events.contributions.models.contributions.Contribu
title (indico.modules.events.timetable.models.breaks.Break attribute), 173
attribute), 257 track_group (indico.modules.events.tracks.models.tracks.Track
title (indico.modules.events.tracks.models.tracks.Track attribute), 263
attribute), 263 track_group_id (in-
title (indico.modules.news.models.news.NewsItem at- dico.modules.events.tracks.models.tracks.Track
tribute), 331 attribute), 263

Index 483
Indico Documentation, Release 3.2-dev

track_id (indico.modules.events.abstracts.models.reviews.AbstractReview
type (indico.modules.events.layout.models.menu.MenuEntry
attribute), 156 attribute), 185
track_id (indico.modules.events.contributions.models.contributions.Contribution
type (indico.modules.events.models.events.Event
attribute), 173 attribute), 127
track_id (indico.modules.events.tracks.models.principals.TrackPrincipal
type (indico.modules.events.models.principals.EventPrincipal
attribute), 264 attribute), 131
track_location_changes() (in module in- type (indico.modules.events.models.settings.EventSettingPrincipal
dico.modules.events.util), 141 attribute), 136
track_time_changes() (in module in- type (indico.modules.events.models.static_list_links.StaticListLink
dico.modules.events.util), 141 attribute), 137
TrackPrincipal (class in in- type (indico.modules.events.papers.models.review_questions.PaperReview
dico.modules.events.tracks.models.principals), attribute), 200
263 type (indico.modules.events.papers.models.reviews.PaperReview
TrackRoleField (class in in- attribute), 202
dico.modules.events.abstracts.fields), 334 type (indico.modules.events.registration.models.form_fields.RegistrationFo
transaction (indico.modules.events.registration.models.registrations.Registration
attribute), 220
attribute), 217 type (indico.modules.events.registration.models.form_fields.RegistrationFo
transaction_id (in- attribute), 221
type (indico.modules.events.registration.models.items.RegistrationFormIte
dico.modules.events.registration.models.registrations.Registration
attribute), 217 attribute), 226
TransactionAction (class in in- type (indico.modules.events.registration.models.items.RegistrationFormPe
dico.modules.events.payment.models.transactions), attribute), 227
210 type (indico.modules.events.registration.models.items.RegistrationFormSe
TransactionStatus (class in in- attribute), 228
dico.modules.events.payment.models.transactions), type (indico.modules.events.registration.models.items.RegistrationFormTex
210 attribute), 229
TransactionStatusTransition (class in in- type (indico.modules.events.requests.models.requests.Request
dico.modules.events.payment.models.transactions), attribute), 240
210 type (indico.modules.events.sessions.models.principals.SessionPrincipal
TransientMenuEntry (class in in- attribute), 247
dico.modules.events.layout.models.menu), type (indico.modules.events.sessions.models.sessions.Session
185 attribute), 244
translation_domain (in- type (indico.modules.events.surveys.models.items.SurveyItem
dico.core.plugins.IndicoPlugin attribute), attribute), 251
79 type (indico.modules.events.surveys.models.items.SurveyQuestion
translation_path (in- attribute), 252
dico.core.plugins.IndicoPlugin attribute), type (indico.modules.events.surveys.models.items.SurveySection
79 attribute), 253
type (indico.modules.attachments.models.attachments.Attachment
type (indico.modules.events.surveys.models.items.SurveyText
attribute), 286 attribute), 253
type (indico.modules.attachments.models.principals.AttachmentFolderPrincipal
type (indico.modules.events.timetable.models.entries.TimetableEntry
attribute), 290 attribute), 258
type (indico.modules.attachments.models.principals.AttachmentPrincipal
type (indico.modules.events.tracks.models.principals.TrackPrincipal
attribute), 291 attribute), 264
type (indico.modules.categories.models.principals.CategoryPrincipal
type (indico.modules.logs.models.entries.CategoryLogEntry
attribute), 271 attribute), 188
type (indico.modules.designer.models.templates.DesignerTemplate
type (indico.modules.logs.models.entries.EventLogEntry
attribute), 322 attribute), 188
type (indico.modules.events.agreements.models.agreements.Agreement
type (indico.modules.logs.models.entries.LogEntryBase
attribute), 167 attribute), 190
type (indico.modules.events.contributions.models.contributions.Contribution
type (indico.modules.rb.models.blocking_principals.BlockingPrincipal
attribute), 173 attribute), 299
type (indico.modules.events.contributions.models.principals.ContributionPrincipal
type (indico.modules.search.result_schemas.AttachmentResultSchema
attribute), 177 attribute), 72

484 Index
Indico Documentation, Release 3.2-dev

type (indico.modules.search.result_schemas.ContributionResultSchema
unique_links (indico.modules.attachments.models.folders.AttachmentF
attribute), 72 attribute), 289
type (indico.modules.search.result_schemas.EventNoteResultSchema
unique_links (indico.modules.events.notes.models.notes.EventNote
attribute), 73 attribute), 194
type (indico.modules.search.result_schemas.EventResultSchema
unit_names (indico.web.forms.fields.RelativeDeltaField
attribute), 71 attribute), 350
type (indico.modules.search.result_schemas.SubContributionResultSchema
unit_names (indico.web.forms.fields.TimeDeltaField
attribute), 72 attribute), 344
type (indico.modules.vc.models.vc_rooms.VCRoom at- unlock_event() (in module in-
tribute), 316 dico.modules.events.operations), 139
type_ (indico.modules.events.models.events.Event at- unpaid (indico.modules.events.registration.models.registrations.Registrati
tribute), 127 attribute), 219
type_changed (in module indico.core.signals.event), unstyled (indico.modules.events.abstracts.settings.BOALinkFormat
87 attribute), 165
type_id (indico.modules.events.contributions.models.contributions.Contribution
update_abstract() (in module in-
attribute), 173 dico.modules.events.abstracts.operations),
type_id (indico.modules.events.sessions.models.sessions.Session 157
attribute), 244 update_abstract_comment() (in module in-
tzinfo (indico.modules.categories.models.categories.Category dico.modules.events.abstracts.operations),
attribute), 270 157
tzinfo (indico.modules.events.models.events.Event at- update_abstract_review() (in module in-
tribute), 127 dico.modules.events.abstracts.operations),
tzinfo (indico.web.forms.fields.IndicoDateTimeField 157
attribute), 344 update_badge_style (in module in-
dico.core.signals.event), 87
U update_break_entry() (in module in-
dico.modules.events.timetable.operations),
under_review (indico.modules.events.abstracts.models.abstracts.AbstractPublicState
attribute), 147 259
undo_impersonate_user() (in module in- update_category() (in module in-
dico.modules.auth.util), 308 dico.modules.categories.operations), 272
unique_columns (in- update_category_protection() (in module in-
dico.modules.categories.operations), 272
dico.modules.attachments.models.principals.AttachmentFolderPrincipal
attribute), 290 update_comment() (in module in-
unique_columns (in- dico.modules.events.papers.operations),
206
dico.modules.attachments.models.principals.AttachmentPrincipal
attribute), 291 update_competences() (in module in-
unique_columns (in- dico.modules.events.papers.operations),
206
dico.modules.categories.models.principals.CategoryPrincipal
attribute), 271 update_contribution() (in module in-
unique_columns (in- dico.modules.events.contributions.operations),
180
dico.modules.events.contributions.models.principals.ContributionPrincipal
attribute), 177 update_data_association() (in-
unique_columns (in- dico.modules.vc.plugins.VCPluginMixin
dico.modules.events.models.principals.EventPrincipal method), 320
attribute), 131 update_data_vc_room() (in-
unique_columns (in- dico.modules.vc.plugins.VCPluginMixin
method), 320
dico.modules.events.sessions.models.principals.SessionPrincipal
attribute), 247 update_event() (in module in-
unique_columns (in- dico.modules.events.operations), 139
update_event_label()
dico.modules.events.tracks.models.principals.TrackPrincipal (in module in-
attribute), 264 dico.modules.events.operations), 139
unique_columns (in- update_event_move_request() (in module in-
dico.modules.categories.operations), 272
dico.modules.rb.models.blocking_principals.BlockingPrincipal
attribute), 299 update_event_privacy() (in module in-

Index 485
Indico Documentation, Release 3.2-dev

dico.modules.events.operations), 139 dico.modules.events.timetable.operations),


update_event_protection() (in module in- 259
dico.modules.events.operations), 139 update_track() (in module in-
update_event_type() (in module in- dico.modules.events.tracks.operations), 264
dico.modules.events.operations), 139 update_track_group() (in module in-
update_object_principals() (in module in- dico.modules.events.tracks.operations), 264
dico.modules.events.util), 141 updated (in module indico.core.signals.category), 83
update_paper_template() (in module in- updated (in module indico.core.signals.event), 87
dico.modules.events.papers.operations), 206 url (indico.modules.categories.models.categories.Category
update_person() (in module in- attribute), 270
dico.modules.events.persons.operations), url (indico.modules.events.layout.models.menu.MenuEntryMixin
212 attribute), 185
update_program() (in module in- url (indico.modules.events.models.events.Event at-
dico.modules.events.tracks.operations), 264 tribute), 127
update_reference_type() (in module in- url (indico.modules.events.models.references.ReferenceModelBase
dico.modules.events.operations), 139 attribute), 132
update_regform_item_positions() (in mod- url (indico.modules.news.models.news.NewsItem
ule indico.modules.events.registration.util), 232 attribute), 331
update_review() (in module in- url_for_login() (in module in-
dico.modules.events.papers.operations), dico.modules.auth.util), 308
206 url_for_logout() (in module in-
update_reviewed_for_tracks() (in module in- dico.modules.auth.util), 308
dico.modules.events.abstracts.operations), 157 url_for_plugin() (in module indico.core.plugins),
update_reviewing_question() (in module in- 80
dico.modules.events.operations), 139 url_for_register() (in module in-
update_reviewing_roles() (in module in- dico.modules.auth.util), 308
dico.modules.events.papers.operations), 206 url_rule_to_angular() (in module in-
update_scopes() (in- dico.modules.events.registration.util), 232
url_shortcut (indico.modules.events.models.events.Event
dico.core.oauth.models.applications.OAuthApplicationUserLink
method), 311 attribute), 127
update_session() (in module in- url_template (indico.modules.events.models.references.ReferenceType
dico.modules.events.sessions.operations), attribute), 133
247 url_to_static_filename() (in module in-
update_session_block() (in module in- dico.modules.events.static.util), 266
dico.modules.events.sessions.operations), urn (indico.modules.events.models.references.ReferenceModelBase
247 attribute), 132
update_session_coordinator_privs() use_count (indico.core.oauth.models.tokens.OAuthToken
(in module in- attribute), 313
dico.modules.events.sessions.operations), use_count (indico.core.oauth.models.tokens.TokenModelBase
247 attribute), 314
update_state() (in- USE_PROXY (built-in variable), 56
User (class in indico.modules.users.models.users), 276
dico.modules.events.registration.models.registrations.Registration
method), 217 user (indico.core.oauth.models.applications.OAuthApplicationUserLink
update_subcontribution() (in module in- attribute), 311
dico.modules.events.contributions.operations), user (indico.core.oauth.models.tokens.OAuthToken at-
180 tribute), 313
update_team_members() (in module in- user (indico.modules.attachments.models.attachments.Attachment
dico.modules.events.papers.operations), attribute), 286
206 user (indico.modules.attachments.models.attachments.AttachmentFile
update_timetable_entry() (in module in- attribute), 287
dico.modules.events.timetable.operations), user (indico.modules.attachments.models.principals.AttachmentFolderPrin
259 attribute), 290
update_timetable_entry_object() user (indico.modules.attachments.models.principals.AttachmentPrincipal
(in module in- attribute), 291

486 Index
Indico Documentation, Release 3.2-dev

user (indico.modules.categories.models.principals.CategoryPrincipal
user_backref_name (in-
attribute), 271 dico.modules.logs.models.entries.CategoryLogEntry
user (indico.modules.events.abstracts.models.comments.AbstractCommentattribute), 188
attribute), 150 user_backref_name (in-
user (indico.modules.events.abstracts.models.email_logs.AbstractEmailLogEntry
dico.modules.logs.models.entries.EventLogEntry
attribute), 150 attribute), 189
user (indico.modules.events.abstracts.models.reviews.AbstractReview
user_backref_name (in-
attribute), 156 dico.modules.logs.models.entries.LogEntryBase
user (indico.modules.events.agreements.models.agreements.Agreement attribute), 190
attribute), 167 user_competences (in-
user (indico.modules.events.contributions.models.principals.ContributionPrincipal
dico.modules.events.papers.models.call_for_papers.CallForPaper
attribute), 177 attribute), 196
user (indico.modules.events.models.persons.EventPerson user_data (indico.modules.auth.models.registration_requests.Registratio
attribute), 129 attribute), 307
user (indico.modules.events.models.principals.EventPrincipal
user_data (indico.modules.events.registration.models.registrations.Regis
attribute), 131 attribute), 219
user (indico.modules.events.models.settings.EventSettingPrincipal
user_id (indico.core.oauth.models.applications.OAuthApplicationUserLi
attribute), 136 attribute), 311
user (indico.modules.events.notes.models.notes.EventNoteRevision
user_id (indico.modules.attachments.models.attachments.Attachment
attribute), 194 attribute), 286
user (indico.modules.events.papers.models.comments.PaperReviewComment
user_id (indico.modules.attachments.models.attachments.AttachmentFile
attribute), 197 attribute), 287
user (indico.modules.events.papers.models.competences.PaperCompetence
user_id (indico.modules.attachments.models.principals.AttachmentFolde
attribute), 197 attribute), 290
user (indico.modules.events.papers.models.reviews.PaperReview
user_id (indico.modules.attachments.models.principals.AttachmentPrinc
attribute), 202 attribute), 291
user (indico.modules.events.registration.models.registrations.Registration
user_id (indico.modules.auth.models.identities.Identity
attribute), 217 attribute), 307
user (indico.modules.events.sessions.models.principals.SessionPrincipal
user_id (indico.modules.categories.models.principals.CategoryPrincipal
attribute), 247 attribute), 271
user (indico.modules.events.surveys.models.submissions.SurveySubmission
user_id (indico.modules.events.abstracts.models.comments.AbstractCom
attribute), 254 attribute), 150
user (indico.modules.events.tracks.models.principals.TrackPrincipal
user_id (indico.modules.events.abstracts.models.email_logs.AbstractEma
attribute), 264 attribute), 150
user (indico.modules.logs.models.entries.CategoryLogEntry user_id (indico.modules.events.abstracts.models.reviews.AbstractReview
attribute), 188 attribute), 156
user (indico.modules.logs.models.entries.EventLogEntry user_id (indico.modules.events.agreements.models.agreements.Agreemen
attribute), 189 attribute), 167
user (indico.modules.logs.models.entries.LogEntryBase user_id (indico.modules.events.contributions.models.principals.Contribu
attribute), 190 attribute), 177
user (indico.modules.rb.models.blocking_principals.BlockingPrincipal
user_id (indico.modules.events.models.persons.EventPerson
attribute), 299 attribute), 129
user (indico.modules.search.result_schemas.AttachmentResultSchema
user_id (indico.modules.events.models.principals.EventPrincipal
attribute), 72 attribute), 131
user (indico.modules.search.result_schemas.EventNoteResultSchema
user_id (indico.modules.events.models.settings.EventSettingPrincipal
attribute), 73 attribute), 137
user (indico.modules.users.models.settings.UserSetting user_id (indico.modules.events.notes.models.notes.EventNoteRevision
attribute), 281 attribute), 194
user_backref_name (in- user_id (indico.modules.events.papers.models.comments.PaperReviewCo
attribute), 197
dico.modules.events.abstracts.models.comments.AbstractComment
attribute), 150 user_id (indico.modules.events.papers.models.competences.PaperCompe
user_backref_name (in- attribute), 197
user_id (indico.modules.events.papers.models.reviews.PaperReview
dico.modules.events.papers.models.comments.PaperReviewComment
attribute), 197 attribute), 202

Index 487
Indico Documentation, Release 3.2-dev

user_id (indico.modules.events.registration.models.registrations.Registration
dico.modules.users.models.settings), 281
attribute), 217 UserTitle (class in in-
user_id (indico.modules.events.sessions.models.principals.SessionPrincipal
dico.modules.users.models.users), 279
attribute), 247 uuid (indico.modules.events.abstracts.models.abstracts.Abstract
user_id (indico.modules.events.surveys.models.submissions.SurveySubmission
attribute), 147
attribute), 254 uuid (indico.modules.events.agreements.models.agreements.Agreement
user_id (indico.modules.events.tracks.models.principals.TrackPrincipalattribute), 167
attribute), 264 uuid (indico.modules.events.models.static_list_links.StaticListLink
user_id (indico.modules.logs.models.entries.CategoryLogEntry attribute), 137
attribute), 188 uuid (indico.modules.events.registration.models.invitations.RegistrationInv
user_id (indico.modules.logs.models.entries.EventLogEntry attribute), 225
attribute), 189 uuid (indico.modules.events.registration.models.registrations.Registration
user_id (indico.modules.logs.models.entries.LogEntryBase attribute), 217
attribute), 190 uuid (indico.modules.events.surveys.models.surveys.Survey
user_id (indico.modules.rb.models.blocking_principals.BlockingPrincipal
attribute), 250
attribute), 299
V
user_id (indico.modules.users.models.affiliations.UserAffiliation
attribute), 280 valid (indico.modules.rb.models.reservation_occurrences.ReservationOcc
user_id (indico.modules.users.models.emails.UserEmail attribute), 305
attribute), 280 valid_currencies (in-
user_id (indico.modules.users.models.settings.UserSetting dico.modules.events.payment.plugins.PaymentPluginMixin
attribute), 281 attribute), 212
user_id (indico.modules.users.models.suggestions.SuggestedCategory
value (indico.modules.categories.models.settings.CategorySetting
attribute), 281 attribute), 271
user_link (indico.modules.events.layout.models.menu.MenuEntryType
value (indico.modules.events.abstracts.models.review_ratings.AbstractRev
attribute), 185 attribute), 155
user_modified_backref_name (in- value (indico.modules.events.contributions.models.references.Contributio
dico.modules.events.abstracts.models.comments.AbstractComment attribute), 177
attribute), 150 value (indico.modules.events.contributions.models.references.SubContribu
user_modified_backref_name (in- attribute), 178
dico.modules.events.papers.models.comments.PaperReviewComment
value (indico.modules.events.models.references.EventReference
attribute), 197 attribute), 132
user_name (indico.modules.rb.models.reservation_edit_logs.ReservationEditLog
value (indico.modules.events.models.references.ReferenceModelBase
attribute), 304 attribute), 132
user_or_id() (in module in- value (indico.modules.events.models.settings.EventSetting
dico.modules.users.models.settings), 282 attribute), 136
user_owns() (indico.modules.events.abstracts.models.abstracts.Abstract
value (indico.modules.events.papers.models.review_ratings.PaperReviewR
method), 147 attribute), 200
user_settings (indico.core.plugins.IndicoPlugin at- value (indico.modules.rb.models.room_attributes.RoomAttributeAssociatio
tribute), 79 attribute), 296
user_settings_converters (in- value (indico.modules.users.models.settings.UserSetting
dico.core.plugins.IndicoPlugin attribute), attribute), 281
79 vc_room (indico.modules.vc.models.vc_rooms.VCRoomEventAssociation
UserAffiliation (class in in- attribute), 317
dico.modules.users.models.affiliations), 280 vc_room_attach_form (in-
UserEmail (class in in- dico.modules.vc.plugins.VCPluginMixin
dico.modules.users.models.emails), 280 attribute), 320
users (indico.modules.events.abstracts.models.reviews.AbstractCommentVisibility
vc_room_form (indico.modules.vc.plugins.VCPluginMixin
attribute), 155 attribute), 320
users (indico.modules.events.papers.models.reviews.PaperCommentVisibility
vc_room_id (indico.modules.vc.models.vc_rooms.VCRoomEventAssociat
attribute), 201 attribute), 317
UserSetting (class in in- VCPluginMixin (class in indico.modules.vc.plugins),
dico.modules.users.models.settings), 281 318
UserSettingsProxy (class in in-

488 Index
Indico Documentation, Release 3.2-dev

VCRoom (class in indico.modules.vc.models.vc_rooms), attribute), 174


316 visibility (indico.modules.events.models.events.Event
VCRoomError, 320 attribute), 127
VCRoomEventAssociation (class in in- visibility (indico.modules.events.papers.models.comments.PaperRevie
dico.modules.vc.models.vc_rooms), 316 attribute), 197
VCRoomLinkType (class in in- visibility (indico.modules.events.papers.models.reviews.PaperReview
dico.modules.vc.models.vc_rooms), 317 attribute), 202
VCRoomNotFoundError, 320 visibility_horizon_query (in-
VCRoomStatus (class in in- dico.modules.categories.models.categories.Category
dico.modules.vc.models.vc_rooms), 317 attribute), 270
venue_name (indico.modules.events.contributions.models.subcontributions.SubContribution
visible() (indico.modules.events.layout.util.MenuEntryData
attribute), 179 method), 186
venue_name (indico.modules.search.result_schemas.LocationResultSchema
visible_categories_query (in-
attribute), 73 dico.modules.categories.models.categories.Category
verbose_name (indico.modules.rb.models.rooms.Room attribute), 270
attribute), 296
verbose_title (in- W
dico.modules.events.abstracts.models.abstracts.Abstract
warning (indico.modules.categories.models.categories.EventMessageMod
attribute), 147 attribute), 270
verbose_title (in- was_survey_submitted() (in module in-
dico.modules.events.contributions.models.contributions.Contribution
dico.modules.events.surveys.util), 256
attribute), 173 WEEK (indico.modules.rb.models.reservations.RepeatFrequency
verbose_title (in- attribute), 300
dico.modules.events.papers.models.papers.Paper week_day_data (in-
attribute), 199 dico.web.forms.fields.IndicoWeekDayRepetitionField
version_of (indico.modules.attachments.models.attachments.AttachmentFile
attribute), 351
attribute), 287 WEEK_DAY_NUMBER_CHOICES (in-
version_of (indico.modules.designer.models.images.DesignerImageFile
dico.web.forms.fields.IndicoWeekDayRepetitionField
attribute), 321 attribute), 350
version_of (indico.modules.events.layout.models.images.ImageFile
widget (indico.modules.categories.fields.CategoryField
attribute), 183 attribute), 337
versioned_data (in- widget (indico.modules.events.abstracts.fields.AbstractField
dico.modules.events.registration.models.form_fields.RegistrationFormField
attribute), 332
attribute), 220 widget (indico.modules.events.abstracts.fields.AbstractPersonLinkListFiel
versioned_data (in- attribute), 333
dico.modules.events.registration.models.form_fields.RegistrationFormFieldData
widget (indico.modules.events.abstracts.fields.EmailRuleListField
attribute), 220 attribute), 334
view_data (indico.modules.events.registration.models.form_fields.RegistrationFormField
widget (indico.modules.events.abstracts.fields.TrackRoleField
attribute), 220 attribute), 335
view_data (indico.modules.events.registration.models.form_fields.RegistrationFormPersonalDataField
widget (indico.modules.events.contributions.fields.ContributionPersonLin
attribute), 221 attribute), 335
view_data (indico.modules.events.registration.models.items.RegistrationFormItem
widget (indico.modules.events.contributions.fields.SubContributionPerson
attribute), 226 attribute), 335
view_data (indico.modules.events.registration.models.items.RegistrationFormSection
widget (indico.modules.events.fields.EventPersonLinkListField
attribute), 228 attribute), 331
view_data (indico.modules.events.registration.models.items.RegistrationFormText
widget (indico.modules.events.fields.PersonLinkListFieldBase
attribute), 229 attribute), 332
visibility (indico.modules.categories.models.categories.Category
widget (indico.modules.events.fields.RatingReviewField
attribute), 270 attribute), 332
visibility (indico.modules.events.abstracts.models.comments.AbstractComment
widget (indico.modules.events.papers.fields.PaperEmailSettingsField
attribute), 150 attribute), 337
visibility (indico.modules.events.abstracts.models.reviews.AbstractReview
widget (indico.modules.events.sessions.fields.SessionBlockPersonLinkList
attribute), 156 attribute), 337
visibility (indico.modules.events.contributions.models.fields.ContributionField

Index 489
Indico Documentation, Release 3.2-dev

widget (indico.web.forms.fields.EditableFileField at- widget (indico.web.forms.fields.TimeDeltaField at-


tribute), 349 tribute), 344
widget (indico.web.forms.fields.FileField attribute), width (indico.modules.designer.pdf.TplData attribute),
346 323
widget (indico.web.forms.fields.HiddenFieldList width_cm (indico.modules.designer.pdf.TplData
attribute), 340 attribute), 323
widget (indico.web.forms.fields.IndicoDateField with_title (indico.modules.designer.placeholders.RegistrationFullNam
attribute), 349 attribute), 324
widget (indico.web.forms.fields.IndicoDateTimeField with_title (indico.modules.designer.placeholders.RegistrationFullNam
attribute), 344 attribute), 324
widget (indico.web.forms.fields.IndicoEmailRecipientsField
with_title (indico.modules.designer.placeholders.RegistrationFullNam
attribute), 352 attribute), 325
widget (indico.web.forms.fields.IndicoEnumRadioField with_title (indico.modules.designer.placeholders.RegistrationFullNam
attribute), 345 attribute), 325
widget (indico.web.forms.fields.IndicoEnumSelectField with_title (indico.modules.designer.placeholders.RegistrationFullNam
attribute), 345 attribute), 324
widget (indico.web.forms.fields.IndicoLocationField with_title (indico.modules.designer.placeholders.RegistrationFullNam
attribute), 349 attribute), 324
widget (indico.web.forms.fields.IndicoMarkdownField with_title (indico.modules.designer.placeholders.RegistrationFullNam
attribute), 349 attribute), 325
widget (indico.web.forms.fields.IndicoPalettePickerField with_title (indico.modules.designer.placeholders.RegistrationFullNam
attribute), 343 attribute), 325
widget (indico.web.forms.fields.IndicoPasswordField withdraw() (indico.modules.events.requests.base.RequestDefinitionBase
attribute), 342 class method), 242
widget (indico.web.forms.fields.IndicoProtectionField withdraw_abstract() (in module in-
attribute), 349 dico.modules.events.abstracts.operations),
widget (indico.web.forms.fields.IndicoQuerySelectMultipleCheckboxField
157
attribute), 349 withdrawn (indico.modules.events.abstracts.models.abstracts.AbstractPu
widget (indico.web.forms.fields.IndicoRadioField at- attribute), 147
tribute), 338 withdrawn (indico.modules.events.abstracts.models.abstracts.AbstractSta
widget (indico.web.forms.fields.IndicoSelectMultipleCheckboxField attribute), 148
attribute), 338 withdrawn (indico.modules.events.registration.models.registrations.Regis
widget (indico.web.forms.fields.IndicoStaticTextField attribute), 219
attribute), 342 withdrawn (indico.modules.events.requests.models.requests.RequestState
widget (indico.web.forms.fields.IndicoTagListField at- attribute), 240
tribute), 343 WORKER_NAME (built-in variable), 57
widget (indico.web.forms.fields.IndicoTimeField WPEventManagement (class in in-
attribute), 352 dico.modules.events.management.views),
widget (indico.web.forms.fields.IndicoWeekDayRepetitionField 191
attribute), 351 WPJinjaMixinPlugin (class in indico.core.plugins),
widget (indico.web.forms.fields.MultipleItemsField at- 80
tribute), 347
widget (indico.web.forms.fields.MultiStringField X
attribute), 346 XELATEX_PATH (built-in variable), 54
widget (indico.web.forms.fields.OccurrencesField at-
tribute), 345 Z
widget (indico.web.forms.fields.OverrideMultipleItemsField
ZipGeneratorMixin (class in in-
attribute), 347 dico.modules.events.util), 140
widget (indico.web.forms.fields.PrincipalField at-
tribute), 348
widget (indico.web.forms.fields.PrincipalListField at-
tribute), 348
widget (indico.web.forms.fields.RelativeDeltaField at-
tribute), 350

490 Index

You might also like