annotate demo.py @ 4531:ddff9669361b

Fix matching of incoming email addresses to the alternate_addresses field... ...of a user -- this would match substrings, e.g. if the user has discuss-support@example.com as an alternate email and an incoming mail is addressed to support@example.com this would (wrongly) match. Note: I *think* I've seen this discussed somewhere but couldn't find it, neither in the tracker nor in recent discussions on the mailinglists. So if someone remembers an issue which now should be closed, please tell me :-)
author Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
date Wed, 24 Aug 2011 14:43:52 +0000
parents e04f4c060887
children 19490d84802b
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1640
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
1 #! /usr/bin/env python
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
2 #
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
3 # Copyright (c) 2003 Richard Jones (richard@mechanicalcat.net)
2648
fe71e108d998 Main Roundup configuration class renamed to CoreConfig;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2639
diff changeset
4 #
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
5f62f3dd5aa8 fix: server was always started on default port number.
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2775
diff changeset
8 import socket
5f62f3dd5aa8 fix: server was always started on default port number.
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2775
diff changeset
9 import sys
5f62f3dd5aa8 fix: server was always started on default port number.
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2775
diff changeset
10 import urlparse
1640
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
11 from glob import glob
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
2907abb10e55 rearranged to use the code in roundup-demo script.
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2727
diff changeset
17 def install_demo(home, backend, template):
2907abb10e55 rearranged to use the code in roundup-demo script.
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2727
diff changeset
18 """Install a demo tracker
2907abb10e55 rearranged to use the code in roundup-demo script.
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2727
diff changeset
19
2907abb10e55 rearranged to use the code in roundup-demo script.
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2727
diff changeset
20 Parameters:
2907abb10e55 rearranged to use the code in roundup-demo script.
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2727
diff changeset
21 home:
2907abb10e55 rearranged to use the code in roundup-demo script.
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2727
diff changeset
22 tracker home directory path
2907abb10e55 rearranged to use the code in roundup-demo script.
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2727
diff changeset
23 backend:
2907abb10e55 rearranged to use the code in roundup-demo script.
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2727
diff changeset
24 database backend name
2907abb10e55 rearranged to use the code in roundup-demo script.
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2727
diff changeset
25 template:
4129
481cc919fda8 Allow command-line arguments for more flexible demo setup.
Stefan Seefeld <stefan@seefeld.name>
parents: 4069
diff changeset
26 tracker template
2775
2907abb10e55 rearranged to use the code in roundup-demo script.
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2727
diff changeset
27
2907abb10e55 rearranged to use the code in roundup-demo script.
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2727
diff changeset
28 """
4129
481cc919fda8 Allow command-line arguments for more flexible demo setup.
Stefan Seefeld <stefan@seefeld.name>
parents: 4069
diff changeset
29
2775
2907abb10e55 rearranged to use the code in roundup-demo script.
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2727
diff changeset
30 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
31
11811b313459 The demo.py script works again using the new configuration system.
Richard Jones <richard@users.sourceforge.net>
parents: 2633
diff changeset
32 # 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
33 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
34 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
35 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
36 config['DATABASE'] = 'db'
3549
f6719836e521 allow dispname to be passed to renderWith [SF#1424587]
Richard Jones <richard@users.sourceforge.net>
parents: 2881
diff changeset
37 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
38 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
39 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
40 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
41 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
42 config['RDBMS_NAME'] = 'rounduptest'
2167
4dafc87a0113 better support for demoing mysql/postgresql
Richard Jones <richard@users.sourceforge.net>
parents: 2104
diff changeset
43
4dafc87a0113 better support for demoing mysql/postgresql
Richard Jones <richard@users.sourceforge.net>
parents: 2104
diff changeset
44 # see if we have further db nuking to perform
2856
adec352e2ce0 don't try to import all backends in backends.__init__ unless we *want* to
Richard Jones <richard@users.sourceforge.net>
parents: 2837
diff changeset
45 module = backends.get_backend(backend)
2637
11811b313459 The demo.py script works again using the new configuration system.
Richard Jones <richard@users.sourceforge.net>
parents: 2633
diff changeset
46 if module.db_exists(config):
11811b313459 The demo.py script works again using the new configuration system.
Richard Jones <richard@users.sourceforge.net>
parents: 2633
diff changeset
47 module.db_nuke(config)
2167
4dafc87a0113 better support for demoing mysql/postgresql
Richard Jones <richard@users.sourceforge.net>
parents: 2104
diff changeset
48
4129
481cc919fda8 Allow command-line arguments for more flexible demo setup.
Stefan Seefeld <stefan@seefeld.name>
parents: 4069
diff changeset
49 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
50 init.install(home, template_dir)
1640
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
51 # 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
52 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
53 if os.path.exists(nosyreaction):
d81ebe49a6ef Adjust to allow to run the 'minimal' tracker, too.
Stefan Seefeld <stefan@seefeld.name>
parents: 4129
diff changeset
54 os.remove(nosyreaction)
d81ebe49a6ef Adjust to allow to run the 'minimal' tracker, too.
Stefan Seefeld <stefan@seefeld.name>
parents: 4129
diff changeset
55 nosyreaction += 'c'
d81ebe49a6ef Adjust to allow to run the 'minimal' tracker, too.
Stefan Seefeld <stefan@seefeld.name>
parents: 4129
diff changeset
56 if os.path.exists(nosyreaction):
d81ebe49a6ef Adjust to allow to run the 'minimal' tracker, too.
Stefan Seefeld <stefan@seefeld.name>
parents: 4129
diff changeset
57 os.remove(nosyreaction)
2104
f376437cd35c more metakit fixes
Richard Jones <richard@users.sourceforge.net>
parents: 2100
diff changeset
58 init.write_select_db(home, backend)
1640
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
59
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
60 # 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
61 hostname = 'localhost'
1640
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
62 # pick a fairly odd, random port
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
63 port = 8917
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
64 while 1:
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
65 print 'Trying to set up web server on port %d ...'%port,
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
66 s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
67 s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
68 try:
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
69 s.connect((hostname, port))
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
70 except socket.error, e:
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
71 if not hasattr(e, 'args') or e.args[0] != errno.ECONNREFUSED:
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
72 raise
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
73 print 'should be ok.'
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
74 break
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
75 else:
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
76 s.close()
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
77 print 'already in use.'
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
78 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
79 config['TRACKER_WEB'] = 'http://%s:%s/demo/'%(hostname, port)
1640
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
80
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
81 # write the config
2649
1df7d4a41da4 Buncha stuff (sorry about the large checkin):
Richard Jones <richard@users.sourceforge.net>
parents: 2648
diff changeset
82 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
83 config.save(os.path.join(home, config.INI_FILE))
1640
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
84
2637
11811b313459 The demo.py script works again using the new configuration system.
Richard Jones <richard@users.sourceforge.net>
parents: 2633
diff changeset
85 # 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
86 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
87 tracker.init(password.Password('admin'))
1640
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
88
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
89 # add the "demo" user
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
90 db = tracker.open('admin')
4135
d81ebe49a6ef Adjust to allow to run the 'minimal' tracker, too.
Stefan Seefeld <stefan@seefeld.name>
parents: 4129
diff changeset
91 # FIXME: Move tracker-specific demo initialization into the tracker templates.
d81ebe49a6ef Adjust to allow to run the 'minimal' tracker, too.
Stefan Seefeld <stefan@seefeld.name>
parents: 4129
diff changeset
92 if (template == 'minimal'):
d81ebe49a6ef Adjust to allow to run the 'minimal' tracker, too.
Stefan Seefeld <stefan@seefeld.name>
parents: 4129
diff changeset
93 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
94 roles='User')
d81ebe49a6ef Adjust to allow to run the 'minimal' tracker, too.
Stefan Seefeld <stefan@seefeld.name>
parents: 4129
diff changeset
95 else:
d81ebe49a6ef Adjust to allow to run the 'minimal' tracker, too.
Stefan Seefeld <stefan@seefeld.name>
parents: 4129
diff changeset
96 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
97 realname='Demo User', roles='User')
1640
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
98 db.commit()
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
99 db.close()
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
100
2775
2907abb10e55 rearranged to use the code in roundup-demo script.
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2727
diff changeset
101 def run_demo(home):
2907abb10e55 rearranged to use the code in roundup-demo script.
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2727
diff changeset
102 """Run the demo tracker installed in ``home``"""
2907abb10e55 rearranged to use the code in roundup-demo script.
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2727
diff changeset
103 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
104 url = cfg["TRACKER_WEB"]
5f62f3dd5aa8 fix: server was always started on default port number.
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2775
diff changeset
105 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
106 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
107 success_message = '''Server running - connect to:
1545a36ae887 Use roundup_server script in demo.py to reduce duplication
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents: 1727
diff changeset
108 %s
1545a36ae887 Use roundup_server script in demo.py to reduce duplication
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents: 1727
diff changeset
109 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
110 2. Hit Control-C to stop the server.
3647
d4112ddfc0bb doc fixes
Richard Jones <richard@users.sourceforge.net>
parents: 3549
diff changeset
111 3. Re-start the server by running "roundup-demo" again.
d4112ddfc0bb doc fixes
Richard Jones <richard@users.sourceforge.net>
parents: 3549
diff changeset
112 4. Re-initialise the server by running "roundup-demo nuke".
3868
483c3e335a54 print instructions for modifying demo tracker URL
Justus Pendleton <jpend@users.sourceforge.net>
parents: 3647
diff changeset
113
483c3e335a54 print instructions for modifying demo tracker URL
Justus Pendleton <jpend@users.sourceforge.net>
parents: 3647
diff changeset
114 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
115 run demo on a server host, please stop the demo, open file
483c3e335a54 print instructions for modifying demo tracker URL
Justus Pendleton <jpend@users.sourceforge.net>
parents: 3647
diff changeset
116 "demo/config.ini" with your editor, change the host name in the "web"
483c3e335a54 print instructions for modifying demo tracker URL
Justus Pendleton <jpend@users.sourceforge.net>
parents: 3647
diff changeset
117 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
118 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
119
2783
5f62f3dd5aa8 fix: server was always started on default port number.
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2775
diff changeset
120 ''' % url
2775
2907abb10e55 rearranged to use the code in roundup-demo script.
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2727
diff changeset
121
2907abb10e55 rearranged to use the code in roundup-demo script.
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2727
diff changeset
122 # disable command line processing in roundup_server
2837
bcee075321fc patching roundup_server.RoundupRequestHandler class directly...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2783
diff changeset
123 sys.argv = sys.argv[:1] + ['-p', str(port), 'demo=' + home]
bcee075321fc patching roundup_server.RoundupRequestHandler class directly...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2783
diff changeset
124 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
125
4129
481cc919fda8 Allow command-line arguments for more flexible demo setup.
Stefan Seefeld <stefan@seefeld.name>
parents: 4069
diff changeset
126
481cc919fda8 Allow command-line arguments for more flexible demo setup.
Stefan Seefeld <stefan@seefeld.name>
parents: 4069
diff changeset
127 def usage(msg = ''):
481cc919fda8 Allow command-line arguments for more flexible demo setup.
Stefan Seefeld <stefan@seefeld.name>
parents: 4069
diff changeset
128
481cc919fda8 Allow command-line arguments for more flexible demo setup.
Stefan Seefeld <stefan@seefeld.name>
parents: 4069
diff changeset
129 if msg: print msg
481cc919fda8 Allow command-line arguments for more flexible demo setup.
Stefan Seefeld <stefan@seefeld.name>
parents: 4069
diff changeset
130 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
131 print """
481cc919fda8 Allow command-line arguments for more flexible demo setup.
Stefan Seefeld <stefan@seefeld.name>
parents: 4069
diff changeset
132 Options:
481cc919fda8 Allow command-line arguments for more flexible demo setup.
Stefan Seefeld <stefan@seefeld.name>
parents: 4069
diff changeset
133 -h -- print this help message
481cc919fda8 Allow command-line arguments for more flexible demo setup.
Stefan Seefeld <stefan@seefeld.name>
parents: 4069
diff changeset
134 -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
135 -b backend -- specify the database backend to use
481cc919fda8 Allow command-line arguments for more flexible demo setup.
Stefan Seefeld <stefan@seefeld.name>
parents: 4069
diff changeset
136 """
481cc919fda8 Allow command-line arguments for more flexible demo setup.
Stefan Seefeld <stefan@seefeld.name>
parents: 4069
diff changeset
137
481cc919fda8 Allow command-line arguments for more flexible demo setup.
Stefan Seefeld <stefan@seefeld.name>
parents: 4069
diff changeset
138
481cc919fda8 Allow command-line arguments for more flexible demo setup.
Stefan Seefeld <stefan@seefeld.name>
parents: 4069
diff changeset
139 def main():
2775
2907abb10e55 rearranged to use the code in roundup-demo script.
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2727
diff changeset
140 """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
141
2775
2907abb10e55 rearranged to use the code in roundup-demo script.
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2727
diff changeset
142 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
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 try:
481cc919fda8 Allow command-line arguments for more flexible demo setup.
Stefan Seefeld <stefan@seefeld.name>
parents: 4069
diff changeset
146 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
147 except getopt.GetoptError, e:
481cc919fda8 Allow command-line arguments for more flexible demo setup.
Stefan Seefeld <stefan@seefeld.name>
parents: 4069
diff changeset
148 usage(str(e))
481cc919fda8 Allow command-line arguments for more flexible demo setup.
Stefan Seefeld <stefan@seefeld.name>
parents: 4069
diff changeset
149 return 1
481cc919fda8 Allow command-line arguments for more flexible demo setup.
Stefan Seefeld <stefan@seefeld.name>
parents: 4069
diff changeset
150
2775
2907abb10e55 rearranged to use the code in roundup-demo script.
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2727
diff changeset
151 home = os.path.abspath('demo')
4129
481cc919fda8 Allow command-line arguments for more flexible demo setup.
Stefan Seefeld <stefan@seefeld.name>
parents: 4069
diff changeset
152 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
153 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
154 backend = 'anydbm'
481cc919fda8 Allow command-line arguments for more flexible demo setup.
Stefan Seefeld <stefan@seefeld.name>
parents: 4069
diff changeset
155 template = 'classic'
481cc919fda8 Allow command-line arguments for more flexible demo setup.
Stefan Seefeld <stefan@seefeld.name>
parents: 4069
diff changeset
156 for opt, arg in opts:
481cc919fda8 Allow command-line arguments for more flexible demo setup.
Stefan Seefeld <stefan@seefeld.name>
parents: 4069
diff changeset
157 if opt == '-h':
481cc919fda8 Allow command-line arguments for more flexible demo setup.
Stefan Seefeld <stefan@seefeld.name>
parents: 4069
diff changeset
158 usage()
481cc919fda8 Allow command-line arguments for more flexible demo setup.
Stefan Seefeld <stefan@seefeld.name>
parents: 4069
diff changeset
159 return 0
481cc919fda8 Allow command-line arguments for more flexible demo setup.
Stefan Seefeld <stefan@seefeld.name>
parents: 4069
diff changeset
160 elif opt == '-t':
481cc919fda8 Allow command-line arguments for more flexible demo setup.
Stefan Seefeld <stefan@seefeld.name>
parents: 4069
diff changeset
161 template = arg
481cc919fda8 Allow command-line arguments for more flexible demo setup.
Stefan Seefeld <stefan@seefeld.name>
parents: 4069
diff changeset
162 elif opt == '-b':
481cc919fda8 Allow command-line arguments for more flexible demo setup.
Stefan Seefeld <stefan@seefeld.name>
parents: 4069
diff changeset
163 backend = arg
481cc919fda8 Allow command-line arguments for more flexible demo setup.
Stefan Seefeld <stefan@seefeld.name>
parents: 4069
diff changeset
164 if (len(args) > 1 or
481cc919fda8 Allow command-line arguments for more flexible demo setup.
Stefan Seefeld <stefan@seefeld.name>
parents: 4069
diff changeset
165 (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
166 usage()
481cc919fda8 Allow command-line arguments for more flexible demo setup.
Stefan Seefeld <stefan@seefeld.name>
parents: 4069
diff changeset
167 return 1
481cc919fda8 Allow command-line arguments for more flexible demo setup.
Stefan Seefeld <stefan@seefeld.name>
parents: 4069
diff changeset
168
481cc919fda8 Allow command-line arguments for more flexible demo setup.
Stefan Seefeld <stefan@seefeld.name>
parents: 4069
diff changeset
169 install_demo(home, backend, template)
481cc919fda8 Allow command-line arguments for more flexible demo setup.
Stefan Seefeld <stefan@seefeld.name>
parents: 4069
diff changeset
170 elif opts:
481cc919fda8 Allow command-line arguments for more flexible demo setup.
Stefan Seefeld <stefan@seefeld.name>
parents: 4069
diff changeset
171 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
172 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
173 sys.exit(1)
481cc919fda8 Allow command-line arguments for more flexible demo setup.
Stefan Seefeld <stefan@seefeld.name>
parents: 4069
diff changeset
174
2775
2907abb10e55 rearranged to use the code in roundup-demo script.
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2727
diff changeset
175 run_demo(home)
1640
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
176
4129
481cc919fda8 Allow command-line arguments for more flexible demo setup.
Stefan Seefeld <stefan@seefeld.name>
parents: 4069
diff changeset
177
1640
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
178 if __name__ == '__main__':
4129
481cc919fda8 Allow command-line arguments for more flexible demo setup.
Stefan Seefeld <stefan@seefeld.name>
parents: 4069
diff changeset
179 sys.exit(main())
1640
d0b29215aa44 pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
180
2648
fe71e108d998 Main Roundup configuration class renamed to CoreConfig;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2639
diff changeset
181 # vim: set filetype=python sts=4 sw=4 et si :

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