예제 #1
0
 def GET(self, table_name):
     inp = web.input()
     ordering = '-waktu'
     try:
         pos = AgentBd.get(BENDUNGAN_DICT.get(table_name))
     except:
         return web.notfound()
     webinput = web.input(sampling=str(datetime.date.today()))
     tg = datetime.datetime.strptime(webinput.sampling, '%Y-%m-%d').date()
     #sql = "SELECT * FROM waduk_daily WHERE \
     #        pos_id=%s AND waktu='%s'" % (pos.id, tg)
     #rs = conn.queryAll(sql)
     if tg.month == datetime.date.today().month:
         rs = [
             r for r in WadukDaily.select(
                 WadukDaily.q.pos == pos).orderBy(ordering)
             if r.waktu.month == tg.month and r.waktu.year == tg.year
             and r.waktu.day <= tg.day
         ]
     else:
         rs = [
             r for r in WadukDaily.select(
                 WadukDaily.q.pos == pos).orderBy(ordering)
             if r.waktu.month == tg.month and r.waktu.year == tg.year
         ]
     msg = ''
     if session.has_key('err'):
         msg = session.pop('err')
     return render.adm.bendungan.keamanan({
         'bd': pos,
         'periodic': rs,
         'tanggal': tg,
         'msg': msg
     })
예제 #2
0
 def post_waduk_daily(self, data):
     data["obj"]["waktu"] = datetime.datetime.strptime(
         data["obj"]["waktu"], "%Y-%m-%d")
     try:
         wd = WadukDaily.selectBy(posID=data["obj"]["posID"],
                                  waktu=data["obj"]["waktu"])[0]
         wd.elevasi = data["obj"]["elevasi"]
         wd.volume = data["obj"]["volume"]
         wd.rembesan = data["obj"]["rembesan"]
         wd.curahhujan = data["obj"]["curahhujan"]
         wd.mtime = datetime.datetime.now()
     except IndexError:
         WadukDaily(**(data["obj"]))
예제 #3
0
 def GET(self):
     ''''''
     web.header('Content-Type', 'application/json')
     web.header('Access-Control-Allow-Origin', '*')
     inp = web.input()
     sampling = inp.get('sampling')
     fields = 'curahhujan,tma6,vol6,tma12,vol12,tma18,vol18,inflow_q,inflow_v,intake_q,intake_v,spillway_q,spillway_v,vnotch_tin1,vnotch_q1,vnotch_tin2,vnotch_q2,vnotch_tin3,vnotch_q3,a1,b1,c1,a2,b2,c2,a3,b3,c3,a4,b4,c4,a5,b5,c5'.split(',')
     n = datetime.datetime.now()
     waktu = datetime.datetime(n.year, n.month, n.day)
     if sampling:
         d = to_date(sampling)
         waktu = datetime.datetime(d.year, d.month, d.day)
     wds = [d for d in WadukDaily.select(WadukDaily.q.waktu==waktu)]
     out = []
     for d in wds:
         row = dict([(a, d.sqlmeta.asDict().get(a)) for a in fields])
         row.update({'sampling': str(d.waktu), 'name': d.pos.table_name})
         if d.pos and d.pos.prima_id:
             sql = "SELECT CONCAT(SamplingDate, ' ', SamplingTime) \
             AS sampling, WLevel * 0.01 \
             FROM %s \
             WHERE CONCAT(SamplingDate, ' ', SamplingTime) <= NOW() \
             ORDER BY SamplingDate DESC, SamplingTime DESC \
             LIMIT 0, 1" % d.pos.table_name
             rst = conn.queryAll(sql)
             if rst:
                 row.update({'sampling_wlevel': rst[0][0], 'wlevel':
                             float(rst[0][1] or 0)})
         out.append(row)
     return json.dumps(out)
