Hey all,

I was wondering if someone would be able to help me with a problem
that is driving me mad.
Here is my script:

#!/usr/local/bin/python2.6
import cgitb; cgitb.enable()
import sys
import web, os, random, time, sqlite3

def cgidebugerror():

        _wrappedstdout = sys.stdout

        sys.stdout = web._oldstdout
        cgitb.handler()

        sys.stdout = _wrappedstdout

web.internalerror = cgidebugerror

urls = ('/', 'upload',
                '/progress+', 'progress',
                '/file+', 'fileServe',
                '/admin', 'admin')

#db = web.database(dbn='sqlite', db='filedb')
render = web.template.render('/home/oetzi/webapps/mod/htdocs/
templates/')


sessions = {}
prog = 0
up = 0

class session:

        def __init__(self):

                self.progress = 0
                self.title = ""
                self.finished = False

        def advance(self):

                self.progress = self.progress + 1

class fileServe:

        def GET(self):

                arg = web.input(arg=None)
                keys = {}
                keys['key'] = arg.key
                path = db.select('files', keys, what='path', where='key=$key')

                #if not path:

                #       return "This file doesn't seem to exist..."

                try:

                        download = open(path[0].path, 'r')

                except IndexError:

                        return "This file doesn't seem to exist..."

                web.header('Content-type', 'application/file')
                return download.read()

class upload:

        paths = {}

        def GET(self):

                global sessions

        #render html file
                code = 0

                while sessions.has_key(str(code)):

                        code = random.randint(0, 10000000000000)

                newSesh = session()
                sessions[str(code)] = newSesh

                return render.index(code)

        def POST(self):

                global sessions
                global up

                #upload file from form
                submit = web.input(myfile={})

                code = submit.code
                fileU = submit.myfile

                up = sessions[code]

                filepath = fileU.filename.replace('\\','/')
                name = filepath.split('/')[-1]
                path = '/home/oetzi/webapps/mod/htdocs/files/' + name
                upload.paths[code] = "/file?key=" + name

                out = open(path, 'wb', 1000)

                while (True):

                        packet = fileU.file.read(1000)
                        sessions[code].advance()

                        if not packet:

                                break

                        else:

                                out.write(packet)

                out.close()

                #block until client has been updated
                while not sessions[code].finished:

                        sessions[code].progress = -1

                #commit to db
                title = sessions[code].title
                #db.insert('files', title=title, key=name, path=path)

                #clean up
                sessions.pop(code)
                path = "http://oetzi.webfactional.com"; + upload.paths.pop(code)


                return title + ": " + path

class progress:

        def GET(self):

                global sessions
                global prog

                #take in current title and status for user with code and return
progress
                arg = web.input(arg=None)
                code = arg.code
                prog = sessions[code]

                if int(arg.status) > 0:

                        sessions[code].title = arg.title
                        path = str(upload.paths[code])
                        sessions[code].finished = True
                        return path

                return sessions[code].progress

        def POST(self):

                pass

class admin:

        def GET(self):

                global prog
                global up

                return prog == up

app = web.application(urls, globals(), autoreload=False)
application = app.wsgifunc()

I basically upload a file using a post request from a form and then
update the progress based on the amount of bytes upload. For some
reason when I run this on my mod_wsgi server the progress fails to
increase on an upload. It seems as if the GET request I use to get the
progress and the POST request that increments the progress are using
different objects. Does anybody have any idea what is happening?

-- 
You received this message because you are subscribed to the Google Groups 
"web.py" 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/webpy?hl=en.

Reply via email to