annotate 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
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1640
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
1 #! /usr/bin/env python
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
2 #
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
3 # Copyright (c) 2003 Richard Jones (richard@mechanicalcat.net)
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
4 #
1902
7b0a655edb88 Don't let roundup_server.run() interpret the command-line arguments...
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents: 1868
diff changeset
5 # $Id: demo.py,v 1.7 2003-11-06 14:24:57 jlgijsbers Exp $
1640
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
6
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
7 import sys, os, string, re, urlparse
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
8 import shutil, socket, errno, BaseHTTPServer
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
9 from glob import glob
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
10
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
11 def install_demo(home):
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
12 # create the instance
1650
a4db6067814a cleanup
Richard Jones <richard@users.sourceforge.net>
parents: 1645
diff changeset
13 if os.path.exists(home):
a4db6067814a cleanup
Richard Jones <richard@users.sourceforge.net>
parents: 1645
diff changeset
14 shutil.rmtree(home)
1640
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
15 from roundup import init, instance, password
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
16 init.install(home, os.path.join('templates', 'classic'))
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
17 # don't have email flying around
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
18 os.remove(os.path.join(home, 'detectors', 'nosyreaction.py'))
1727
Richard Jones <richard@users.sourceforge.net>
parents: 1726
diff changeset
19 try:
Richard Jones <richard@users.sourceforge.net>
parents: 1726
diff changeset
20 os.remove(os.path.join(home, 'detectors', 'nosyreaction.pyc'))
Richard Jones <richard@users.sourceforge.net>
parents: 1726
diff changeset
21 except os.error, error:
Richard Jones <richard@users.sourceforge.net>
parents: 1726
diff changeset
22 if error.errno != errno.ENOENT:
Richard Jones <richard@users.sourceforge.net>
parents: 1726
diff changeset
23 raise
1640
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
24 init.write_select_db(home, 'anydbm')
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
25
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
26 # figure basic params for server
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
27 hostname = socket.gethostname()
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
28 # pick a fairly odd, random port
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
29 port = 8917
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
30 while 1:
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
31 print 'Trying to set up web server on port %d ...'%port,
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
32 s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
33 s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
34 try:
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
35 s.connect((hostname, port))
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
36 except socket.error, e:
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
37 if not hasattr(e, 'args') or e.args[0] != errno.ECONNREFUSED:
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
38 raise
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
39 print 'should be ok.'
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
40 break
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
41 else:
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
42 s.close()
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
43 print 'already in use.'
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
44 port += 100
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
45 url = 'http://%s:%s/demo/'%(hostname, port)
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
46
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
47 # write the config
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
48 f = open(os.path.join(home, 'config.py'), 'r')
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
49 s = f.read().replace('http://tracker.example/cgi-bin/roundup.cgi/bugs/',
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
50 url)
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
51 f.close()
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
52 f = open(os.path.join(home, 'config.py'), 'w')
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
53 f.write(s)
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
54 f.close()
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
55
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
56 # initialise the database
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
57 init.initialise(home, 'admin')
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
58
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
59 # add the "demo" user
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
60 tracker = instance.open(home)
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
61 db = tracker.open('admin')
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
62 db.user.create(username='demo', password=password.Password('demo'),
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
63 realname='Demo User', roles='User')
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
64 db.commit()
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
65 db.close()
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
66
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
67 def run_demo():
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
68 ''' Run a demo server for users to play with for instant gratification.
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
69
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
70 Sets up the web service on localhost. Disables nosy lists.
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
71 '''
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
72 home = os.path.abspath('demo')
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
73 if not os.path.exists(home) or sys.argv[-1] == 'nuke':
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
74 install_demo(home)
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
75
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
76 f = open(os.path.join(home, 'config.py'), 'r')
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
77 url = re.search(r'^TRACKER_WEB\s*=\s*[\'"](http.+/)[\'"]$', f.read(),
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
78 re.M|re.I).group(1)
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
79 f.close()
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
80 hostname, port = urlparse.urlparse(url)[1].split(':')
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
81 port = int(port)
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
82
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
83 # ok, so start up the server
1868
1545a36ae887 Use roundup_server script in demo.py to reduce duplication
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents: 1727
diff changeset
84 from roundup.scripts import roundup_server
1545a36ae887 Use roundup_server script in demo.py to reduce duplication
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents: 1727
diff changeset
85 roundup_server.RoundupRequestHandler.TRACKER_HOMES = {'demo': home}
1545a36ae887 Use roundup_server script in demo.py to reduce duplication
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents: 1727
diff changeset
86
1545a36ae887 Use roundup_server script in demo.py to reduce duplication
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents: 1727
diff changeset
87 success_message = '''Server running - connect to:
1545a36ae887 Use roundup_server script in demo.py to reduce duplication
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents: 1727
diff changeset
88 %s
1545a36ae887 Use roundup_server script in demo.py to reduce duplication
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents: 1727
diff changeset
89 1. Log in as "demo"/"demo" or "admin"/"admin".
1545a36ae887 Use roundup_server script in demo.py to reduce duplication
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents: 1727
diff changeset
90 2. Hit Control-C to stop the server.
1545a36ae887 Use roundup_server script in demo.py to reduce duplication
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents: 1727
diff changeset
91 3. Re-start the server by running "python demo.py" again.
1545a36ae887 Use roundup_server script in demo.py to reduce duplication
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents: 1727
diff changeset
92 4. Re-initialise the server by running "python demo.py nuke".''' % url
1545a36ae887 Use roundup_server script in demo.py to reduce duplication
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents: 1727
diff changeset
93
1902
7b0a655edb88 Don't let roundup_server.run() interpret the command-line arguments...
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents: 1868
diff changeset
94 sys.argv = sys.argv[:1]
1868
1545a36ae887 Use roundup_server script in demo.py to reduce duplication
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents: 1727
diff changeset
95 roundup_server.run(port, success_message)
1640
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
96
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
97 if __name__ == '__main__':
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
98 run_demo()
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
99
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
100 # vim: set filetype=python ts=4 sw=4 et si

Roundup Issue Tracker: http://roundup-tracker.org/