Files @ cbf524e4c1a3
Branch filter:

Location: kallithea/docs/usage/customization.rst

cbf524e4c1a3 1.7 KiB text/prs.fallenstein.rst Show Annotation Show as Raw Download as Raw
domruf
utils: remove Session after we are done using it in set_app_settings

When the Kallithea WSGI application or celeryd is started, TurboGears
app_config.make_base_app calls Kallithea app_cfg.setup_configuration which runs
utils.set_app_settings. That function will read settings from the database and
store them in the global config. It uses a database session which is created on
demand, but this session was not dismissed but left around for the next thing
that asked for a database session. MySQL will by default close connections
after 1 hour, so when celery tried to run a task after 1 hour of inactivity, it
could fail because of the closed connection.

utils.set_app_settings must thus remove the Session after use, just like
auth.set_available_permissions do.

This will thus fix for example some MySQL connection problems seen with Celery.
.. _customization:

=============
Customization
=============

There are several ways to customize Kallithea to your needs depending on what
you want to achieve.


HTML/JavaScript/CSS customization
---------------------------------

To customize the look-and-feel of the web interface (for example to add a
company banner or some JavaScript widget or to tweak the CSS style definitions)
you can enter HTML code (possibly with JavaScript and/or CSS) directly via the
*Admin > Settings > Global > HTML/JavaScript customization
block*.


Behavioral customization: rcextensions
--------------------------------------

Some behavioral customization can be done in Python using ``rcextensions``, a
custom Python package that can extend Kallithea functionality.

With ``rcextensions`` it's possible to add additional mappings for Whoosh
indexing and statistics, to add additional code into the push/pull/create/delete
repository hooks (for example to send signals to build bots such as Jenkins) and
even to monkey-patch certain parts of the Kallithea source code (for example
overwrite an entire function, change a global variable, ...).

To generate a skeleton extensions package, run::

    gearbox make-rcext -c my.ini

This will create an ``rcextensions`` package next to the specified ``ini`` file.
See the ``__init__.py`` file inside the generated ``rcextensions`` package
for more details.


Behavioral customization: code changes
--------------------------------------

As Kallithea is open-source software, you can make any changes you like directly
in the source code.

We encourage you to send generic improvements back to the
community so that Kallithea can become better. See :ref:`contributing` for more
details.