annotate demo.py @ 2365:3a80831ecebe

If the target platform is win32, create .bat files... ...instead of *nix shell scripts. Target platform is set to "win32" if main command is 'bdist_wininst' or if the command is 'bdist' and it has the list of formats (from command line or config file) and the first item on that list is wininst. Otherwise target platform is set to current (build) platform.
author Alexander Smishlajev <a1s@users.sourceforge.net>
date Wed, 26 May 2004 10:00:53 +0000
parents 4dafc87a0113
children 31cb1014300c b654a33346a6
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 #
2167
4dafc87a0113 better support for demoing mysql/postgresql
Richard Jones <richard@users.sourceforge.net>
parents: 2104
diff changeset
5 # $Id: demo.py,v 1.10 2004-03-31 23:07:51 richard 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
2104
f376437cd35c more metakit fixes
Richard Jones <richard@users.sourceforge.net>
parents: 2100
diff changeset
11 def install_demo(home, backend):
1640
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)
2167
4dafc87a0113 better support for demoing mysql/postgresql
Richard Jones <richard@users.sourceforge.net>
parents: 2104
diff changeset
15 from roundup import init, instance, password, backends
4dafc87a0113 better support for demoing mysql/postgresql
Richard Jones <richard@users.sourceforge.net>
parents: 2104
diff changeset
16
4dafc87a0113 better support for demoing mysql/postgresql
Richard Jones <richard@users.sourceforge.net>
parents: 2104
diff changeset
17 # see if we have further db nuking to perform
4dafc87a0113 better support for demoing mysql/postgresql
Richard Jones <richard@users.sourceforge.net>
parents: 2104
diff changeset
18 module = getattr(backends, backend)
4dafc87a0113 better support for demoing mysql/postgresql
Richard Jones <richard@users.sourceforge.net>
parents: 2104
diff changeset
19 if backend == 'mysql':
4dafc87a0113 better support for demoing mysql/postgresql
Richard Jones <richard@users.sourceforge.net>
parents: 2104
diff changeset
20 class config:
4dafc87a0113 better support for demoing mysql/postgresql
Richard Jones <richard@users.sourceforge.net>
parents: 2104
diff changeset
21 MYSQL_DBHOST = 'localhost'
4dafc87a0113 better support for demoing mysql/postgresql
Richard Jones <richard@users.sourceforge.net>
parents: 2104
diff changeset
22 MYSQL_DBUSER = 'rounduptest'
4dafc87a0113 better support for demoing mysql/postgresql
Richard Jones <richard@users.sourceforge.net>
parents: 2104
diff changeset
23 MYSQL_DBPASSWORD = 'rounduptest'
4dafc87a0113 better support for demoing mysql/postgresql
Richard Jones <richard@users.sourceforge.net>
parents: 2104
diff changeset
24 MYSQL_DBNAME = 'rounduptest'
4dafc87a0113 better support for demoing mysql/postgresql
Richard Jones <richard@users.sourceforge.net>
parents: 2104
diff changeset
25 DATABASE = 'home'
4dafc87a0113 better support for demoing mysql/postgresql
Richard Jones <richard@users.sourceforge.net>
parents: 2104
diff changeset
26 module.db_nuke(config)
4dafc87a0113 better support for demoing mysql/postgresql
Richard Jones <richard@users.sourceforge.net>
parents: 2104
diff changeset
27 elif backend == 'postgresql':
4dafc87a0113 better support for demoing mysql/postgresql
Richard Jones <richard@users.sourceforge.net>
parents: 2104
diff changeset
28 class config:
4dafc87a0113 better support for demoing mysql/postgresql
Richard Jones <richard@users.sourceforge.net>
parents: 2104
diff changeset
29 POSTGRESQL_DATABASE = {'database': 'rounduptest'}
4dafc87a0113 better support for demoing mysql/postgresql
Richard Jones <richard@users.sourceforge.net>
parents: 2104
diff changeset
30 DATABASE = 'home'
4dafc87a0113 better support for demoing mysql/postgresql
Richard Jones <richard@users.sourceforge.net>
parents: 2104
diff changeset
31 module.db_nuke(config, 1)
4dafc87a0113 better support for demoing mysql/postgresql
Richard Jones <richard@users.sourceforge.net>
parents: 2104
diff changeset
32
1640
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
33 init.install(home, os.path.join('templates', 'classic'))
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
34 # don't have email flying around
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
35 os.remove(os.path.join(home, 'detectors', 'nosyreaction.py'))
1727
Richard Jones <richard@users.sourceforge.net>
parents: 1726
diff changeset
36 try:
Richard Jones <richard@users.sourceforge.net>
parents: 1726
diff changeset
37 os.remove(os.path.join(home, 'detectors', 'nosyreaction.pyc'))
Richard Jones <richard@users.sourceforge.net>
parents: 1726
diff changeset
38 except os.error, error:
Richard Jones <richard@users.sourceforge.net>
parents: 1726
diff changeset
39 if error.errno != errno.ENOENT:
Richard Jones <richard@users.sourceforge.net>
parents: 1726
diff changeset
40 raise
2104
f376437cd35c more metakit fixes
Richard Jones <richard@users.sourceforge.net>
parents: 2100
diff changeset
41 init.write_select_db(home, backend)
1640
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
42
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
43 # figure basic params for server
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
44 hostname = socket.gethostname()
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
45 # pick a fairly odd, random port
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
46 port = 8917
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
47 while 1:
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
48 print 'Trying to set up web server on port %d ...'%port,
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
49 s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
50 s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
51 try:
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
52 s.connect((hostname, port))
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
53 except socket.error, e:
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
54 if not hasattr(e, 'args') or e.args[0] != errno.ECONNREFUSED:
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
55 raise
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
56 print 'should be ok.'
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
57 break
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
58 else:
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
59 s.close()
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
60 print 'already in use.'
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
61 port += 100
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
62 url = 'http://%s:%s/demo/'%(hostname, port)
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
63
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
64 # write the config
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
65 f = open(os.path.join(home, 'config.py'), 'r')
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
66 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
67 url)
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
68 f.close()
2104
f376437cd35c more metakit fixes
Richard Jones <richard@users.sourceforge.net>
parents: 2100
diff changeset
69 # DB connection stuff for mysql and postgresql
2100
62ed6505cbec MySQL migration of old backend database to new, typed database complete.
Richard Jones <richard@users.sourceforge.net>
parents: 1902
diff changeset
70 s = s + """
62ed6505cbec MySQL migration of old backend database to new, typed database complete.
Richard Jones <richard@users.sourceforge.net>
parents: 1902
diff changeset
71 MYSQL_DBHOST = 'localhost'
62ed6505cbec MySQL migration of old backend database to new, typed database complete.
Richard Jones <richard@users.sourceforge.net>
parents: 1902
diff changeset
72 MYSQL_DBUSER = 'rounduptest'
62ed6505cbec MySQL migration of old backend database to new, typed database complete.
Richard Jones <richard@users.sourceforge.net>
parents: 1902
diff changeset
73 MYSQL_DBPASSWORD = 'rounduptest'
62ed6505cbec MySQL migration of old backend database to new, typed database complete.
Richard Jones <richard@users.sourceforge.net>
parents: 1902
diff changeset
74 MYSQL_DBNAME = 'rounduptest'
62ed6505cbec MySQL migration of old backend database to new, typed database complete.
Richard Jones <richard@users.sourceforge.net>
parents: 1902
diff changeset
75 MYSQL_DATABASE = (MYSQL_DBHOST, MYSQL_DBUSER, MYSQL_DBPASSWORD, MYSQL_DBNAME)
2104
f376437cd35c more metakit fixes
Richard Jones <richard@users.sourceforge.net>
parents: 2100
diff changeset
76 POSTGRESQL_DATABASE = {'database': 'rounduptest'}
2100
62ed6505cbec MySQL migration of old backend database to new, typed database complete.
Richard Jones <richard@users.sourceforge.net>
parents: 1902
diff changeset
77 """
1640
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
78 f = open(os.path.join(home, 'config.py'), 'w')
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
79 f.write(s)
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
80 f.close()
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
81
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
82 # initialise the database
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
83 init.initialise(home, 'admin')
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
84
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
85 # add the "demo" user
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
86 tracker = instance.open(home)
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
87 db = tracker.open('admin')
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
88 db.user.create(username='demo', password=password.Password('demo'),
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
89 realname='Demo User', roles='User')
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
90 db.commit()
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
91 db.close()
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
92
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
93 def run_demo():
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
94 ''' 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
95
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
96 Sets up the web service on localhost. Disables nosy lists.
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
97 '''
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
98 home = os.path.abspath('demo')
2104
f376437cd35c more metakit fixes
Richard Jones <richard@users.sourceforge.net>
parents: 2100
diff changeset
99 backend = 'anydbm'
1640
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
100 if not os.path.exists(home) or sys.argv[-1] == 'nuke':
2104
f376437cd35c more metakit fixes
Richard Jones <richard@users.sourceforge.net>
parents: 2100
diff changeset
101 if len(sys.argv) > 2:
f376437cd35c more metakit fixes
Richard Jones <richard@users.sourceforge.net>
parents: 2100
diff changeset
102 backend = sys.argv[1]
f376437cd35c more metakit fixes
Richard Jones <richard@users.sourceforge.net>
parents: 2100
diff changeset
103 install_demo(home, backend)
1640
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
104
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
105 f = open(os.path.join(home, 'config.py'), 'r')
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
106 url = re.search(r'^TRACKER_WEB\s*=\s*[\'"](http.+/)[\'"]$', f.read(),
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
107 re.M|re.I).group(1)
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
108 f.close()
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
109 hostname, port = urlparse.urlparse(url)[1].split(':')
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
110 port = int(port)
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
111
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
112 # 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
113 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
114 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
115
1545a36ae887 Use roundup_server script in demo.py to reduce duplication
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents: 1727
diff changeset
116 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
117 %s
1545a36ae887 Use roundup_server script in demo.py to reduce duplication
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents: 1727
diff changeset
118 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
119 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
120 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
121 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
122
1902
7b0a655edb88 Don't let roundup_server.run() interpret the command-line arguments...
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents: 1868
diff changeset
123 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
124 roundup_server.run(port, success_message)
1640
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
125
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
126 if __name__ == '__main__':
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
127 run_demo()
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
128
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
129 # vim: set filetype=python ts=4 sw=4 et si

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