Kasutliidesed lab 2 otsingu cgi
Allikas: Lambda
#!/usr/bin/python import cgi import sqlite #from pysqlite2 import dbapi2 as sqlite # ---- abifunktsioonid ---- def formatdata(data,format): if format=='xml': return xmlstr(data) else: return jsonstr(data) def jsonstr(data): if data: return "'"+str(data)+"'" else: return "''" def xmlstr(data): if data and data!='': data=str(data) data=data.replace('<','<') data=data.replace('>','>') data=data.replace('&','&') return "<data>"+data+"</data>" else: return "<data/>" # --- formaat ja content-type --- form = cgi.FieldStorage() format='json' #format='xml' if form.has_key('format'): format=form["format"].value if format=='xml': print 'Content-type: text/xml' else: print 'Content-type: text/plain' print # -- sql select lause moodustamine --- query="""select id,laadija,ylikool,teaduskond,ainekood, ainenimetus,oppejounimi,materjalikeel, materjalityyp,materjalinimi,lyhikirjeldus from materjalid where 1=1 """ # --- otsivaljad ---- if form.has_key('laadija'): query=query+" and laadija='"+form["laadija"].value+"' " if form.has_key('ylikool'): query=query+" and ylikool='"+form["ylikool"].value+"' " if form.has_key('teaduskond'): query=query+" and teaduskond='"+form["teaduskond"].value+"%' " if form.has_key('oppejounimi'): query=query+" and oppejounimi='%"+form["oppejounimi"].value+"%' " if form.has_key('ainekood'): query=query+" and ainekood='"+form["ainekood"].value+"%' " if form.has_key('ainenimetus'): query=query+" and ainenimetus='"+form["ainenimetus"].value+"%' " if form.has_key('oppejounimi'): query=query+" and oppejounimi='"+form["oppejounimi"].value+"%' " if form.has_key('materjalikeel'): query=query+" and materjalikeel='"+form["materjalikeel"].value+"%' " if form.has_key('materjalityyp'): query=query+" and materjalityyp='"+form["materjalityyp"].value+"%' " if form.has_key('materjalinimi'): query=query+" and materjalinimi='"+form["materjalinimi"].value+"%' " if form.has_key('lyhikirjeldus'): query=query+" and =lyhikirjeldus'"+form["lyhikirjeldus"].value+"%' " # -- sorteerimine --- order="id" direction="desc" if form.has_key('order'): order=form["order"].value if form.has_key('direction'): direction=form["direction"].value query=query+" order by "+order+" "+direction # -- otsingu tegemine -- #print query #con = sqlite.connect('/var/www/cgi-bin/tammet/materjalid.db') con = sqlite.connect('/tmp/tammet/materjalid.db') #con = sqlite.connect('materjalid.db') cur = con.cursor() cur.execute(query) # --- otsingutulemuste votmine --- fromrow=0 getrows=100 if form.has_key('fromrow'): fromrow=int(form["fromrow"].value) if form.has_key('getrows'): getrows=int(form["getrows"].value) res=[] i=0 j=0 cnt=0 while 1: row=cur.fetchone() if not row: break i=i+1 if i>fromrow: cnt=cnt+1 if cnt>getrows: break res=res+[row] # --- otsingutulemuste vormistamine ---- l=len(res) i=0 if format=='xml': print "<materjalid>" else: print "[" for row in res: if format=='xml': print "<row>" else: print "[", for data in row[0:-1]: print formatdata(data,format), if format!='xml': print ",", print formatdata(row[-1],format), if format=='xml': print print "</row>" else: print "]", if format!='xml' and i<l-1: print "," i=i+1 if format=='xml': print "</materjalid>" else: print print "]"