annotate roundup/scripts/roundup_demo.py @ 7968:d7e79f8eb943

issue2551350 - Python changes for 3.12 with roundup 2.3.0 mailer.py Fix due to change in smtplib.SMTP.starttls() signature. As of 3.3 it can use an optional ssl context argument for certificates/keys. In 3.12 it dropped legacy support for specifing cert/key files as arguments and requires a context. I modified Andrew's original patch to initialize SSLContext with ssl.PROTOCOL_TLS_CLIENT. If there is a cert file specified, enable check_hostname - verify that the cert supplied by the server matches the hostname we supplied. If there is no cert file call load_default_certs() Also opened issue2551351 to look into more SMTP ssmtp tightening. We also should have an option in Roundup to use TLS/SSL (smtps) without using starttls. Note that this code is untested by the test suite due to the need to setup an SMTP server with STARTTLS support. issue2551351 has some notes on this.
author John Rouillard <rouilj@ieee.org>
date Wed, 15 May 2024 00:08:05 -0400
parents 05f36a527a45
children 39013eba1aaf
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
2777
baaf90070dc4 instant-gratification script for binary distributions
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
1 #! /usr/bin/env python
baaf90070dc4 instant-gratification script for binary distributions
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
2 #
baaf90070dc4 instant-gratification script for binary distributions
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
3 # Copyright 2004 Richard Jones (richard@mechanicalcat.net)
baaf90070dc4 instant-gratification script for binary distributions
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
4 #
baaf90070dc4 instant-gratification script for binary distributions
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
5
7340
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
6 import argparse
2777
baaf90070dc4 instant-gratification script for binary distributions
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
7 import sys
baaf90070dc4 instant-gratification script for binary distributions
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
8
4766
86ef4ab17dc5 Run scripts (roundup_admin.py, ...) directly from checkout.
anatoly techtonik <techtonik@gmail.com>
parents: 4108
diff changeset
9 # --- patch sys.path to make sure 'import roundup' finds correct version
86ef4ab17dc5 Run scripts (roundup_admin.py, ...) directly from checkout.
anatoly techtonik <techtonik@gmail.com>
parents: 4108
diff changeset
10 import os.path as osp
86ef4ab17dc5 Run scripts (roundup_admin.py, ...) directly from checkout.
anatoly techtonik <techtonik@gmail.com>
parents: 4108
diff changeset
11
86ef4ab17dc5 Run scripts (roundup_admin.py, ...) directly from checkout.
anatoly techtonik <techtonik@gmail.com>
parents: 4108
diff changeset
12 thisdir = osp.dirname(osp.abspath(__file__))
86ef4ab17dc5 Run scripts (roundup_admin.py, ...) directly from checkout.
anatoly techtonik <techtonik@gmail.com>
parents: 4108
diff changeset
13 rootdir = osp.dirname(osp.dirname(thisdir))
86ef4ab17dc5 Run scripts (roundup_admin.py, ...) directly from checkout.
anatoly techtonik <techtonik@gmail.com>
parents: 4108
diff changeset
14 if (osp.exists(thisdir + '/__init__.py') and
86ef4ab17dc5 Run scripts (roundup_admin.py, ...) directly from checkout.
anatoly techtonik <techtonik@gmail.com>
parents: 4108
diff changeset
15 osp.exists(rootdir + '/roundup/__init__.py')):
86ef4ab17dc5 Run scripts (roundup_admin.py, ...) directly from checkout.
anatoly techtonik <techtonik@gmail.com>
parents: 4108
diff changeset
16 # the script is located inside roundup source code
86ef4ab17dc5 Run scripts (roundup_admin.py, ...) directly from checkout.
anatoly techtonik <techtonik@gmail.com>
parents: 4108
diff changeset
17 sys.path.insert(0, rootdir)
86ef4ab17dc5 Run scripts (roundup_admin.py, ...) directly from checkout.
anatoly techtonik <techtonik@gmail.com>
parents: 4108
diff changeset
18 # --/
86ef4ab17dc5 Run scripts (roundup_admin.py, ...) directly from checkout.
anatoly techtonik <techtonik@gmail.com>
parents: 4108
diff changeset
19
7340
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
20 # import also verifies python version as side effect
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
21 from roundup import version_check # noqa: F401 E402
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
22 from roundup import admin, configuration, demo, instance # noqa: E402
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
23 from roundup import __version__ as roundup_version # noqa: E402
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
24 from roundup.anypy.my_input import my_input # noqa: E402
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
25 from roundup.backends import list_backends # noqa: E402
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
26 from roundup.i18n import _ # noqa: E402
4766
86ef4ab17dc5 Run scripts (roundup_admin.py, ...) directly from checkout.
anatoly techtonik <techtonik@gmail.com>
parents: 4108
diff changeset
27
7340
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
28
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
29 DEFAULT_HOME = './demo'
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
30 DEFAULT_TEMPLATE = 'classic'
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
31 DEFAULT_BACKEND = 'sqlite'
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
32 DEFAULT_PORT = 8917
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
33
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
34
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
35 def usage(home, cli, msg=''):
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
36
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
37 # massage the help. I want [directory [backend]] but there is no way to
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
38 # specify that in argparse, so replace the three positional args with
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
39 # the proper syntax.
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
40 usage = cli.format_help() % dict(locals())
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
41 usage = usage.replace('[directory] [backend] [nuke]',
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
42 '[[directory] [backend]] [nuke]')
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
43
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
44 print("%s\n" % usage)
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
45
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
46 if msg:
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
47 print(msg)
2777
baaf90070dc4 instant-gratification script for binary distributions
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
48
baaf90070dc4 instant-gratification script for binary distributions
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
49 def run():
7340
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
50 templates = admin.AdminTool().listTemplates().keys()
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
51 backends = list_backends()
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
52
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
53 cli = argparse.ArgumentParser(
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
54 description= """
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
55 Instant gratification demo - Roundup Issue Tracker
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
56
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
57 Run a demo server. Config and database files are created in
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
58 'directory' (current setting/default '%(home)s') which should
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
59 not exist or should exist and already be a tracker home
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
60 directory (usually used with nuke).
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
61
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
62 'nuke' will re-initialize the tracker instance, deleting the old data.
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
63
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
64 The tracker that is created will have email notifications turned off.
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
65 """ % {"home": DEFAULT_HOME},
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
66 epilog=("\nIf items marked with (*) are missing, they will be "
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
67 "asked for interactively when setting up the tracker."),
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
68 formatter_class=argparse.RawTextHelpFormatter,
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
69 add_help=True)
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
70
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
71 cli.add_argument('-B', '--bind_address',
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
72 default="127.0.0.1",
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
73 help=( "Choose address for server to listen at.\n"
7926
05f36a527a45 feat: allow setting URL hostname with -H option to roundup-demo
John Rouillard <rouilj@ieee.org>
parents: 7925
diff changeset
74 "Use 0.0.0.0 to bind to all addreses. Use\n"
05f36a527a45 feat: allow setting URL hostname with -H option to roundup-demo
John Rouillard <rouilj@ieee.org>
parents: 7925
diff changeset
75 "the external name of the computer to bind to\n"
05f36a527a45 feat: allow setting URL hostname with -H option to roundup-demo
John Rouillard <rouilj@ieee.org>
parents: 7925
diff changeset
76 "the external host interface.\n"
7340
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
77 "Default: %(default)s.\n\n"))
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
78 cli.add_argument('-b', '--backend_db',
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
79 choices=backends,
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
80 help=( "Choose backend database. Default: %s.\n\n" %
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
81 DEFAULT_BACKEND))
7926
05f36a527a45 feat: allow setting URL hostname with -H option to roundup-demo
John Rouillard <rouilj@ieee.org>
parents: 7925
diff changeset
82 cli.add_argument('-H', '--hostname',
05f36a527a45 feat: allow setting URL hostname with -H option to roundup-demo
John Rouillard <rouilj@ieee.org>
parents: 7925
diff changeset
83 default="localhost",
05f36a527a45 feat: allow setting URL hostname with -H option to roundup-demo
John Rouillard <rouilj@ieee.org>
parents: 7925
diff changeset
84 help=( "Choose hostname for the server.\n"
05f36a527a45 feat: allow setting URL hostname with -H option to roundup-demo
John Rouillard <rouilj@ieee.org>
parents: 7925
diff changeset
85 "Default: %(default)s.\n\n"
05f36a527a45 feat: allow setting URL hostname with -H option to roundup-demo
John Rouillard <rouilj@ieee.org>
parents: 7925
diff changeset
86 ))
7340
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
87 cli.add_argument('-t', '--template',
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
88 choices=templates,
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
89 help="Use specified template. (*)\n\n")
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
90 cli.add_argument('-p', '--port',
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
91 type=int,
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
92 help=( "Listen at this port. Default: search for\n"
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
93 "open port starting at %s\n\n" % DEFAULT_PORT))
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
94 cli.add_argument('-P', '--urlport',
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
95 type=int,
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
96 help=( "Set docker external port. If using\n"
7926
05f36a527a45 feat: allow setting URL hostname with -H option to roundup-demo
John Rouillard <rouilj@ieee.org>
parents: 7925
diff changeset
97 " docker ... -p 9090:8917 ...\n"
05f36a527a45 feat: allow setting URL hostname with -H option to roundup-demo
John Rouillard <rouilj@ieee.org>
parents: 7925
diff changeset
98 "this should be set to 9090.\n"
7340
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
99 "Default: as selected by --port\n\n"))
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
100 cli.add_argument('-V', '--version', action='version',
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
101 version='Roundup version %s'%roundup_version,
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
102 help=(
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
103 "Show program's version number: %s and exit\n" %
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
104 roundup_version))
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
105
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
106 cli.add_argument('directory', nargs='?',
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
107 help="Create home for tracker in directory. (*)\n")
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
108
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
109 # add 'nuke' to choices so backend will accept nuke if only 2 args.
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
110 choices = backends + ['nuke']
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
111 cli.add_argument('backend', nargs='?', metavar='backend', choices=choices,
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
112 help=( "Choose backend database. "
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
113 "Depricated, use -b instead.\n"
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
114 "If it is used, you *must* specify directory.\n\n"))
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
115
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
116 cli.add_argument('nuke', nargs='?', metavar='nuke', choices=['nuke'],
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
117 help=( "The word 'nuke' will delete tracker and reset.\n"
7926
05f36a527a45 feat: allow setting URL hostname with -H option to roundup-demo
John Rouillard <rouilj@ieee.org>
parents: 7925
diff changeset
118 "E.G. %(prog)s -b sqlite \\ \n"
05f36a527a45 feat: allow setting URL hostname with -H option to roundup-demo
John Rouillard <rouilj@ieee.org>
parents: 7925
diff changeset
119 "-t classic ./mytracker nuke\n") % {"prog": sys.argv[0]})
7340
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
120
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
121 cli_args = cli.parse_args()
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
122
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
123 # collect all positional args in order in array to parse
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
124 # strip all None.
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
125 cli_args.cmd = [ x for x in [cli_args.directory, cli_args.backend, cli_args.nuke] if x != None ]
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
126
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
127 try:
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
128 nuke = cli_args.cmd[-1] == 'nuke'
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
129 if nuke:
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
130 _ignore = cli_args.cmd.pop() # remove nuke
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
131 except IndexError:
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
132 nuke = False
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
133
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
134 try:
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
135 tracker_home = cli_args.cmd[0]
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
136 except IndexError:
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
137 tracker_home = None
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
138
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
139 # invoked as demo tracker_dir sqlite [nuke]
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
140 try:
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
141 cli_backend = cli_args.cmd[1]
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
142 except IndexError:
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
143 cli_backend = None
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
144
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
145 home = tracker_home or DEFAULT_HOME
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
146 template = cli_args.template or DEFAULT_TEMPLATE
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
147 backend = cli_args.backend_db or cli_backend or DEFAULT_BACKEND
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
148
7697
c73a1177c2b2 fix: roundup-demo, interactive mode would nuke an existing tracker.
John Rouillard <rouilj@ieee.org>
parents: 7340
diff changeset
149 if not tracker_home:
c73a1177c2b2 fix: roundup-demo, interactive mode would nuke an existing tracker.
John Rouillard <rouilj@ieee.org>
parents: 7340
diff changeset
150 home = my_input(
c73a1177c2b2 fix: roundup-demo, interactive mode would nuke an existing tracker.
John Rouillard <rouilj@ieee.org>
parents: 7340
diff changeset
151 _('Enter directory path to create demo tracker [%s]: ') % home)
c73a1177c2b2 fix: roundup-demo, interactive mode would nuke an existing tracker.
John Rouillard <rouilj@ieee.org>
parents: 7340
diff changeset
152 if not home:
c73a1177c2b2 fix: roundup-demo, interactive mode would nuke an existing tracker.
John Rouillard <rouilj@ieee.org>
parents: 7340
diff changeset
153 home = DEFAULT_HOME
c73a1177c2b2 fix: roundup-demo, interactive mode would nuke an existing tracker.
John Rouillard <rouilj@ieee.org>
parents: 7340
diff changeset
154
2777
baaf90070dc4 instant-gratification script for binary distributions
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
155 # if there is no tracker in home, force nuke
baaf90070dc4 instant-gratification script for binary distributions
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
156 try:
baaf90070dc4 instant-gratification script for binary distributions
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
157 instance.open(home)
7340
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
158 valid_home = True
2777
baaf90070dc4 instant-gratification script for binary distributions
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
159 except configuration.NoConfigError:
7340
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
160 nuke = True
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
161 valid_home = False
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
162
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
163 # if we are to create the tracker, prompt for settings
2777
baaf90070dc4 instant-gratification script for binary distributions
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
164 if nuke:
baaf90070dc4 instant-gratification script for binary distributions
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
165 # FIXME: i'd like to have an option to abort the tracker creation
baaf90070dc4 instant-gratification script for binary distributions
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
166 # say, by entering a single dot. but i cannot think of
baaf90070dc4 instant-gratification script for binary distributions
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
167 # appropriate prompt for that.
7340
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
168 if not cli_args.template in templates:
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
169 template = my_input(
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
170 _('Enter tracker template to use (one of (%(template_list)s)) [%(default_template)s]: ') %
7062
062a54eeb0a1 Fix internationalized strings with multiple unlabeled % replacements.
John Rouillard <rouilj@ieee.org>
parents: 6042
diff changeset
171 { 'template_list': ','.join(templates),
062a54eeb0a1 Fix internationalized strings with multiple unlabeled % replacements.
John Rouillard <rouilj@ieee.org>
parents: 6042
diff changeset
172 'default_template': template})
7340
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
173 if not template:
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
174 template = DEFAULT_TEMPLATE
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
175 elif template not in templates:
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
176 print("Unknown template: %s. Exiting." % template)
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
177 exit(1)
2777
baaf90070dc4 instant-gratification script for binary distributions
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
178 # install
7926
05f36a527a45 feat: allow setting URL hostname with -H option to roundup-demo
John Rouillard <rouilj@ieee.org>
parents: 7925
diff changeset
179 url_port = cli_args.urlport or cli_args.port or DEFAULT_PORT
2777
baaf90070dc4 instant-gratification script for binary distributions
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
180 demo.install_demo(home, backend,
7340
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
181 admin.AdminTool().listTemplates()[template]['path'],
7926
05f36a527a45 feat: allow setting URL hostname with -H option to roundup-demo
John Rouillard <rouilj@ieee.org>
parents: 7925
diff changeset
182 use_port=url_port, use_host=cli_args.hostname)
7340
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
183 else:
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
184 # make sure that no options are specified that are only useful on initialization.
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
185 if ( cli_args.backend or cli_args.template or
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
186 cli_args.backend_db ):
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
187 usage(home, cli, msg=(
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
188 "Specifying backend or template is only allowed when\n"
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
189 "creating a tracker or with nuke.\n"))
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
190 exit(1)
2777
baaf90070dc4 instant-gratification script for binary distributions
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
191 # run
7340
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
192 demo.run_demo(home, bind_addr=cli_args.bind_address,
7b9bddda9d2d Add support for demo mode in docker.
John Rouillard <rouilj@ieee.org>
parents: 7062
diff changeset
193 bind_port=cli_args.port)
6042
d09a1d6a3bd9 flake8 whitespace fixes; add version_check
John Rouillard <rouilj@ieee.org>
parents: 5401
diff changeset
194
2777
baaf90070dc4 instant-gratification script for binary distributions
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
195 if __name__ == '__main__':
baaf90070dc4 instant-gratification script for binary distributions
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
196 run()
baaf90070dc4 instant-gratification script for binary distributions
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
197
baaf90070dc4 instant-gratification script for binary distributions
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
diff changeset
198 # vim: set et sts=4 sw=4 :

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