Mercurial > p > roundup > code
annotate roundup/demo.py @ 6433:c1d3fbcdbfbd
issue2551142 - Import of retired node ... unique constraint failure.
Title: Import of retired node with username after active node fails
with unique constraint failure.
More fixes needed for mysql and postgresql.
mysql: add unique constraint for (keyvalue, __retired__) when
creating class in the database.
On schema change if class is changed, remove the unique
constraint too.
upgrade version of rdbms database from 5 to 6 to add constraint
to all version 5 databases that were created as version 5
and didn't get the unique constraint. Make no changes
on version 5 databases upgraded from version 4, the upgrade
process to 5 added the constraint. Make no changes
to other databases (sqlite, postgres) during upgrade from
version 5 to 6.
postgres: Handle the exception raised on unique constraint violation.
The exception invalidates the database connection so it
can't be used to recover from the exception.
Added two new database methods:
checkpoint_data - performs a db.commit under postgres
does nothing on other backends
restore_connection_on_error - does a db.rollback on
postgres, does nothing on other
backends
with the rollback() done on the connection I can use the
database connection to fixup the import that failed on the
unique constraint. This makes postgres slower but without the
commit after every imported object, the rollback will delete
all the entries done up to this point.
Trying to figure out how to make the caller do_import batch
and recover from this failure is beyond me.
Also dismissed having to process the export csv file before
importing. Pushing that onto a user just seems wrong. Also
since import/export isn't frequently done the lack of
surprise on having a failing import and reduced
load/frustration for the user seems worth it. Also the import
can be run in verbose mode where it prints out a row as it is
processed, so it may take a while, ut the user can get
feedback.
db_test-base.py: add test for upgrade from 5 to 6.
| author | John Rouillard <rouilj@ieee.org> |
|---|---|
| date | Thu, 10 Jun 2021 12:52:05 -0400 |
| parents | d8d046749b5b |
| children | 5a3a386aa8e7 |
| 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 |
|
2648
fe71e108d998
Main Roundup configuration class renamed to CoreConfig;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2639
diff
changeset
|
42 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
|
43 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
|
44 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
|
45 config['DATABASE'] = 'db' |
|
3549
f6719836e521
allow dispname to be passed to renderWith [SF#1424587]
Richard Jones <richard@users.sourceforge.net>
parents:
2881
diff
changeset
|
46 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
|
47 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
|
48 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
|
49 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
|
50 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
|
51 config['RDBMS_NAME'] = 'rounduptest' |
|
2167
4dafc87a0113
better support for demoing mysql/postgresql
Richard Jones <richard@users.sourceforge.net>
parents:
2104
diff
changeset
|
52 |
|
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
|
53 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
|
54 |
|
4734
c67c925e4037
demo: Remove tracker home completely when nuking. This erases
anatoly techtonik <techtonik@gmail.com>
parents:
4733
diff
changeset
|
55 # 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
|
56 if os.path.exists(home): |
|
c67c925e4037
demo: Remove tracker home completely when nuking. This erases
anatoly techtonik <techtonik@gmail.com>
parents:
4733
diff
changeset
|
57 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
|
58 # 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
|
59 # 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
|
60 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
|
61 shutil.rmtree(home) |
|
c67c925e4037
demo: Remove tracker home completely when nuking. This erases
anatoly techtonik <techtonik@gmail.com>
parents:
4733
diff
changeset
|
62 else: |
|
5247
7f00a47b3559
Make demo.py run under either Python 2 or 3.
Eric S. Raymond <esr@thyrsus.com>
parents:
5070
diff
changeset
|
63 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
|
64 print(" %s" % home) |
|
4734
c67c925e4037
demo: Remove tracker home completely when nuking. This erases
anatoly techtonik <techtonik@gmail.com>
parents:
4733
diff
changeset
|
65 sys.exit(1) |
|
2167
4dafc87a0113
better support for demoing mysql/postgresql
Richard Jones <richard@users.sourceforge.net>
parents:
2104
diff
changeset
|
66 |
|
4129
481cc919fda8
Allow command-line arguments for more flexible demo setup.
Stefan Seefeld <stefan@seefeld.name>
parents:
4069
diff
changeset
|
67 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
|
68 init.install(home, template_dir) |
|
1640
d0b29215aa44
pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
69 # 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
|
70 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
|
71 if os.path.exists(nosyreaction): |
|
d81ebe49a6ef
Adjust to allow to run the 'minimal' tracker, too.
Stefan Seefeld <stefan@seefeld.name>
parents:
4129
diff
changeset
|
72 os.remove(nosyreaction) |
|
d81ebe49a6ef
Adjust to allow to run the 'minimal' tracker, too.
Stefan Seefeld <stefan@seefeld.name>
parents:
4129
diff
changeset
|
73 nosyreaction += 'c' |
|
d81ebe49a6ef
Adjust to allow to run the 'minimal' tracker, too.
Stefan Seefeld <stefan@seefeld.name>
parents:
4129
diff
changeset
|
74 if os.path.exists(nosyreaction): |
|
d81ebe49a6ef
Adjust to allow to run the 'minimal' tracker, too.
Stefan Seefeld <stefan@seefeld.name>
parents:
4129
diff
changeset
|
75 os.remove(nosyreaction) |
|
1640
d0b29215aa44
pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
76 |
|
d0b29215aa44
pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
77 # 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
|
78 hostname = 'localhost' |
|
1640
d0b29215aa44
pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
79 # pick a fairly odd, random port |
|
d0b29215aa44
pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
80 port = 8917 |
|
d0b29215aa44
pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
81 while 1: |
|
6069
d8d046749b5b
flake8 whitespace fixes; remove unused import backends
John Rouillard <rouilj@ieee.org>
parents:
5247
diff
changeset
|
82 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
|
83 s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) |
|
d0b29215aa44
pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
84 s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) |
|
d0b29215aa44
pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
85 try: |
|
d0b29215aa44
pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
86 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
|
87 except socket.error as e: |
|
1640
d0b29215aa44
pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
88 if not hasattr(e, 'args') or e.args[0] != errno.ECONNREFUSED: |
|
d0b29215aa44
pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
89 raise |
|
5247
7f00a47b3559
Make demo.py run under either Python 2 or 3.
Eric S. Raymond <esr@thyrsus.com>
parents:
5070
diff
changeset
|
90 print('should be ok.') |
|
1640
d0b29215aa44
pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
91 break |
|
d0b29215aa44
pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
92 else: |
|
d0b29215aa44
pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
93 s.close() |
|
5247
7f00a47b3559
Make demo.py run under either Python 2 or 3.
Eric S. Raymond <esr@thyrsus.com>
parents:
5070
diff
changeset
|
94 print('already in use.') |
|
1640
d0b29215aa44
pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
95 port += 100 |
|
6069
d8d046749b5b
flake8 whitespace fixes; remove unused import backends
John Rouillard <rouilj@ieee.org>
parents:
5247
diff
changeset
|
96 config['TRACKER_WEB'] = 'http://%s:%s/demo/' % (hostname, port) |
|
1640
d0b29215aa44
pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
97 |
|
d0b29215aa44
pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
98 # write the config |
|
2649
1df7d4a41da4
Buncha stuff (sorry about the large checkin):
Richard Jones <richard@users.sourceforge.net>
parents:
2648
diff
changeset
|
99 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
|
100 # 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
|
101 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
|
102 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
|
103 if template == 'jinja2': |
|
fd90ad41d34d
- Update demo.py to be able to run jinja2 template
Pradip Caulagi <caulagi@gmail.com>
parents:
4734
diff
changeset
|
104 config['TEMPLATE_ENGINE'] = 'jinja2' |
|
fd90ad41d34d
- Update demo.py to be able to run jinja2 template
Pradip Caulagi <caulagi@gmail.com>
parents:
4734
diff
changeset
|
105 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
|
106 config.save(os.path.join(home, config.INI_FILE)) |
|
1640
d0b29215aa44
pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
107 |
|
2637
11811b313459
The demo.py script works again using the new configuration system.
Richard Jones <richard@users.sourceforge.net>
parents:
2633
diff
changeset
|
108 # 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
|
109 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
|
110 tracker.init(password.Password('admin')) |
|
1640
d0b29215aa44
pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
111 |
|
d0b29215aa44
pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
112 # add the "demo" user |
|
d0b29215aa44
pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
113 db = tracker.open('admin') |
|
6069
d8d046749b5b
flake8 whitespace fixes; remove unused import backends
John Rouillard <rouilj@ieee.org>
parents:
5247
diff
changeset
|
114 # 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
|
115 # templates. |
|
4715
324cbd9f7d0e
minor cleanup: demo.py: removed superfluous brackets.
Bernhard Reiter <bernhard@intevation.de>
parents:
4713
diff
changeset
|
116 if template == 'minimal': |
|
4135
d81ebe49a6ef
Adjust to allow to run the 'minimal' tracker, too.
Stefan Seefeld <stefan@seefeld.name>
parents:
4129
diff
changeset
|
117 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
|
118 roles='User') |
|
d81ebe49a6ef
Adjust to allow to run the 'minimal' tracker, too.
Stefan Seefeld <stefan@seefeld.name>
parents:
4129
diff
changeset
|
119 else: |
|
d81ebe49a6ef
Adjust to allow to run the 'minimal' tracker, too.
Stefan Seefeld <stefan@seefeld.name>
parents:
4129
diff
changeset
|
120 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
|
121 realname='Demo User', roles='User') |
|
1640
d0b29215aa44
pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
122 db.commit() |
|
d0b29215aa44
pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
123 db.close() |
|
d0b29215aa44
pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
124 |
|
6069
d8d046749b5b
flake8 whitespace fixes; remove unused import backends
John Rouillard <rouilj@ieee.org>
parents:
5247
diff
changeset
|
125 |
|
2775
2907abb10e55
rearranged to use the code in roundup-demo script.
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2727
diff
changeset
|
126 def run_demo(home): |
|
4733
a0654b1283a4
demo: Make tracker home configurable.
anatoly techtonik <techtonik@gmail.com>
parents:
4729
diff
changeset
|
127 """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
|
128 print("Demo Tracker Home:", home) |
|
4764
d273e59b487b
roundup.demo: Use relative tracker home directory
anatoly techtonik <techtonik@gmail.com>
parents:
4763
diff
changeset
|
129 |
|
2775
2907abb10e55
rearranged to use the code in roundup-demo script.
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2727
diff
changeset
|
130 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
|
131 url = cfg["TRACKER_WEB"] |
|
5f62f3dd5aa8
fix: server was always started on default port number.
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2775
diff
changeset
|
132 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
|
133 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
|
134 success_message = '''Server running - connect to: |
|
4602
19490d84802b
demo.py: Fix self-referencing names
anatoly techtonik <techtonik@gmail.com>
parents:
4428
diff
changeset
|
135 %(url)s |
|
1868
1545a36ae887
Use roundup_server script in demo.py to reduce duplication
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents:
1727
diff
changeset
|
136 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
|
137 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
|
138 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
|
139 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
|
140 |
|
4988
c3a647a9f387
Fixes issue2550881 (demo.py: Add pointer how to access demo from remote host.)
Bernhard Reiter <bernhard@intevation.de>
parents:
4889
diff
changeset
|
141 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
|
142 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
|
143 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
|
144 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
|
145 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
|
146 |
|
4733
a0654b1283a4
demo: Make tracker home configurable.
anatoly techtonik <techtonik@gmail.com>
parents:
4729
diff
changeset
|
147 ''' % 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
|
148 |
|
2907abb10e55
rearranged to use the code in roundup-demo script.
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2727
diff
changeset
|
149 # 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
|
150 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
|
151 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
|
152 |
|
4129
481cc919fda8
Allow command-line arguments for more flexible demo setup.
Stefan Seefeld <stefan@seefeld.name>
parents:
4069
diff
changeset
|
153 |
|
6069
d8d046749b5b
flake8 whitespace fixes; remove unused import backends
John Rouillard <rouilj@ieee.org>
parents:
5247
diff
changeset
|
154 def usage(msg=''): |
|
5019
9bb20454f409
demo: Cleaning up the code
anatoly techtonik <techtonik@gmail.com>
parents:
4988
diff
changeset
|
155 if msg: |
|
5247
7f00a47b3559
Make demo.py run under either Python 2 or 3.
Eric S. Raymond <esr@thyrsus.com>
parents:
5070
diff
changeset
|
156 print(msg) |
|
7f00a47b3559
Make demo.py run under either Python 2 or 3.
Eric S. Raymond <esr@thyrsus.com>
parents:
5070
diff
changeset
|
157 print("""\ |
|
5019
9bb20454f409
demo: Cleaning up the code
anatoly techtonik <techtonik@gmail.com>
parents:
4988
diff
changeset
|
158 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
|
159 |
|
5019
9bb20454f409
demo: Cleaning up the code
anatoly techtonik <techtonik@gmail.com>
parents:
4988
diff
changeset
|
160 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
|
161 %(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
|
162 |
|
9db31cba6e0b
Minor: demo.py usage message improved: explains "nuke" now.
Bernhard Reiter <bernhard@intevation.de>
parents:
4764
diff
changeset
|
163 '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
|
164 |
|
4988
c3a647a9f387
Fixes issue2550881 (demo.py: Add pointer how to access demo from remote host.)
Bernhard Reiter <bernhard@intevation.de>
parents:
4889
diff
changeset
|
165 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
|
166 |
|
4129
481cc919fda8
Allow command-line arguments for more flexible demo setup.
Stefan Seefeld <stefan@seefeld.name>
parents:
4069
diff
changeset
|
167 Options: |
|
481cc919fda8
Allow command-line arguments for more flexible demo setup.
Stefan Seefeld <stefan@seefeld.name>
parents:
4069
diff
changeset
|
168 -h -- print this help message |
|
481cc919fda8
Allow command-line arguments for more flexible demo setup.
Stefan Seefeld <stefan@seefeld.name>
parents:
4069
diff
changeset
|
169 -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
|
170 -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
|
171 """ % 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
|
172 |
|
481cc919fda8
Allow command-line arguments for more flexible demo setup.
Stefan Seefeld <stefan@seefeld.name>
parents:
4069
diff
changeset
|
173 |
|
481cc919fda8
Allow command-line arguments for more flexible demo setup.
Stefan Seefeld <stefan@seefeld.name>
parents:
4069
diff
changeset
|
174 def main(): |
|
2775
2907abb10e55
rearranged to use the code in roundup-demo script.
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2727
diff
changeset
|
175 """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
|
176 |
|
2775
2907abb10e55
rearranged to use the code in roundup-demo script.
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2727
diff
changeset
|
177 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
|
178 """ |
|
4129
481cc919fda8
Allow command-line arguments for more flexible demo setup.
Stefan Seefeld <stefan@seefeld.name>
parents:
4069
diff
changeset
|
179 |
|
481cc919fda8
Allow command-line arguments for more flexible demo setup.
Stefan Seefeld <stefan@seefeld.name>
parents:
4069
diff
changeset
|
180 try: |
|
481cc919fda8
Allow command-line arguments for more flexible demo setup.
Stefan Seefeld <stefan@seefeld.name>
parents:
4069
diff
changeset
|
181 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
|
182 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
|
183 usage(str(e)) |
|
481cc919fda8
Allow command-line arguments for more flexible demo setup.
Stefan Seefeld <stefan@seefeld.name>
parents:
4069
diff
changeset
|
184 return 1 |
|
6069
d8d046749b5b
flake8 whitespace fixes; remove unused import backends
John Rouillard <rouilj@ieee.org>
parents:
5247
diff
changeset
|
185 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
|
186 if opt == '-h': |
|
3fa74b99d42d
Fix `demo -h` didn't work with existing demo, and
anatoly techtonik <techtonik@gmail.com>
parents:
4715
diff
changeset
|
187 usage() |
|
3fa74b99d42d
Fix `demo -h` didn't work with existing demo, and
anatoly techtonik <techtonik@gmail.com>
parents:
4715
diff
changeset
|
188 return 0 |
|
4129
481cc919fda8
Allow command-line arguments for more flexible demo setup.
Stefan Seefeld <stefan@seefeld.name>
parents:
4069
diff
changeset
|
189 |
|
4733
a0654b1283a4
demo: Make tracker home configurable.
anatoly techtonik <techtonik@gmail.com>
parents:
4729
diff
changeset
|
190 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
|
191 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
|
192 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
|
193 backend = 'anydbm' |
|
481cc919fda8
Allow command-line arguments for more flexible demo setup.
Stefan Seefeld <stefan@seefeld.name>
parents:
4069
diff
changeset
|
194 template = 'classic' |
|
481cc919fda8
Allow command-line arguments for more flexible demo setup.
Stefan Seefeld <stefan@seefeld.name>
parents:
4069
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 == '-t': |
|
4129
481cc919fda8
Allow command-line arguments for more flexible demo setup.
Stefan Seefeld <stefan@seefeld.name>
parents:
4069
diff
changeset
|
197 template = arg |
|
481cc919fda8
Allow command-line arguments for more flexible demo setup.
Stefan Seefeld <stefan@seefeld.name>
parents:
4069
diff
changeset
|
198 elif opt == '-b': |
|
481cc919fda8
Allow command-line arguments for more flexible demo setup.
Stefan Seefeld <stefan@seefeld.name>
parents:
4069
diff
changeset
|
199 backend = arg |
|
481cc919fda8
Allow command-line arguments for more flexible demo setup.
Stefan Seefeld <stefan@seefeld.name>
parents:
4069
diff
changeset
|
200 if (len(args) > 1 or |
|
481cc919fda8
Allow command-line arguments for more flexible demo setup.
Stefan Seefeld <stefan@seefeld.name>
parents:
4069
diff
changeset
|
201 (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
|
202 usage() |
|
481cc919fda8
Allow command-line arguments for more flexible demo setup.
Stefan Seefeld <stefan@seefeld.name>
parents:
4069
diff
changeset
|
203 return 1 |
|
481cc919fda8
Allow command-line arguments for more flexible demo setup.
Stefan Seefeld <stefan@seefeld.name>
parents:
4069
diff
changeset
|
204 |
|
5247
7f00a47b3559
Make demo.py run under either Python 2 or 3.
Eric S. Raymond <esr@thyrsus.com>
parents:
5070
diff
changeset
|
205 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
|
206 install_demo(home, backend, template) |
|
481cc919fda8
Allow command-line arguments for more flexible demo setup.
Stefan Seefeld <stefan@seefeld.name>
parents:
4069
diff
changeset
|
207 elif opts: |
|
5247
7f00a47b3559
Make demo.py run under either Python 2 or 3.
Eric S. Raymond <esr@thyrsus.com>
parents:
5070
diff
changeset
|
208 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
|
209 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
|
210 sys.exit(1) |
|
481cc919fda8
Allow command-line arguments for more flexible demo setup.
Stefan Seefeld <stefan@seefeld.name>
parents:
4069
diff
changeset
|
211 |
|
2775
2907abb10e55
rearranged to use the code in roundup-demo script.
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2727
diff
changeset
|
212 run_demo(home) |
|
1640
d0b29215aa44
pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
213 |
|
4129
481cc919fda8
Allow command-line arguments for more flexible demo setup.
Stefan Seefeld <stefan@seefeld.name>
parents:
4069
diff
changeset
|
214 |
|
1640
d0b29215aa44
pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
215 if __name__ == '__main__': |
|
4129
481cc919fda8
Allow command-line arguments for more flexible demo setup.
Stefan Seefeld <stefan@seefeld.name>
parents:
4069
diff
changeset
|
216 sys.exit(main()) |
|
1640
d0b29215aa44
pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
217 |
|
2648
fe71e108d998
Main Roundup configuration class renamed to CoreConfig;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2639
diff
changeset
|
218 # vim: set filetype=python sts=4 sw=4 et si : |
