Пример #1
0
        def triad_csv(supply_source):
            if supply_source is None or \
                    supply_source.mpan_core.startswith('99'):
                return [''] * 19

            duos.duos_vb(supply_source)
            triad.triad_bill(supply_source)

            bill = supply_source.supplier_bill
            values = [supply_source.mpan_core]
            for i in range(1, 4):
                triad_prefix = 'triad-actual-' + str(i)
                for suffix in [
                        '-date', '-msp-kw', '-status', '-laf', '-gsp-kw']:
                    values.append(bill[triad_prefix + suffix])

            suffixes = ['gsp-kw', 'rate', 'gbp']
            values += [bill['triad-actual-' + suf] for suf in suffixes]
            return values
Пример #2
0
def content():
    sess = None
    try:
        sess = db.session()

        march_finish = datetime.datetime(year, 4, 1, tzinfo=pytz.utc) - HH
        march_start = datetime.datetime(year, 3, 1, tzinfo=pytz.utc)

        yield ", ".join(
            (
                "Site Code",
                "Site Name",
                "Displaced TRIAD 1 Date",
                "Displaced TRIAD 1 MSP kW",
                "Displaced TRIAD LAF",
                "Displaced TRIAD 1 GSP kW",
                "Displaced TRIAD 2 Date",
                "Displaced TRIAD 2 MSP kW",
                "Displaced TRIAD 2 LAF",
                "Displaced TRIAD 2 GSP kW",
                "Displaced TRIAD 3 Date",
                "Displaced TRIAD 3 MSP kW",
                "Displaced TRIAD 3 LAF",
                "Displaced TRIAD 3 GSP kW",
                "Displaced GSP kW",
                "Displaced Rate GBP / kW",
                "GBP",
            )
        ) + "\n"

        forecast_date = computer.forecast_date()

        if site_id is None:
            sites = (
                sess.query(Site)
                .join(SiteEra)
                .join(Era)
                .join(Supply)
                .join(Source)
                .filter(
                    Source.code.in_(("gen", "gen-net")),
                    Era.start_date <= march_finish,
                    or_(Era.finish_date == null(), Era.finish_date >= march_start),
                )
                .distinct()
            )
        else:
            site = Site.get_by_id(sess, site_id)
            sites = sess.query(Site).filter(Site.id == site.id)

        for site in sites:
            for site_group in site.groups(sess, march_start, march_finish, True):
                if site_group.start_date > march_start:
                    chunk_start = site_group.start_date
                else:
                    chunk_start = march_start

                if not site_group.finish_date < march_finish:
                    chunk_finish = march_finish
                else:
                    continue

                yield '"' + site.code + '","' + site.name + '"'

                displaced_era = computer.displaced_era(sess, site_group, chunk_start, chunk_finish)
                if displaced_era is None:
                    continue

                site_ds = computer.SiteSource(
                    sess, site, chunk_start, chunk_finish, forecast_date, None, caches, displaced_era
                )
                duos.duos_vb(site_ds)
                triad.triad_bill(site_ds)

                bill = site_ds.supplier_bill
                values = []
                for i in range(1, 4):
                    triad_prefix = "triad-actual-" + str(i)
                    for suffix in ["-date", "-msp-kw", "-laf", "-gsp-kw"]:
                        values.append(bill[triad_prefix + suffix])

                values += [bill["triad-actual-" + suf] for suf in ["gsp-kw", "rate", "gbp"]]

                for value in values:
                    if isinstance(value, datetime.datetime):
                        yield "," + hh_format(value)
                    else:
                        yield "," + str(value)
                yield "\n"
    except:
        yield traceback.format_exc()
    finally:
        if sess is not None:
            sess.close()