index.cgi
author Tero Marttila <terom@fixme.fi>
Sun, 13 Sep 2009 00:49:29 +0300
changeset 138 7dbe0ee1a27b
parent 134 fbccc1648d79
permissions -rwxr-xr-x
fix use of mercurial API to be compatible with 1.3.1 - this breaks backwards-compability, though...
6
5565d94da522 start breaking everything
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     1
#!/usr/bin/python2.5
5565d94da522 start breaking everything
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     2
7
d6a8258bd90e YES YES MOAR WSGI - Hello World
Tero Marttila <terom@fixme.fi>
parents: 6
diff changeset
     3
"""
125
45e56cbf9086 modify index.cgi to use qmsk.web.cgi_main
Tero Marttila <terom@fixme.fi>
parents: 46
diff changeset
     4
    CGI mode using qmsk.web.cgi
7
d6a8258bd90e YES YES MOAR WSGI - Hello World
Tero Marttila <terom@fixme.fi>
parents: 6
diff changeset
     5
"""
6
5565d94da522 start breaking everything
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     6
133
088aa2da1340 our own CGI error handler
Tero Marttila <terom@fixme.fi>
parents: 125
diff changeset
     7
def error () :
088aa2da1340 our own CGI error handler
Tero Marttila <terom@fixme.fi>
parents: 125
diff changeset
     8
    """
134
fbccc1648d79 improved error handling for CGI/FastCGI
Tero Marttila <terom@fixme.fi>
parents: 133
diff changeset
     9
        Dumps out a raw traceback of the current exception to stdout, call from except.
133
088aa2da1340 our own CGI error handler
Tero Marttila <terom@fixme.fi>
parents: 125
diff changeset
    10
134
fbccc1648d79 improved error handling for CGI/FastCGI
Tero Marttila <terom@fixme.fi>
parents: 133
diff changeset
    11
        Used for low-level ImportError's
fbccc1648d79 improved error handling for CGI/FastCGI
Tero Marttila <terom@fixme.fi>
parents: 133
diff changeset
    12
    """
133
088aa2da1340 our own CGI error handler
Tero Marttila <terom@fixme.fi>
parents: 125
diff changeset
    13
    
134
fbccc1648d79 improved error handling for CGI/FastCGI
Tero Marttila <terom@fixme.fi>
parents: 133
diff changeset
    14
    # if this import fails, we're doomed
fbccc1648d79 improved error handling for CGI/FastCGI
Tero Marttila <terom@fixme.fi>
parents: 133
diff changeset
    15
    import sys, error
fbccc1648d79 improved error handling for CGI/FastCGI
Tero Marttila <terom@fixme.fi>
parents: 133
diff changeset
    16
    
fbccc1648d79 improved error handling for CGI/FastCGI
Tero Marttila <terom@fixme.fi>
parents: 133
diff changeset
    17
    # format info
fbccc1648d79 improved error handling for CGI/FastCGI
Tero Marttila <terom@fixme.fi>
parents: 133
diff changeset
    18
    status, content_type, body = error.build_error()
fbccc1648d79 improved error handling for CGI/FastCGI
Tero Marttila <terom@fixme.fi>
parents: 133
diff changeset
    19
    
fbccc1648d79 improved error handling for CGI/FastCGI
Tero Marttila <terom@fixme.fi>
parents: 133
diff changeset
    20
    # HTTP headers+body
fbccc1648d79 improved error handling for CGI/FastCGI
Tero Marttila <terom@fixme.fi>
parents: 133
diff changeset
    21
    sys.stdout.write('Status: %s\r\n' % status)
fbccc1648d79 improved error handling for CGI/FastCGI
Tero Marttila <terom@fixme.fi>
parents: 133
diff changeset
    22
    sys.stdout.write('Content-type: %s\r\n' % content_type)
133
088aa2da1340 our own CGI error handler
Tero Marttila <terom@fixme.fi>
parents: 125
diff changeset
    23
    sys.stdout.write('\r\n')
134
fbccc1648d79 improved error handling for CGI/FastCGI
Tero Marttila <terom@fixme.fi>
parents: 133
diff changeset
    24
    sys.stdout.write(body)
