"Supposed to be a singleton"
class ManualIntervention():
    def __init__(self):
        self.intervention_happened = False
        self.intervention_required = False
        self.response              = None
        self.number_of_requests    = 0
        self.options               = (('Ok', True),)
        self.label = 'È richiesto un intervento manuale'

    def set(self, response):
        self.response = response
        self.intervention_happened = True
        return True

    def get(self, label=None, options=None):
        update = False
        if not self.intervention_required:
            update = True
            self.intervention_required = True
            self.label = label or self.label
            self.options = options or self.options
        self.number_of_requests += 1
        return update, self.intervention_happened and self.response

    def clear(self):
        self.__init__()
        return True

    def getState(self):
        return {
            'label': self.label,
            'required': self.intervention_required,
            'options': tuple({'tag':o[0], 'value':o[1]} for o in self.options)
        }