or run

npx @tessl/cli init
Log in

Version

Tile

Overview

Evals

Files

Files

docs

cli-commands.mdindex.mdplugin-development.mdtesting-utilities.md

index.mddocs/

0

# Indico

1

2

Indico is a comprehensive web-based conference lifecycle management and meeting/lecture scheduling tool. It provides a complete event management platform with features for organizing conferences, managing meetings, handling registrations, paper reviewing, and room booking. As a web application framework, Indico's public API focuses on administrative operations via CLI commands, extension development via plugins, and testing infrastructure for developers.

3

4

## Package Information

5

6

- **Package Name**: indico

7

- **Package Type**: pypi

8

- **Language**: Python

9

- **Installation**: `pip install indico`

10

11

## Core Imports

12

13

```python

14

# Plugin development

15

from indico.core.plugins import IndicoPlugin, PluginCategory

16

from indico.core.plugins import url_for_plugin, get_plugin_template_module

17

18

# CLI development

19

from indico.cli.core import cli_command, cli_group

20

21

# Testing utilities

22

from indico.testing.util import bool_matrix

23

# Fixtures are automatically available when using the pytest plugin

24

```

25

26

## Basic Usage

27

28

### Creating a Plugin

29

30

```python

31

from indico.core.plugins import IndicoPlugin, PluginCategory

32

33

class MyPlugin(IndicoPlugin):

34

"""A simple Indico plugin example."""

35

36

configurable = True

37

category = PluginCategory.other

38

default_settings = {

39

'enabled': False,

40

'max_items': 10

41

}

42

43

def init(self):

44

"""Initialize the plugin when loaded."""

45

super().init()

46

# Plugin initialization code here

47

48

def get_blueprints(self):

49

"""Return Flask blueprints for this plugin."""

50

return []

51

```

52

53

### Using CLI Commands

54

55

```bash

56

# Initialize database

57

indico db prepare

58

59

# Compile translations

60

indico i18n compile

61

62

# Create new user

63

indico user create admin@example.com

64

```

65

66

## Architecture

67

68

Indico follows a modular architecture designed for extensibility:

69

70

- **Core Framework**: Flask-based web application with SQLAlchemy ORM

71

- **Plugin System**: Extensible architecture allowing custom functionality via plugins

72

- **CLI Interface**: Administrative commands for system management and maintenance

73

- **Settings Management**: Hierarchical settings system (global, event-specific, user-specific)

74

- **Testing Infrastructure**: Comprehensive test fixtures and utilities for development

75

76

The plugin system is the primary extension mechanism, enabling custom event types, payment processors, authentication providers, and integration with external systems.

77

78

## Capabilities

79

80

### Command Line Interface

81

82

Administrative and management commands for database operations, user management, event lifecycle management, internationalization, and system maintenance.

83

84

```python { .api }

85

def cli(): ...

86

def cli_command(name=None, **attrs): ...

87

def cli_group(name=None, **attrs): ...

88

```

89

90

[CLI Commands](./cli-commands.md)

91

92

### Plugin Development API

93

94

Base classes and utilities for creating Indico plugins, including settings management, blueprint registration, template hooks, and event handling.

95

96

```python { .api }

97

class IndicoPlugin:

98

configurable: bool = False

99

category: PluginCategory = PluginCategory.other

100

default_settings: dict = {}

101

default_event_settings: dict = {}

102

default_user_settings: dict = {}

103

acl_settings: set = set()

104

strict_settings: bool = True

105

106

def init(self): ...

107

def get_blueprints(self): ...

108

def get_vars_js(self): ...

109

```

110

111

[Plugin Development](./plugin-development.md)

112

113

### Testing Infrastructure

114

115

Comprehensive testing utilities including pytest integration, test fixtures for events, users, rooms, and other domain objects, plus utilities for parameterized testing.

116

117

```python { .api }

118

def bool_matrix(template, mask, expect): ...

119

```

120

121

[Testing Utilities](./testing-utilities.md)