Mercurial > p > roundup > code
annotate roundup/instance.py @ 6112:6059218287d3
Don't display Organiation or Phone on registration form.
We don't need them for registration. They are still available if
the user edits their entry. People that are using them can change
the fields, or add them if it is useful.
| author | John Rouillard <rouilj@ieee.org> |
|---|---|
| date | Fri, 28 Feb 2020 22:56:49 -0500 |
| parents | 8ccb41b477d1 |
| children | c177e7128dc9 |
| rev | line source |
|---|---|
|
213
d45384bc6420
Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents:
204
diff
changeset
|
1 # |
|
d45384bc6420
Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents:
204
diff
changeset
|
2 # Copyright (c) 2001 Bizar Software Pty Ltd (http://www.bizarsoftware.com.au/) |
|
d45384bc6420
Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents:
204
diff
changeset
|
3 # This module is free software, and you may redistribute it and/or modify |
|
d45384bc6420
Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents:
204
diff
changeset
|
4 # under the same terms as Python, so long as this copyright message and |
|
d45384bc6420
Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents:
204
diff
changeset
|
5 # disclaimer are retained in their original form. |
|
d45384bc6420
Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents:
204
diff
changeset
|
6 # |
| 214 | 7 # IN NO EVENT SHALL BIZAR SOFTWARE PTY LTD BE LIABLE TO ANY PARTY FOR |
|
213
d45384bc6420
Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents:
204
diff
changeset
|
8 # DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING |
|
d45384bc6420
Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents:
204
diff
changeset
|
9 # OUT OF THE USE OF THIS CODE, EVEN IF THE AUTHOR HAS BEEN ADVISED OF THE |
|
d45384bc6420
Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents:
204
diff
changeset
|
10 # POSSIBILITY OF SUCH DAMAGE. |
|
d45384bc6420
Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents:
204
diff
changeset
|
11 # |
|
d45384bc6420
Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents:
204
diff
changeset
|
12 # BIZAR SOFTWARE PTY LTD SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, |
|
d45384bc6420
Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents:
204
diff
changeset
|
13 # BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS |
|
d45384bc6420
Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents:
204
diff
changeset
|
14 # FOR A PARTICULAR PURPOSE. THE CODE PROVIDED HEREUNDER IS ON AN "AS IS" |
|
d45384bc6420
Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents:
204
diff
changeset
|
15 # BASIS, AND THERE IS NO OBLIGATION WHATSOEVER TO PROVIDE MAINTENANCE, |
|
d45384bc6420
Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents:
204
diff
changeset
|
16 # SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. |
|
2621
d344419d599d
use new style config;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2584
diff
changeset
|
17 # |
|
204
c1461733cbf9
Instances are now opened by a special function...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
18 |
| 4388 | 19 """Top-level tracker interface. |
| 20 | |
| 21 Open a tracker with: | |
|
406
bdc2ea127ae9
Added module docstrings to all modules.
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
380
diff
changeset
|
22 |
| 4388 | 23 >>> from roundup import instance |
| 24 >>> db = instance.open('path to tracker home') | |
| 25 | |
| 26 The "db" handle you get back is the tracker's hyperdb which has the interface | |
| 4395 | 27 described in `roundup.hyperdb.Database`. |
| 4083 | 28 """ |
|
2005
fc52d57c6c3e
documentation cleanup
Richard Jones <richard@users.sourceforge.net>
parents:
1953
diff
changeset
|
29 __docformat__ = 'restructuredtext' |
|
204
c1461733cbf9
Instances are now opened by a special function...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
30 |
|
5383
6fbb7d52e38f
Python 3 preparation: use open() instead of file().
Joseph Myers <jsm@polyomino.org.uk>
parents:
5381
diff
changeset
|
31 try: |
|
6fbb7d52e38f
Python 3 preparation: use open() instead of file().
Joseph Myers <jsm@polyomino.org.uk>
parents:
5381
diff
changeset
|
32 import builtins |
|
6fbb7d52e38f
Python 3 preparation: use open() instead of file().
Joseph Myers <jsm@polyomino.org.uk>
parents:
5381
diff
changeset
|
33 except ImportError: |
|
6fbb7d52e38f
Python 3 preparation: use open() instead of file().
Joseph Myers <jsm@polyomino.org.uk>
parents:
5381
diff
changeset
|
34 import __builtin__ as builtins |
|
6fbb7d52e38f
Python 3 preparation: use open() instead of file().
Joseph Myers <jsm@polyomino.org.uk>
parents:
5381
diff
changeset
|
35 |
|
5810
5258e89e896a
Fix: DeprecationWarning: Using or importing the ABCs from 'collections'
John Rouillard <rouilj@ieee.org>
parents:
5406
diff
changeset
|
36 try: |
|
5258e89e896a
Fix: DeprecationWarning: Using or importing the ABCs from 'collections'
John Rouillard <rouilj@ieee.org>
parents:
5406
diff
changeset
|
37 from collections.abc import Callable |
|
5258e89e896a
Fix: DeprecationWarning: Using or importing the ABCs from 'collections'
John Rouillard <rouilj@ieee.org>
parents:
5406
diff
changeset
|
38 except ImportError: |
|
5258e89e896a
Fix: DeprecationWarning: Using or importing the ABCs from 'collections'
John Rouillard <rouilj@ieee.org>
parents:
5406
diff
changeset
|
39 from collections import Callable |
|
5258e89e896a
Fix: DeprecationWarning: Using or importing the ABCs from 'collections'
John Rouillard <rouilj@ieee.org>
parents:
5406
diff
changeset
|
40 |
|
1780
d2801a2b0a77
Initial implementation (half-baked) at new Tracker instance.
Richard Jones <richard@users.sourceforge.net>
parents:
1174
diff
changeset
|
41 import os |
|
3771
bf660e65ba45
Directory structure changes.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
2977
diff
changeset
|
42 import sys |
|
5041
5251e97b1de0
Configure the database backend in the config.ini
John Kristensen <john@jerrykan.com>
parents:
4781
diff
changeset
|
43 import warnings |
|
5251e97b1de0
Configure the database backend in the config.ini
John Kristensen <john@jerrykan.com>
parents:
4781
diff
changeset
|
44 |
|
2977
9c8de04a76b1
unit test fixes
Richard Jones <richard@users.sourceforge.net>
parents:
2933
diff
changeset
|
45 from roundup import configuration, mailgw |
| 4083 | 46 from roundup import hyperdb, backends, actions |
|
2851
96626831def1
trackers got a 'templates' attribute, containing html templates collection...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2836
diff
changeset
|
47 from roundup.cgi import client, templating |
| 4083 | 48 from roundup.cgi import actions as cgi_actions |
|
1780
d2801a2b0a77
Initial implementation (half-baked) at new Tracker instance.
Richard Jones <richard@users.sourceforge.net>
parents:
1174
diff
changeset
|
49 |
|
6010
8ccb41b477d1
Flake8 cleanup. Formating only no code changes.
John Rouillard <rouilj@ieee.org>
parents:
5810
diff
changeset
|
50 |
|
1780
d2801a2b0a77
Initial implementation (half-baked) at new Tracker instance.
Richard Jones <richard@users.sourceforge.net>
parents:
1174
diff
changeset
|
51 class Tracker: |
|
2851
96626831def1
trackers got a 'templates' attribute, containing html templates collection...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2836
diff
changeset
|
52 def __init__(self, tracker_home, optimize=0): |
|
96626831def1
trackers got a 'templates' attribute, containing html templates collection...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2836
diff
changeset
|
53 """New-style tracker instance constructor |
|
96626831def1
trackers got a 'templates' attribute, containing html templates collection...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2836
diff
changeset
|
54 |
|
96626831def1
trackers got a 'templates' attribute, containing html templates collection...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2836
diff
changeset
|
55 Parameters: |
|
96626831def1
trackers got a 'templates' attribute, containing html templates collection...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2836
diff
changeset
|
56 tracker_home: |
|
96626831def1
trackers got a 'templates' attribute, containing html templates collection...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2836
diff
changeset
|
57 tracker home directory |
|
96626831def1
trackers got a 'templates' attribute, containing html templates collection...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2836
diff
changeset
|
58 optimize: |
|
96626831def1
trackers got a 'templates' attribute, containing html templates collection...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2836
diff
changeset
|
59 if set, precompile html templates |
|
96626831def1
trackers got a 'templates' attribute, containing html templates collection...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2836
diff
changeset
|
60 |
|
96626831def1
trackers got a 'templates' attribute, containing html templates collection...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2836
diff
changeset
|
61 """ |
|
1780
d2801a2b0a77
Initial implementation (half-baked) at new Tracker instance.
Richard Jones <richard@users.sourceforge.net>
parents:
1174
diff
changeset
|
62 self.tracker_home = tracker_home |
|
2851
96626831def1
trackers got a 'templates' attribute, containing html templates collection...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2836
diff
changeset
|
63 self.optimize = optimize |
|
4211
61cf00ca920a
Process each message through the mail gateway as a separate transaction.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4083
diff
changeset
|
64 # if set, call schema_hook after executing schema.py will get |
|
61cf00ca920a
Process each message through the mail gateway as a separate transaction.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4083
diff
changeset
|
65 # same variables (in particular db) as schema.py main purpose is |
|
61cf00ca920a
Process each message through the mail gateway as a separate transaction.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4083
diff
changeset
|
66 # for regression tests |
|
61cf00ca920a
Process each message through the mail gateway as a separate transaction.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4083
diff
changeset
|
67 self.schema_hook = None |
|
2647
8c46091c36d0
Main Roundup configuration class renamed to CoreConfig.
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2638
diff
changeset
|
68 self.config = configuration.CoreConfig(tracker_home) |
| 4083 | 69 self.actions = {} |
|
2633
a9e1fff1e793
I thought I committed this last night. Ho hum.
Richard Jones <richard@users.sourceforge.net>
parents:
2621
diff
changeset
|
70 self.cgi_actions = {} |
|
a9e1fff1e793
I thought I committed this last night. Ho hum.
Richard Jones <richard@users.sourceforge.net>
parents:
2621
diff
changeset
|
71 self.templating_utils = {} |
|
4588
7017c8dd704c
Small improvements on instance.py by Cheer Xiao.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4587
diff
changeset
|
72 |
|
7017c8dd704c
Small improvements on instance.py by Cheer Xiao.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4587
diff
changeset
|
73 libdir = os.path.join(self.tracker_home, 'lib') |
|
7017c8dd704c
Small improvements on instance.py by Cheer Xiao.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4587
diff
changeset
|
74 self.libdir = os.path.isdir(libdir) and libdir or '' |
|
7017c8dd704c
Small improvements on instance.py by Cheer Xiao.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4587
diff
changeset
|
75 |
|
4592
7b7cfb4b00eb
Fix improvements on instance.py.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4588
diff
changeset
|
76 self.load_interfaces() |
|
4721
ec359e7c6c95
Rename templating.get_templates to get_loader
anatoly techtonik <techtonik@gmail.com>
parents:
4720
diff
changeset
|
77 self.templates = templating.get_loader(self.config["TEMPLATES"], |
|
6010
8ccb41b477d1
Flake8 cleanup. Formating only no code changes.
John Rouillard <rouilj@ieee.org>
parents:
5810
diff
changeset
|
78 self.config["TEMPLATE_ENGINE"]) |
|
5041
5251e97b1de0
Configure the database backend in the config.ini
John Kristensen <john@jerrykan.com>
parents:
4781
diff
changeset
|
79 |
|
5251e97b1de0
Configure the database backend in the config.ini
John Kristensen <john@jerrykan.com>
parents:
4781
diff
changeset
|
80 rdbms_backend = self.config.RDBMS_BACKEND |
|
5251e97b1de0
Configure the database backend in the config.ini
John Kristensen <john@jerrykan.com>
parents:
4781
diff
changeset
|
81 |
|
5251e97b1de0
Configure the database backend in the config.ini
John Kristensen <john@jerrykan.com>
parents:
4781
diff
changeset
|
82 # TODO: Remove in v1.7 |
|
5251e97b1de0
Configure the database backend in the config.ini
John Kristensen <john@jerrykan.com>
parents:
4781
diff
changeset
|
83 # Provide some backwards compatability for existing Roundup instances |
|
5251e97b1de0
Configure the database backend in the config.ini
John Kristensen <john@jerrykan.com>
parents:
4781
diff
changeset
|
84 # that still define the backend type in 'db/backend_name' and warn the |
|
5251e97b1de0
Configure the database backend in the config.ini
John Kristensen <john@jerrykan.com>
parents:
4781
diff
changeset
|
85 # users they need to update their config.ini |
|
5251e97b1de0
Configure the database backend in the config.ini
John Kristensen <john@jerrykan.com>
parents:
4781
diff
changeset
|
86 if rdbms_backend == '': |
|
5251e97b1de0
Configure the database backend in the config.ini
John Kristensen <john@jerrykan.com>
parents:
4781
diff
changeset
|
87 filename = os.path.join(self.config.DATABASE, 'backend_name') |
|
5251e97b1de0
Configure the database backend in the config.ini
John Kristensen <john@jerrykan.com>
parents:
4781
diff
changeset
|
88 msg = """\n |
|
5251e97b1de0
Configure the database backend in the config.ini
John Kristensen <john@jerrykan.com>
parents:
4781
diff
changeset
|
89 The 'backend_name' file is no longer used to configure the database backend |
|
5251e97b1de0
Configure the database backend in the config.ini
John Kristensen <john@jerrykan.com>
parents:
4781
diff
changeset
|
90 used for the tracker. Please read 'doc/upgrading.txt' to find out how to |
|
5251e97b1de0
Configure the database backend in the config.ini
John Kristensen <john@jerrykan.com>
parents:
4781
diff
changeset
|
91 update your config.ini |
|
5251e97b1de0
Configure the database backend in the config.ini
John Kristensen <john@jerrykan.com>
parents:
4781
diff
changeset
|
92 """ |
|
5251e97b1de0
Configure the database backend in the config.ini
John Kristensen <john@jerrykan.com>
parents:
4781
diff
changeset
|
93 try: |
|
5383
6fbb7d52e38f
Python 3 preparation: use open() instead of file().
Joseph Myers <jsm@polyomino.org.uk>
parents:
5381
diff
changeset
|
94 with open(filename) as backend_file: |
|
5041
5251e97b1de0
Configure the database backend in the config.ini
John Kristensen <john@jerrykan.com>
parents:
4781
diff
changeset
|
95 rdbms_backend = backend_file.readline().strip() |
|
5251e97b1de0
Configure the database backend in the config.ini
John Kristensen <john@jerrykan.com>
parents:
4781
diff
changeset
|
96 |
|
5251e97b1de0
Configure the database backend in the config.ini
John Kristensen <john@jerrykan.com>
parents:
4781
diff
changeset
|
97 with warnings.catch_warnings(): |
|
5251e97b1de0
Configure the database backend in the config.ini
John Kristensen <john@jerrykan.com>
parents:
4781
diff
changeset
|
98 warnings.simplefilter("once", DeprecationWarning) |
|
5251e97b1de0
Configure the database backend in the config.ini
John Kristensen <john@jerrykan.com>
parents:
4781
diff
changeset
|
99 warnings.warn(msg, DeprecationWarning, stacklevel=2) |
|
5251e97b1de0
Configure the database backend in the config.ini
John Kristensen <john@jerrykan.com>
parents:
4781
diff
changeset
|
100 except IOError: |
|
5251e97b1de0
Configure the database backend in the config.ini
John Kristensen <john@jerrykan.com>
parents:
4781
diff
changeset
|
101 pass |
|
5251e97b1de0
Configure the database backend in the config.ini
John Kristensen <john@jerrykan.com>
parents:
4781
diff
changeset
|
102 |
|
5251e97b1de0
Configure the database backend in the config.ini
John Kristensen <john@jerrykan.com>
parents:
4781
diff
changeset
|
103 self.backend = backends.get_backend(rdbms_backend) |
|
4592
7b7cfb4b00eb
Fix improvements on instance.py.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4588
diff
changeset
|
104 |
|
2851
96626831def1
trackers got a 'templates' attribute, containing html templates collection...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2836
diff
changeset
|
105 if self.optimize: |
|
4748
e339583eae8e
templating: rename precompileTemplates to precompile
anatoly techtonik <techtonik@gmail.com>
parents:
4722
diff
changeset
|
106 self.templates.precompile() |
|
2891
bc72b1c7319b
if optimize is set, load all extension modules in __init__()...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2890
diff
changeset
|
107 # initialize tracker extensions |
|
bc72b1c7319b
if optimize is set, load all extension modules in __init__()...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2890
diff
changeset
|
108 for extension in self.get_extensions('extensions'): |
|
bc72b1c7319b
if optimize is set, load all extension modules in __init__()...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2890
diff
changeset
|
109 extension(self) |
|
2902
f50b867747c9
if optimize is set, load the schema file in __init__()...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2891
diff
changeset
|
110 # load database schema |
|
4588
7017c8dd704c
Small improvements on instance.py by Cheer Xiao.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4587
diff
changeset
|
111 self.schema = self._compile('schema.py') |
|
2891
bc72b1c7319b
if optimize is set, load all extension modules in __init__()...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2890
diff
changeset
|
112 # load database detectors |
|
bc72b1c7319b
if optimize is set, load all extension modules in __init__()...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2890
diff
changeset
|
113 self.detectors = self.get_extensions('detectors') |
|
bc72b1c7319b
if optimize is set, load all extension modules in __init__()...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2890
diff
changeset
|
114 # db_open is set to True after first open() |
|
bc72b1c7319b
if optimize is set, load all extension modules in __init__()...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2890
diff
changeset
|
115 self.db_open = 0 |
|
2633
a9e1fff1e793
I thought I committed this last night. Ho hum.
Richard Jones <richard@users.sourceforge.net>
parents:
2621
diff
changeset
|
116 |
|
2796
7f1e17aeca1b
journaltag is optional
Richard Jones <richard@users.sourceforge.net>
parents:
2736
diff
changeset
|
117 def open(self, name=None): |
|
2891
bc72b1c7319b
if optimize is set, load all extension modules in __init__()...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2890
diff
changeset
|
118 # load the database schema |
|
bc72b1c7319b
if optimize is set, load all extension modules in __init__()...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2890
diff
changeset
|
119 # we cannot skip this part even if self.optimize is set |
|
bc72b1c7319b
if optimize is set, load all extension modules in __init__()...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2890
diff
changeset
|
120 # because the schema has security settings that must be |
|
bc72b1c7319b
if optimize is set, load all extension modules in __init__()...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2890
diff
changeset
|
121 # applied to each database instance |
|
2890
938915fbcb49
get_backend_name() is a lengthy thing (file I/O).
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2856
diff
changeset
|
122 backend = self.backend |
|
4588
7017c8dd704c
Small improvements on instance.py by Cheer Xiao.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4587
diff
changeset
|
123 env = { |
|
2633
a9e1fff1e793
I thought I committed this last night. Ho hum.
Richard Jones <richard@users.sourceforge.net>
parents:
2621
diff
changeset
|
124 'Class': backend.Class, |
|
a9e1fff1e793
I thought I committed this last night. Ho hum.
Richard Jones <richard@users.sourceforge.net>
parents:
2621
diff
changeset
|
125 'FileClass': backend.FileClass, |
|
a9e1fff1e793
I thought I committed this last night. Ho hum.
Richard Jones <richard@users.sourceforge.net>
parents:
2621
diff
changeset
|
126 'IssueClass': backend.IssueClass, |
|
a9e1fff1e793
I thought I committed this last night. Ho hum.
Richard Jones <richard@users.sourceforge.net>
parents:
2621
diff
changeset
|
127 'String': hyperdb.String, |
|
a9e1fff1e793
I thought I committed this last night. Ho hum.
Richard Jones <richard@users.sourceforge.net>
parents:
2621
diff
changeset
|
128 'Password': hyperdb.Password, |
|
a9e1fff1e793
I thought I committed this last night. Ho hum.
Richard Jones <richard@users.sourceforge.net>
parents:
2621
diff
changeset
|
129 'Date': hyperdb.Date, |
|
a9e1fff1e793
I thought I committed this last night. Ho hum.
Richard Jones <richard@users.sourceforge.net>
parents:
2621
diff
changeset
|
130 'Link': hyperdb.Link, |
|
a9e1fff1e793
I thought I committed this last night. Ho hum.
Richard Jones <richard@users.sourceforge.net>
parents:
2621
diff
changeset
|
131 'Multilink': hyperdb.Multilink, |
|
a9e1fff1e793
I thought I committed this last night. Ho hum.
Richard Jones <richard@users.sourceforge.net>
parents:
2621
diff
changeset
|
132 'Interval': hyperdb.Interval, |
|
a9e1fff1e793
I thought I committed this last night. Ho hum.
Richard Jones <richard@users.sourceforge.net>
parents:
2621
diff
changeset
|
133 'Boolean': hyperdb.Boolean, |
|
a9e1fff1e793
I thought I committed this last night. Ho hum.
Richard Jones <richard@users.sourceforge.net>
parents:
2621
diff
changeset
|
134 'Number': hyperdb.Number, |
|
5067
e424987d294a
Add support for an integer type to join the existing number type.
John Rouillard <rouilj@ieee.org>
parents:
5041
diff
changeset
|
135 'Integer': hyperdb.Integer, |
|
2633
a9e1fff1e793
I thought I committed this last night. Ho hum.
Richard Jones <richard@users.sourceforge.net>
parents:
2621
diff
changeset
|
136 'db': backend.Database(self.config, name) |
|
a9e1fff1e793
I thought I committed this last night. Ho hum.
Richard Jones <richard@users.sourceforge.net>
parents:
2621
diff
changeset
|
137 } |
|
1780
d2801a2b0a77
Initial implementation (half-baked) at new Tracker instance.
Richard Jones <richard@users.sourceforge.net>
parents:
1174
diff
changeset
|
138 |
|
2891
bc72b1c7319b
if optimize is set, load all extension modules in __init__()...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2890
diff
changeset
|
139 if self.optimize: |
|
2902
f50b867747c9
if optimize is set, load the schema file in __init__()...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2891
diff
changeset
|
140 # execute preloaded schema object |
|
4606
48b73776601c
More fix for improvements on instance.py.
Cheer Xiao <xiaqqaix@gmail.com>
parents:
4592
diff
changeset
|
141 self._exec(self.schema, env) |
|
5810
5258e89e896a
Fix: DeprecationWarning: Using or importing the ABCs from 'collections'
John Rouillard <rouilj@ieee.org>
parents:
5406
diff
changeset
|
142 if isinstance(self.schema_hook, Callable): |
|
4588
7017c8dd704c
Small improvements on instance.py by Cheer Xiao.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4587
diff
changeset
|
143 self.schema_hook(**env) |
|
2891
bc72b1c7319b
if optimize is set, load all extension modules in __init__()...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2890
diff
changeset
|
144 # use preloaded detectors |
|
bc72b1c7319b
if optimize is set, load all extension modules in __init__()...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2890
diff
changeset
|
145 detectors = self.detectors |
|
bc72b1c7319b
if optimize is set, load all extension modules in __init__()...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2890
diff
changeset
|
146 else: |
|
2902
f50b867747c9
if optimize is set, load the schema file in __init__()...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2891
diff
changeset
|
147 # execute the schema file |
|
4588
7017c8dd704c
Small improvements on instance.py by Cheer Xiao.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4587
diff
changeset
|
148 self._execfile('schema.py', env) |
|
5810
5258e89e896a
Fix: DeprecationWarning: Using or importing the ABCs from 'collections'
John Rouillard <rouilj@ieee.org>
parents:
5406
diff
changeset
|
149 if isinstance(self.schema_hook, Callable): |
|
4588
7017c8dd704c
Small improvements on instance.py by Cheer Xiao.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4587
diff
changeset
|
150 self.schema_hook(**env) |
|
2891
bc72b1c7319b
if optimize is set, load all extension modules in __init__()...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2890
diff
changeset
|
151 # reload extensions and detectors |
|
bc72b1c7319b
if optimize is set, load all extension modules in __init__()...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2890
diff
changeset
|
152 for extension in self.get_extensions('extensions'): |
|
bc72b1c7319b
if optimize is set, load all extension modules in __init__()...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2890
diff
changeset
|
153 extension(self) |
|
bc72b1c7319b
if optimize is set, load all extension modules in __init__()...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2890
diff
changeset
|
154 detectors = self.get_extensions('detectors') |
|
4588
7017c8dd704c
Small improvements on instance.py by Cheer Xiao.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4587
diff
changeset
|
155 db = env['db'] |
| 4781 | 156 db.tx_Source = None |
| 157 | |
|
2891
bc72b1c7319b
if optimize is set, load all extension modules in __init__()...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2890
diff
changeset
|
158 # apply the detectors |
|
bc72b1c7319b
if optimize is set, load all extension modules in __init__()...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2890
diff
changeset
|
159 for detector in detectors: |
|
bc72b1c7319b
if optimize is set, load all extension modules in __init__()...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2890
diff
changeset
|
160 detector(db) |
|
bc72b1c7319b
if optimize is set, load all extension modules in __init__()...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2890
diff
changeset
|
161 # if we are running in debug mode |
|
bc72b1c7319b
if optimize is set, load all extension modules in __init__()...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2890
diff
changeset
|
162 # or this is the first time the database is opened, |
|
bc72b1c7319b
if optimize is set, load all extension modules in __init__()...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2890
diff
changeset
|
163 # do database upgrade checks |
|
bc72b1c7319b
if optimize is set, load all extension modules in __init__()...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2890
diff
changeset
|
164 if not (self.optimize and self.db_open): |
|
4266
2b75274936bc
Add schema consistency checks.
Stefan Seefeld <stefan@seefeld.name>
parents:
4211
diff
changeset
|
165 # As a consistency check, ensure that every link property is |
|
2b75274936bc
Add schema consistency checks.
Stefan Seefeld <stefan@seefeld.name>
parents:
4211
diff
changeset
|
166 # pointing at a defined class. Otherwise, the schema is |
|
2b75274936bc
Add schema consistency checks.
Stefan Seefeld <stefan@seefeld.name>
parents:
4211
diff
changeset
|
167 # internally inconsistent. This is an important safety |
|
2b75274936bc
Add schema consistency checks.
Stefan Seefeld <stefan@seefeld.name>
parents:
4211
diff
changeset
|
168 # measure as it protects against an accidental schema change |
|
2b75274936bc
Add schema consistency checks.
Stefan Seefeld <stefan@seefeld.name>
parents:
4211
diff
changeset
|
169 # dropping a table while there are still links to the table; |
|
2b75274936bc
Add schema consistency checks.
Stefan Seefeld <stefan@seefeld.name>
parents:
4211
diff
changeset
|
170 # once the table has been dropped, there is no way to get it |
|
2b75274936bc
Add schema consistency checks.
Stefan Seefeld <stefan@seefeld.name>
parents:
4211
diff
changeset
|
171 # back, so it is important to drop it only if we are as sure |
|
2b75274936bc
Add schema consistency checks.
Stefan Seefeld <stefan@seefeld.name>
parents:
4211
diff
changeset
|
172 # as possible that it is no longer needed. |
|
2b75274936bc
Add schema consistency checks.
Stefan Seefeld <stefan@seefeld.name>
parents:
4211
diff
changeset
|
173 classes = db.getclasses() |
|
2b75274936bc
Add schema consistency checks.
Stefan Seefeld <stefan@seefeld.name>
parents:
4211
diff
changeset
|
174 for classname in classes: |
|
2b75274936bc
Add schema consistency checks.
Stefan Seefeld <stefan@seefeld.name>
parents:
4211
diff
changeset
|
175 cl = db.getclass(classname) |
|
5395
23b8e6067f7c
Python 3 preparation: update calls to dict methods.
Joseph Myers <jsm@polyomino.org.uk>
parents:
5383
diff
changeset
|
176 for propname, prop in cl.getprops().items(): |
|
4266
2b75274936bc
Add schema consistency checks.
Stefan Seefeld <stefan@seefeld.name>
parents:
4211
diff
changeset
|
177 if not isinstance(prop, (hyperdb.Link, |
|
2b75274936bc
Add schema consistency checks.
Stefan Seefeld <stefan@seefeld.name>
parents:
4211
diff
changeset
|
178 hyperdb.Multilink)): |
|
2b75274936bc
Add schema consistency checks.
Stefan Seefeld <stefan@seefeld.name>
parents:
4211
diff
changeset
|
179 continue |
|
2b75274936bc
Add schema consistency checks.
Stefan Seefeld <stefan@seefeld.name>
parents:
4211
diff
changeset
|
180 linkto = prop.classname |
|
2b75274936bc
Add schema consistency checks.
Stefan Seefeld <stefan@seefeld.name>
parents:
4211
diff
changeset
|
181 if linkto not in classes: |
|
6010
8ccb41b477d1
Flake8 cleanup. Formating only no code changes.
John Rouillard <rouilj@ieee.org>
parents:
5810
diff
changeset
|
182 raise ValueError("property %s.%s links to " |
|
8ccb41b477d1
Flake8 cleanup. Formating only no code changes.
John Rouillard <rouilj@ieee.org>
parents:
5810
diff
changeset
|
183 "non-existent class %s" |
|
8ccb41b477d1
Flake8 cleanup. Formating only no code changes.
John Rouillard <rouilj@ieee.org>
parents:
5810
diff
changeset
|
184 % (classname, propname, linkto)) |
|
4266
2b75274936bc
Add schema consistency checks.
Stefan Seefeld <stefan@seefeld.name>
parents:
4211
diff
changeset
|
185 |
|
2891
bc72b1c7319b
if optimize is set, load all extension modules in __init__()...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2890
diff
changeset
|
186 db.post_init() |
|
bc72b1c7319b
if optimize is set, load all extension modules in __init__()...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2890
diff
changeset
|
187 self.db_open = 1 |
|
2633
a9e1fff1e793
I thought I committed this last night. Ho hum.
Richard Jones <richard@users.sourceforge.net>
parents:
2621
diff
changeset
|
188 return db |
|
a9e1fff1e793
I thought I committed this last night. Ho hum.
Richard Jones <richard@users.sourceforge.net>
parents:
2621
diff
changeset
|
189 |
|
2697
d138df58b0c3
load user interfaces
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2688
diff
changeset
|
190 def load_interfaces(self): |
|
d138df58b0c3
load user interfaces
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2688
diff
changeset
|
191 """load interfaces.py (if any), initialize Client and MailGW attrs""" |
|
4588
7017c8dd704c
Small improvements on instance.py by Cheer Xiao.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4587
diff
changeset
|
192 env = {} |
|
2697
d138df58b0c3
load user interfaces
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2688
diff
changeset
|
193 if os.path.isfile(os.path.join(self.tracker_home, 'interfaces.py')): |
|
4588
7017c8dd704c
Small improvements on instance.py by Cheer Xiao.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4587
diff
changeset
|
194 self._execfile('interfaces.py', env) |
|
7017c8dd704c
Small improvements on instance.py by Cheer Xiao.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4587
diff
changeset
|
195 self.Client = env.get('Client', client.Client) |
|
7017c8dd704c
Small improvements on instance.py by Cheer Xiao.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4587
diff
changeset
|
196 self.MailGW = env.get('MailGW', mailgw.MailGW) |
|
6010
8ccb41b477d1
Flake8 cleanup. Formating only no code changes.
John Rouillard <rouilj@ieee.org>
parents:
5810
diff
changeset
|
197 self.TemplatingUtils = env.get('TemplatingUtils', |
|
8ccb41b477d1
Flake8 cleanup. Formating only no code changes.
John Rouillard <rouilj@ieee.org>
parents:
5810
diff
changeset
|
198 templating.TemplatingUtils) |
|
2697
d138df58b0c3
load user interfaces
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2688
diff
changeset
|
199 |
|
2891
bc72b1c7319b
if optimize is set, load all extension modules in __init__()...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2890
diff
changeset
|
200 def get_extensions(self, dirname): |
|
bc72b1c7319b
if optimize is set, load all extension modules in __init__()...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2890
diff
changeset
|
201 """Load python extensions |
|
bc72b1c7319b
if optimize is set, load all extension modules in __init__()...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2890
diff
changeset
|
202 |
|
bc72b1c7319b
if optimize is set, load all extension modules in __init__()...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2890
diff
changeset
|
203 Parameters: |
|
bc72b1c7319b
if optimize is set, load all extension modules in __init__()...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2890
diff
changeset
|
204 dirname: |
|
bc72b1c7319b
if optimize is set, load all extension modules in __init__()...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2890
diff
changeset
|
205 extension directory name relative to tracker home |
|
bc72b1c7319b
if optimize is set, load all extension modules in __init__()...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2890
diff
changeset
|
206 |
|
bc72b1c7319b
if optimize is set, load all extension modules in __init__()...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2890
diff
changeset
|
207 Return value: |
|
bc72b1c7319b
if optimize is set, load all extension modules in __init__()...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2890
diff
changeset
|
208 list of init() functions for each extension |
|
bc72b1c7319b
if optimize is set, load all extension modules in __init__()...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2890
diff
changeset
|
209 |
|
bc72b1c7319b
if optimize is set, load all extension modules in __init__()...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2890
diff
changeset
|
210 """ |
|
bc72b1c7319b
if optimize is set, load all extension modules in __init__()...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2890
diff
changeset
|
211 extensions = [] |
|
2688
eb14c12813a0
fix load_extensions():
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2677
diff
changeset
|
212 dirpath = os.path.join(self.tracker_home, dirname) |
|
eb14c12813a0
fix load_extensions():
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2677
diff
changeset
|
213 if os.path.isdir(dirpath): |
|
3771
bf660e65ba45
Directory structure changes.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
2977
diff
changeset
|
214 sys.path.insert(1, dirpath) |
|
2688
eb14c12813a0
fix load_extensions():
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2677
diff
changeset
|
215 for name in os.listdir(dirpath): |
|
2677
1f0143b53bee
fix .load_extensions():
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2647
diff
changeset
|
216 if not name.endswith('.py'): |
|
1f0143b53bee
fix .load_extensions():
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2647
diff
changeset
|
217 continue |
|
4588
7017c8dd704c
Small improvements on instance.py by Cheer Xiao.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4587
diff
changeset
|
218 env = {} |
|
7017c8dd704c
Small improvements on instance.py by Cheer Xiao.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4587
diff
changeset
|
219 self._execfile(os.path.join(dirname, name), env) |
|
7017c8dd704c
Small improvements on instance.py by Cheer Xiao.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4587
diff
changeset
|
220 extensions.append(env['init']) |
|
3773
21ff756e4549
Fixes for directory handling.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3771
diff
changeset
|
221 sys.path.remove(dirpath) |
|
2891
bc72b1c7319b
if optimize is set, load all extension modules in __init__()...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2890
diff
changeset
|
222 return extensions |
|
2638
18e86941c950
Load up extensions in the tracker "extensions" directory.
Richard Jones <richard@users.sourceforge.net>
parents:
2633
diff
changeset
|
223 |
|
5216
6a4317738a90
make roundup-admin init function set the transaction source. Otherwise when initial_data.py is loaded as part of init, db.tx_Source is set to None and thus checks like db.tx_Source in [ 'cli' ] will fail.
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
224 def init(self, adminpw, tx_Source=None): |
|
2633
a9e1fff1e793
I thought I committed this last night. Ho hum.
Richard Jones <richard@users.sourceforge.net>
parents:
2621
diff
changeset
|
225 db = self.open('admin') |
|
5216
6a4317738a90
make roundup-admin init function set the transaction source. Otherwise when initial_data.py is loaded as part of init, db.tx_Source is set to None and thus checks like db.tx_Source in [ 'cli' ] will fail.
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
226 db.tx_Source = tx_Source |
|
6010
8ccb41b477d1
Flake8 cleanup. Formating only no code changes.
John Rouillard <rouilj@ieee.org>
parents:
5810
diff
changeset
|
227 self._execfile('initial_data.py', |
|
8ccb41b477d1
Flake8 cleanup. Formating only no code changes.
John Rouillard <rouilj@ieee.org>
parents:
5810
diff
changeset
|
228 {'db': db, 'adminpw': adminpw, |
|
8ccb41b477d1
Flake8 cleanup. Formating only no code changes.
John Rouillard <rouilj@ieee.org>
parents:
5810
diff
changeset
|
229 'admin_email': self.config['ADMIN_EMAIL']}) |
|
2633
a9e1fff1e793
I thought I committed this last night. Ho hum.
Richard Jones <richard@users.sourceforge.net>
parents:
2621
diff
changeset
|
230 db.commit() |
|
a9e1fff1e793
I thought I committed this last night. Ho hum.
Richard Jones <richard@users.sourceforge.net>
parents:
2621
diff
changeset
|
231 db.close() |
|
a9e1fff1e793
I thought I committed this last night. Ho hum.
Richard Jones <richard@users.sourceforge.net>
parents:
2621
diff
changeset
|
232 |
|
a9e1fff1e793
I thought I committed this last night. Ho hum.
Richard Jones <richard@users.sourceforge.net>
parents:
2621
diff
changeset
|
233 def exists(self): |
|
2890
938915fbcb49
get_backend_name() is a lengthy thing (file I/O).
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2856
diff
changeset
|
234 return self.backend.db_exists(self.config) |
|
2633
a9e1fff1e793
I thought I committed this last night. Ho hum.
Richard Jones <richard@users.sourceforge.net>
parents:
2621
diff
changeset
|
235 |
|
a9e1fff1e793
I thought I committed this last night. Ho hum.
Richard Jones <richard@users.sourceforge.net>
parents:
2621
diff
changeset
|
236 def nuke(self): |
|
2890
938915fbcb49
get_backend_name() is a lengthy thing (file I/O).
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2856
diff
changeset
|
237 self.backend.db_nuke(self.config) |
|
2633
a9e1fff1e793
I thought I committed this last night. Ho hum.
Richard Jones <richard@users.sourceforge.net>
parents:
2621
diff
changeset
|
238 |
|
4588
7017c8dd704c
Small improvements on instance.py by Cheer Xiao.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4587
diff
changeset
|
239 def _compile(self, fname): |
|
7017c8dd704c
Small improvements on instance.py by Cheer Xiao.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4587
diff
changeset
|
240 fname = os.path.join(self.tracker_home, fname) |
|
5383
6fbb7d52e38f
Python 3 preparation: use open() instead of file().
Joseph Myers <jsm@polyomino.org.uk>
parents:
5381
diff
changeset
|
241 return compile(builtins.open(fname).read(), fname, 'exec') |
|
4588
7017c8dd704c
Small improvements on instance.py by Cheer Xiao.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4587
diff
changeset
|
242 |
|
7017c8dd704c
Small improvements on instance.py by Cheer Xiao.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4587
diff
changeset
|
243 def _exec(self, obj, env): |
|
7017c8dd704c
Small improvements on instance.py by Cheer Xiao.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4587
diff
changeset
|
244 if self.libdir: |
|
7017c8dd704c
Small improvements on instance.py by Cheer Xiao.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4587
diff
changeset
|
245 sys.path.insert(1, self.libdir) |
|
7017c8dd704c
Small improvements on instance.py by Cheer Xiao.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4587
diff
changeset
|
246 exec(obj, env) |
|
7017c8dd704c
Small improvements on instance.py by Cheer Xiao.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4587
diff
changeset
|
247 if self.libdir: |
|
7017c8dd704c
Small improvements on instance.py by Cheer Xiao.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4587
diff
changeset
|
248 sys.path.remove(self.libdir) |
|
7017c8dd704c
Small improvements on instance.py by Cheer Xiao.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4587
diff
changeset
|
249 return env |
|
7017c8dd704c
Small improvements on instance.py by Cheer Xiao.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4587
diff
changeset
|
250 |
|
7017c8dd704c
Small improvements on instance.py by Cheer Xiao.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4587
diff
changeset
|
251 def _execfile(self, fname, env): |
|
7017c8dd704c
Small improvements on instance.py by Cheer Xiao.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4587
diff
changeset
|
252 self._exec(self._compile(fname), env) |
|
1780
d2801a2b0a77
Initial implementation (half-baked) at new Tracker instance.
Richard Jones <richard@users.sourceforge.net>
parents:
1174
diff
changeset
|
253 |
|
2633
a9e1fff1e793
I thought I committed this last night. Ho hum.
Richard Jones <richard@users.sourceforge.net>
parents:
2621
diff
changeset
|
254 def registerAction(self, name, action): |
| 4083 | 255 |
| 256 # The logic here is this: | |
| 257 # * if `action` derives from actions.Action, | |
| 258 # it is executable as a generic action. | |
| 259 # * if, moreover, it also derives from cgi.actions.Bridge, | |
| 260 # it may in addition be called via CGI | |
| 261 # * in all other cases we register it as a CGI action, without | |
| 262 # any check (for backward compatibility). | |
| 263 if issubclass(action, actions.Action): | |
| 264 self.actions[name] = action | |
| 265 if issubclass(action, cgi_actions.Bridge): | |
| 266 self.cgi_actions[name] = action | |
| 267 else: | |
| 268 self.cgi_actions[name] = action | |
|
2633
a9e1fff1e793
I thought I committed this last night. Ho hum.
Richard Jones <richard@users.sourceforge.net>
parents:
2621
diff
changeset
|
269 |
|
a9e1fff1e793
I thought I committed this last night. Ho hum.
Richard Jones <richard@users.sourceforge.net>
parents:
2621
diff
changeset
|
270 def registerUtil(self, name, function): |
|
a9e1fff1e793
I thought I committed this last night. Ho hum.
Richard Jones <richard@users.sourceforge.net>
parents:
2621
diff
changeset
|
271 self.templating_utils[name] = function |
|
204
c1461733cbf9
Instances are now opened by a special function...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
272 |
|
6010
8ccb41b477d1
Flake8 cleanup. Formating only no code changes.
John Rouillard <rouilj@ieee.org>
parents:
5810
diff
changeset
|
273 |
|
5264
32f95ec6bd8e
Python 2 and 3 support. Convert Exception into BaseException in core code.
John Rouillard <rouilj@ieee.org>
parents:
5216
diff
changeset
|
274 class TrackerError(BaseException): |
|
1158
30db4a11d700
sanity check instance attributes on open
Richard Jones <richard@users.sourceforge.net>
parents:
1090
diff
changeset
|
275 pass |
|
30db4a11d700
sanity check instance attributes on open
Richard Jones <richard@users.sourceforge.net>
parents:
1090
diff
changeset
|
276 |
|
1780
d2801a2b0a77
Initial implementation (half-baked) at new Tracker instance.
Richard Jones <richard@users.sourceforge.net>
parents:
1174
diff
changeset
|
277 |
|
d2801a2b0a77
Initial implementation (half-baked) at new Tracker instance.
Richard Jones <richard@users.sourceforge.net>
parents:
1174
diff
changeset
|
278 class OldStyleTrackers: |
|
204
c1461733cbf9
Instances are now opened by a special function...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
279 def __init__(self): |
|
c1461733cbf9
Instances are now opened by a special function...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
280 self.number = 0 |
|
1158
30db4a11d700
sanity check instance attributes on open
Richard Jones <richard@users.sourceforge.net>
parents:
1090
diff
changeset
|
281 self.trackers = {} |
|
204
c1461733cbf9
Instances are now opened by a special function...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
282 |
|
2851
96626831def1
trackers got a 'templates' attribute, containing html templates collection...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2836
diff
changeset
|
283 def open(self, tracker_home, optimize=0): |
|
96626831def1
trackers got a 'templates' attribute, containing html templates collection...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2836
diff
changeset
|
284 """Open the tracker. |
|
380
a1331423eb93
Fixed issues with nosy reaction and author copies.
Richard Jones <richard@users.sourceforge.net>
parents:
214
diff
changeset
|
285 |
|
2851
96626831def1
trackers got a 'templates' attribute, containing html templates collection...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2836
diff
changeset
|
286 Parameters: |
|
96626831def1
trackers got a 'templates' attribute, containing html templates collection...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2836
diff
changeset
|
287 tracker_home: |
|
96626831def1
trackers got a 'templates' attribute, containing html templates collection...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2836
diff
changeset
|
288 tracker home directory |
|
96626831def1
trackers got a 'templates' attribute, containing html templates collection...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2836
diff
changeset
|
289 optimize: |
|
96626831def1
trackers got a 'templates' attribute, containing html templates collection...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2836
diff
changeset
|
290 if set, precompile html templates |
|
96626831def1
trackers got a 'templates' attribute, containing html templates collection...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2836
diff
changeset
|
291 |
|
96626831def1
trackers got a 'templates' attribute, containing html templates collection...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2836
diff
changeset
|
292 Raise ValueError if the tracker home doesn't exist. |
|
96626831def1
trackers got a 'templates' attribute, containing html templates collection...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2836
diff
changeset
|
293 |
|
96626831def1
trackers got a 'templates' attribute, containing html templates collection...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2836
diff
changeset
|
294 """ |
|
1780
d2801a2b0a77
Initial implementation (half-baked) at new Tracker instance.
Richard Jones <richard@users.sourceforge.net>
parents:
1174
diff
changeset
|
295 import imp |
|
1174
8e318dfaf479
Verify contents of tracker module when the tracker is opened
Richard Jones <richard@users.sourceforge.net>
parents:
1162
diff
changeset
|
296 # sanity check existence of tracker home |
|
1158
30db4a11d700
sanity check instance attributes on open
Richard Jones <richard@users.sourceforge.net>
parents:
1090
diff
changeset
|
297 if not os.path.exists(tracker_home): |
|
6010
8ccb41b477d1
Flake8 cleanup. Formating only no code changes.
John Rouillard <rouilj@ieee.org>
parents:
5810
diff
changeset
|
298 raise ValueError('no such directory: "%s"' % tracker_home) |
|
1174
8e318dfaf479
Verify contents of tracker module when the tracker is opened
Richard Jones <richard@users.sourceforge.net>
parents:
1162
diff
changeset
|
299 |
|
8e318dfaf479
Verify contents of tracker module when the tracker is opened
Richard Jones <richard@users.sourceforge.net>
parents:
1162
diff
changeset
|
300 # sanity check tracker home contents |
|
8e318dfaf479
Verify contents of tracker module when the tracker is opened
Richard Jones <richard@users.sourceforge.net>
parents:
1162
diff
changeset
|
301 for reqd in 'config dbinit select_db interfaces'.split(): |
|
6010
8ccb41b477d1
Flake8 cleanup. Formating only no code changes.
John Rouillard <rouilj@ieee.org>
parents:
5810
diff
changeset
|
302 if not os.path.exists(os.path.join(tracker_home, '%s.py' % reqd)): |
|
8ccb41b477d1
Flake8 cleanup. Formating only no code changes.
John Rouillard <rouilj@ieee.org>
parents:
5810
diff
changeset
|
303 raise TrackerError('File "%s.py" missing from tracker ' |
|
8ccb41b477d1
Flake8 cleanup. Formating only no code changes.
John Rouillard <rouilj@ieee.org>
parents:
5810
diff
changeset
|
304 'home "%s"' % (reqd, tracker_home)) |
|
1174
8e318dfaf479
Verify contents of tracker module when the tracker is opened
Richard Jones <richard@users.sourceforge.net>
parents:
1162
diff
changeset
|
305 |
|
5381
0942fe89e82e
Python 3 preparation: change "x.has_key(y)" to "y in x".
Joseph Myers <jsm@polyomino.org.uk>
parents:
5378
diff
changeset
|
306 if tracker_home in self.trackers: |
|
1158
30db4a11d700
sanity check instance attributes on open
Richard Jones <richard@users.sourceforge.net>
parents:
1090
diff
changeset
|
307 return imp.load_package(self.trackers[tracker_home], |
|
6010
8ccb41b477d1
Flake8 cleanup. Formating only no code changes.
John Rouillard <rouilj@ieee.org>
parents:
5810
diff
changeset
|
308 tracker_home) |
|
2933
6574d6736b57
register all backend modules for old-style trackers
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2902
diff
changeset
|
309 # register all available backend modules |
|
6574d6736b57
register all backend modules for old-style trackers
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2902
diff
changeset
|
310 backends.list_backends() |
|
204
c1461733cbf9
Instances are now opened by a special function...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
311 self.number = self.number + 1 |
|
6010
8ccb41b477d1
Flake8 cleanup. Formating only no code changes.
John Rouillard <rouilj@ieee.org>
parents:
5810
diff
changeset
|
312 modname = '_roundup_tracker_%s' % self.number |
|
1158
30db4a11d700
sanity check instance attributes on open
Richard Jones <richard@users.sourceforge.net>
parents:
1090
diff
changeset
|
313 self.trackers[tracker_home] = modname |
|
30db4a11d700
sanity check instance attributes on open
Richard Jones <richard@users.sourceforge.net>
parents:
1090
diff
changeset
|
314 |
|
30db4a11d700
sanity check instance attributes on open
Richard Jones <richard@users.sourceforge.net>
parents:
1090
diff
changeset
|
315 # load the tracker |
|
30db4a11d700
sanity check instance attributes on open
Richard Jones <richard@users.sourceforge.net>
parents:
1090
diff
changeset
|
316 tracker = imp.load_package(modname, tracker_home) |
|
30db4a11d700
sanity check instance attributes on open
Richard Jones <richard@users.sourceforge.net>
parents:
1090
diff
changeset
|
317 |
|
30db4a11d700
sanity check instance attributes on open
Richard Jones <richard@users.sourceforge.net>
parents:
1090
diff
changeset
|
318 # ensure the tracker has all the required bits |
|
2621
d344419d599d
use new style config;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2584
diff
changeset
|
319 for required in 'open init Client MailGW'.split(): |
|
1158
30db4a11d700
sanity check instance attributes on open
Richard Jones <richard@users.sourceforge.net>
parents:
1090
diff
changeset
|
320 if not hasattr(tracker, required): |
|
6010
8ccb41b477d1
Flake8 cleanup. Formating only no code changes.
John Rouillard <rouilj@ieee.org>
parents:
5810
diff
changeset
|
321 raise TrackerError('Required tracker attribute "%s" missing' % |
|
8ccb41b477d1
Flake8 cleanup. Formating only no code changes.
John Rouillard <rouilj@ieee.org>
parents:
5810
diff
changeset
|
322 required) |
|
1158
30db4a11d700
sanity check instance attributes on open
Richard Jones <richard@users.sourceforge.net>
parents:
1090
diff
changeset
|
323 |
|
2621
d344419d599d
use new style config;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2584
diff
changeset
|
324 # load and apply the config |
|
2647
8c46091c36d0
Main Roundup configuration class renamed to CoreConfig.
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2638
diff
changeset
|
325 tracker.config = configuration.CoreConfig(tracker_home) |
|
2621
d344419d599d
use new style config;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2584
diff
changeset
|
326 tracker.dbinit.config = tracker.config |
|
2397
fa50e1347397
added basic logging support
Richard Jones <richard@users.sourceforge.net>
parents:
2273
diff
changeset
|
327 |
|
2851
96626831def1
trackers got a 'templates' attribute, containing html templates collection...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2836
diff
changeset
|
328 tracker.optimize = optimize |
|
4722
f7e68ae4926c
Restore compatibility with an old style trackers (not sure if
anatoly techtonik <techtonik@gmail.com>
parents:
4721
diff
changeset
|
329 tracker.templates = templating.get_loader(tracker.config["TEMPLATES"]) |
|
2851
96626831def1
trackers got a 'templates' attribute, containing html templates collection...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2836
diff
changeset
|
330 if optimize: |
|
4748
e339583eae8e
templating: rename precompileTemplates to precompile
anatoly techtonik <techtonik@gmail.com>
parents:
4722
diff
changeset
|
331 tracker.templates.precompile() |
|
2851
96626831def1
trackers got a 'templates' attribute, containing html templates collection...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2836
diff
changeset
|
332 |
|
1158
30db4a11d700
sanity check instance attributes on open
Richard Jones <richard@users.sourceforge.net>
parents:
1090
diff
changeset
|
333 return tracker |
|
204
c1461733cbf9
Instances are now opened by a special function...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
334 |
|
6010
8ccb41b477d1
Flake8 cleanup. Formating only no code changes.
John Rouillard <rouilj@ieee.org>
parents:
5810
diff
changeset
|
335 |
|
1780
d2801a2b0a77
Initial implementation (half-baked) at new Tracker instance.
Richard Jones <richard@users.sourceforge.net>
parents:
1174
diff
changeset
|
336 OldStyleTrackers = OldStyleTrackers() |
|
6010
8ccb41b477d1
Flake8 cleanup. Formating only no code changes.
John Rouillard <rouilj@ieee.org>
parents:
5810
diff
changeset
|
337 |
|
8ccb41b477d1
Flake8 cleanup. Formating only no code changes.
John Rouillard <rouilj@ieee.org>
parents:
5810
diff
changeset
|
338 |
|
2851
96626831def1
trackers got a 'templates' attribute, containing html templates collection...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2836
diff
changeset
|
339 def open(tracker_home, optimize=0): |
|
1780
d2801a2b0a77
Initial implementation (half-baked) at new Tracker instance.
Richard Jones <richard@users.sourceforge.net>
parents:
1174
diff
changeset
|
340 if os.path.exists(os.path.join(tracker_home, 'dbinit.py')): |
|
d2801a2b0a77
Initial implementation (half-baked) at new Tracker instance.
Richard Jones <richard@users.sourceforge.net>
parents:
1174
diff
changeset
|
341 # user should upgrade... |
|
2851
96626831def1
trackers got a 'templates' attribute, containing html templates collection...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2836
diff
changeset
|
342 return OldStyleTrackers.open(tracker_home, optimize=optimize) |
|
204
c1461733cbf9
Instances are now opened by a special function...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
343 |
|
2851
96626831def1
trackers got a 'templates' attribute, containing html templates collection...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2836
diff
changeset
|
344 return Tracker(tracker_home, optimize=optimize) |
|
204
c1461733cbf9
Instances are now opened by a special function...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
345 |
|
2621
d344419d599d
use new style config;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2584
diff
changeset
|
346 # vim: set filetype=python sts=4 sw=4 et si : |
