annotate roundup/demo.py @ 4905:6e313bdf6b69 routing

routing: Add new roundup.web namespace with router component This branch is to untangle hardcoded Roundup URL scheme, make it more readable and customizable with extensions. Right now it doesn't seem possible to write extension that renders static HTML page at /about without modifying Roundup DB, and this web component should not depend on DB schema.
author anatoly techtonik <techtonik@gmail.com>
date Tue, 15 Jul 2014 13:33:43 +0300
parents edd6cac141c1
children c3a647a9f387
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
4689
7a032013bb6a demo.py: Make executable, remove unused glob import
anatoly techtonik <techtonik@gmail.com>
parents: 4602
diff changeset
1 #!/usr/bin/env python
1640
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 #
1640
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
5
2783
5f62f3dd5aa8 fix: server was always started on default port number.
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2775
diff changeset
6 import errno
5f62f3dd5aa8 fix: server was always started on default port number.
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2775
diff changeset
7 import os
4734
c67c925e4037 demo: Remove tracker home completely when nuking. This erases
anatoly techtonik <techtonik@gmail.com>
parents: 4733
diff changeset
8 import shutil
2783
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
4129
481cc919fda8 Allow command-line arguments for more flexible demo setup.
Stefan Seefeld <stefan@seefeld.name>
parents: 4069
diff changeset
12 import getopt
1640
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
4733
a0654b1283a4 demo: Make tracker home configurable.
anatoly techtonik <techtonik@gmail.com>
parents: 4729
diff changeset
17 # Path where demo instance files will be stored
4764
d273e59b487b roundup.demo: Use relative tracker home directory
anatoly techtonik <techtonik@gmail.com>
parents: 4763
diff changeset
18 TRACKER_HOME = os.path.abspath('demo')
4733
a0654b1283a4 demo: Make tracker home configurable.
anatoly techtonik <techtonik@gmail.com>
parents: 4729
diff changeset
19
2775
2907abb10e55 rearranged to use the code in roundup-demo script.
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2727
diff changeset
20 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
21 """Install a demo tracker
2907abb10e55 rearranged to use the code in roundup-demo script.
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2727
diff changeset
22
2907abb10e55 rearranged to use the code in roundup-demo script.
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2727
diff changeset
23 Parameters:
2907abb10e55 rearranged to use the code in roundup-demo script.
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2727
diff changeset
24 home:
2907abb10e55 rearranged to use the code in roundup-demo script.
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2727
diff changeset
25 tracker home directory path
2907abb10e55 rearranged to use the code in roundup-demo script.
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2727
diff changeset
26 backend:
2907abb10e55 rearranged to use the code in roundup-demo script.
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2727
diff changeset
27 database backend name
2907abb10e55 rearranged to use the code in roundup-demo script.
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2727
diff changeset
28 template:
4129
481cc919fda8 Allow command-line arguments for more flexible demo setup.
Stefan Seefeld <stefan@seefeld.name>
parents: 4069
diff changeset
29 tracker template
2775
2907abb10e55 rearranged to use the code in roundup-demo script.
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2727
diff changeset
30
2907abb10e55 rearranged to use the code in roundup-demo script.
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2727
diff changeset
31 """
4129
481cc919fda8 Allow command-line arguments for more flexible demo setup.
Stefan Seefeld <stefan@seefeld.name>
parents: 4069
diff changeset
32
2775
2907abb10e55 rearranged to use the code in roundup-demo script.
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2727
diff changeset
33 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
34
11811b313459 The demo.py script works again using the new configuration system.
Richard Jones <richard@users.sourceforge.net>
parents: 2633
diff changeset
35 # 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
36 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
37 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
38 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
39 config['DATABASE'] = 'db'
3549
f6719836e521 allow dispname to be passed to renderWith [SF#1424587]
Richard Jones <richard@users.sourceforge.net>
parents: 2881
diff changeset
40 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
41 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
42 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
43 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
44 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
45 config['RDBMS_NAME'] = 'rounduptest'
2167
4dafc87a0113 better support for demoing mysql/postgresql
Richard Jones <richard@users.sourceforge.net>
parents: 2104
diff changeset
46
4734
c67c925e4037 demo: Remove tracker home completely when nuking. This erases
anatoly techtonik <techtonik@gmail.com>
parents: 4733
diff changeset
47 # see if we need to clean up existing directory
c67c925e4037 demo: Remove tracker home completely when nuking. This erases
anatoly techtonik <techtonik@gmail.com>
parents: 4733
diff changeset
48 if os.path.exists(home):
c67c925e4037 demo: Remove tracker home completely when nuking. This erases
anatoly techtonik <techtonik@gmail.com>
parents: 4733
diff changeset
49 if os.path.exists(home + '/config.ini'):
c67c925e4037 demo: Remove tracker home completely when nuking. This erases
anatoly techtonik <techtonik@gmail.com>
parents: 4733
diff changeset
50 # clear everything out to avoid conflicts with former
c67c925e4037 demo: Remove tracker home completely when nuking. This erases
anatoly techtonik <techtonik@gmail.com>
parents: 4733
diff changeset
51 # extensions and detectors
c67c925e4037 demo: Remove tracker home completely when nuking. This erases
anatoly techtonik <techtonik@gmail.com>
parents: 4733
diff changeset
52 print "Nuking directory left from the previous demo instance."
c67c925e4037 demo: Remove tracker home completely when nuking. This erases
anatoly techtonik <techtonik@gmail.com>
parents: 4733
diff changeset
53 shutil.rmtree(home)
c67c925e4037 demo: Remove tracker home completely when nuking. This erases
anatoly techtonik <techtonik@gmail.com>
parents: 4733
diff changeset
54 else:
c67c925e4037 demo: Remove tracker home completely when nuking. This erases
anatoly techtonik <techtonik@gmail.com>
parents: 4733
diff changeset
55 print "Error: Refusing to nuke non-tracker directory:"
c67c925e4037 demo: Remove tracker home completely when nuking. This erases
anatoly techtonik <techtonik@gmail.com>
parents: 4733
diff changeset
56 print " %s" % home
c67c925e4037 demo: Remove tracker home completely when nuking. This erases
anatoly techtonik <techtonik@gmail.com>
parents: 4733
diff changeset
57 sys.exit(1)
2167
4dafc87a0113 better support for demoing mysql/postgresql
Richard Jones <richard@users.sourceforge.net>
parents: 2104
diff changeset
58
4129
481cc919fda8 Allow command-line arguments for more flexible demo setup.
Stefan Seefeld <stefan@seefeld.name>
parents: 4069
diff changeset
59 template_dir = os.path.join('share', 'roundup', 'templates', template)
481cc919fda8 Allow command-line arguments for more flexible demo setup.
Stefan Seefeld <stefan@seefeld.name>
parents: 4069
diff changeset
60 init.install(home, template_dir)
1640
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
61 # don't have email flying around
4135
d81ebe49a6ef Adjust to allow to run the 'minimal' tracker, too.
Stefan Seefeld <stefan@seefeld.name>
parents: 4129
diff changeset
62 nosyreaction = os.path.join(home, 'detectors', 'nosyreaction.py')
d81ebe49a6ef Adjust to allow to run the 'minimal' tracker, too.
Stefan Seefeld <stefan@seefeld.name>
parents: 4129
diff changeset
63 if os.path.exists(nosyreaction):
d81ebe49a6ef Adjust to allow to run the 'minimal' tracker, too.
Stefan Seefeld <stefan@seefeld.name>
parents: 4129
diff changeset
64 os.remove(nosyreaction)
d81ebe49a6ef Adjust to allow to run the 'minimal' tracker, too.
Stefan Seefeld <stefan@seefeld.name>
parents: 4129
diff changeset
65 nosyreaction += 'c'
d81ebe49a6ef Adjust to allow to run the 'minimal' tracker, too.
Stefan Seefeld <stefan@seefeld.name>
parents: 4129
diff changeset
66 if os.path.exists(nosyreaction):
d81ebe49a6ef Adjust to allow to run the 'minimal' tracker, too.
Stefan Seefeld <stefan@seefeld.name>
parents: 4129
diff changeset
67 os.remove(nosyreaction)
2104
f376437cd35c more metakit fixes
Richard Jones <richard@users.sourceforge.net>
parents: 2100
diff changeset
68 init.write_select_db(home, backend)
1640
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 # 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
71 hostname = 'localhost'
1640
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
72 # pick a fairly odd, random port
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
73 port = 8917
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
74 while 1:
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
75 print 'Trying to set up web server on port %d ...'%port,
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
76 s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
77 s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
78 try:
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
79 s.connect((hostname, port))
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
80 except socket.error, e:
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
81 if not hasattr(e, 'args') or e.args[0] != errno.ECONNREFUSED:
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
82 raise
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
83 print 'should be ok.'
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
84 break
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
85 else:
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
86 s.close()
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
87 print 'already in use.'
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
88 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
89 config['TRACKER_WEB'] = 'http://%s:%s/demo/'%(hostname, port)
1640
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
90
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
91 # write the config
2649
1df7d4a41da4 Buncha stuff (sorry about the large checkin):
Richard Jones <richard@users.sourceforge.net>
parents: 2648
diff changeset
92 config['INSTANT_REGISTRATION'] = 1
4713
c92fcb355911 Template responsive: make demo.py work out of the box with it, by setting the static_files config.ini setting to "static".
Bernhard Reiter <bernhard@intevation.de>
parents: 4689
diff changeset
93 # FIXME: Move template-specific demo initialization into the templates.
c92fcb355911 Template responsive: make demo.py work out of the box with it, by setting the static_files config.ini setting to "static".
Bernhard Reiter <bernhard@intevation.de>
parents: 4689
diff changeset
94 if template == 'responsive':
c92fcb355911 Template responsive: make demo.py work out of the box with it, by setting the static_files config.ini setting to "static".
Bernhard Reiter <bernhard@intevation.de>
parents: 4689
diff changeset
95 config['STATIC_FILES'] = "static"
4759
fd90ad41d34d - Update demo.py to be able to run jinja2 template
Pradip Caulagi <caulagi@gmail.com>
parents: 4734
diff changeset
96 if template == 'jinja2':
fd90ad41d34d - Update demo.py to be able to run jinja2 template
Pradip Caulagi <caulagi@gmail.com>
parents: 4734
diff changeset
97 config['TEMPLATE_ENGINE'] = 'jinja2'
fd90ad41d34d - Update demo.py to be able to run jinja2 template
Pradip Caulagi <caulagi@gmail.com>
parents: 4734
diff changeset
98 config['STATIC_FILES'] = "static"
2775
2907abb10e55 rearranged to use the code in roundup-demo script.
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2727
diff changeset
99 config.save(os.path.join(home, config.INI_FILE))
1640
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
100
2637
11811b313459 The demo.py script works again using the new configuration system.
Richard Jones <richard@users.sourceforge.net>
parents: 2633
diff changeset
101 # 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
102 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
103 tracker.init(password.Password('admin'))
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 # add the "demo" user
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
106 db = tracker.open('admin')
4135
d81ebe49a6ef Adjust to allow to run the 'minimal' tracker, too.
Stefan Seefeld <stefan@seefeld.name>
parents: 4129
diff changeset
107 # FIXME: Move tracker-specific demo initialization into the tracker templates.
4715
324cbd9f7d0e minor cleanup: demo.py: removed superfluous brackets.
Bernhard Reiter <bernhard@intevation.de>
parents: 4713
diff changeset
108 if template == 'minimal':
4135
d81ebe49a6ef Adjust to allow to run the 'minimal' tracker, too.
Stefan Seefeld <stefan@seefeld.name>
parents: 4129
diff changeset
109 db.user.create(username='demo', password=password.Password('demo'),
d81ebe49a6ef Adjust to allow to run the 'minimal' tracker, too.
Stefan Seefeld <stefan@seefeld.name>
parents: 4129
diff changeset
110 roles='User')
d81ebe49a6ef Adjust to allow to run the 'minimal' tracker, too.
Stefan Seefeld <stefan@seefeld.name>
parents: 4129
diff changeset
111 else:
d81ebe49a6ef Adjust to allow to run the 'minimal' tracker, too.
Stefan Seefeld <stefan@seefeld.name>
parents: 4129
diff changeset
112 db.user.create(username='demo', password=password.Password('demo'),
d81ebe49a6ef Adjust to allow to run the 'minimal' tracker, too.
Stefan Seefeld <stefan@seefeld.name>
parents: 4129
diff changeset
113 realname='Demo User', roles='User')
1640
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
114 db.commit()
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
115 db.close()
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
116
2775
2907abb10e55 rearranged to use the code in roundup-demo script.
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2727
diff changeset
117 def run_demo(home):
4733
a0654b1283a4 demo: Make tracker home configurable.
anatoly techtonik <techtonik@gmail.com>
parents: 4729
diff changeset
118 """Run the demo tracker instance from its ``home`` directory"""
4764
d273e59b487b roundup.demo: Use relative tracker home directory
anatoly techtonik <techtonik@gmail.com>
parents: 4763
diff changeset
119 print "Demo Tracker Home:", home
d273e59b487b roundup.demo: Use relative tracker home directory
anatoly techtonik <techtonik@gmail.com>
parents: 4763
diff changeset
120
2775
2907abb10e55 rearranged to use the code in roundup-demo script.
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2727
diff changeset
121 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
122 url = cfg["TRACKER_WEB"]
5f62f3dd5aa8 fix: server was always started on default port number.
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2775
diff changeset
123 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
124 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
125 success_message = '''Server running - connect to:
4602
19490d84802b demo.py: Fix self-referencing names
anatoly techtonik <techtonik@gmail.com>
parents: 4428
diff changeset
126 %(url)s
1868
1545a36ae887 Use roundup_server script in demo.py to reduce duplication
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents: 1727
diff changeset
127 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
128 2. Hit Control-C to stop the server.
4602
19490d84802b demo.py: Fix self-referencing names
anatoly techtonik <techtonik@gmail.com>
parents: 4428
diff changeset
129 3. Re-start the server by running "%(script)s" again.
4889
edd6cac141c1 demo.py: `nuke` resets the tracker, not the server, also rewrote
anatoly techtonik <techtonik@gmail.com>
parents: 4863
diff changeset
130 4. Reset the tracker by running "%(script)s nuke".
3868
483c3e335a54 print instructions for modifying demo tracker URL
Justus Pendleton <jpend@users.sourceforge.net>
parents: 3647
diff changeset
131
4889
edd6cac141c1 demo.py: `nuke` resets the tracker, not the server, also rewrote
anatoly techtonik <techtonik@gmail.com>
parents: 4863
diff changeset
132 Demo tracker is set up to be accessed from localhost. If run it on a
edd6cac141c1 demo.py: `nuke` resets the tracker, not the server, also rewrote
anatoly techtonik <techtonik@gmail.com>
parents: 4863
diff changeset
133 server, please edit "%(datadir)s/config.ini" and set the
edd6cac141c1 demo.py: `nuke` resets the tracker, not the server, also rewrote
anatoly techtonik <techtonik@gmail.com>
parents: 4863
diff changeset
134 "web" option in section "[tracker]" to your host name, then restart
edd6cac141c1 demo.py: `nuke` resets the tracker, not the server, also rewrote
anatoly techtonik <techtonik@gmail.com>
parents: 4863
diff changeset
135 demo. If you want to change backend types, you must use "nuke".
3868
483c3e335a54 print instructions for modifying demo tracker URL
Justus Pendleton <jpend@users.sourceforge.net>
parents: 3647
diff changeset
136
4733
a0654b1283a4 demo: Make tracker home configurable.
anatoly techtonik <techtonik@gmail.com>
parents: 4729
diff changeset
137 ''' % dict(url=url, script=sys.argv[0], datadir=TRACKER_HOME)
2775
2907abb10e55 rearranged to use the code in roundup-demo script.
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2727
diff changeset
138
2907abb10e55 rearranged to use the code in roundup-demo script.
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2727
diff changeset
139 # disable command line processing in roundup_server
4761
a89f1e9f3ee3 fix for demo.py to make it use configured host address
John Rouillard <rouilj@ieee.org>
parents: 4759
diff changeset
140 sys.argv = sys.argv[:1] + ['-p', str(port), '-n', hostname, 'demo=' + home]
2837
bcee075321fc patching roundup_server.RoundupRequestHandler class directly...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2783
diff changeset
141 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
142
4129
481cc919fda8 Allow command-line arguments for more flexible demo setup.
Stefan Seefeld <stefan@seefeld.name>
parents: 4069
diff changeset
143
481cc919fda8 Allow command-line arguments for more flexible demo setup.
Stefan Seefeld <stefan@seefeld.name>
parents: 4069
diff changeset
144 def usage(msg = ''):
481cc919fda8 Allow command-line arguments for more flexible demo setup.
Stefan Seefeld <stefan@seefeld.name>
parents: 4069
diff changeset
145
481cc919fda8 Allow command-line arguments for more flexible demo setup.
Stefan Seefeld <stefan@seefeld.name>
parents: 4069
diff changeset
146 if msg: print msg
481cc919fda8 Allow command-line arguments for more flexible demo setup.
Stefan Seefeld <stefan@seefeld.name>
parents: 4069
diff changeset
147 print 'Usage: %s [options] [nuke]'%sys.argv[0]
481cc919fda8 Allow command-line arguments for more flexible demo setup.
Stefan Seefeld <stefan@seefeld.name>
parents: 4069
diff changeset
148 print """
4733
a0654b1283a4 demo: Make tracker home configurable.
anatoly techtonik <techtonik@gmail.com>
parents: 4729
diff changeset
149 Run a demo server. Config and database files are created
a0654b1283a4 demo: Make tracker home configurable.
anatoly techtonik <techtonik@gmail.com>
parents: 4729
diff changeset
150 in %(datadir)s/ subdirectory of %(script)s dir.
4863
9db31cba6e0b Minor: demo.py usage message improved: explains "nuke" now.
Bernhard Reiter <bernhard@intevation.de>
parents: 4764
diff changeset
151
9db31cba6e0b Minor: demo.py usage message improved: explains "nuke" now.
Bernhard Reiter <bernhard@intevation.de>
parents: 4764
diff changeset
152 'nuke' will re-initialize the demo instance, deleting the old data.
9db31cba6e0b Minor: demo.py usage message improved: explains "nuke" now.
Bernhard Reiter <bernhard@intevation.de>
parents: 4764
diff changeset
153
4129
481cc919fda8 Allow command-line arguments for more flexible demo setup.
Stefan Seefeld <stefan@seefeld.name>
parents: 4069
diff changeset
154 Options:
481cc919fda8 Allow command-line arguments for more flexible demo setup.
Stefan Seefeld <stefan@seefeld.name>
parents: 4069
diff changeset
155 -h -- print this help message
481cc919fda8 Allow command-line arguments for more flexible demo setup.
Stefan Seefeld <stefan@seefeld.name>
parents: 4069
diff changeset
156 -t template -- specify the tracker template to use
481cc919fda8 Allow command-line arguments for more flexible demo setup.
Stefan Seefeld <stefan@seefeld.name>
parents: 4069
diff changeset
157 -b backend -- specify the database backend to use
4733
a0654b1283a4 demo: Make tracker home configurable.
anatoly techtonik <techtonik@gmail.com>
parents: 4729
diff changeset
158 """ % dict(script=sys.argv[0], datadir=TRACKER_HOME)
4129
481cc919fda8 Allow command-line arguments for more flexible demo setup.
Stefan Seefeld <stefan@seefeld.name>
parents: 4069
diff changeset
159
481cc919fda8 Allow command-line arguments for more flexible demo setup.
Stefan Seefeld <stefan@seefeld.name>
parents: 4069
diff changeset
160
481cc919fda8 Allow command-line arguments for more flexible demo setup.
Stefan Seefeld <stefan@seefeld.name>
parents: 4069
diff changeset
161 def main():
2775
2907abb10e55 rearranged to use the code in roundup-demo script.
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2727
diff changeset
162 """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
163
2775
2907abb10e55 rearranged to use the code in roundup-demo script.
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2727
diff changeset
164 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
165 """
4129
481cc919fda8 Allow command-line arguments for more flexible demo setup.
Stefan Seefeld <stefan@seefeld.name>
parents: 4069
diff changeset
166
481cc919fda8 Allow command-line arguments for more flexible demo setup.
Stefan Seefeld <stefan@seefeld.name>
parents: 4069
diff changeset
167 try:
481cc919fda8 Allow command-line arguments for more flexible demo setup.
Stefan Seefeld <stefan@seefeld.name>
parents: 4069
diff changeset
168 opts, args = getopt.getopt(sys.argv[1:], 't:b:h')
481cc919fda8 Allow command-line arguments for more flexible demo setup.
Stefan Seefeld <stefan@seefeld.name>
parents: 4069
diff changeset
169 except getopt.GetoptError, e:
481cc919fda8 Allow command-line arguments for more flexible demo setup.
Stefan Seefeld <stefan@seefeld.name>
parents: 4069
diff changeset
170 usage(str(e))
481cc919fda8 Allow command-line arguments for more flexible demo setup.
Stefan Seefeld <stefan@seefeld.name>
parents: 4069
diff changeset
171 return 1
4729
3fa74b99d42d Fix `demo -h` didn't work with existing demo, and
anatoly techtonik <techtonik@gmail.com>
parents: 4715
diff changeset
172 for opt, arg in opts:
3fa74b99d42d Fix `demo -h` didn't work with existing demo, and
anatoly techtonik <techtonik@gmail.com>
parents: 4715
diff changeset
173 if opt == '-h':
3fa74b99d42d Fix `demo -h` didn't work with existing demo, and
anatoly techtonik <techtonik@gmail.com>
parents: 4715
diff changeset
174 usage()
3fa74b99d42d Fix `demo -h` didn't work with existing demo, and
anatoly techtonik <techtonik@gmail.com>
parents: 4715
diff changeset
175 return 0
4129
481cc919fda8 Allow command-line arguments for more flexible demo setup.
Stefan Seefeld <stefan@seefeld.name>
parents: 4069
diff changeset
176
4733
a0654b1283a4 demo: Make tracker home configurable.
anatoly techtonik <techtonik@gmail.com>
parents: 4729
diff changeset
177 home = os.path.abspath(TRACKER_HOME)
4129
481cc919fda8 Allow command-line arguments for more flexible demo setup.
Stefan Seefeld <stefan@seefeld.name>
parents: 4069
diff changeset
178 nuke = args and args[0] == 'nuke'
481cc919fda8 Allow command-line arguments for more flexible demo setup.
Stefan Seefeld <stefan@seefeld.name>
parents: 4069
diff changeset
179 if not os.path.exists(home) or nuke:
481cc919fda8 Allow command-line arguments for more flexible demo setup.
Stefan Seefeld <stefan@seefeld.name>
parents: 4069
diff changeset
180 backend = 'anydbm'
481cc919fda8 Allow command-line arguments for more flexible demo setup.
Stefan Seefeld <stefan@seefeld.name>
parents: 4069
diff changeset
181 template = 'classic'
481cc919fda8 Allow command-line arguments for more flexible demo setup.
Stefan Seefeld <stefan@seefeld.name>
parents: 4069
diff changeset
182 for opt, arg in opts:
4729
3fa74b99d42d Fix `demo -h` didn't work with existing demo, and
anatoly techtonik <techtonik@gmail.com>
parents: 4715
diff changeset
183 if opt == '-t':
4129
481cc919fda8 Allow command-line arguments for more flexible demo setup.
Stefan Seefeld <stefan@seefeld.name>
parents: 4069
diff changeset
184 template = arg
481cc919fda8 Allow command-line arguments for more flexible demo setup.
Stefan Seefeld <stefan@seefeld.name>
parents: 4069
diff changeset
185 elif opt == '-b':
481cc919fda8 Allow command-line arguments for more flexible demo setup.
Stefan Seefeld <stefan@seefeld.name>
parents: 4069
diff changeset
186 backend = arg
481cc919fda8 Allow command-line arguments for more flexible demo setup.
Stefan Seefeld <stefan@seefeld.name>
parents: 4069
diff changeset
187 if (len(args) > 1 or
481cc919fda8 Allow command-line arguments for more flexible demo setup.
Stefan Seefeld <stefan@seefeld.name>
parents: 4069
diff changeset
188 (len(args) == 1 and args[0] != 'nuke')):
481cc919fda8 Allow command-line arguments for more flexible demo setup.
Stefan Seefeld <stefan@seefeld.name>
parents: 4069
diff changeset
189 usage()
481cc919fda8 Allow command-line arguments for more flexible demo setup.
Stefan Seefeld <stefan@seefeld.name>
parents: 4069
diff changeset
190 return 1
481cc919fda8 Allow command-line arguments for more flexible demo setup.
Stefan Seefeld <stefan@seefeld.name>
parents: 4069
diff changeset
191
4733
a0654b1283a4 demo: Make tracker home configurable.
anatoly techtonik <techtonik@gmail.com>
parents: 4729
diff changeset
192 print "Initializing demo instance in:\n %s" % home
4129
481cc919fda8 Allow command-line arguments for more flexible demo setup.
Stefan Seefeld <stefan@seefeld.name>
parents: 4069
diff changeset
193 install_demo(home, backend, template)
481cc919fda8 Allow command-line arguments for more flexible demo setup.
Stefan Seefeld <stefan@seefeld.name>
parents: 4069
diff changeset
194 elif opts:
481cc919fda8 Allow command-line arguments for more flexible demo setup.
Stefan Seefeld <stefan@seefeld.name>
parents: 4069
diff changeset
195 print "Error: Arguments are not allowed when running an existing demo."
481cc919fda8 Allow command-line arguments for more flexible demo setup.
Stefan Seefeld <stefan@seefeld.name>
parents: 4069
diff changeset
196 print " Use the 'nuke' command to start over."
481cc919fda8 Allow command-line arguments for more flexible demo setup.
Stefan Seefeld <stefan@seefeld.name>
parents: 4069
diff changeset
197 sys.exit(1)
481cc919fda8 Allow command-line arguments for more flexible demo setup.
Stefan Seefeld <stefan@seefeld.name>
parents: 4069
diff changeset
198
2775
2907abb10e55 rearranged to use the code in roundup-demo script.
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2727
diff changeset
199 run_demo(home)
1640
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
200
4129
481cc919fda8 Allow command-line arguments for more flexible demo setup.
Stefan Seefeld <stefan@seefeld.name>
parents: 4069
diff changeset
201
1640
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
202 if __name__ == '__main__':
4129
481cc919fda8 Allow command-line arguments for more flexible demo setup.
Stefan Seefeld <stefan@seefeld.name>
parents: 4069
diff changeset
203 sys.exit(main())
1640
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
204
2648
fe71e108d998 Main Roundup configuration class renamed to CoreConfig;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2639
diff changeset
205 # vim: set filetype=python sts=4 sw=4 et si :

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