133
088aa2da1340 our own CGI error handler
Tero Marttila <terom@fixme.fi>
parents: 125
diff changeset
    25
    
125
45e56cbf9086 modify index.cgi to use qmsk.web.cgi_main
Tero Marttila <terom@fixme.fi>
parents: 46
diff changeset
    26
def main () :
16
4a40718c7b4b better error handling of import errors in CGI, and split PageTree out from page.py into page_tree.py and tree_parse.py
Tero Marttila <terom@fixme.fi>
parents: 11
diff changeset
    27
    """
125
45e56cbf9086 modify index.cgi to use qmsk.web.cgi_main
Tero Marttila <terom@fixme.fi>
parents: 46
diff changeset
    28
        Build our wsgi.Application and run
7
d6a8258bd90e YES YES MOAR WSGI - Hello World
Tero Marttila <terom@fixme.fi>
parents: 6
diff changeset
    29
    """
11
fa216534ae45 funky PageTree stuff
Tero Marttila <terom@fixme.fi>
parents: 7
diff changeset
    30
fa216534ae45 funky PageTree stuff
Tero Marttila <terom@fixme.fi>
parents: 7
diff changeset
    31
    try :
134
fbccc1648d79 improved error handling for CGI/FastCGI
Tero Marttila <terom@fixme.fi>
parents: 133
diff changeset
    32
        from qmsk.web import cgi_main
fbccc1648d79 improved error handling for CGI/FastCGI
Tero Marttila <terom@fixme.fi>
parents: 133
diff changeset
    33
        import wsgi
16
4a40718c7b4b better error handling of import errors in CGI, and split PageTree out from page.py into page_tree.py and tree_parse.py
Tero Marttila <terom@fixme.fi>
parents: 11
diff changeset
    34
31
107062ebb6f9 bloat code with even more layers of indirection, split off the filesystem-based stuff into a separate lib.filesystem package (next, move it to sites/www.qmsk.net)
Tero Marttila <terom@fixme.fi>
parents: 16
diff changeset
    35
        # create app
134
fbccc1648d79 improved error handling for CGI/FastCGI
Tero Marttila <terom@fixme.fi>
parents: 133
diff changeset
    36
        app = wsgi.Application()
16
4a40718c7b4b better error handling of import errors in CGI, and split PageTree out from page.py into page_tree.py and tree_parse.py
Tero Marttila <terom@fixme.fi>
parents: 11
diff changeset
    37
        
4a40718c7b4b better error handling of import errors in CGI, and split PageTree out from page.py into page_tree.py and tree_parse.py
Tero Marttila <terom@fixme.fi>
parents: 11
diff changeset
    38
        # run once
125
45e56cbf9086 modify index.cgi to use qmsk.web.cgi_main
Tero Marttila <terom@fixme.fi>
parents: 46
diff changeset
    39
        cgi_main.run(app)
11
fa216534ae45 funky PageTree stuff
Tero Marttila <terom@fixme.fi>
parents: 7
diff changeset
    40
fa216534ae45 funky PageTree stuff
Tero Marttila <terom@fixme.fi>
parents: 7
diff changeset
    41
    except :
125
45e56cbf9086 modify index.cgi to use qmsk.web.cgi_main
Tero Marttila <terom@fixme.fi>
parents: 46
diff changeset
    42
        # display error on stdout
133
088aa2da1340 our own CGI error handler
Tero Marttila <terom@fixme.fi>
parents: 125
diff changeset
    43
        error()
7
d6a8258bd90e YES YES MOAR WSGI - Hello World
Tero Marttila <terom@fixme.fi>
parents: 6
diff changeset
    44
    
d6a8258bd90e YES YES MOAR WSGI - Hello World
Tero Marttila <terom@fixme.fi>
parents: 6
diff changeset
    45
if __name__ == '__main__' :
125
45e56cbf9086 modify index.cgi to use qmsk.web.cgi_main
Tero Marttila <terom@fixme.fi>
parents: 46
diff changeset
    46
    main()
45e56cbf9086 modify index.cgi to use qmsk.web.cgi_main
Tero Marttila <terom@fixme.fi>
parents: 46
diff changeset
    47