← back to FashionCrawler

fashioncrawler/utils/utils.py

76 lines

"""
Utility Functions Module
=======================

This module provides utility functions for various operations.

Classes:
- Utils: A class containing utility methods.

Functions:
- convert_to_datetime(time_str_list): Convert a list of time strings to datetime objects.
"""

from datetime import datetime, timedelta


class Utils:
    """
    Utils: A class containing utility methods.

    Methods:
    - convert_to_datetime(time_str_list): Convert a list of time strings to datetime objects.
    """

    # TODO: optimize this (check testing/testing.py)
    @classmethod
    def convert_to_datetime(cls, time_str_list):
        """
        Convert a list of time strings to datetime objects.

        Args:
            time_str_list (list): A list of time strings.

        Returns:
            list: A list of formatted datetime strings.
        """
        datetime_list = []

        for time_str in time_str_list:
            parts = time_str.split(" ")
            num = int(parts[0])
            unit = parts[1]

            if unit in ("days", "day"):
                delta = timedelta(days=num)
                tformat = "%a, %B %d"
            elif unit in ("hours", "hour"):
                delta = timedelta(hours=num)
                tformat = "%a, %B %d at about %I%p"
            elif unit in ("minutes", "minute"):
                delta = timedelta(minutes=num)
                tformat = "%a, %B %d at %I:%M%p"
            else:
                raise ValueError("Invalid unit")

            datetime_string = datetime.now() - delta
            formatted_string = datetime_string.strftime(tformat)
            datetime_list.append(formatted_string)

        return datetime_list

    @staticmethod
    def create_context_dict(dataframes, **kwargs):
        """
        Create a context dictionary for Jinja2 templates by merging the given dataframes and additional key-value pairs.

        Parameters:
        - dataframes (dict): A dictionary containing dataframes as values.
        - **kwargs: Additional key-value pairs to include in the context dictionary.

        Returns:
        dict: A context dictionary containing merged dataframes and additional key-value pairs.
        """
        context = {**dataframes, **kwargs}
        return context