예제 #4
0
    def GET(self, table_name):
        inp = web.input()
        csv = inp.get('csv')
        ordering = csv and 'waktu' or '-waktu'
        try:
            pos = AgentBd.get(BENDUNGAN_DICT.get(table_name))
        except:
            return web.notfound()
        webinput = web.input(sampling=str(datetime.date.today()))
        tg = datetime.datetime.strptime(webinput.sampling, '%Y-%m-%d').date()
        #sql = "SELECT * FROM waduk_daily WHERE \
        #        pos_id=%s AND waktu='%s'" % (pos.id, tg)
        #rs = conn.queryAll(sql)
        if tg.month == datetime.date.today().month:
            rs = [
                r for r in WadukDaily.select(
                    WadukDaily.q.pos == pos).orderBy(ordering)
                if r.waktu.month == tg.month and r.waktu.year == tg.year
                and r.waktu.day <= tg.day
            ]
        else:
            rs = [
                r for r in WadukDaily.select(
                    WadukDaily.q.pos == pos).orderBy(ordering)
                if r.waktu.month == tg.month and r.waktu.year == tg.year
            ]
        if csv:

            web.header('Content-Type', 'application/cnd.ms-excel')
            web.header('Content-Disposition',
                       'attachment; filename="' + table_name + '.csv"')
            cols = "waktu,curahhujan,tma6,vol6,tma12,vol12,tma18,vol18,inflow_q,inflow_v,intake_q,intake_v,outflow_q,outflow_v,spillway_q,spillway_v,vnotch_tin1,vnotch_q1,vnotch_tin2,vnotch_q2,vnotch_tin3,vnotch_q3,a1,a2,a3,a4,a5,b1,b2,b3,b4,b5,c1,c2,c3,c4,c5".split(
                ',')
            out = ",".join(cols)
            for r in rs:
                out += "\n" + ",".join([str(getattr(r, c)) for c in cols])
                #out += "\n"
            return out
        msg = ''
        if session.has_key('err'):
            msg = session.pop('err')
        return render.adm.bendungan.show({
            'bd': pos,
            'periodic': rs,
            'tanggal': tg,
            'msg': msg
        })
예제 #5
0
def bd_hari(sampling=datetime.date.today()):
    sp = datetime.date(2016, 1, 3)
    wds = AgentBd.select(AgentBd.q.AgentType == 3)
    rs = WadukDaily.select(
        AND(WadukDaily.q.waktu >= sp, WadukDaily.q.waktu <= sp)).orderBy(
            ('pos_id, waktu', ))
    for r in rs:
        print r.pos.cname, r.waktu
    return sampling
예제 #6
0
 def POST(self, table_name):
     fi = web.input(rtow_file={})
     data = fi['rtow_file'].file.read()
     fname = '/tmp/' + table_name + '.csv'
     with open(fname, 'w') as f:
         f.write(data)
     data_in = import_rtow(fname)
     pos_id = data_in.get('pos_id')
     pos = AgentBd.get(pos_id)
     date_list = ','.join(
         ["'" + str(d.get('waktu')) + "'" for d in data_in.get('object')])
     for d in data_in.get('object'):
         try:
             wd = WadukDaily.select(
                 AND(WadukDaily.q.pos == pos,
                     WadukDaily.q.waktu == d.get('waktu')))[0]
             wd.set(**d)
         except IndexError:
             wd = WadukDaily(**d)
     return web.redirect('/adm/bendungan/rotw', absolute=True)
