示例#1
0
 def post_tma(self, data):
     mtime = data["obj"]["mtime"][0:19]
     data["obj"]["mtime"] = datetime.datetime.strptime(
         mtime, "%Y-%m-%dT%H:%M:%S")
     data["obj"]["waktu"] = datetime.datetime.strptime(
         data["obj"]["waktu"], "%Y-%m-%d")
     try:
         # periksa jika data sudah ada sebelumnya, lakukan UPDATE
         tma = TinggiMukaAir.selectBy(agentID=data["obj"]["agentID"],
                                      jam=data["obj"]["jam"],
                                      waktu=data["obj"]["waktu"])[0]
         tma.manual = data["obj"]["manual"]
         tma.syncUpdate()
     except IndexError:
         TinggiMukaAir(**data["obj"])
示例#2
0
 def POST(self, table_name):
     try:
         pos = [
             a for a in AgentTma.select(AgentTma.q.AgentType == 2)
             if a.table_name == table_name
         ][0]
     except IndexError:
         return web.notfound()
     inp = web.input()
     sql = "SELECT id FROM tma WHERE agent_id=%s AND waktu='%s' AND jam='%s'" % (
         pos.id, to_date(inp.waktu), inp.jam)
     rs = conn.queryAll(sql)
     print 'pos.id: ', pos.id
     if pos.id >= 200 and pos.id not in [231, 233]:
         inp_manual = float(inp.tma) - pos.DPL
     else:
         inp_manual = float(inp.tma)
     print pos.sqlmeta.asDict()
     if not rs:
         tma = TinggiMukaAir(agent=pos,
                             waktu=to_date(inp.waktu),
                             jam=inp.jam,
                             manual=inp_manual)
         #pub_object(tma)
     return web.redirect('/adm/tma/' + table_name, absolute=True)
示例#3
0
    def POST(self):
        inp = web.input()
        try:
            tma = TinggiMukaAir.get(int(inp.get('pk')))
            tma.set(**{inp.get('name'): float(inp.get('value',0))})
            tma.syncUpdate()
        except SQLObjectNotFound:
            return web.notfound()

        return {"Ok": "true"}
示例#4
0
 def GET(self):
     web.header('Content-Type', 'application/json')
     web.header('Access-Control-Allow-Origin', '*')
     inp = web.input()
     sampling = inp.get('sampling')
     n = datetime.datetime.now()
     waktu = n.replace(hour=0, minute=0, second=0, microsecond=0).date()
     if sampling:
         d = to_date(sampling)
         waktu = datetime.datetime(d.year, d.month, d.day).date()
     rst = [
         c.sqlmeta.asDict()
         for c in TinggiMukaAir.select(TinggiMukaAir.q.waktu == waktu)
     ]
     return json.dumps(rst, default=json_serialize)
示例#5
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)
示例#6
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"}