An open API service indexing awesome lists of open source software.

https://github.com/weblateorg/fedora_messaging

Fedora messaging integration for Weblate
https://github.com/weblateorg/fedora_messaging

django fedora hacktoberfest localization messaging python weblate

Last synced: 7 months ago
JSON representation

Fedora messaging integration for Weblate

Awesome Lists containing this project

README

          

.. 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 .

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....``. 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 `__ for more information.