WeblateOrg / fedora_messaging

Fedora messaging integration for Weblate
GNU General Public License v3.0
5 stars 7 forks source link
django fedora hacktoberfest localization messaging python weblate

.. image:: https://s.weblate.org/cdn/Logo-Darktext-borders.png :alt: Weblate :target: https://weblate.org/ :height: 80px

Weblate is libre software web-based continuous localization system, used by over 2500 libre projects and companies in more than 165 countries.

Fedora messaging integration and AMQP publisher for Weblate.

.. image:: https://img.shields.io/badge/website-weblate.org-blue.svg :alt: Website :target: https://weblate.org/

.. image:: https://hosted.weblate.org/widgets/weblate/-/svg-badge.svg :alt: Translation status :target: https://hosted.weblate.org/engage/weblate/?utm_source=widget

.. image:: https://bestpractices.coreinfrastructure.org/projects/552/badge :alt: CII Best Practices :target: https://bestpractices.coreinfrastructure.org/projects/552

.. image:: https://img.shields.io/pypi/v/weblate-fedora-messaging.svg :target: https://pypi.org/project/weblate-fedora-messaging/ :alt: PyPI package

.. image:: https://readthedocs.org/projects/weblate/badge/ :alt: Documentation :target: https://docs.weblate.org/

Installation

Install from PyPI:

.. code-block:: sh

pip install weblate-fedora-messaging

Sources are available at https://github.com/WeblateOrg/fedora_messaging.

Configure Weblate integration:

.. code-block:: python

Add to installed apps

INSTALLED_APPS.append("weblate_fedora_messaging")

Path to configuration file

FEDORA_MESSAGING_CONF = "/etc/fedora-messaging/config.toml"

fedora_messaging_task retry settings (optional, the following are the default values)

FEDORA_MESSAGING_TASK_RETRY_BACKOFF = 600 FEDORA_MESSAGING_TASK_RETRY_BACKOFF_MAX = 3600 FEDORA_MESSAGING_TASK_RETRY_JITTER = True FEDORA_MESSAGING_TASK_MAX_RETRIES = 3

Route messaging to notify queue

CELERY_TASK_ROUTES["weblate_fedora_messaging.tasks.*"] = {"queue": "notify"}

Messages content

Topic +++++

All messages have topic weblate.<action>.<project>.<component>.<translation>. The action is lowercase textual representation of action with underscores instead of space, for example resource_update, all other parts are optional and represent slug of the object or a language code.

Body ++++

The body consists of following fields (given that they are available for the event):

id Numerical ID of change action Verbose name of the change, see Change actions source code_ for possible values timestamp ISO formatted timestamp target New value of the change (eg. new translation of the string) old Old value of the change (eg. previous translation of the string) source Source string. url Absolute URL to view the related object. author Author username (this can be different from user for example when accepting suggestions) user Acting username project Project slug component Component slug translation Translation language code

Headers +++++++

There are additional headers which you might utilize for routing as well:

action Verbose name of the change, see Change actions source code_ for possible values project Project slug component Component slug

.. _Change actions source code: https://github.com/WeblateOrg/weblate/blob/master/weblate/trans/models/change.py#L218

Example messages

Repository merge event:

.. code-block:: json

{
  "id": 1,
  "action": "Merged repository",
  "timestamp": "2017-06-15T11:30:47.325000+00:00",
  "url": "http://example.com/projects/test/test/",
  "component": "test"
}

New source string event:

.. code-block:: json

{
  "id": 2,
  "action": "New source string",
  "timestamp": "2017-06-15T11:30:47.372000+00:00",
  "url": "http://example.com/translate/test/test/cs/?checksum=6412684aaf018e8e",
  "component": "test",
  "translation": "cs",
  "source": ["Hello, world!\n"]
}

Resource update event:

.. code-block:: json

{
  "id": 6,
  "action": "Resource update",
  "timestamp": "2017-06-15T11:30:47.410000+00:00",
  "url": "http://example.com/projects/test/test/cs/",
  "project": "test",
  "component": "test",
  "translation": "cs"
}
{
  "id": 7,
  "action": "Resource update",
  "timestamp": "2017-06-15T11:30:47.510000+00:00",
  "url": "http://example.com/projects/test/test/de/",
  "project": "test",
  "component": "test",
  "translation": "de"
}
{
  "id": 8,
  "action": "Resource update",
  "timestamp": "2017-06-15T11:30:47.595000+00:00",
  "url": "http://example.com/projects/test/test/it/",
  "project": "test",
  "component": "test",
  "translation": "it"
}

Project removal event:

.. code-block:: json

{
  "id": 9,
  "action": "Removed project",
  "timestamp": "2019-10-17T15:57:08.559420+00:00",
  "target": "test",
  "user": "testuser"
}

New contributor event:

.. code-block:: json

{
  "id": 11,
  "action": "New contributor",
  "timestamp": "2019-10-17T15:57:08.759960+00:00",
  "url": "http://example.com/translate/test/test/cs/?checksum=6412684aaf018e8e",
  "author": "testuser",
  "user": "testuser",
  "project": "test",
  "component": "test",
  "translation": "cs",
  "source": ["Hello, world!\n"]
}

New translation event:

.. code-block:: json

{
  "id": 12,
  "action": "New translation",
  "timestamp": "2019-10-17T15:57:08.772591+00:00",
  "url": "http://example.com/translate/test/test/cs/?checksum=6412684aaf018e8e",
  "target": ["Ahoj svete!\n"],
  "author": "testuser",
  "user": "testuser",
  "project": "test",
  "component": "test",
  "translation": "cs",
  "source": ["Hello, world!\n"]
}

Contributing

Contributions are welcome! See documentation <https://docs.weblate.org/en/latest/contributing/modules.html>__ for more information.