예제 #7
0
    def GET(self, bd):
        '''Tampilkan data Piezometer untuk lokasi "bd"
        Default tampilkan data terakhir, kecuali ada sampling yang diinginkan
        Menampilkan data selama _bulan_terpilih_
        '''
        inp = web.input()
        sampling = inp.get('sampling', None)
        bendungans = dict(
            [a.strip().split() for a in open('agent_table.txt').readlines()])
        id_bdg = bendungans.get(bd)
        if not id_bdg:
            return web.notfound()
        sql = "SELECT MAX(waktu) FROM waduk_daily WHERE pos_id=%s" % id_bdg
        rst = Agent._connection.queryAll(sql)
        if not sampling:
            sampling = rst[0]

        sampling = sampling and to_date(sampling) or None

        pos = Agent.get(id_bdg)

        if sampling.month == datetime.date.today().month:
            wds = [
                wd for wd in WadukDaily.select(
                    WadukDaily.q.pos == pos).orderBy('-waktu')
                if wd.waktu.year == sampling.year
                and wd.waktu.month == sampling.month
            ]
        else:
            wds = [
                wd for wd in WadukDaily.select(WadukDaily.q.pos == pos)
                if wd.waktu.year == sampling.year and wd.waktu.month ==
                sampling.month and wd.waktu.day <= datetime.date.today().day
            ]

        return render.bendungan.piezometer({
            'pos': pos,
            'bulan': sampling,
            'wds': wds
        })
예제 #8
0
    def GET(self, bd):

        if bd[3:] in NO_VNOTCH:
            return render.bendungan.vnotch_fail({'bd': bd, 'no_vnotch': True})
        if bd[3:] in FAIL_VNOTCH:
            return render.bendungan.vnotch_fail({
                'bd': bd,
                'fail_vnotch': True
            })
        inp = web.input()
        sampling = inp.get('sampling')
        sampling = sampling and to_date(sampling) or datetime.date.today()

        pos = [
            a for a in Agent.select(Agent.q.AgentType == 3)
            if a.table_name == bd
        ][0]
        if sampling.month == datetime.date.today().month:
            wds = [
                wd for wd in WadukDaily.select(
                    WadukDaily.q.pos == pos).orderBy('waktu')
                if wd.waktu.year == sampling.year
                and wd.waktu.month == sampling.month
            ]
        else:
            wds = [
                wd for wd in WadukDaily.select(WadukDaily.q.pos == pos)
                if wd.waktu.year == sampling.year and wd.waktu.month ==
                sampling.month and wd.waktu.day <= datetime.date.today().day
            ]

        return render.bendungan.vnotch({
            'pos': pos,
            'bulan': sampling,
            'wds': wds
        })
예제 #9
0
 def GET(self):
     inp = web.input()
     if inp.get('sampling'):
         sampling = to_date(inp.sampling)
     else:
         sampling = datetime.date.today()
     tanggal = sampling
     bdgs = AgentBd.select(AgentBd.q.AgentType == 3).orderBy('wilayah')
     poses = dict([(a.table_name, a) for a in bdgs])
     daily_bd = dict([
         (w.pos.table_name, w)
         for w in WadukDaily.select(WadukDaily.q.waktu == tanggal)
     ])
     poses = [(poses.get(p), daily_bd.get(p))
              for p in [p.table_name for p in bdgs]]
     return render.adm.bendungan.index({'poses': poses, 'tanggal': tanggal})
예제 #10
0
 def GET(self, oid):
     try:
         bendung = Agent.get(int(oid))
     except SQLObjectNotFound:
         return web.notfound()
     dari = datetime.date(2017, 3, 1)
     hingga = datetime.date(2017, 3, 31)
     meta = {
         "dari":
         dari,
         "hingga":
         hingga,
         "daily":
         WadukDaily.select(
             AND(WadukDaily.q.pos == bendung, WadukDaily.q.waktu >= dari,
                 WadukDaily.q.waktu <= hingga))
     }
     return render.bendungan.pemantauan(bendung, meta)
