Mercurial > p > roundup > code
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 |
| 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 : |
