annotate demo.py @ 3868:483c3e335a54

print instructions for modifying demo tracker URL Add some explanatory text (copied from installation.txt with minor editing) about how to change the demo config to access the tracker from remote hosts.
author Justus Pendleton <jpend@users.sourceforge.net>
date Tue, 28 Aug 2007 22:37:45 +0000
parents d4112ddfc0bb
children a6fdaaa3a8bd
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)
2648
fe71e108d998 Main Roundup configuration class renamed to CoreConfig;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2639
diff changeset
4 #
3868
483c3e335a54 print instructions for modifying demo tracker URL
Justus Pendleton <jpend@users.sourceforge.net>
parents: 3647
diff changeset
5 # $Id: demo.py,v 1.26 2007-08-28 22:37:45 jpend Exp $
1640
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
6
2783
5f62f3dd5aa8 fix: server was always started on default port number.
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2775
diff changeset
7 import errno
5f62f3dd5aa8 fix: server was always started on default port number.
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2775
diff changeset
8 import os
5f62f3dd5aa8 fix: server was always started on default port number.
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2775
diff changeset
9 import socket
5f62f3dd5aa8 fix: server was always started on default port number.
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2775
diff changeset
10 import sys
5f62f3dd5aa8 fix: server was always started on default port number.
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2775
diff changeset
11 import urlparse
1640
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
12 from glob import glob
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
13
2775
2907abb10e55 rearranged to use the code in roundup-demo script.
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2727
diff changeset
14 from roundup import configuration
2907abb10e55 rearranged to use the code in roundup-demo script.
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2727
diff changeset
15 from roundup.scripts import roundup_server
2907abb10e55 rearranged to use the code in roundup-demo script.
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2727
diff changeset
16
2907abb10e55 rearranged to use the code in roundup-demo script.
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2727
diff changeset
17 def install_demo(home, backend, template):
2907abb10e55 rearranged to use the code in roundup-demo script.
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2727
diff changeset
18 """Install a demo tracker
2907abb10e55 rearranged to use the code in roundup-demo script.
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2727
diff changeset
19
2907abb10e55 rearranged to use the code in roundup-demo script.
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2727
diff changeset
20 Parameters:
2907abb10e55 rearranged to use the code in roundup-demo script.
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2727
diff changeset
21 home:
2907abb10e55 rearranged to use the code in roundup-demo script.
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2727
diff changeset
22 tracker home directory path
2907abb10e55 rearranged to use the code in roundup-demo script.
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2727
diff changeset
23 backend:
2907abb10e55 rearranged to use the code in roundup-demo script.
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2727
diff changeset
24 database backend name
2907abb10e55 rearranged to use the code in roundup-demo script.
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2727
diff changeset
25 template:
2907abb10e55 rearranged to use the code in roundup-demo script.
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2727
diff changeset
26 full path to the tracker template directory
2907abb10e55 rearranged to use the code in roundup-demo script.
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2727
diff changeset
27
2907abb10e55 rearranged to use the code in roundup-demo script.
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2727
diff changeset
28 """
2907abb10e55 rearranged to use the code in roundup-demo script.
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2727
diff changeset
29 from roundup import init, instance, password, backends
2637
11811b313459 The demo.py script works again using the new configuration system.
Richard Jones <richard@users.sourceforge.net>
parents: 2633
diff changeset
30
11811b313459 The demo.py script works again using the new configuration system.
Richard Jones <richard@users.sourceforge.net>
parents: 2633
diff changeset
31 # set up the config for this tracker
2648
fe71e108d998 Main Roundup configuration class renamed to CoreConfig;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2639
diff changeset
32 config = configuration.CoreConfig()
2637
11811b313459 The demo.py script works again using the new configuration system.
Richard Jones <richard@users.sourceforge.net>
parents: 2633
diff changeset
33 config['TRACKER_HOME'] = home
11811b313459 The demo.py script works again using the new configuration system.
Richard Jones <richard@users.sourceforge.net>
parents: 2633
diff changeset
34 config['MAIL_DOMAIN'] = 'localhost'
11811b313459 The demo.py script works again using the new configuration system.
Richard Jones <richard@users.sourceforge.net>
parents: 2633
diff changeset
35 config['DATABASE'] = 'db'
3549
f6719836e521 allow dispname to be passed to renderWith [SF#1424587]
Richard Jones <richard@users.sourceforge.net>
parents: 2881
diff changeset
36 config['WEB_DEBUG'] = True
2637
11811b313459 The demo.py script works again using the new configuration system.
Richard Jones <richard@users.sourceforge.net>
parents: 2633
diff changeset
37 if backend in ('mysql', 'postgresql'):
11811b313459 The demo.py script works again using the new configuration system.
Richard Jones <richard@users.sourceforge.net>
parents: 2633
diff changeset
38 config['RDBMS_HOST'] = 'localhost'
11811b313459 The demo.py script works again using the new configuration system.
Richard Jones <richard@users.sourceforge.net>
parents: 2633
diff changeset
39 config['RDBMS_USER'] = 'rounduptest'
11811b313459 The demo.py script works again using the new configuration system.
Richard Jones <richard@users.sourceforge.net>
parents: 2633
diff changeset
40 config['RDBMS_PASSWORD'] = 'rounduptest'
11811b313459 The demo.py script works again using the new configuration system.
Richard Jones <richard@users.sourceforge.net>
parents: 2633
diff changeset
41 config['RDBMS_NAME'] = 'rounduptest'
2167
4dafc87a0113 better support for demoing mysql/postgresql
Richard Jones <richard@users.sourceforge.net>
parents: 2104
diff changeset
42
4dafc87a0113 better support for demoing mysql/postgresql
Richard Jones <richard@users.sourceforge.net>
parents: 2104
diff changeset
43 # see if we have further db nuking to perform
2856
adec352e2ce0 don't try to import all backends in backends.__init__ unless we *want* to
Richard Jones <richard@users.sourceforge.net>
parents: 2837
diff changeset
44 module = backends.get_backend(backend)
2637
11811b313459 The demo.py script works again using the new configuration system.
Richard Jones <richard@users.sourceforge.net>
parents: 2633
diff changeset
45 if module.db_exists(config):
11811b313459 The demo.py script works again using the new configuration system.
Richard Jones <richard@users.sourceforge.net>
parents: 2633
diff changeset
46 module.db_nuke(config)
2167
4dafc87a0113 better support for demoing mysql/postgresql
Richard Jones <richard@users.sourceforge.net>
parents: 2104
diff changeset
47
2775
2907abb10e55 rearranged to use the code in roundup-demo script.
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2727
diff changeset
48 init.install(home, template)
1640
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
49 # don't have email flying around
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
50 os.remove(os.path.join(home, 'detectors', 'nosyreaction.py'))
1727
Richard Jones <richard@users.sourceforge.net>
parents: 1726
diff changeset
51 try:
Richard Jones <richard@users.sourceforge.net>
parents: 1726
diff changeset
52 os.remove(os.path.join(home, 'detectors', 'nosyreaction.pyc'))
Richard Jones <richard@users.sourceforge.net>
parents: 1726
diff changeset
53 except os.error, error:
Richard Jones <richard@users.sourceforge.net>
parents: 1726
diff changeset
54 if error.errno != errno.ENOENT:
Richard Jones <richard@users.sourceforge.net>
parents: 1726
diff changeset
55 raise
2104
f376437cd35c more metakit fixes
Richard Jones <richard@users.sourceforge.net>
parents: 2100
diff changeset
56 init.write_select_db(home, backend)
1640
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
57
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
58 # figure basic params for server
2881
4d7f942f97b5 demo tracker is always set up on localhost
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2856
diff changeset
59 hostname = 'localhost'
1640
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
60 # pick a fairly odd, random port
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
61 port = 8917
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
62 while 1:
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
63 print 'Trying to set up web server on port %d ...'%port,
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
64 s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
65 s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
66 try:
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
67 s.connect((hostname, port))
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
68 except socket.error, e:
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
69 if not hasattr(e, 'args') or e.args[0] != errno.ECONNREFUSED:
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
70 raise
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
71 print 'should be ok.'
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
72 break
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
73 else:
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
74 s.close()
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
75 print 'already in use.'
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
76 port += 100
2637
11811b313459 The demo.py script works again using the new configuration system.
Richard Jones <richard@users.sourceforge.net>
parents: 2633
diff changeset
77 config['TRACKER_WEB'] = 'http://%s:%s/demo/'%(hostname, port)
1640
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
78
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
79 # write the config
2649
1df7d4a41da4 Buncha stuff (sorry about the large checkin):
Richard Jones <richard@users.sourceforge.net>
parents: 2648
diff changeset
80 config['INSTANT_REGISTRATION'] = 1
2775
2907abb10e55 rearranged to use the code in roundup-demo script.
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2727
diff changeset
81 config.save(os.path.join(home, config.INI_FILE))
1640
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
82
2637
11811b313459 The demo.py script works again using the new configuration system.
Richard Jones <richard@users.sourceforge.net>
parents: 2633
diff changeset
83 # open the tracker and initialise
11811b313459 The demo.py script works again using the new configuration system.
Richard Jones <richard@users.sourceforge.net>
parents: 2633
diff changeset
84 tracker = instance.open(home)
11811b313459 The demo.py script works again using the new configuration system.
Richard Jones <richard@users.sourceforge.net>
parents: 2633
diff changeset
85 tracker.init(password.Password('admin'))
1640
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
86
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
87 # add the "demo" user
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
88 db = tracker.open('admin')
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
89 db.user.create(username='demo', password=password.Password('demo'),
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
90 realname='Demo User', roles='User')
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
91 db.commit()
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
92 db.close()
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
93
2775
2907abb10e55 rearranged to use the code in roundup-demo script.
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2727
diff changeset
94 def run_demo(home):
2907abb10e55 rearranged to use the code in roundup-demo script.
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2727
diff changeset
95 """Run the demo tracker installed in ``home``"""
2907abb10e55 rearranged to use the code in roundup-demo script.
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2727
diff changeset
96 cfg = configuration.CoreConfig(home)
2783
5f62f3dd5aa8 fix: server was always started on default port number.
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2775
diff changeset
97 url = cfg["TRACKER_WEB"]
5f62f3dd5aa8 fix: server was always started on default port number.
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2775
diff changeset
98 hostname, port = urlparse.urlparse(url)[1].split(':')
5f62f3dd5aa8 fix: server was always started on default port number.
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2775
diff changeset
99 port = int(port)
1868
1545a36ae887 Use roundup_server script in demo.py to reduce duplication
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents: 1727
diff changeset
100 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
101 %s
1545a36ae887 Use roundup_server script in demo.py to reduce duplication
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents: 1727
diff changeset
102 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
103 2. Hit Control-C to stop the server.
3647
d4112ddfc0bb doc fixes
Richard Jones <richard@users.sourceforge.net>
parents: 3549
diff changeset
104 3. Re-start the server by running "roundup-demo" again.
d4112ddfc0bb doc fixes
Richard Jones <richard@users.sourceforge.net>
parents: 3549
diff changeset
105 4. Re-initialise the server by running "roundup-demo nuke".
3868
483c3e335a54 print instructions for modifying demo tracker URL
Justus Pendleton <jpend@users.sourceforge.net>
parents: 3647
diff changeset
106
483c3e335a54 print instructions for modifying demo tracker URL
Justus Pendleton <jpend@users.sourceforge.net>
parents: 3647
diff changeset
107 Demo tracker is set up to be accessed by localhost browser. If you
483c3e335a54 print instructions for modifying demo tracker URL
Justus Pendleton <jpend@users.sourceforge.net>
parents: 3647
diff changeset
108 run demo on a server host, please stop the demo, open file
483c3e335a54 print instructions for modifying demo tracker URL
Justus Pendleton <jpend@users.sourceforge.net>
parents: 3647
diff changeset
109 "demo/config.ini" with your editor, change the host name in the "web"
483c3e335a54 print instructions for modifying demo tracker URL
Justus Pendleton <jpend@users.sourceforge.net>
parents: 3647
diff changeset
110 option in section "[tracker]", save the file, then re-run the demo
483c3e335a54 print instructions for modifying demo tracker URL
Justus Pendleton <jpend@users.sourceforge.net>
parents: 3647
diff changeset
111 program.
483c3e335a54 print instructions for modifying demo tracker URL
Justus Pendleton <jpend@users.sourceforge.net>
parents: 3647
diff changeset
112
2783
5f62f3dd5aa8 fix: server was always started on default port number.
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2775
diff changeset
113 ''' % url
2775
2907abb10e55 rearranged to use the code in roundup-demo script.
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2727
diff changeset
114
2907abb10e55 rearranged to use the code in roundup-demo script.
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2727
diff changeset
115 # disable command line processing in roundup_server
2837
bcee075321fc patching roundup_server.RoundupRequestHandler class directly...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2783
diff changeset
116 sys.argv = sys.argv[:1] + ['-p', str(port), 'demo=' + home]
bcee075321fc patching roundup_server.RoundupRequestHandler class directly...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2783
diff changeset
117 roundup_server.run(success_message=success_message)
2775
2907abb10e55 rearranged to use the code in roundup-demo script.
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2727
diff changeset
118
2907abb10e55 rearranged to use the code in roundup-demo script.
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2727
diff changeset
119 def demo_main():
2907abb10e55 rearranged to use the code in roundup-demo script.
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2727
diff changeset
120 """Run a demo server for users to play with for instant gratification.
1868
1545a36ae887 Use roundup_server script in demo.py to reduce duplication
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents: 1727
diff changeset
121
2775
2907abb10e55 rearranged to use the code in roundup-demo script.
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2727
diff changeset
122 Sets up the web service on localhost. Disables nosy lists.
2907abb10e55 rearranged to use the code in roundup-demo script.
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2727
diff changeset
123 """
2907abb10e55 rearranged to use the code in roundup-demo script.
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2727
diff changeset
124 home = os.path.abspath('demo')
2907abb10e55 rearranged to use the code in roundup-demo script.
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2727
diff changeset
125 if not os.path.exists(home) or (sys.argv[-1] == 'nuke'):
2907abb10e55 rearranged to use the code in roundup-demo script.
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2727
diff changeset
126 if len(sys.argv) > 2:
2907abb10e55 rearranged to use the code in roundup-demo script.
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2727
diff changeset
127 backend = sys.argv[-2]
2907abb10e55 rearranged to use the code in roundup-demo script.
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2727
diff changeset
128 else:
2907abb10e55 rearranged to use the code in roundup-demo script.
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2727
diff changeset
129 backend = 'anydbm'
2907abb10e55 rearranged to use the code in roundup-demo script.
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2727
diff changeset
130 install_demo(home, backend, os.path.join('templates', 'classic'))
2907abb10e55 rearranged to use the code in roundup-demo script.
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2727
diff changeset
131 run_demo(home)
1640
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
132
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
133 if __name__ == '__main__':
2775
2907abb10e55 rearranged to use the code in roundup-demo script.
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2727
diff changeset
134 demo_main()
1640
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
135
2648
fe71e108d998 Main Roundup configuration class renamed to CoreConfig;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2639
diff changeset
136 # vim: set filetype=python sts=4 sw=4 et si :

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