Hi Sharekey,
On Nov 21, 5:41 am, sharekey <[EMAIL PROTECTED]> wrote:
> I try my test follow your steps, but it still doesn't work yet.
> The browser print "No databases in this application" message as
> before. howerver, thanks for your help!
Here is the full code, with all modifications included. Remember, as
Massimo and Yarko said, do *not* upload this file to the production
GAE server, or else anyone on the Internet will be able to modify your
application's data.
###########################################################
### make sure administrator is on localhost
############################################################
import os, socket
import gluon.contenttype
import gluon.fileutils
http_host = request.env.http_host.split(':')[0]
remote_addr = request.env.remote_addr
#try: hosts=(http_host, socket.gethostbyname(remote_addr))
#except: hosts=(http_host,)
#if remote_addr not in hosts:
# raise HTTP(400)
#if not gluon.fileutils.check_credentials(request):
# redirect('/admin')
response.view='appadmin.html'
response.menu=[[T('design'),False,'/admin/default/design/%s' %
request.application],
[T('db'),False,'/%s/%s/index' % (request.application,
request.controller)],
[T('state'),False,'/%s/%s/state' %
(request.application, request.controller)]]
###########################################################
### list all tables in database
############################################################
def index():
import types as _types
_dbs={}
GQLDB = gluon.contrib.gql.GQLDB
try: GQLDB
except: GQLDB=SQLDB
for _key,_value in globals().items():
if isinstance(_value,GQLDB):
tables=_dbs[_key]=[]
for _tablename in _value.tables:
tables.append((_key,_tablename))
return dict(dbs=_dbs)
###########################################################
### insert a new record
############################################################
def insert():
try:
dbname=request.args[0]
db=eval(dbname)
table=db[request.args[1]]
except:
session.flash=T('invalid request')
redirect(URL(r=request,f='index'))
form=SQLFORM(table)
if form.accepts(request.vars,session):
response.flash=T('new record inserted')
return dict(form=form)
###########################################################
### list all records in table and insert new record
############################################################
def download():
import os
dbname=request.args[0]
### for GAE only ###
tablename,fieldname=request.args[1].split('.')[:2]
uploadfield=eval(dbname)[tablename][fieldname].uploadfield
filename=request.args[1]
if isinstance(uploadfield,str):
from gluon.contenttype import contenttype
response.headers['Content-Type']=contenttype(filename)
db=eval(dbname)
rows=db(db[tablename][fieldname]==filename).select()
return rows[0][uploadfield]
### end for GAE ###
filename=os.path.join(request.folder,'uploads/',filename)
return response.stream(open(filename,'rb'))
def csv():
import gluon.contenttype
response.headers['Content-Type']=gluon.contenttype.contenttype
('.csv')
try:
dbname=request.vars.dbname
db=eval(dbname)
response.headers['Content-disposition']="attachment; filename=
%s_%s.csv" % (request.vars.dbname, request.vars.query.split('.',1)[0])
return str(db(request.vars.query).select())
except:
session.flash=T('unable to retrieve data')
redirect(URL(r=request,f='index'))
def import_csv(table,file):
import csv
reader = csv.reader(file)
colnames=None
for line in reader:
if not colnames:
colnames=[x[x.find('.')+1:] for x in line]
c=[i for i in range(len(line)) if colnames[i]!
='id']
else:
items=[(colnames[i],line[i]) for i in c]
table.insert(**dict(items))
def select():
try:
dbname=request.args[0]
db=eval(dbname)
if request.vars.query:
query=request.vars.query
orderby=None
start=0
elif request.vars.orderby:
query=session.appadmin_last_query
orderby=request.vars.orderby
if orderby==session.appadmin_last_orderby:
if orderby[-5:]==' DESC': oderby=orderby[:-5]
else: orderby=orderby+' DESC'
start=0
elif request.vars.start!=None:
query=session.appadmin_last_query
orderby=session.appadmin_last_orderby
start=int(request.vars.start)
else:
table=request.args[1]
query = dbname + '.' + table + '.id>0'
orderby=None
start=0
session.appadmin_last_query=query
session.appadmin_last_orderby=orderby
limitby=(start,start+100)
except:
session.flash=T('invalid request')
redirect(URL(r=request,f='index'))
if request.vars.csvfile!=None:
try:
import_csv(db[table],request.vars.csvfile.file)
response.flash=T('data uploaded')
except:
response.flash=T('unable to parse csv file')
if request.vars.delete_all and
request.vars.delete_all_sure=='yes':
try:
db(query).delete()
response.flash=T('records deleted')
except:
response.flash=T('invalid SQL FILTER')
elif request.vars.update_string:
try:
env=dict(db=db,query=query)
exec('db(query).update('+request.vars.update_string+')')
in env
response.flash=T('records updated')
except:
response.flash=T('invalid SQL FILTER or UPDATE STRING')
try:
records=db(eval(query)).select
(limitby=limitby,orderby=orderby)
except:
response.flash=T('invalid SQL FILTER')
return dict(records=T('no
records'),nrecords=0,query=query,start=0)
linkto=URL(r=request,f='update',args=[dbname])
upload=URL(r=request,f='download',args=[dbname])
return dict(start=start,query=query,orderby=orderby, \
nrecords=len(records),\
records=SQLTABLE
(records,linkto,upload,orderby=True,_class='sortable'))
###########################################################
### edit delete one record
############################################################
def update():
try:
dbname=request.args[0]
db=eval(dbname)
table=request.args[1]
except:
response.flash=T('invalid request')
redirect(URL(r=request,f='index'))
try:
id=int(request.args[2])
record=db(db[table].id==id).select()[0]
except:
session.flash=T('record does not exist')
redirect(URL(r=request,f='select/%s/%s'%(dbname,table)))
form=SQLFORM(db[table],record,deletable=True,
linkto=URL(r=request,f='select',args=[dbname]),
upload=URL(r=request,f='download',args=[dbname]))
if form.accepts(request.vars,session):
response.flash=T('done!')
redirect(URL(r=request,f='select/%s/%s'%(dbname,table)))
return dict(form=form)
###########################################################
### get global variables
############################################################
def state():
return dict(state=request.env)
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"web2py Web Framework" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at
http://groups.google.com/group/web2py?hl=en
-~----------~----~----~----~------~----~------~--~---