annotate roundup/demo.py @ 4764:d273e59b487b

roundup.demo: Use relative tracker home directory Introduced in commit a0654b1283a4 when it was not known that source demo.py is copied to roundup.demo during the build phase. demo.py migrated to roundup.demo in the previous commit.
author anatoly techtonik <techtonik@gmail.com>
date Thu, 21 Feb 2013 19:08:40 +0300
parents 57b9f2848cf8
children 9db31cba6e0b
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.
19490d84802b demo.py: Fix self-referencing names
anatoly techtonik <techtonik@gmail.com>
parents: 4428
diff changeset
130 4. Re-initialise the server 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
483c3e335a54 print instructions for modifying demo tracker URL
Justus Pendleton <jpend@users.sourceforge.net>
parents: 3647
diff changeset
132 Demo tracker is set up to be accessed by localhost browser. If you
483c3e335a54 print instructions for modifying demo tracker URL
Justus Pendleton <jpend@users.sourceforge.net>
parents: 3647
diff changeset
133 run demo on a server host, please stop the demo, open file
4733
a0654b1283a4 demo: Make tracker home configurable.
anatoly techtonik <techtonik@gmail.com>
parents: 4729
diff changeset
134 "%(datadir)s/config.ini" with your editor, change the host name in the "web"
3868
483c3e335a54 print instructions for modifying demo tracker URL
Justus Pendleton <jpend@users.sourceforge.net>
parents: 3647
diff changeset
135 option in section "[tracker]", save the file, then re-run the demo
4428
e04f4c060887 clarification (inspired by Toni Meuller)
Richard Jones <richard@users.sourceforge.net>
parents: 4135
diff changeset
136 program. 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
137
4733
a0654b1283a4 demo: Make tracker home configurable.
anatoly techtonik <techtonik@gmail.com>
parents: 4729
diff changeset
138 ''' % 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
139
2907abb10e55 rearranged to use the code in roundup-demo script.
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2727
diff changeset
140 # 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
141 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
142 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
143
4129
481cc919fda8 Allow command-line arguments for more flexible demo setup.
Stefan Seefeld <stefan@seefeld.name>
parents: 4069
diff changeset
144
481cc919fda8 Allow command-line arguments for more flexible demo setup.
Stefan Seefeld <stefan@seefeld.name>
parents: 4069
diff changeset
145 def usage(msg = ''):
481cc919fda8 Allow command-line arguments for more flexible demo setup.
Stefan Seefeld <stefan@seefeld.name>
parents: 4069
diff changeset
146
481cc919fda8 Allow command-line arguments for more flexible demo setup.
Stefan Seefeld <stefan@seefeld.name>
parents: 4069
diff changeset
147 if msg: print msg
481cc919fda8 Allow command-line arguments for more flexible demo setup.
Stefan Seefeld <stefan@seefeld.name>
parents: 4069
diff changeset
148 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
149 print """
4733
a0654b1283a4 demo: Make tracker home configurable.
anatoly techtonik <techtonik@gmail.com>
parents: 4729
diff changeset
150 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
151 in %(datadir)s/ subdirectory of %(script)s dir.
a0654b1283a4 demo: Make tracker home configurable.
anatoly techtonik <techtonik@gmail.com>
parents: 4729
diff changeset
152
4129
481cc919fda8 Allow command-line arguments for more flexible demo setup.
Stefan Seefeld <stefan@seefeld.name>
parents: 4069
diff changeset
153 Options:
481cc919fda8 Allow command-line arguments for more flexible demo setup.
Stefan Seefeld <stefan@seefeld.name>
parents: 4069
diff changeset
154 -h -- print this help message
481cc919fda8 Allow command-line arguments for more flexible demo setup.
Stefan Seefeld <stefan@seefeld.name>
parents: 4069
diff changeset
155 -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
156 -b backend -- specify the database backend to use
4733
a0654b1283a4 demo: Make tracker home configurable.
anatoly techtonik <techtonik@gmail.com>
parents: 4729
diff changeset
157 """ % 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
158
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 def main():
2775
2907abb10e55 rearranged to use the code in roundup-demo script.
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2727
diff changeset
161 """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
162
2775
2907abb10e55 rearranged to use the code in roundup-demo script.
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2727
diff changeset
163 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
164 """
4129
481cc919fda8 Allow command-line arguments for more flexible demo setup.
Stefan Seefeld <stefan@seefeld.name>
parents: 4069
diff changeset
165
481cc919fda8 Allow command-line arguments for more flexible demo setup.
Stefan Seefeld <stefan@seefeld.name>
parents: 4069
diff changeset
166 try:
481cc919fda8 Allow command-line arguments for more flexible demo setup.
Stefan Seefeld <stefan@seefeld.name>
parents: 4069
diff changeset
167 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
168 except getopt.GetoptError, e:
481cc919fda8 Allow command-line arguments for more flexible demo setup.
Stefan Seefeld <stefan@seefeld.name>
parents: 4069
diff changeset
169 usage(str(e))
481cc919fda8 Allow command-line arguments for more flexible demo setup.
Stefan Seefeld <stefan@seefeld.name>
parents: 4069
diff changeset
170 return 1
4729
3fa74b99d42d Fix `demo -h` didn't work with existing demo, and
anatoly techtonik <techtonik@gmail.com>
parents: 4715
diff changeset
171 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
172 if opt == '-h':
3fa74b99d42d Fix `demo -h` didn't work with existing demo, and
anatoly techtonik <techtonik@gmail.com>
parents: 4715
diff changeset
173 usage()
3fa74b99d42d Fix `demo -h` didn't work with existing demo, and
anatoly techtonik <techtonik@gmail.com>
parents: 4715
diff changeset
174 return 0
4129
481cc919fda8 Allow command-line arguments for more flexible demo setup.
Stefan Seefeld <stefan@seefeld.name>
parents: 4069
diff changeset
175
4733
a0654b1283a4 demo: Make tracker home configurable.
anatoly techtonik <techtonik@gmail.com>
parents: 4729
diff changeset
176 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
177 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
178 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
179 backend = 'anydbm'
481cc919fda8 Allow command-line arguments for more flexible demo setup.
Stefan Seefeld <stefan@seefeld.name>
parents: 4069
diff changeset
180 template = 'classic'
481cc919fda8 Allow command-line arguments for more flexible demo setup.
Stefan Seefeld <stefan@seefeld.name>
parents: 4069
diff changeset
181 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
182 if opt == '-t':
4129
481cc919fda8 Allow command-line arguments for more flexible demo setup.
Stefan Seefeld <stefan@seefeld.name>
parents: 4069
diff changeset
183 template = arg
481cc919fda8 Allow command-line arguments for more flexible demo setup.
Stefan Seefeld <stefan@seefeld.name>
parents: 4069
diff changeset
184 elif opt == '-b':
481cc919fda8 Allow command-line arguments for more flexible demo setup.
Stefan Seefeld <stefan@seefeld.name>
parents: 4069
diff changeset
185 backend = arg
481cc919fda8 Allow command-line arguments for more flexible demo setup.
Stefan Seefeld <stefan@seefeld.name>
parents: 4069
diff changeset
186 if (len(args) > 1 or
481cc919fda8 Allow command-line arguments for more flexible demo setup.
Stefan Seefeld <stefan@seefeld.name>
parents: 4069
diff changeset
187 (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
188 usage()
481cc919fda8 Allow command-line arguments for more flexible demo setup.
Stefan Seefeld <stefan@seefeld.name>
parents: 4069
diff changeset
189 return 1
481cc919fda8 Allow command-line arguments for more flexible demo setup.
Stefan Seefeld <stefan@seefeld.name>
parents: 4069
diff changeset
190
4733
a0654b1283a4 demo: Make tracker home configurable.
anatoly techtonik <techtonik@gmail.com>
parents: 4729
diff changeset
191 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
192 install_demo(home, backend, template)
481cc919fda8 Allow command-line arguments for more flexible demo setup.
Stefan Seefeld <stefan@seefeld.name>
parents: 4069
diff changeset
193 elif opts:
481cc919fda8 Allow command-line arguments for more flexible demo setup.
Stefan Seefeld <stefan@seefeld.name>
parents: 4069
diff changeset
194 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
195 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
196 sys.exit(1)
481cc919fda8 Allow command-line arguments for more flexible demo setup.
Stefan Seefeld <stefan@seefeld.name>
parents: 4069
diff changeset
197
2775
2907abb10e55 rearranged to use the code in roundup-demo script.
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2727
diff changeset
198 run_demo(home)
1640
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
199
4129
481cc919fda8 Allow command-line arguments for more flexible demo setup.
Stefan Seefeld <stefan@seefeld.name>
parents: 4069
diff changeset
200
1640
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
201 if __name__ == '__main__':
4129
481cc919fda8 Allow command-line arguments for more flexible demo setup.
Stefan Seefeld <stefan@seefeld.name>
parents: 4069
diff changeset
202 sys.exit(main())
1640
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
203
2648
fe71e108d998 Main Roundup configuration class renamed to CoreConfig;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2639
diff changeset
204 # vim: set filetype=python sts=4 sw=4 et si :

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