Utils

This package contains utilities shared among all Django apps

Decorators

This file contains decorators that are used in core.

integreat_cms.core.utils.decorators.disable_for_loaddata(function: Callable) Callable[source]

Mark a signal to not be run during the loaddata command

Parameters:

function (Callable) – The function that should not run during loaddata

Returns:

The wrapped function

Return type:

Callable

Machine Translation API Client

This module contains utilities for machine translation API clients

class integreat_cms.core.utils.machine_translation_api_client.MachineTranslationApiClient(request: HttpRequest, form_class: ModelFormMetaclass)[source]

Bases: ABC

A base class for API clients interacting with machine translation APIs

Parameters:
  • request (HttpRequest)

  • form_class (ModelFormMetaclass)

__init__(request: HttpRequest, form_class: ModelFormMetaclass) None[source]

Constructor initializes the class variables

Parameters:
  • region – The current region

  • form_class (ModelFormMetaclass) – The CustomContentModelForm subclass of the current content type

  • request (HttpRequest)

Return type:

None

alert_exceeds_limit() None[source]

Add messages alerting the user that machine translation failed due to insufficient translation budget

Return type:

None

alert_failed_translations() None[source]

Add messages informing the user about failed translations

Return type:

None

alert_insufficient_hix_score() None[source]

Add messages alerting the user that machine translation failed due to insufficient HIX scores

Return type:

None

alert_no_source_translation() None[source]

Add messages alerting the user that machine translation failed due to missing source translations

Return type:

None

alert_successful_translations() None[source]

Add messages informing the user about successful translations

Return type:

None

failed_because_exceeds_limit: list[str] = [][source]

Content objects untranslatable due to insufficient translation budget

failed_because_insufficient_hix_score: list[str] = [][source]

Content objects untranslatable due to too-low hix score

failed_because_no_source_translation: list[str] = [][source]

Content objects untranslatable due to missing source translations

failed_translations: list[str] = [][source]

Translations with an attached API failure

filter_exceeds_limit() None[source]

This method removes content objects from the main queryset if translating them would exceed the translation budget.

The removed elements are stored in order to show users batched error messages after all objects have been handled.

Parameters:

source_language – The source language slug

Return type:

None

filter_insufficient_hix_score() None[source]

This method removes content objects from the main queryset if they do not have the required HIX score.

The removed elements are stored in order to show users batched error messages after all objects have been handled.

Parameters:

source_language – The source language slug

Return type:

None

filter_no_source_translation() None[source]

This method removes content objects from the main queryset if they do not have the required source translation.

The removed elements are stored in order to show users batched error messages after all objects have been handled.

Parameters:

source_language – The source language slug

Return type:

None

form_class: ModelFormMetaclass[source]

The CustomContentModelForm

abstract static get_target_language_key(target_language: Language) str[source]

This function decides the correct target language key Needs to be implemented by subclasses of MachineTranslationApiClient.

Parameters:

target_language (Language) – the target language

Returns:

target_language_key which is 2 characters long for all languages except English and Portuguese where the BCP tag is transmitted

Return type:

str

abstract invoke_translation_api() None[source]

Translate all content objects stored in self.queryset. Needs to be implemented by subclasses of MachineTranslationApiClient.

Return type:

None

mark_successful(content_object: Event | Page | POI) None[source]

Mark a content object as having been translated successfully

Parameters:

content_object (Event | Page | POI)

Return type:

None

mark_unsuccessful(content_object: Event | Page | POI, errors: bool) None[source]

Mark a translation as unuccessfull (usually due to API errors)

Parameters:
Return type:

None

prepare_content_objects() None[source]

Prepare the content objects to be translated by annotating them with information which otherwise would need to be recalculated multiple times.

Return type:

None

region: Region[source]

The current region

request: HttpRequest[source]

The current request

reset() None[source]

A single instance of a MachineTranslationApiClient may be used multiple times in succession, requiring a reset of the stored results and failures.

Forgetting to call this function will not result in additional machine translation budget use, but will produce nonsense messages shown to the user.

Return type:

None

save_translation(content_object: Event | Page | POI, translation_data: dict) None[source]

Create a translation form based on the extracted content object data, save it, and validate the translation.

Parameters:
Return type:

None

successful_translations: list[Event] | list[Page] | list[POI] = [][source]

Successful translations

translate_object(obj: Event | Page | POI, language_slug: str) None[source]

This function translates one content object

Parameters:
  • obj (Event | Page | POI) – The content object

  • language_slug (str) – The target language slug

Return type:

None

translate_queryset(queryset: list[Event] | list[Page] | list[POI], language_slug: str) None[source]

This function translates a content queryset via DeepL

Parameters:
Return type:

None

Machine Translation Provider

This module contains utilities for machine translations

class integreat_cms.core.utils.machine_translation_provider.MachineTranslationProvider[source]

Bases: object

A base class for machine translation providers. It should be used as static class, without instantiating it.

api_client: type | None = None[source]

The API client class for this provider

bulk_only_for_staff: bool = False[source]

Whether to require the staff permission for bulk actions

enabled: bool = True[source]

Whether the provider is globally enabled

classmethod is_enabled(region: Region, language: Language) bool[source]

Whether this provider is enabled for a given region and language. Call this from the parent class.

Parameters:
  • region (Region) – The given region

  • language (Language) – The given language

Returns:

Wether this provider is enabled for the given region and language

Return type:

bool

is_needed(queryset: QuerySet[Event | Page | POI], target_language: Language) list[Event | Page | POI][source]

Checks if a machine translation is needed, thus checking if the translation status is UP_TO_DATE or MACHINE_TRANSLATED and then returns a lit of translations which are to be updated

Parameters:
  • queryset (QuerySet[Event | Page | POI]) – The content model which should be translated

  • target_language (Language) – The target language

Returns:

translations which need to be translated and updated

Return type:

list[Event | Page | POI]

static is_permitted(region: Region, user: SimpleLazyObject, content_type: ModelBase) bool[source]

Checks if a machine translation is permitted, i.e. if for the given region, MT of the given content type is allowed and MT into the target language is enabled for the requesting user.

Parameters:
  • region (Region) – The current region

  • user (SimpleLazyObject) – The current user

  • content_type (ModelBase) – The content model which should be translated

Returns:

Whether the translation is permitted

Return type:

bool

name: str = ''[source]

The readable name for this provider

region_enabled_attr: str | None = None[source]

The name of the region attribute which denotes whether the provider is enabled in a region

supported_source_languages: list[str] = [][source]

The supported source languages

supported_target_languages: list[str] = [][source]

The supported target languages

class integreat_cms.core.utils.machine_translation_provider.MachineTranslationProviderType[source]

Bases: type

A meta class for machine translation providers

Strtobool

General utility functions that are used by multiple modules within our project.

integreat_cms.core.utils.strtobool.strtobool(val: str) bool[source]

Convert a string representation of truth to true (1) or false (0). True values are ‘y’, ‘yes’, ‘t’, ‘true’, ‘on’, and ‘1’; false values are ‘n’, ‘no’, ‘f’, ‘false’, ‘off’, and ‘0’. Raises ValueError if ‘val’ is anything else.

Parameters:

val (str)

Return type:

bool

Word Count

integreat_cms.core.utils.word_count.word_count(attributes_to_translate: list[tuple[str, str]]) int[source]

This function counts the number of words in a content translation

Parameters:

attributes_to_translate (list[tuple[str, str]])

Return type:

int