from dcmetrometrics.common.metroTimes import getLastOpenTime
from dcmetrometrics.eles.models import Unit, SymptomCode, UnitStatus, SystemServiceReport
from dcmetrometrics.common.globals import WWW_DIR
from dcmetrometrics.common.utils import gen_days
from dcmetrometrics.common.JSONifier import JSONWriter

import argparse
parser = argparse.ArgumentParser(description='Run daily service reports.')
parser.add_argument('--all', action = 'store_true',
                   help='Compute all, instead of a one day update.')


##########################################
# Set up logging
from dcmetrometrics.common import logging_utils
logger = logging_utils.create_logger(__name__)
DEBUG = logger.debug
WARNING = logger.warning
INFO = logger.info

# Set up the ELES logger as well. This is used by other modules
logger_eles = logging_utils.create_logger("ELESApp")
#########################################

class ReturnObject(object):
  pass

def filter_consecutive_statuses(statuses):
  """
  Filter out consecutive statuses with the same symptom description
  """
import gc
from operator import attrgetter
# gc.set_debug(gc.DEBUG_STATS)


from dcmetrometrics.common.dbGlobals import G
from dcmetrometrics.eles import dbUtils
from dcmetrometrics.eles.models import Unit, SymptomCode, UnitStatus, SystemServiceReport
from datetime import timedelta
from dcmetrometrics.common.globals import WWW_DIR
from dcmetrometrics.common.utils import gen_days

##########################################
# Set up logging
from dcmetrometrics.common import logging_utils
logger = logging_utils.create_logger(__name__)
DEBUG = logger.debug
WARNING = logger.warning
INFO = logger.info
##########################################

class ReturnObject(object):
  pass

def filter_consecutive_statuses(statuses):
  """
  Filter out consecutive statuses with the same symptom description
  """
  statuses = sorted(statuses, key = attrgetter('time'))
  last_status = None
  keep = []