예제 #11
0
    def POST(self, table_name):
        try:
            try:
                pos = [
                    a for a in AgentBd.select(AgentBd.q.AgentType == 3)
                    if a.table_name == table_name
                ][0]
            except IndexError:
                return web.notfound()
            inp = web.input()
            fields = 'curahhujan,tma,vol,inflow_q,inflow_v,intake_q,intake_v,spillway_q,spillway_v'.split(
                ',')
            koloms = 'tanggal,jam,tma'.split(',')
            form2_fields = 'tma,vol'.split(',')
            form3_fields = 'vnotch_tin1,vnotch_q1,vnotch_tin2,vnotch_q2,vnotch_tin3,vnotch_q3'.split(
                ',')
            form4_fields = 'a1,b1,c1,a2,b2,c2,a3,b3,c3,a4,b4,c4,a5,b5,c5'.split(
                ',')
            # memeriksa apakah record pada Pos dan waktu(tgl) sudah ada pada tabel 'waduk_daily'
            try:
                wd = WadukDaily.select(
                    AND(WadukDaily.q.waktu == to_date(inp.waktu),
                        WadukDaily.q.pos == pos))[0]
                is_wd_exist = True
            except IndexError:
                wd = None
                is_wd_exist = False

            # memeriksa apakah table 'tma' telah terisi dari pos dan waktu
            tmas = [
                t for t in TinggiMukaAir.select(
                    AND(TinggiMukaAir.q.agent == pos, TinggiMukaAir.q.waktu ==
                        to_date(inp.waktu)))
            ]

            if inp.tahap == 'pagi':
                obj = {}
                for f in fields:
                    if inp.get(f):
                        nilai = float(inp.get(f))
                    else:
                        nilai = None
                    if f in 'tma,vol'.split(','):
                        obj.update({f + '6': nilai})
                    else:
                        obj.update({f: nilai})
                obj.update({'pos': pos, 'waktu': to_date(inp.waktu)})
                if not is_wd_exist:
                    wd = WadukDaily(**obj)
                else:
                    wd.set(**obj)
                # Mengupdate / Insert data TinggiMukaAir
                try:
                    tma = [t for t in tmas if t.jam == '6'][0]
                    tma.set(**{'jam': '6', 'manual': obj.get('tma6')})
                    tma.syncUpdate()
                except:
                    tma = TinggiMukaAir(
                        **{
                            'agent': pos,
                            'waktu': obj.get('waktu'),
                            'jam': '6',
                            'manual': obj.get('tma6'),
                            'origin': 'web'
                        })
                    tma.syncUpdate()
            elif inp.tahap in ('siang', 'sore'):
                # jika data pagi belum ada, untuk WadukDaily perlu error
                if not is_wd_exist:
                    session[
                        'err'] = "<strong style='margin-right: 10px'>P e r h a t i a n</strong>Data TMA Pagi tidak ditemukan."
                    return web.redirect('/adm/bendungan/' + table_name +
                                        '?sampling=' +
                                        inp.waktu.replace('/', '-'),
                                        absolute=True)
                per = inp.tahap == 'siang' and '12' or '18'
                if per == '12':
                    wd.tma12 = float(inp.get('tma'))
                    wd.vol12 = float(inp.get('vol'))
                elif per == '18':
                    wd.tma18 = float(inp.get('tma'))
                    wd.vol18 = float(inp.get('vol'))

                # Mengupdate / Insert data TinggiMukaAir
                try:
                    tma = [t for t in tmas if t.jam == per][0]
                    tma.set(**{'jam': per, 'manual': float(inp.get('tma'))})
                    tma.syncUpdate()
                except:
                    tma = TinggiMukaAir(
                        **{
                            'agent': pos,
                            'waktu': to_date(inp.waktu),
                            'jam': per,
                            'manual': float(inp.get('tma')),
                            'origin': 'web'
                        })
                    tma.syncUpdate()
            elif inp.tahap == 'vnotch':  # inputan vnotch
                # jika data pagi belum ada, untuk WadukDaily perlu error
                if not is_wd_exist:
                    session[
                        'err'] = "<strong style='margin-right: 10px'>P e r h a t i a n</strong>Data TMA Pagi tidak ditemukan."
                    return web.redirect('/adm/bendungan/' + table_name +
                                        '?sampling=' +
                                        inp.waktu.replace('/', '-'),
                                        absolute=True)
                obj = {}
                for f in form3_fields:
                    if inp.get(f):
                        obj.update({f: float(inp.get(f))})
                wd.set(**obj)
            elif inp.tahap == 'piezometer':
                # jika data pagi belum ada, untuk WadukDaily perlu error
                if not is_wd_exist:
                    session[
                        'err'] = "<strong style='margin-right: 10px'>P e r h a t i a n</strong>Data TMA Pagi tidak ditemukan."
                    return web.redirect('/adm/bendungan/' + table_name +
                                        '?sampling=' +
                                        inp.waktu.replace('/', '-'),
                                        absolute=True)
                obj = {}
                for f in form4_fields:
                    if inp.get(f):
                        obj.update({f: float(inp.get(f))})
                wd.set(**obj)

            return web.redirect('/adm/bendungan/' + table_name, absolute=True)

        except AttributeError:
            try:
                bendungan = [
                    a for a in AgentBd.select(AgentBd.q.AgentType == 3)
                    if a.table_name == table_name
                ][0]
                bendungan_id = bendungan.id
                print bendungan_id
            except IndexError:
                return web.notfound()
            inp = web.input()
            # memeriksa apakah record pada bendungan_id, tanggal dan jam sudah ada pada tabel 'bendung_alert'
            if inp.tahap == 'banjir':
                try:
                    ba = BendungAlert.select(
                        AND(BendungAlert.q.tanggall == to_date(inp.tanggall),
                            BendungAlert.q.bendungan == bendungan_id,
                            BendungAlert.q.jam == inp.jam))[0]
                    print ba
                    is_ba_exist = True
                except IndexError:
                    ba = None
                    is_ba_exist = False

                if inp.tahap == 'banjir':
                    obj = {
                        'bendunganID': bendungan_id,
                        'tanggall': to_date(inp.tanggall),
                        'jam': inp.jam,
                        'tmab': float(inp.tmab),
                        'spillwayb_q': float(inp.spillwayb_q)
                    }
                    if not is_ba_exist:
                        ba = BendungAlert(**obj)
                    else:
                        ba.set(**obj)
                return web.redirect('/adm/bendungan/' + table_name,
                                    absolute=True)

            if inp.tahap == 'chterkini':
                # memeriksa apakah record pada bendungan__id, tanggal dan jam sudah ada pada tabel 'curahhujan_terkini'

                try:
                    chkini = CurahHujanTerkini.select(
                        AND(
                            CurahHujanTerkini.q.tanggall == to_date(
                                inp.tanggall),
                            CurahHujanTerkini.q.bendungan == bendungan_id,
                            CurahHujanTerkini.q.jam == inp.jam))[0]
                    print chkini
                    is_chkini_exist = True
                except IndexError:
                    chkini = None
                    is_chkini_exist = False

                if inp.tahap == 'chterkini':
                    objj = {
                        'bendunganID': bendungan_id,
                        'tanggall': to_date(inp.tanggall),
                        'jam': inp.jam,
                        'ch_terkini': float(inp.ch_terkini)
                    }
                    if not is_chkini_exist:
                        chkini = CurahHujanTerkini(**objj)
                    else:
                        chkini.set(**objj)
                return web.redirect('/adm/bendungan/' + table_name,
                                    absolute=True)
