Gestion de contenu
Go to file
Lauréline Guérin 03361bfbb9
gitea/combo/pipeline/head This commit looks good Details
wcs: replace newlines by spaces in title and headers (#86308)
2024-02-16 10:13:18 +01:00
combo wcs: replace newlines by spaces in title and headers (#86308) 2024-02-16 10:13:18 +01:00
debian commands: rename lingo-poll-backend to lingo_poll_backend (#85511) 2024-01-15 11:51:09 +01:00
tests wcs: replace newlines by spaces in title and headers (#86308) 2024-02-16 10:13:18 +01:00
.coveragerc jenkins: show execution context in coverage reports (#60446) 2022-01-11 15:22:24 +01:00
.git-blame-ignore-revs misc: update git-blame-ignore-revs to ignore quote changes (#79788) 2023-08-16 10:07:28 +02:00
.gitignore js: configure unit tests (#83453) 2024-01-29 09:34:16 +01:00
.pre-commit-config.yaml misc: add pre commit hook to force single quotes (#79788) 2023-08-16 10:07:27 +02:00
COPYING add license file 2014-12-07 15:01:15 +01:00
Jenkinsfile js: configure unit tests (#83453) 2024-01-29 09:34:16 +01:00 general: move locales to a combo.locales application (#80216) 2023-08-04 10:32:15 +02:00
README misc: change django-upgrade target version to 3.2 (#75442) 2023-03-29 16:14:41 +02:00 tox: load lasso (#35425) 2019-08-18 14:46:56 +02:00 misc: apply double-quote-string-fixer (#79788) 2023-08-16 10:07:28 +02:00
pylint.rc pylint: ignore broad-exception-raised (broad-except alias) 2023-02-01 14:39:43 +01:00 ci: speed up CI using multiple processes with pytest (#67088) 2022-07-18 08:23:22 +02:00
requirements.txt misc: require django 3.2 (#75442) 2023-03-29 16:14:41 +02:00 js: configure unit tests (#83453) 2024-01-29 09:34:16 +01:00 misc: declare new importlib_metadata dependency, for pygal (#83745) 2023-11-21 10:50:53 +01:00
stats js: configure unit tests (#83453) 2024-01-29 09:34:16 +01:00
tox.ini js: configure unit tests (#83453) 2024-01-29 09:34:16 +01:00
vitest.config.js js: configure unit tests (#83453) 2024-01-29 09:34:16 +01:00



Combo is a simple content management system, tailored to create simple
websites, and with a specialization in aggregating contents from different


Dependencies can be installed with pip,

 $ pip install -r requirements.txt

It's then required to get the database configured (./ migrate); by
default it will create a postgresqsl DB.

You can then run the Django test server for a quick try (you should refer to
the Django documentation for production deployments).

 $ ./ runserver


Combo manages content as a series of pages (objects of type 'Page'), that can
be sorted ('order' attribute) and hierarchically ordered ('parent' attribute).

Every pages have a title and a "slug", that is used as the page URL; a page
with 'index' as its slug will be served as the index page of the site.

The pages are set to use a template; the templates are defined in the settings
file (COMBO_PUBLIC_TEMPLATES) and are made of a name, a template file, and a
serie of "placeholders", identifying locations in the page (main content, side
bar, footer...).


    'standard': {
        'name': 'Standard',
        'template': 'combo/page_template.html',
        'placeholders': {
            'content': {
                'name': 'Content',
            'footer': {
                'name': 'Footer',
                'acquired': True,

The content of a page is defined as a serie of cells, of which there are
various types (they are all subclasses of CellBase); each cell is also
associated with a placeholder ('placeholder' attribute) and its order within
('order' attribute).

A placeholder can be marked as 'acquired' (see "footer" in the example above),
this way a cell of "same as parent" type will automatically be added.


Default settings are loaded from, they can be overloaded by a file set in the same directory, or by a file referenced
in the COMBO_SETTINGS_FILE environment variable.

SAML authentication can be enabled by adding 'mellon' to INSTALLED_APPS and
'mellon.backends.SAMLBackend' to AUTHENTICATION_BACKENDS, this requires
django-mellon to be installed, and further files and settings are required:

 - public and private keys (in cert.pem and key.cert in the current working
   directory, or from files defined in the MELLON_PUBLIC_KEYS and
 - metadata of the identity provider (in idp-metadata.xml, or defined using

Details on these options and additional SAML settings are available in the
documentation of django-mellon.


Unit tests are written using py.test, and its pytest-django support library.

  DJANGO_SETTINGS_MODULE=combo.settings COMBO_SETTINGS_FILE=tests/ py.test

Code Style

black is used to format the code, using thoses parameters:

    black --target-version py37 --skip-string-normalization --line-length 110

isort is used to format the imports, using those parameters:

    isort --profile black --line-length 110

pyupgrade is used to automatically upgrade syntax, using those parameters:

    pyupgrade --keep-percent-format --py37-plus

djhtml is used to automatically indent html files, using those parameters:

    djhtml --tabwidth 2

django-upgrade is used to automatically upgrade Django syntax, using those parameters:

    django-upgrade --target-version 3.2

There is .pre-commit-config.yaml to use pre-commit to automatically run these tools
before commits. (execute `pre-commit install` to install the git hook.)


This program is free software: you can redistribute it and/or modify it under
the terms of the GNU Affero General Public License as published by the Free
Software Foundation, either version 3 of the License, or (at your option) any
later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY
WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE.  See the GNU Affero General Public License for more

You should have received a copy of the GNU Affero General Public License along
with this program.  If not, see <>.

Combo embeds some other pieces of code, with their own authors and copyright

  Files: combo/apps/dataviz/static/js/gauge.min.js
  License: MIT

  Files: combo/apps/dataviz/static/js/pygal.tooltip.js
  Copyright: 2015, Florian Mounier Kozea
  License: LGPL-3+