Пример #1
0
Dashboard is the Observer (few observers possible). Observers are interested in any change in a Subject
KPI source is a Publisher/Subject.

Bug warning: dangling reference (it can stop garbage collector). 
Solution: add __enter__ and __exit__ methods to AbsObserver and AbsSubject classes (abstract observer classes) 
so it can detach itself. Use 'with' statements with context managers. 
These 2 functions are required to turn a class definition into a context manager.
"""

from kpis import KPIs
from current_kpis import CurrentKPIs
from forecast_kpis import ForecastKPIs
''' USING CONTEXT MANAGERS '''

with KPIs() as kpis:
    with CurrentKPIs(kpis), ForecastKPIs(kpis):
        kpis.set_kpis(25, 10, 5)
        kpis.set_kpis(100, 50, 30)
        kpis.set_kpis(50, 10, 20)

print('\n***Exited context managers.***\n\n')
kpis.set_kpis(150, 110,
              120)  # this will not display anything, no subscribers left
''' WITHOUT CONTEXT MANAGERS

## Report on current KPI values
# instanciate KPIs
kpis = KPIs()

# instanciate 2 observers
from kpis import KPIs
from currentkpis import CurrentKPIs
from forecastkpis import ForecastKPIs

# report on the current KPI values
kpis = KPIs()
currentKPIs = CurrentKPIs(kpis)
forecastKPIs = ForecastKPIs(kpis)

kpis.set_kpis(25, 10, 5)
kpis.set_kpis(100, 50, 30)
kpis.set_kpis(50, 10, 20)

print('\n*** detaching the currentKPIs observer')
kpis.detach(currentKPIs)
kpis.set_kpis(150, 110, 120)
from kpis import KPIs
from currentkpis import CurrentKPIs
from forecastkpis import ForecastKPIs

# Report on current KPI values
kpis = KPIs()
with CurrentKPIs(kpis), ForecastKPIs(kpis):
    kpis.set_kpis(25, 10, 5)
    kpis.set_kpis(100, 50, 30)
    kpis.set_kpis(50, 10, 20)

print("*****No longer in context manager.\n\n")
kpis.set_kpis(150, 110, 120)
Пример #4
0
from kpis import KPIs
from currentkpis import CurrentKPIs
from forecastkpis import ForecastKPIs

# Report on current KPI values
with KPIs() as kpis:  # * Subject
    with CurrentKPIs(kpis), ForecastKPIs(kpis):  # * Observers
        kpis.set_kpis(25, 10, 5)
        kpis.set_kpis(100, 50, 30)
        kpis.set_kpis(50, 10, 20)

print('\n***Exited context managers.***\n\n')
kpis.set_kpis(150, 110, 120)
Пример #5
0
from kpis import KPIs
from currentkpis import CurrentKPIs
from forecastkpis import ForecastKPIs

# Report on current KPI values
kpis = KPIs()
currentKPIs = CurrentKPIs(kpis)
forecastKPIs = ForecastKPIs(kpis)

kpis.set_kpis(34, 46, 22)
kpis.set_kpis(76, 29, 40)
kpis.set_kpis(10, 20, 30)

print('\n ***** DEtaching the currentKPI observer ** \n\n')
kpis.detach(currentKPIs)
kpis.set_kpis(150, 160, 170)
Пример #6
0
from kpis import KPIs
from kpis_actuales import KPIs_Actuales
from kpis_pronostico import KPIs_Pronostico

#Reporte de KPI actuales
kpis = KPIs()
kpis_actuales = KPIs_Actuales(kpis)
kpis_pronostico = KPIs_Pronostico(kpis)
kpis.set_kpis(25, 10, 5)
kpis.set_kpis(100, 50, 30)
kpis.set_kpis(50, 10, 20)

print('\n**** Desacoplando el observador KPIs_Actuales ****\n\n')
kpis.detach(kpis_actuales)
kpis.set_kpis(150, 110, 120)
Пример #7
0
from kpis import KPIs
from currentkpis import CurrentKPIs
from forecastkpis import ForecastKPIs

# Report on current KPI values
kpis = KPIs()  # * Subject
current_kpis = CurrentKPIs(kpis)  # * Observer1
forecast_kpis = ForecastKPIs(kpis)  # * Observer2
kpis.set_kpis(25, 10, 5)
kpis.set_kpis(100, 50, 30)
kpis.set_kpis(50, 10, 20)

print('\n***Detaching the currentKPIs observer.***\n\n')
kpis.detach(current_kpis)
kpis.set_kpis(150, 110, 120)
from kpis import KPIs
from currentkpis import CurrentKPIs
from forecastkpis import ForecastKPIs

# Report on current KPI values
kpis = KPIs()
currentKPIs = CurrentKPIs(kpis)
forecastKPIs = ForecastKPIs(kpis)
kpis.set_kpis(25, 10, 5)
kpis.set_kpis(100, 50, 30)
kpis.set_kpis(50, 10, 20)

print ('\n***Detaching the currentKPIs observer.***\n\n')
kpis.detach(currentKPIs)
kpis.set_kpis(150, 110, 120)
from kpis import KPIs
from currentkpis import CurrentKPIs
from forecastkpis import ForecastKPIs

# Report on current KPI values
kpis = KPIs()
with CurrentKPIs(kpis), ForecastKPIs(kpis):
    kpis.set_kpis(25, 10, 5)
    kpis.set_kpis(100, 50, 30)
    kpis.set_kpis(50, 10, 20)

print("*****No longer in context manager.\n\n")
kpis.set_kpis(150, 110, 120)