Source code for pybpodgui_api.models.setup.board_task

# !/usr/bin/python3
# -*- coding: utf-8 -*-

import logging
from pybpodgui_api.models.setup.task_variable import TaskVariable

logger = logging.getLogger(__name__)


[docs]class BoardTask(object): """ Represents the association between one board and one task """ def __init__(self, setup): """ :ivar Setup setup: Setup to which the BoardTask belongs to """ self.setup = setup self.board = None self.task = None self.variables = [] self.update_variables = False ########################################################################## ####### PROPERTIES ####################################################### ########################################################################## @property def board(self): """ Get and set the board :rtype: Board """ return self._board @board.setter def board(self, value): self._board = value @property def task(self): """ Get and set the Task :rtype: Task """ return self._task @task.setter def task(self, value): self._task = value @property def variables(self): """ Get and set list of variables :rtype: list(TaskVariable) """ return self._variables @variables.setter def variables(self, value): self._variables = value @property def update_variables(self): """ Get and set a flag that indicates if the variables should be updated at the end of the session :rtype: bool """ return self._update_variables @update_variables.setter def update_variables(self, value): self._update_variables = value ########################################################################## ####### FUNCTIONS ######################################################## ##########################################################################
[docs] def create_variable(self, name=None, value=None, datatype='string'): """ Create a variable :rtype: TaskVariable """ return TaskVariable(self, name, value, datatype)
def collect_data(self, data): data.update({'variables': [var.collect_data({}) for var in self.variables]}) return data
[docs] def save(self): """ Save board task data on filesystem. :ivar str setup_path: Setup path. :return: Dictionary containing the board task info to save. :rtype: dict """ return { 'variables': [var.save() for var in self.variables], 'update-variables': self.update_variables }
[docs] def load(self, data): """ Load setup data from filesystem :ivar str setup_path: Path of the setup :ivar dict data: data object that contains all setup info """ self.update_variables = data.get('update-variables', False) for var_data in data.get('variables', []): var = self.create_variable() var.load(var_data)
def __unicode__(self): return "Board : {board} | Task: {task}".format(board=str(self.board), task=str(self.task)) def __str__(self): return self.__unicode__() def __add__(self, other): if isinstance(other, TaskVariable): self.variables.append(other) return self