Exemplo n.º 1
0
class RelationshipStates(Persistent, Contained):
    implements(IRelationshipStates)

    title = None
    states = None
    system_titles = None
    factory = RelationshipState

    def __init__(self, title):
        self.title = title
        self.states = OrderedContainer()
        locate(self.states, self, 'states')
        self.system_titles = OrderedContainer()
        locate(self.system_titles, self, 'system_titles')

    def __iter__(self):
        return iter(self.states.values())

    def getState(self, state_tuple):
        if state_tuple is None:
            return None
        meaning, code = state_tuple
        state = self.states.get(code)
        return state

    def getTitle(self, state_tuple):
        state = self.getState(state_tuple)
        if state is None:
            return None
        return state.title

    def getDescription(self, state_tuple):
        if state_tuple is None:
            return None
        meaning, code = state_tuple
        state = self.system_titles.get(meaning)
        return state

    @classmethod
    def overlap(cls, codes, other):
        for code in codes:
            if code in other:
                return True
        return False

    def add(self, *args, **kw):
        state = self.factory(*args, **kw)
        self.states[state.code] = state

    def describe(self, active, title):
        active = ''.join(sorted(set(active)))
        self.system_titles[active] = title
Exemplo n.º 2
0
class RelationshipStates(Persistent, Contained):
    implements(IRelationshipStates)

    title = None
    states = None
    system_titles = None
    factory = RelationshipState

    def __init__(self, title):
        self.title = title
        self.states = OrderedContainer()
        locate(self.states, self, 'states')
        self.system_titles = OrderedContainer()
        locate(self.system_titles, self, 'system_titles')

    def __iter__(self):
        return iter(self.states.values())

    def getState(self, state_tuple):
        if state_tuple is None:
            return None
        meaning, code = state_tuple
        state = self.states.get(code)
        return state

    def getTitle(self, state_tuple):
        state = self.getState(state_tuple)
        if state is None:
            return None
        return state.title

    def getDescription(self, state_tuple):
        if state_tuple is None:
            return None
        meaning, code = state_tuple
        state = self.system_titles.get(meaning)
        return state

    @classmethod
    def overlap(cls, codes, other):
        for code in codes:
            if code in other:
                return True
        return False

    def add(self, *args, **kw):
        state = self.factory(*args, **kw)
        self.states[state.code] = state

    def describe(self, active, title):
        active = ''.join(sorted(set(active)))
        self.system_titles[active] = title