Mercurial > p > roundup > code
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 |
| 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 | 13 if os.path.exists(home): |
| 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 | 19 try: |
| 20 os.remove(os.path.join(home, 'detectors', 'nosyreaction.pyc')) | |
| 21 except os.error, error: | |
| 22 if error.errno != errno.ENOENT: | |
| 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 |
