Skip to content
Snippets Groups Projects
internal_controller.py 3.79 KiB
Newer Older
  • Learn to ignore specific revisions
  • David Trattnig's avatar
    David Trattnig committed
    import connexion
    import six
    
    
    from dateutil.parser import parse
    
    from flask import current_app
    
    
    David Trattnig's avatar
    David Trattnig committed
    from src.rest.models.clock_info import ClockInfo  # noqa: E501
    
    David Trattnig's avatar
    David Trattnig committed
    from src.rest.models.health_log import HealthLog  # noqa: E501
    
    David Trattnig's avatar
    David Trattnig committed
    from src.rest.models.inline_response400 import InlineResponse400  # noqa: E501
    
    David Trattnig's avatar
    David Trattnig committed
    from src.rest.models.play_log import PlayLog  # noqa: E501
    
    from src.rest import util
    
    David Trattnig's avatar
    David Trattnig committed
    
    
    David Trattnig's avatar
    David Trattnig committed
    def add_playlog(body):  # noqa: E501
    
    David Trattnig's avatar
    David Trattnig committed
        """Adds an entry to the playlog
    
        Stores the passed playlog entry  # noqa: E501
    
    
    David Trattnig's avatar
    David Trattnig committed
        :param body: 
        :type body: dict | bytes
    
    David Trattnig's avatar
    David Trattnig committed
        :rtype: None
    
    David Trattnig's avatar
    David Trattnig committed
        """
    
    David Trattnig's avatar
    David Trattnig committed
        if connexion.request.is_json:
    
    David Trattnig's avatar
    David Trattnig committed
            body = PlayLog.from_dict(connexion.request.get_json())  # noqa: E501
    
    David Trattnig's avatar
    David Trattnig committed
        service = current_app.config['SERVICE']
    
        return service.store_playlog(body)
    
    David Trattnig's avatar
    David Trattnig committed
    
    
    David Trattnig's avatar
    David Trattnig committed
    def clock_info():  # noqa: E501
        """Get all information to display the studio clock
    
    David Trattnig's avatar
    David Trattnig committed
        Retrieves the currently playing schedule, its playlist and entries plus the next schedule for being used by the studio clock.  # noqa: E501
    
    David Trattnig's avatar
    David Trattnig committed
        :rtype: ClockInfo
    
        """
        return 'do some magic!'
    
    
    
    David Trattnig's avatar
    David Trattnig committed
    def get_active_source():  # noqa: E501
        """Get active play-out source (engine1, engine2)
    
    David Trattnig's avatar
    David Trattnig committed
    
    
    David Trattnig's avatar
    David Trattnig committed
        Retrieves the status entry of the currently active source (engine 1, 2 or other source)  # noqa: E501
    
    David Trattnig's avatar
    David Trattnig committed
        :rtype: int
    
    David Trattnig's avatar
    David Trattnig committed
        """
    
        service = current_app.config['SERVICE']
        return service.get_active_source()
    
    David Trattnig's avatar
    David Trattnig committed
    def get_report(year_month):  # noqa: E501
        """Report for one month
    
    David Trattnig's avatar
    David Trattnig committed
        Returns a report for the given month  # noqa: E501
    
    David Trattnig's avatar
    David Trattnig committed
        :param year_month: Month to create the report for in the format \"yyyy_mm\"
        :type year_month: str
    
    David Trattnig's avatar
    David Trattnig committed
        :rtype: List[PlayLog]
    
        """
        return 'do some magic!'
    
    
    
    David Trattnig's avatar
    David Trattnig committed
    def get_source_health(number):  # noqa: E501
        """Get most recent health info
    
    David Trattnig's avatar
    David Trattnig committed
    
    
    David Trattnig's avatar
    David Trattnig committed
        Retrieves the most recent health info of the requested engine  # noqa: E501
    
    David Trattnig's avatar
    David Trattnig committed
    
    
    David Trattnig's avatar
    David Trattnig committed
        :param number: Number of the engine
        :type number: int
    
    David Trattnig's avatar
    David Trattnig committed
    
    
    David Trattnig's avatar
    David Trattnig committed
        :rtype: HealthLog
    
    David Trattnig's avatar
    David Trattnig committed
        """
    
    David Trattnig's avatar
    David Trattnig committed
        service = current_app.config['SERVICE']
        return service.get_source_health(number)
    
    David Trattnig's avatar
    David Trattnig committed
    
    
    
    def list_playlog(from_date=None, to_date=None, page=None, limit=None, skip_synced=None):  # noqa: E501
    
    David Trattnig's avatar
    David Trattnig committed
        """List tracks in the play-log since the given timestamp
    
        Get paginated playlog entries for since the given timestamp.  # noqa: E501
    
        :param date_time: Get entries after this timestamp (e.g. '2020-08-29T09:12:33.001Z')
    
    David Trattnig's avatar
    David Trattnig committed
        :type date_time: str
    
    David Trattnig's avatar
    David Trattnig committed
        :param page: The number of items to skip before starting to collect the result set
        :type page: int
        :param limit: The numbers of items to return per page
        :type limit: int
    
    David Trattnig's avatar
    David Trattnig committed
        :param skip_synced: If true only returns items which are in unsynced state on the main node
        :type skip_synced: bool
    
    David Trattnig's avatar
    David Trattnig committed
        :rtype: List[PlayLog]
    
    David Trattnig's avatar
    David Trattnig committed
        """
        service = current_app.config['SERVICE']
    
        fd = None
        td = None
    
        try:
            fd = parse(from_date)
            td = parse(to_date)
        except Exception:
            service.logger.info("Invalid 'from_date' (%s) or 'to_date' (%s) for 'list_playlog'" % (str(from_date), str(to_date)))
    
        return service.list_playlog(page, limit, fd, td, skip_synced)
    
    David Trattnig's avatar
    David Trattnig committed
    def log_source_health(body, number):  # noqa: E501
    
        """Log health info
    
        Logs another health entry for the given engine  # noqa: E501
    
    
    David Trattnig's avatar
    David Trattnig committed
        :param number: Number of the engine
        :type number: int
    
        :rtype: None
        """
    
    David Trattnig's avatar
    David Trattnig committed
        if connexion.request.is_json:
            body = HealthLog.from_dict(connexion.request.get_json())  # noqa: E501
        service = current_app.config['SERVICE']
        service.log_source_health(number, body)
    
    David Trattnig's avatar
    David Trattnig committed
    
    
    def set_active_source(number):  # noqa: E501
        """Set active play-out source (engine1, engine2)
    
        Activates one engine and deactivates the other  # noqa: E501
    
        :param number: Number of the engine
        :type number: int
    
        service = current_app.config['SERVICE']
        return service.set_active_source(number)