예제 #1
0
    def get(self, start, end=None):
        # TODO: Don't let this code survive!!

        assertDateOrNone('start', start)
        assertDateOrNone('end', end)

        def extract(line):
            items = line.rstrip().split(';')
            return {
                'datetime': parseLocalTime(items[0]+':00', items[1]=='S'),
                'ae': items[2]
                }

        if not end:
            end = toLocal(datetime.datetime.now()).date()
        with open(self.res, 'rb') as csvfile:
            content = csvfile.readlines()
            return [
                [
                measure
                for measure in (
                    extract(line)
                    for line in content[1:]
                    )
                if measure['datetime'].date() == date # TODO: la mare dels ous
                ]
                for date in daterange(start, end + datetime.timedelta(days=1))
            ]
예제 #2
0
    def update_kwh(self, start=None, end=None , notifier=None):
        import datetime

        assertDateOrNone('start', start)
        assertDateOrNone('end', end)

        if start is None:
            start = self.lastcommit

        provider = get_provider(self.uri)
        updated = None
        with provider(self.uri) as remote:
            status = 'done'
            message = None
            try:
                for day in remote.get(start, end):
                    for measurement in day:
                        self.curveProvider.fillPoint(
                                name = self.name,
                                datetime = measurement['datetime'],
                                ae = measurement['ae']
                                )
                        updated = measurement['datetime']
            except Exception as e:
                status = 'failed'
                message = str(e)
            finally:
                if notifier:
                    notifier.push(self.id, status, message)
        return updated
예제 #3
0
    def update_kwh(self, start=None, end=None, notifier=None):

        assertDateOrNone('start', start)
        assertDateOrNone('end', end)

        return [(meter.id, meter.update_kwh(start, end, notifier)) for meter in self.meters]
예제 #4
0
    def update_kwh(self, start=None, end=None, notifier=None):

        assertDateOrNone('start', start)
        assertDateOrNone('end', end)

        return [(plant.id, plant.update_kwh(start, end, notifier)) for plant in self.plants]