annotate roundup/demo.py @ 6747:d32d43e4a5ba

wsgi can cache tracker instance enabled by feature flag. Patch by Marcus Priesch caches a loaded tracker instance and reuse it for future client sessions. It is enabled by a feature flag in wsgi.py since it arrived during the 2.2.0 beta period. The provided wsgi.py is modified to enable it. Testing is run with flag enabled and disabled. Ralf Schlatterbeck and Marcus tested it on one of their larger more complex trackers and it sped up the response time to a client request by a factor of 3 (270ms down to about 80-85ms).
author John Rouillard <rouilj@ieee.org>
date Sat, 02 Jul 2022 14:04:00 -0400
parents 5a3a386aa8e7
children 7147a4c833e9
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 #
5247
7f00a47b3559 Make demo.py run under either Python 2 or 3.
Eric S. Raymond <esr@thyrsus.com>
parents: 5070
diff changeset
5 from __future__ import print_function
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
4734
c67c925e4037 demo: Remove tracker home completely when nuking. This erases
anatoly techtonik <techtonik@gmail.com>
parents: 4733
diff changeset
9 import shutil
2783
5f62f3dd5aa8 fix: server was always started on default port number.
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2775
diff changeset
10 import socket
5f62f3dd5aa8 fix: server was always started on default port number.
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2775
diff changeset
11 import sys
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
5247
7f00a47b3559 Make demo.py run under either Python 2 or 3.
Eric S. Raymond <esr@thyrsus.com>
parents: 5070
diff changeset
14 try:
7f00a47b3559 Make demo.py run under either Python 2 or 3.
Eric S. Raymond <esr@thyrsus.com>
parents: 5070
diff changeset
15 import urlparse
7f00a47b3559 Make demo.py run under either Python 2 or 3.
Eric S. Raymond <esr@thyrsus.com>
parents: 5070
diff changeset
16 except ImportError:
7f00a47b3559 Make demo.py run under either Python 2 or 3.
Eric S. Raymond <esr@thyrsus.com>
parents: 5070
diff changeset
17 import urllib.parse as urlparse
7f00a47b3559 Make demo.py run under either Python 2 or 3.
Eric S. Raymond <esr@thyrsus.com>
parents: 5070
diff changeset
18
2775
2907abb10e55 rearranged to use the code in roundup-demo script.
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2727
diff changeset
19 from roundup import configuration
2907abb10e55 rearranged to use the code in roundup-demo script.
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2727
diff changeset
20 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
21
4733
a0654b1283a4 demo: Make tracker home configurable.
anatoly techtonik <techtonik@gmail.com>
parents: 4729
diff changeset
22 # 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
23 TRACKER_HOME = os.path.abspath('demo')
4733
a0654b1283a4 demo: Make tracker home configurable.
anatoly techtonik <techtonik@gmail.com>
parents: 4729
diff changeset
24
6069
d8d046749b5b flake8 whitespace fixes; remove unused import backends
John Rouillard <rouilj@ieee.org>
parents: 5247
diff changeset
25
2775
2907abb10e55 rearranged to use the code in roundup-demo script.
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2727
diff changeset
26 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
27 """Install a demo tracker
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 Parameters:
2907abb10e55 rearranged to use the code in roundup-demo script.
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2727
diff changeset
30 home:
2907abb10e55 rearranged to use the code in roundup-demo script.
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2727
diff changeset
31 tracker home directory path
2907abb10e55 rearranged to use the code in roundup-demo script.
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2727
diff changeset
32 backend:
2907abb10e55 rearranged to use the code in roundup-demo script.
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2727
diff changeset
33 database backend name
2907abb10e55 rearranged to use the code in roundup-demo script.
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2727
diff changeset
34 template:
4129
481cc919fda8 Allow command-line arguments for more flexible demo setup.
Stefan Seefeld <stefan@seefeld.name>
parents: 4069
diff changeset
35 tracker template
2775
2907abb10e55 rearranged to use the code in roundup-demo script.
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2727
diff changeset
36
2907abb10e55 rearranged to use the code in roundup-demo script.
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2727
diff changeset
37 """
4129
481cc919fda8 Allow command-line arguments for more flexible demo setup.
Stefan Seefeld <stefan@seefeld.name>
parents: 4069
diff changeset
38
6069
d8d046749b5b flake8 whitespace fixes; remove unused import backends
John Rouillard <rouilj@ieee.org>
parents: 5247
diff changeset
39 from roundup import init, instance, password
2637
11811b313459 The demo.py script works again using the new configuration system.
Richard Jones <richard@users.sourceforge.net>
parents: 2633
diff changeset
40
11811b313459 The demo.py script works again using the new configuration system.
Richard Jones <richard@users.sourceforge.net>
parents: 2633
diff changeset
41 # set up the config for this tracker
6545
5a3a386aa8e7 issue2551179 Load config_ini.ini ... recognize minimal template demo.py
John Rouillard <rouilj@ieee.org>
parents: 6069
diff changeset
42 template_dir = os.path.join('share', 'roundup', 'templates', template)
5a3a386aa8e7 issue2551179 Load config_ini.ini ... recognize minimal template demo.py
John Rouillard <rouilj@ieee.org>
parents: 6069
diff changeset
43
5a3a386aa8e7 issue2551179 Load config_ini.ini ... recognize minimal template demo.py
John Rouillard <rouilj@ieee.org>
parents: 6069
diff changeset
44 # Load optional override ini file. Missing ini file is ignored.
5a3a386aa8e7 issue2551179 Load config_ini.ini ... recognize minimal template demo.py
John Rouillard <rouilj@ieee.org>
parents: 6069
diff changeset
45 template_cfg = configuration.UserConfig(template_dir + "/config_ini.ini")
5a3a386aa8e7 issue2551179 Load config_ini.ini ... recognize minimal template demo.py
John Rouillard <rouilj@ieee.org>
parents: 6069
diff changeset
46 config = configuration.CoreConfig(settings={
5a3a386aa8e7 issue2551179 Load config_ini.ini ... recognize minimal template demo.py
John Rouillard <rouilj@ieee.org>
parents: 6069
diff changeset
47 i.name: i.get() for i in template_cfg.items()
5a3a386aa8e7 issue2551179 Load config_ini.ini ... recognize minimal template demo.py
John Rouillard <rouilj@ieee.org>
parents: 6069
diff changeset
48 })
2637
11811b313459 The demo.py script works again using the new configuration system.
Richard Jones <richard@users.sourceforge.net>
parents: 2633
diff changeset
49 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
50 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
51 config['DATABASE'] = 'db'
3549
f6719836e521 allow dispname to be passed to renderWith [SF#1424587]
Richard Jones <richard@users.sourceforge.net>
parents: 2881
diff changeset
52 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
53 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
54 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
55 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
56 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
57 config['RDBMS_NAME'] = 'rounduptest'
2167
4dafc87a0113 better support for demoing mysql/postgresql
Richard Jones <richard@users.sourceforge.net>
parents: 2104
diff changeset
58
5070
04e48cfc91da fix demo.py after database backend moved from db/backend to config.ini::[rdbms].backend. Note this will have to change if backend location moved to [main].backend (tomatch [main].db).
John Rouillard <rouilj@ieee.org>
parents: 5019
diff changeset
59 config['RDBMS_BACKEND'] = backend
04e48cfc91da fix demo.py after database backend moved from db/backend to config.ini::[rdbms].backend. Note this will have to change if backend location moved to [main].backend (tomatch [main].db).
John Rouillard <rouilj@ieee.org>
parents: 5019
diff changeset
60
4734
c67c925e4037 demo: Remove tracker home completely when nuking. This erases
anatoly techtonik <techtonik@gmail.com>
parents: 4733
diff changeset
61 # 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
62 if os.path.exists(home):
c67c925e4037 demo: Remove tracker home completely when nuking. This erases
anatoly techtonik <techtonik@gmail.com>
parents: 4733
diff changeset
63 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
64 # 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
65 # extensions and detectors
5247
7f00a47b3559 Make demo.py run under either Python 2 or 3.
Eric S. Raymond <esr@thyrsus.com>
parents: 5070
diff changeset
66 print("Nuking directory left from the previous demo instance.")
4734
c67c925e4037 demo: Remove tracker home completely when nuking. This erases
anatoly techtonik <techtonik@gmail.com>
parents: 4733
diff changeset
67 shutil.rmtree(home)
c67c925e4037 demo: Remove tracker home completely when nuking. This erases
anatoly techtonik <techtonik@gmail.com>
parents: 4733
diff changeset
68 else:
5247
7f00a47b3559 Make demo.py run under either Python 2 or 3.
Eric S. Raymond <esr@thyrsus.com>
parents: 5070
diff changeset
69 print("Error: Refusing to nuke non-tracker directory:")
7f00a47b3559 Make demo.py run under either Python 2 or 3.
Eric S. Raymond <esr@thyrsus.com>
parents: 5070
diff changeset
70 print(" %s" % home)
4734
c67c925e4037 demo: Remove tracker home completely when nuking. This erases
anatoly techtonik <techtonik@gmail.com>
parents: 4733
diff changeset
71 sys.exit(1)
2167
4dafc87a0113 better support for demoing mysql/postgresql
Richard Jones <richard@users.sourceforge.net>
parents: 2104
diff changeset
72
4129
481cc919fda8 Allow command-line arguments for more flexible demo setup.
Stefan Seefeld <stefan@seefeld.name>
parents: 4069
diff changeset
73 init.install(home, template_dir)
6545
5a3a386aa8e7 issue2551179 Load config_ini.ini ... recognize minimal template demo.py
John Rouillard <rouilj@ieee.org>
parents: 6069
diff changeset
74 # Remove config_ini.ini file from tracker_home (not template dir).
5a3a386aa8e7 issue2551179 Load config_ini.ini ... recognize minimal template demo.py
John Rouillard <rouilj@ieee.org>
parents: 6069
diff changeset
75 # Ignore file not found - not all templates have
5a3a386aa8e7 issue2551179 Load config_ini.ini ... recognize minimal template demo.py
John Rouillard <rouilj@ieee.org>
parents: 6069
diff changeset
76 # config_ini.ini files.
5a3a386aa8e7 issue2551179 Load config_ini.ini ... recognize minimal template demo.py
John Rouillard <rouilj@ieee.org>
parents: 6069
diff changeset
77 try:
5a3a386aa8e7 issue2551179 Load config_ini.ini ... recognize minimal template demo.py
John Rouillard <rouilj@ieee.org>
parents: 6069
diff changeset
78 os.remove(home + "/config_ini.ini")
5a3a386aa8e7 issue2551179 Load config_ini.ini ... recognize minimal template demo.py
John Rouillard <rouilj@ieee.org>
parents: 6069
diff changeset
79 except OSError as e: # FileNotFound exception under py3
5a3a386aa8e7 issue2551179 Load config_ini.ini ... recognize minimal template demo.py
John Rouillard <rouilj@ieee.org>
parents: 6069
diff changeset
80 if e.errno == 2:
5a3a386aa8e7 issue2551179 Load config_ini.ini ... recognize minimal template demo.py
John Rouillard <rouilj@ieee.org>
parents: 6069
diff changeset
81 pass
5a3a386aa8e7 issue2551179 Load config_ini.ini ... recognize minimal template demo.py
John Rouillard <rouilj@ieee.org>
parents: 6069
diff changeset
82 else:
5a3a386aa8e7 issue2551179 Load config_ini.ini ... recognize minimal template demo.py
John Rouillard <rouilj@ieee.org>
parents: 6069
diff changeset
83 raise
5a3a386aa8e7 issue2551179 Load config_ini.ini ... recognize minimal template demo.py
John Rouillard <rouilj@ieee.org>
parents: 6069
diff changeset
84
1640
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
85 # 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
86 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
87 if os.path.exists(nosyreaction):
d81ebe49a6ef Adjust to allow to run the 'minimal' tracker, too.
Stefan Seefeld <stefan@seefeld.name>
parents: 4129
diff changeset
88 os.remove(nosyreaction)
d81ebe49a6ef Adjust to allow to run the 'minimal' tracker, too.
Stefan Seefeld <stefan@seefeld.name>
parents: 4129
diff changeset
89 nosyreaction += 'c'
d81ebe49a6ef Adjust to allow to run the 'minimal' tracker, too.
Stefan Seefeld <stefan@seefeld.name>
parents: 4129
diff changeset
90 if os.path.exists(nosyreaction):
d81ebe49a6ef Adjust to allow to run the 'minimal' tracker, too.
Stefan Seefeld <stefan@seefeld.name>
parents: 4129
diff changeset
91 os.remove(nosyreaction)
1640
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 # 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
94 hostname = 'localhost'
1640
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
95 # pick a fairly odd, random port
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
96 port = 8917
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
97 while 1:
6069
d8d046749b5b flake8 whitespace fixes; remove unused import backends
John Rouillard <rouilj@ieee.org>
parents: 5247
diff changeset
98 print('Trying to set up web server on port %d ...' % port,)
1640
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
99 s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
100 s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
101 try:
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
102 s.connect((hostname, port))
5247
7f00a47b3559 Make demo.py run under either Python 2 or 3.
Eric S. Raymond <esr@thyrsus.com>
parents: 5070
diff changeset
103 except socket.error as e:
1640
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
104 if not hasattr(e, 'args') or e.args[0] != errno.ECONNREFUSED:
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
105 raise
5247
7f00a47b3559 Make demo.py run under either Python 2 or 3.
Eric S. Raymond <esr@thyrsus.com>
parents: 5070
diff changeset
106 print('should be ok.')
1640
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
107 break
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
108 else:
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
109 s.close()
5247
7f00a47b3559 Make demo.py run under either Python 2 or 3.
Eric S. Raymond <esr@thyrsus.com>
parents: 5070
diff changeset
110 print('already in use.')
1640
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
111 port += 100
6069
d8d046749b5b flake8 whitespace fixes; remove unused import backends
John Rouillard <rouilj@ieee.org>
parents: 5247
diff changeset
112 config['TRACKER_WEB'] = 'http://%s:%s/demo/' % (hostname, port)
1640
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
113
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
114 # write the config
2649
1df7d4a41da4 Buncha stuff (sorry about the large checkin):
Richard Jones <richard@users.sourceforge.net>
parents: 2648
diff changeset
115 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
116 config.save(os.path.join(home, config.INI_FILE))
1640
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
117
2637
11811b313459 The demo.py script works again using the new configuration system.
Richard Jones <richard@users.sourceforge.net>
parents: 2633
diff changeset
118 # 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
119 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
120 tracker.init(password.Password('admin'))
1640
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
121
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
122 # add the "demo" user
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
123 db = tracker.open('admin')
6069
d8d046749b5b flake8 whitespace fixes; remove unused import backends
John Rouillard <rouilj@ieee.org>
parents: 5247
diff changeset
124 # FIXME: Move tracker-specific demo initialization into the tracker
d8d046749b5b flake8 whitespace fixes; remove unused import backends
John Rouillard <rouilj@ieee.org>
parents: 5247
diff changeset
125 # templates.
6545
5a3a386aa8e7 issue2551179 Load config_ini.ini ... recognize minimal template demo.py
John Rouillard <rouilj@ieee.org>
parents: 6069
diff changeset
126 if os.path.basename(template) == 'minimal':
4135
d81ebe49a6ef Adjust to allow to run the 'minimal' tracker, too.
Stefan Seefeld <stefan@seefeld.name>
parents: 4129
diff changeset
127 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
128 roles='User')
d81ebe49a6ef Adjust to allow to run the 'minimal' tracker, too.
Stefan Seefeld <stefan@seefeld.name>
parents: 4129
diff changeset
129 else:
d81ebe49a6ef Adjust to allow to run the 'minimal' tracker, too.
Stefan Seefeld <stefan@seefeld.name>
parents: 4129
diff changeset
130 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
131 realname='Demo User', roles='User')
1640
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
132 db.commit()
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
133 db.close()
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
134
6069
d8d046749b5b flake8 whitespace fixes; remove unused import backends
John Rouillard <rouilj@ieee.org>
parents: 5247
diff changeset
135
2775
2907abb10e55 rearranged to use the code in roundup-demo script.
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2727
diff changeset
136 def run_demo(home):
4733
a0654b1283a4 demo: Make tracker home configurable.
anatoly techtonik <techtonik@gmail.com>
parents: 4729
diff changeset
137 """Run the demo tracker instance from its ``home`` directory"""
5247
7f00a47b3559 Make demo.py run under either Python 2 or 3.
Eric S. Raymond <esr@thyrsus.com>
parents: 5070
diff changeset
138 print("Demo Tracker Home:", home)
4764
d273e59b487b roundup.demo: Use relative tracker home directory
anatoly techtonik <techtonik@gmail.com>
parents: 4763
diff changeset
139
2775
2907abb10e55 rearranged to use the code in roundup-demo script.
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2727
diff changeset
140 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
141 url = cfg["TRACKER_WEB"]
5f62f3dd5aa8 fix: server was always started on default port number.
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2775
diff changeset
142 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
143 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
144 success_message = '''Server running - connect to:
4602
19490d84802b demo.py: Fix self-referencing names
anatoly techtonik <techtonik@gmail.com>
parents: 4428
diff changeset
145 %(url)s
1868
1545a36ae887 Use roundup_server script in demo.py to reduce duplication
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents: 1727
diff changeset
146 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
147 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
148 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
149 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
150
4988
c3a647a9f387 Fixes issue2550881 (demo.py: Add pointer how to access demo from remote host.)
Bernhard Reiter <bernhard@intevation.de>
parents: 4889
diff changeset
151 By default the demo tracker is set up to be accessed from "localhost".
c3a647a9f387 Fixes issue2550881 (demo.py: Add pointer how to access demo from remote host.)
Bernhard Reiter <bernhard@intevation.de>
parents: 4889
diff changeset
152 If you want to run it on a server,
c3a647a9f387 Fixes issue2550881 (demo.py: Add pointer how to access demo from remote host.)
Bernhard Reiter <bernhard@intevation.de>
parents: 4889
diff changeset
153 edit "%(datadir)s/config.ini"
c3a647a9f387 Fixes issue2550881 (demo.py: Add pointer how to access demo from remote host.)
Bernhard Reiter <bernhard@intevation.de>
parents: 4889
diff changeset
154 and set the "web" option in section "[tracker]" to your host name,
c3a647a9f387 Fixes issue2550881 (demo.py: Add pointer how to access demo from remote host.)
Bernhard Reiter <bernhard@intevation.de>
parents: 4889
diff changeset
155 then restart 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
156
4733
a0654b1283a4 demo: Make tracker home configurable.
anatoly techtonik <techtonik@gmail.com>
parents: 4729
diff changeset
157 ''' % 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
158
2907abb10e55 rearranged to use the code in roundup-demo script.
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2727
diff changeset
159 # 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
160 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
161 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
162
4129
481cc919fda8 Allow command-line arguments for more flexible demo setup.
Stefan Seefeld <stefan@seefeld.name>
parents: 4069
diff changeset
163
6069
d8d046749b5b flake8 whitespace fixes; remove unused import backends
John Rouillard <rouilj@ieee.org>
parents: 5247
diff changeset
164 def usage(msg=''):
5019
9bb20454f409 demo: Cleaning up the code
anatoly techtonik <techtonik@gmail.com>
parents: 4988
diff changeset
165 if msg:
5247
7f00a47b3559 Make demo.py run under either Python 2 or 3.
Eric S. Raymond <esr@thyrsus.com>
parents: 5070
diff changeset
166 print(msg)
7f00a47b3559 Make demo.py run under either Python 2 or 3.
Eric S. Raymond <esr@thyrsus.com>
parents: 5070
diff changeset
167 print("""\
5019
9bb20454f409 demo: Cleaning up the code
anatoly techtonik <techtonik@gmail.com>
parents: 4988
diff changeset
168 Usage: %(script)s [options] [nuke]
4129
481cc919fda8 Allow command-line arguments for more flexible demo setup.
Stefan Seefeld <stefan@seefeld.name>
parents: 4069
diff changeset
169
5019
9bb20454f409 demo: Cleaning up the code
anatoly techtonik <techtonik@gmail.com>
parents: 4988
diff changeset
170 Run a demo server. Config and database files are created in
9bb20454f409 demo: Cleaning up the code
anatoly techtonik <techtonik@gmail.com>
parents: 4988
diff changeset
171 %(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
172
9db31cba6e0b Minor: demo.py usage message improved: explains "nuke" now.
Bernhard Reiter <bernhard@intevation.de>
parents: 4764
diff changeset
173 '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
174
4988
c3a647a9f387 Fixes issue2550881 (demo.py: Add pointer how to access demo from remote host.)
Bernhard Reiter <bernhard@intevation.de>
parents: 4889
diff changeset
175 See docs/installation "For The Really Impatient" for more details.
c3a647a9f387 Fixes issue2550881 (demo.py: Add pointer how to access demo from remote host.)
Bernhard Reiter <bernhard@intevation.de>
parents: 4889
diff changeset
176
4129
481cc919fda8 Allow command-line arguments for more flexible demo setup.
Stefan Seefeld <stefan@seefeld.name>
parents: 4069
diff changeset
177 Options:
481cc919fda8 Allow command-line arguments for more flexible demo setup.
Stefan Seefeld <stefan@seefeld.name>
parents: 4069
diff changeset
178 -h -- print this help message
481cc919fda8 Allow command-line arguments for more flexible demo setup.
Stefan Seefeld <stefan@seefeld.name>
parents: 4069
diff changeset
179 -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
180 -b backend -- specify the database backend to use
5247
7f00a47b3559 Make demo.py run under either Python 2 or 3.
Eric S. Raymond <esr@thyrsus.com>
parents: 5070
diff changeset
181 """ % dict(script=sys.argv[0], datadir=TRACKER_HOME+os.sep))
4129
481cc919fda8 Allow command-line arguments for more flexible demo setup.
Stefan Seefeld <stefan@seefeld.name>
parents: 4069
diff changeset
182
481cc919fda8 Allow command-line arguments for more flexible demo setup.
Stefan Seefeld <stefan@seefeld.name>
parents: 4069
diff changeset
183
481cc919fda8 Allow command-line arguments for more flexible demo setup.
Stefan Seefeld <stefan@seefeld.name>
parents: 4069
diff changeset
184 def main():
2775
2907abb10e55 rearranged to use the code in roundup-demo script.
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2727
diff changeset
185 """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
186
2775
2907abb10e55 rearranged to use the code in roundup-demo script.
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2727
diff changeset
187 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
188 """
4129
481cc919fda8 Allow command-line arguments for more flexible demo setup.
Stefan Seefeld <stefan@seefeld.name>
parents: 4069
diff changeset
189
481cc919fda8 Allow command-line arguments for more flexible demo setup.
Stefan Seefeld <stefan@seefeld.name>
parents: 4069
diff changeset
190 try:
481cc919fda8 Allow command-line arguments for more flexible demo setup.
Stefan Seefeld <stefan@seefeld.name>
parents: 4069
diff changeset
191 opts, args = getopt.getopt(sys.argv[1:], 't:b:h')
5247
7f00a47b3559 Make demo.py run under either Python 2 or 3.
Eric S. Raymond <esr@thyrsus.com>
parents: 5070
diff changeset
192 except getopt.GetoptError as e:
4129
481cc919fda8 Allow command-line arguments for more flexible demo setup.
Stefan Seefeld <stefan@seefeld.name>
parents: 4069
diff changeset
193 usage(str(e))
481cc919fda8 Allow command-line arguments for more flexible demo setup.
Stefan Seefeld <stefan@seefeld.name>
parents: 4069
diff changeset
194 return 1
6069
d8d046749b5b flake8 whitespace fixes; remove unused import backends
John Rouillard <rouilj@ieee.org>
parents: 5247
diff changeset
195 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
196 if opt == '-h':
3fa74b99d42d Fix `demo -h` didn't work with existing demo, and
anatoly techtonik <techtonik@gmail.com>
parents: 4715
diff changeset
197 usage()
3fa74b99d42d Fix `demo -h` didn't work with existing demo, and
anatoly techtonik <techtonik@gmail.com>
parents: 4715
diff changeset
198 return 0
4129
481cc919fda8 Allow command-line arguments for more flexible demo setup.
Stefan Seefeld <stefan@seefeld.name>
parents: 4069
diff changeset
199
4733
a0654b1283a4 demo: Make tracker home configurable.
anatoly techtonik <techtonik@gmail.com>
parents: 4729
diff changeset
200 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
201 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
202 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
203 backend = 'anydbm'
481cc919fda8 Allow command-line arguments for more flexible demo setup.
Stefan Seefeld <stefan@seefeld.name>
parents: 4069
diff changeset
204 template = 'classic'
481cc919fda8 Allow command-line arguments for more flexible demo setup.
Stefan Seefeld <stefan@seefeld.name>
parents: 4069
diff changeset
205 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
206 if opt == '-t':
4129
481cc919fda8 Allow command-line arguments for more flexible demo setup.
Stefan Seefeld <stefan@seefeld.name>
parents: 4069
diff changeset
207 template = arg
481cc919fda8 Allow command-line arguments for more flexible demo setup.
Stefan Seefeld <stefan@seefeld.name>
parents: 4069
diff changeset
208 elif opt == '-b':
481cc919fda8 Allow command-line arguments for more flexible demo setup.
Stefan Seefeld <stefan@seefeld.name>
parents: 4069
diff changeset
209 backend = arg
481cc919fda8 Allow command-line arguments for more flexible demo setup.
Stefan Seefeld <stefan@seefeld.name>
parents: 4069
diff changeset
210 if (len(args) > 1 or
481cc919fda8 Allow command-line arguments for more flexible demo setup.
Stefan Seefeld <stefan@seefeld.name>
parents: 4069
diff changeset
211 (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
212 usage()
481cc919fda8 Allow command-line arguments for more flexible demo setup.
Stefan Seefeld <stefan@seefeld.name>
parents: 4069
diff changeset
213 return 1
481cc919fda8 Allow command-line arguments for more flexible demo setup.
Stefan Seefeld <stefan@seefeld.name>
parents: 4069
diff changeset
214
5247
7f00a47b3559 Make demo.py run under either Python 2 or 3.
Eric S. Raymond <esr@thyrsus.com>
parents: 5070
diff changeset
215 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
216 install_demo(home, backend, template)
481cc919fda8 Allow command-line arguments for more flexible demo setup.
Stefan Seefeld <stefan@seefeld.name>
parents: 4069
diff changeset
217 elif opts:
5247
7f00a47b3559 Make demo.py run under either Python 2 or 3.
Eric S. Raymond <esr@thyrsus.com>
parents: 5070
diff changeset
218 print("Error: Arguments are not allowed when running an existing demo.")
7f00a47b3559 Make demo.py run under either Python 2 or 3.
Eric S. Raymond <esr@thyrsus.com>
parents: 5070
diff changeset
219 print(" Use the 'nuke' command to start over.")
4129
481cc919fda8 Allow command-line arguments for more flexible demo setup.
Stefan Seefeld <stefan@seefeld.name>
parents: 4069
diff changeset
220 sys.exit(1)
481cc919fda8 Allow command-line arguments for more flexible demo setup.
Stefan Seefeld <stefan@seefeld.name>
parents: 4069
diff changeset
221
2775
2907abb10e55 rearranged to use the code in roundup-demo script.
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2727
diff changeset
222 run_demo(home)
1640
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
223
4129
481cc919fda8 Allow command-line arguments for more flexible demo setup.
Stefan Seefeld <stefan@seefeld.name>
parents: 4069
diff changeset
224
1640
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
225 if __name__ == '__main__':
4129
481cc919fda8 Allow command-line arguments for more flexible demo setup.
Stefan Seefeld <stefan@seefeld.name>
parents: 4069
diff changeset
226 sys.exit(main())
1640
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
227
2648
fe71e108d998 Main Roundup configuration class renamed to CoreConfig;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2639
diff changeset
228 # vim: set filetype=python sts=4 sw=4 et si :

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