예제 #12
0
    def POST(self):
        inp = web.input()
        try:
            wd = WadukDaily.get(int(inp.get('pk')))
            wd.set(**{inp.get('name'): float(inp.get('value', 0))})
            wd = wd.sqlmeta.asDict()
            waktu = wd['waktu']
            tgl = waktu.strftime('%Y-%m-%d')
            id = wd['posID']
            tma6 = wd['tma6']
            tma12 = wd['tma12']
            tma18 = wd['tma18']
            # memeriksa apakah table 'tma' telah terisi dari pos dan waktu
            if tma6:
                tmas = [
                    t for t in TinggiMukaAir.select(
                        AND(TinggiMukaAir.q.agent == id, TinggiMukaAir.q.waktu
                            == tgl, TinggiMukaAir.q.jam == '6'))
                ]
                if tmas == []:
                    TinggiMukaAir(
                        **{
                            'agent': id,
                            'waktu': waktu,
                            'jam': '6',
                            'manual': tma6,
                            'origin': 'web'
                        })
                if tmas:
                    tma = [t for t in tmas if t.jam == '6'][0]
                    tma.set(**{'jam': '6', 'manual': tma6})
                    tma.syncUpdate()
            if tma12:
                tmas = [
                    t for t in TinggiMukaAir.select(
                        AND(TinggiMukaAir.q.agent == id, TinggiMukaAir.q.waktu
                            == tgl, TinggiMukaAir.q.jam == '12'))
                ]
                if tmas == []:
                    TinggiMukaAir(
                        **{
                            'agent': id,
                            'waktu': waktu,
                            'jam': '12',
                            'manual': tma12,
                            'origin': 'web'
                        })
                if tmas:
                    tma = [t for t in tmas if t.jam == '12'][0]
                    tma.set(**{'jam': '12', 'manual': tma12})
                    tma.syncUpdate()
            if tma18:
                tmas = [
                    t for t in TinggiMukaAir.select(
                        AND(TinggiMukaAir.q.agent == id, TinggiMukaAir.q.waktu
                            == tgl, TinggiMukaAir.q.jam == '18'))
                ]
                if tmas == []:
                    TinggiMukaAir(
                        **{
                            'agent': id,
                            'waktu': waktu,
                            'jam': '18',
                            'manual': tma18,
                            'origin': 'web'
                        })
                if tmas:
                    tma = [t for t in tmas if t.jam == '18'][0]
                    tma.set(**{'jam': '18', 'manual': tma18})
                    tma.syncUpdate()
        except SQLObjectNotFound:
            return web.notfound()

        return {"Ok": "true"}
