Source code for signac_dashboard.modules.flow_status

# Copyright (c) 2019 The Regents of the University of Michigan
# All rights reserved.
# This software is licensed under the BSD 3-Clause License.
from signac_dashboard.module import Module
from flask import render_template
import logging

logger = logging.getLogger(__name__)


[docs]class FlowStatus(Module): """Show job labels from a :py:class:`flow.FlowProject`. This module displays a card with labels from :py:meth:`flow.FlowProject.labels`. The user must provide an instance of :py:class:`flow.FlowProject` to the dashboard constructor. Example: .. code-block:: python from project import Project # FlowProject subclass with labels from signac_dashboard import Dashboard if __name__ == '__main__': Dashboard(project=Project()).main() """ def __init__(self, name='Flow Status', context='JobContext', template='cards/flow_status.html', project_module='project', project_class='Project', **kwargs): super().__init__(name=name, context=context, template=template, **kwargs) def register(self, dashboard): self.project = dashboard.project if not hasattr(self.project, 'labels'): logger.warning('The provided signac Project cannot provide labels.' ' Try providing a FlowProject to the Dashboard\'s ' 'project argument.') def get_cards(self, job): try: labels = self.project.labels(job) except AttributeError: labels = ('Error: Project cannot provide labels.',) return [{'name': self.name, 'content': render_template(self.template, labels=labels)}]