Mercurial > p > roundup > code
view demo.py @ 2077:3e0961d6d44d
Added the "actor" property.
Metakit backend not done (still not confident I know how it's supposed
to work ;)
Currently it will come up as NULL in the RDBMS backends for older items.
The *dbm backends will look up the journal. I hope to remedy the former
before 0.7's release.
Fixed a bunch of migration issues in the rdbms backends while I was at it
(index changes for key prop changes) and simplified the class table update
code for RDBMSes that have "alter table" in their command set (ie. not
sqlite) ... migration from "version 1" to "version 2" still hasn't
actually been tested yet though.
| author | Richard Jones <richard@users.sourceforge.net> |
|---|---|
| date | Mon, 15 Mar 2004 05:50:20 +0000 |
| parents | 7b0a655edb88 |
| children | 62ed6505cbec |
line wrap: on
line source
#! /usr/bin/env python # # Copyright (c) 2003 Richard Jones (richard@mechanicalcat.net) # # $Id: demo.py,v 1.7 2003-11-06 14:24:57 jlgijsbers Exp $ import sys, os, string, re, urlparse import shutil, socket, errno, BaseHTTPServer from glob import glob def install_demo(home): # create the instance if os.path.exists(home): shutil.rmtree(home) from roundup import init, instance, password init.install(home, os.path.join('templates', 'classic')) # don't have email flying around os.remove(os.path.join(home, 'detectors', 'nosyreaction.py')) try: os.remove(os.path.join(home, 'detectors', 'nosyreaction.pyc')) except os.error, error: if error.errno != errno.ENOENT: raise init.write_select_db(home, 'anydbm') # figure basic params for server hostname = socket.gethostname() # pick a fairly odd, random port port = 8917 while 1: print 'Trying to set up web server on port %d ...'%port, s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) try: s.connect((hostname, port)) except socket.error, e: if not hasattr(e, 'args') or e.args[0] != errno.ECONNREFUSED: raise print 'should be ok.' break else: s.close() print 'already in use.' port += 100 url = 'http://%s:%s/demo/'%(hostname, port) # write the config f = open(os.path.join(home, 'config.py'), 'r') s = f.read().replace('http://tracker.example/cgi-bin/roundup.cgi/bugs/', url) f.close() f = open(os.path.join(home, 'config.py'), 'w') f.write(s) f.close() # initialise the database init.initialise(home, 'admin') # add the "demo" user tracker = instance.open(home) db = tracker.open('admin') db.user.create(username='demo', password=password.Password('demo'), realname='Demo User', roles='User') db.commit() db.close() def run_demo(): ''' Run a demo server for users to play with for instant gratification. Sets up the web service on localhost. Disables nosy lists. ''' home = os.path.abspath('demo') if not os.path.exists(home) or sys.argv[-1] == 'nuke': install_demo(home) f = open(os.path.join(home, 'config.py'), 'r') url = re.search(r'^TRACKER_WEB\s*=\s*[\'"](http.+/)[\'"]$', f.read(), re.M|re.I).group(1) f.close() hostname, port = urlparse.urlparse(url)[1].split(':') port = int(port) # ok, so start up the server from roundup.scripts import roundup_server roundup_server.RoundupRequestHandler.TRACKER_HOMES = {'demo': home} success_message = '''Server running - connect to: %s 1. Log in as "demo"/"demo" or "admin"/"admin". 2. Hit Control-C to stop the server. 3. Re-start the server by running "python demo.py" again. 4. Re-initialise the server by running "python demo.py nuke".''' % url sys.argv = sys.argv[:1] roundup_server.run(port, success_message) if __name__ == '__main__': run_demo() # vim: set filetype=python ts=4 sw=4 et si