예제 #13
0
#f = open('/tmp/out.txt', 'w')
for l in lines:
    (n, d, data) = l.strip().split('\t', 2)
    # print n
    b = 11
    waktu = datetime.date(th, b, 1)
    pows = data.strip().split('\t')
    for i in range(len(pows)):
        if not i % 2:
            while waktu.day <= 15:
                sql = "SELECT id FROM waduk_daily WHERE pos_id=%s AND waktu='%s'" % (
                    dict_agent[n], waktu)
                rst = conn.queryAll(sql)
                if rst:
                    wd = WadukDaily.get(rst[0][0])
                    print wd.waktu, n
                    wd.po_outflow_q = float(pows[i])
                    #print rst
                else:
                    wd = WadukDaily(**dict(pos=dict_agent[n],
                                           waktu=waktu,
                                           po_outflow_q=float(pows[i])))
                    print n, waktu
                #print dict_agent[n], n, waktu, pows[i]
                waktu += datetime.timedelta(days=1)
        else:
            while waktu.day != 1:
                sql = "SELECT id FROM waduk_daily WHERE pos_id=%s AND waktu='%s'" % (
                    dict_agent[n], waktu)
                rst = conn.queryAll(sql)
예제 #14
0
    def GET(self, oid):
        try:
            bendung = Agent.get(int(oid))
        except SQLObjectNotFound:
            return web.notfound()

        inp = web.input()
        if inp.get('periode'):
            periode = to_date(inp.periode)
        else:
            periode = datetime.date.today()
        year = datetime.date.today().year
        if periode.month < 11 and periode.year == year:
            periode = datetime.date(periode.year - 1, 11,
                                    1)  # 1 Nop tahun lalu
            year = datetime.date.today().year
            start = datetime.date(year=year - 1, month=11, day=1)
        if periode.month > 10 and periode.year == year:
            periode = datetime.date(periode.year, 11, 1)  # 1 Nop tahun lalu
            year = datetime.date.today().year + 1
            start = datetime.date(year=year - 1, month=11, day=1)
        if periode.month < 11 and periode.year > year:
            periode = datetime.date(periode.year - 1, 11, 1)
            year = datetime.date.today().year + 1
            start = datetime.date(year=year - 1, month=11, day=1)
        if periode.month > 10 and periode.year > year:
            periode = datetime.date(periode.year, 11, 1)
            year = datetime.date.today().year
            start = datetime.date(year=year - 1, month=11, day=1)
        if periode.month < 11 and periode.year < year:
            periode = datetime.date(periode.year - 1, 11, 1)
            year = datetime.date.today().year + 1
            start = datetime.date(year=year - 1, month=11, day=1)
        if periode.month > 10 and periode.year < year:
            periode = datetime.date(periode.year, 11, 1)
            year = datetime.date.today().year
            start = datetime.date(year=year - 1, month=11, day=1)

        #print start
        oneday = datetime.timedelta(days=1)
        oneweek = datetime.timedelta(days=7)

        while start.weekday() != 0:
            start += oneday

        days = []
        while start.year <= year:
            days.append(start.strftime("%Y-%m-%d"))
            start += oneweek
            if start.month == 11 and start.year == year:
                break
        #print days

        sql = "SELECT waktu, a1, b1, c1, a2, b2, c2, a3, b3, c3, a4, b4, c4, a5, b5, c5, vnotch_q1, vnotch_q2, vnotch_q3, vnotch_tin1, vnotch_tin2, vnotch_tin3 \
                FROM waduk_daily \
                WHERE waktu IN (%s) AND pos_id=%s \
                ORDER BY waktu" % (','.join(["'" + str(i) + "'"
                                             for i in days]), oid)

        rst2 = Agent._connection.queryAll(sql)

        #-----menambahkan nilai curah hujan keesokan hari nya(manipulasi database hujan)------
        j = []
        for f in rst2:
            j.append(f[0])

        day_ch = []
        for dch in j:
            d_ch = dch + datetime.timedelta(days=1)
            day_ch.append(d_ch)

        c_h = []
        for a in day_ch:
            wd = WadukDaily.select(
                AND(WadukDaily.q.waktu == a, WadukDaily.q.pos == oid))
            try:
                wdch = wd[0].curahhujan
            except IndexError:
                wdch = None
            c_h.append(wdch)

        z = []
        for b, d in zip(rst2, c_h):
            z.append((b, d))

        #print rst2

        #periode = datetime.date.today()
        #periode = datetime.date(periode.year - 1, 11, 1) # 1 Nop tahun lalu

        tanggal = periode
        if periode.month > 10:
            tanggal = datetime.date(tanggal.year + 1, 11, 1)

        if tanggal.year <= 2018:
            jhar = [30, 31, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31]
            rr = []
            for i in range(12):
                rr.append(periode.replace(day=1))
                rr.append(periode.replace(day=16))
                periode += datetime.timedelta(days=jhar[i])
        if tanggal.year > 2018:
            jhar = [30, 31, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31]
            rr = []
            for i in range(12):
                rr.append(periode.replace(day=15))
                rr.append(periode.replace(day=jhar[i]))
                periode += datetime.timedelta(days=jhar[i])

        sql = "SELECT waktu, po_tma, po_inflow_q, po_inflow_v, \
                po_outflow_q, po_outflow_v, \
                tma6, vol6, inflow_q, inflow_v, intake_q, intake_v, po_bona, po_bonb, vol_bona, vol_bonb \
                FROM waduk_daily \
                WHERE waktu IN (%s) AND pos_id=%s \
                ORDER BY waktu" % (','.join(["'" + str(i) + "'"
                                             for i in rr]), oid)

        rst1 = Agent._connection.queryAll(sql)

        meta = {
            'rst1': rst1,
            'rst2': z,
            'dari': periode,
            'hingga': periode,
            'tanggal': tanggal
        }
        return render.bendungan.keamanan.vnotchh(bendung, meta)