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"])
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)
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"}
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)
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)
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"}