Skip to content

meringue.core.utils ¤

format_date_from_to ¤

format_date_from_to(
    date_start: date, date_end: date, delimiter: str = "-"
) -> str

Method to display date period.

Possible output formats depending on the input data:

  • DD.MM.YYYY - DD.MM.YYYY
  • DD.MM - DD.MM.YYYY
  • DD - DD.MM.YYYY
  • DD.MM.YYYY

Examples:

>>> print(format_date_from_to(dt.date(2020, 1, 1), dt.date(2020, 2, 1)))
01.01 - 01.02.2020

Attributes:

  • date_start

    Period start date.

  • date_end

    Period end date.

  • delimiter

    Dates delimiter.

Returns:

  • str

    Date period string.

Source code in meringue/core/utils/datetime.py
def format_date_from_to(
    date_start: dt.date,
    date_end: dt.date,
    delimiter: str = "-",
) -> str:
    """
    Method to display date period.

    Possible output formats depending on the input data:

    * `DD.MM.YYYY - DD.MM.YYYY`
    * `DD.MM - DD.MM.YYYY`
    * `DD - DD.MM.YYYY`
    * `DD.MM.YYYY`

    Examples:
        ```pycon
        >>> print(format_date_from_to(dt.date(2020, 1, 1), dt.date(2020, 2, 1)))
        01.01 - 01.02.2020
        ```

    Attributes:
        date_start: Period start date.
        date_end: Period end date.
        delimiter: Dates delimiter.

    Returns:
        Date period string.
    """

    if date_start.year != date_end.year:
        return f"{date_start:%d.%m.%Y} {delimiter} {date_end:%d.%m.%Y}"

    if date_start.month != date_end.month:
        return f"{date_start:%d.%m} {delimiter} {date_end:%d.%m.%Y}"

    if date_start.day != date_end.day:
        return f"{date_start:%d} {delimiter} {date_end:%d.%m.%Y}"

    return f"{date_end:%d.%m.%Y}"
get_link(
    url_name: str, absolute: bool | None = True, **kwargs
) -> str

Method for getting a link.

Attributes:

  • url_name

    The url name

  • absolute

    Flag to make URL absolute or relative

  • kwargs

    Url parameters

Raises:

  • Exception

    FRONTEND_URLS parameter is empty

  • Exception

    The passed link is not specified in the FRONTEND_URLS parameter

  • Exception

    FRONTEND_DOMAIN parameter not specified

Returns:

  • str

    link to the front.

Source code in meringue/core/utils/frontend.py
def get_link(
    url_name: str,
    absolute: bool | None = True,
    **kwargs,
) -> str:
    """
    Method for getting a link.

    Attributes:
        url_name: The url name
        absolute: Flag to make URL absolute or relative
        kwargs: Url parameters

    Raises:
        Exception: FRONTEND_URLS parameter is empty
        Exception: The passed link is not specified in the FRONTEND_URLS parameter
        Exception: FRONTEND_DOMAIN parameter not specified

    Returns:
        link to the front.
    """

    if m_settings.FRONTEND_URLS is None:
        msg = "FRONTEND_URLS parameter is empty"
        raise Exception(msg)

    if url_name not in m_settings.FRONTEND_URLS:
        msg = f"The passed link `{url_name}` is not specified in the FRONTEND_URLS parameter"
        raise Exception(msg)

    url = m_settings.FRONTEND_URLS[url_name]
    url = url(**kwargs) if callable(url) else url.format(**kwargs)

    if absolute:
        if m_settings.FRONTEND_DOMAIN is None:
            msg = "FRONTEND_DOMAIN option not set"
            raise Exception(msg)

        url = urljoin(m_settings.FRONTEND_DOMAIN, url)

    return url