Mercurial > p > roundup > code
annotate roundup/instance.py @ 8180:d02ce1d14acd
feat: issue2551068 - Provide way to retrieve file/msg data via rest endpoint.
Use Allow header to change format of /binary_content endpoint. If
Allow header for endpoint is not application/json, it will be matched
against the mime type for the file. */*, text/* are supported and will
return the native mime type if present.
Changes:
move */* mime type from static dict of supported types. It was
hardcoded to return json only. Now it can return a matching
non-json mime type for the /binary_content endpoint.
Edited some errors to explicitly add */* mime type.
Cleanups to use ', ' separation in lists of valid mime types rather
than just space separated.
Remove ETag header when sending raw content. See issue 2551375 for
background.
Doc added to rest.txt.
Small format fix up (add dash) in CHANGES.txt.
Make passing an unset/None/False accept_mime_type to
format_dispatch_output a 500 error. This used to be the fallback
to produce a 406 error after all processing had happened. It
should no longer be possible to take that code path as all 406
errors (with valid accept_mime_types) are generated before
processing takes place.
Make format_dispatch_output handle output other than json/xml so it
can send back binary_content data.
Removed a spurious client.response_code = 400 that seems to not be
used.
Tests added for all code paths.
Database setup for tests msg and file entry. This required a file
upload test to change so it doesn't look for file1 as the link
returned by the upload. Download the link and verify the data
rather than verifying the link.
Multiple formatting changes to error messages to make all lists of
valid mime types ', ' an not just space separated.
| author | John Rouillard <rouilj@ieee.org> |
|---|---|
| date | Sun, 08 Dec 2024 17:22:33 -0500 |
| parents | 586f76eb33e8 |
| children | 2a7c3eeaf167 |
| 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 |
|
2977
9c8de04a76b1
unit test fixes
Richard Jones <richard@users.sourceforge.net>
parents:
2933
diff
changeset
|
44 from roundup import configuration, mailgw |
| 4083 | 45 from roundup import hyperdb, backends, actions |
|
8091
586f76eb33e8
fix: keep python2 working a little longer.
John Rouillard <rouilj@ieee.org>
parents:
8088
diff
changeset
|
46 from roundup.anypy import scandir_ |
|
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 |
|
6123
c177e7128dc9
issue2551083 Replace BaseException and Exception with RoundupException
John Rouillard <rouilj@ieee.org>
parents:
6010
diff
changeset
|
49 from roundup.exceptions import RoundupException |
|
1780
d2801a2b0a77
Initial implementation (half-baked) at new Tracker instance.
Richard Jones <richard@users.sourceforge.net>
parents:
1174
diff
changeset
|
50 |
|
6010
8ccb41b477d1
Flake8 cleanup. Formating only no code changes.
John Rouillard <rouilj@ieee.org>
parents:
5810
diff
changeset
|
51 |
|
1780
d2801a2b0a77
Initial implementation (half-baked) at new Tracker instance.
Richard Jones <richard@users.sourceforge.net>
parents:
1174
diff
changeset
|
52 class Tracker: |
|
2851
96626831def1
trackers got a 'templates' attribute, containing html templates collection...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2836
diff
changeset
|
53 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
|
54 """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
|
55 |
|
96626831def1
trackers got a 'templates' attribute, containing html templates collection...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2836
diff
changeset
|
56 Parameters: |
|
96626831def1
trackers got a 'templates' attribute, containing html templates collection...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2836
diff
changeset
|
57 tracker_home: |
|
96626831def1
trackers got a 'templates' attribute, containing html templates collection...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2836
diff
changeset
|
58 tracker home directory |
|
96626831def1
trackers got a 'templates' attribute, containing html templates collection...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2836
diff
changeset
|
59 optimize: |
|
96626831def1
trackers got a 'templates' attribute, containing html templates collection...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2836
diff
changeset
|
60 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
|
61 |
|
96626831def1
trackers got a 'templates' attribute, containing html templates collection...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2836
diff
changeset
|
62 """ |
|
1780
d2801a2b0a77
Initial implementation (half-baked) at new Tracker instance.
Richard Jones <richard@users.sourceforge.net>
parents:
1174
diff
changeset
|
63 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
|
64 self.optimize = optimize |
|
2647
8c46091c36d0
Main Roundup configuration class renamed to CoreConfig.
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2638
diff
changeset
|
65 self.config = configuration.CoreConfig(tracker_home) |
| 4083 | 66 self.actions = {} |
|
2633
a9e1fff1e793
I thought I committed this last night. Ho hum.
Richard Jones <richard@users.sourceforge.net>
parents:
2621
diff
changeset
|
67 self.cgi_actions = {} |
|
a9e1fff1e793
I thought I committed this last night. Ho hum.
Richard Jones <richard@users.sourceforge.net>
parents:
2621
diff
changeset
|
68 self.templating_utils = {} |
|
4588
7017c8dd704c
Small improvements on instance.py by Cheer Xiao.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4587
diff
changeset
|
69 |
|
7017c8dd704c
Small improvements on instance.py by Cheer Xiao.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4587
diff
changeset
|
70 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
|
71 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
|
72 |
|
4592
7b7cfb4b00eb
Fix improvements on instance.py.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4588
diff
changeset
|
73 self.load_interfaces() |
|
4721
ec359e7c6c95
Rename templating.get_templates to get_loader
anatoly techtonik <techtonik@gmail.com>
parents:
4720
diff
changeset
|
74 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
|
75 self.config["TEMPLATE_ENGINE"]) |
|
5041
5251e97b1de0
Configure the database backend in the config.ini
John Kristensen <john@jerrykan.com>
parents:
4781
diff
changeset
|
76 |
|
5251e97b1de0
Configure the database backend in the config.ini
John Kristensen <john@jerrykan.com>
parents:
4781
diff
changeset
|
77 rdbms_backend = self.config.RDBMS_BACKEND |
|
5251e97b1de0
Configure the database backend in the config.ini
John Kristensen <john@jerrykan.com>
parents:
4781
diff
changeset
|
78 |
|
5251e97b1de0
Configure the database backend in the config.ini
John Kristensen <john@jerrykan.com>
parents:
4781
diff
changeset
|
79 self.backend = backends.get_backend(rdbms_backend) |
|
4592
7b7cfb4b00eb
Fix improvements on instance.py.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4588
diff
changeset
|
80 |
|
2851
96626831def1
trackers got a 'templates' attribute, containing html templates collection...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2836
diff
changeset
|
81 if self.optimize: |
|
4748
e339583eae8e
templating: rename precompileTemplates to precompile
anatoly techtonik <techtonik@gmail.com>
parents:
4722
diff
changeset
|
82 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
|
83 # initialize tracker extensions |
|
bc72b1c7319b
if optimize is set, load all extension modules in __init__()...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2890
diff
changeset
|
84 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
|
85 extension(self) |
|
2902
f50b867747c9
if optimize is set, load the schema file in __init__()...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2891
diff
changeset
|
86 # load database schema |
|
4588
7017c8dd704c
Small improvements on instance.py by Cheer Xiao.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4587
diff
changeset
|
87 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
|
88 # load database detectors |
|
bc72b1c7319b
if optimize is set, load all extension modules in __init__()...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2890
diff
changeset
|
89 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
|
90 # 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
|
91 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
|
92 |
|
2796
7f1e17aeca1b
journaltag is optional
Richard Jones <richard@users.sourceforge.net>
parents:
2736
diff
changeset
|
93 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
|
94 # 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
|
95 # 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
|
96 # 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
|
97 # 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
|
98 backend = self.backend |
|
4588
7017c8dd704c
Small improvements on instance.py by Cheer Xiao.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4587
diff
changeset
|
99 env = { |
|
2633
a9e1fff1e793
I thought I committed this last night. Ho hum.
Richard Jones <richard@users.sourceforge.net>
parents:
2621
diff
changeset
|
100 'Class': backend.Class, |
|
a9e1fff1e793
I thought I committed this last night. Ho hum.
Richard Jones <richard@users.sourceforge.net>
parents:
2621
diff
changeset
|
101 'FileClass': backend.FileClass, |
|
a9e1fff1e793
I thought I committed this last night. Ho hum.
Richard Jones <richard@users.sourceforge.net>
parents:
2621
diff
changeset
|
102 'IssueClass': backend.IssueClass, |
|
a9e1fff1e793
I thought I committed this last night. Ho hum.
Richard Jones <richard@users.sourceforge.net>
parents:
2621
diff
changeset
|
103 'String': hyperdb.String, |
|
a9e1fff1e793
I thought I committed this last night. Ho hum.
Richard Jones <richard@users.sourceforge.net>
parents:
2621
diff
changeset
|
104 'Password': hyperdb.Password, |
|
a9e1fff1e793
I thought I committed this last night. Ho hum.
Richard Jones <richard@users.sourceforge.net>
parents:
2621
diff
changeset
|
105 'Date': hyperdb.Date, |
|
a9e1fff1e793
I thought I committed this last night. Ho hum.
Richard Jones <richard@users.sourceforge.net>
parents:
2621
diff
changeset
|
106 'Link': hyperdb.Link, |
|
a9e1fff1e793
I thought I committed this last night. Ho hum.
Richard Jones <richard@users.sourceforge.net>
parents:
2621
diff
changeset
|
107 'Multilink': hyperdb.Multilink, |
|
a9e1fff1e793
I thought I committed this last night. Ho hum.
Richard Jones <richard@users.sourceforge.net>
parents:
2621
diff
changeset
|
108 'Interval': hyperdb.Interval, |
|
a9e1fff1e793
I thought I committed this last night. Ho hum.
Richard Jones <richard@users.sourceforge.net>
parents:
2621
diff
changeset
|
109 'Boolean': hyperdb.Boolean, |
|
a9e1fff1e793
I thought I committed this last night. Ho hum.
Richard Jones <richard@users.sourceforge.net>
parents:
2621
diff
changeset
|
110 '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
|
111 'Integer': hyperdb.Integer, |
|
2633
a9e1fff1e793
I thought I committed this last night. Ho hum.
Richard Jones <richard@users.sourceforge.net>
parents:
2621
diff
changeset
|
112 '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
|
113 } |
|
1780
d2801a2b0a77
Initial implementation (half-baked) at new Tracker instance.
Richard Jones <richard@users.sourceforge.net>
parents:
1174
diff
changeset
|
114 |
|
2891
bc72b1c7319b
if optimize is set, load all extension modules in __init__()...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2890
diff
changeset
|
115 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
|
116 # execute preloaded schema object |
|
4606
48b73776601c
More fix for improvements on instance.py.
Cheer Xiao <xiaqqaix@gmail.com>
parents:
4592
diff
changeset
|
117 self._exec(self.schema, env) |
|
2891
bc72b1c7319b
if optimize is set, load all extension modules in __init__()...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2890
diff
changeset
|
118 # use preloaded detectors |
|
bc72b1c7319b
if optimize is set, load all extension modules in __init__()...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2890
diff
changeset
|
119 detectors = self.detectors |
|
bc72b1c7319b
if optimize is set, load all extension modules in __init__()...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2890
diff
changeset
|
120 else: |
|
2902
f50b867747c9
if optimize is set, load the schema file in __init__()...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2891
diff
changeset
|
121 # execute the schema file |
|
4588
7017c8dd704c
Small improvements on instance.py by Cheer Xiao.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4587
diff
changeset
|
122 self._execfile('schema.py', env) |
|
2891
bc72b1c7319b
if optimize is set, load all extension modules in __init__()...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2890
diff
changeset
|
123 # 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
|
124 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
|
125 extension(self) |
|
bc72b1c7319b
if optimize is set, load all extension modules in __init__()...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2890
diff
changeset
|
126 detectors = self.get_extensions('detectors') |
|
4588
7017c8dd704c
Small improvements on instance.py by Cheer Xiao.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4587
diff
changeset
|
127 db = env['db'] |
| 4781 | 128 db.tx_Source = None |
|
6658
408fd477761f
Add i18n object to roundupdb.Database
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6536
diff
changeset
|
129 # Useful for script when multiple open calls happen. Scripts have |
|
408fd477761f
Add i18n object to roundupdb.Database
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6536
diff
changeset
|
130 # to inject the i18n object, there is currently no support for this |
|
408fd477761f
Add i18n object to roundupdb.Database
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6536
diff
changeset
|
131 if hasattr(self, 'i18n'): |
|
408fd477761f
Add i18n object to roundupdb.Database
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6536
diff
changeset
|
132 db.i18n = self.i18n |
| 4781 | 133 |
|
2891
bc72b1c7319b
if optimize is set, load all extension modules in __init__()...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2890
diff
changeset
|
134 # apply the detectors |
|
bc72b1c7319b
if optimize is set, load all extension modules in __init__()...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2890
diff
changeset
|
135 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
|
136 detector(db) |
|
bc72b1c7319b
if optimize is set, load all extension modules in __init__()...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2890
diff
changeset
|
137 # 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
|
138 # 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
|
139 # 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
|
140 if not (self.optimize and self.db_open): |
|
4266
2b75274936bc
Add schema consistency checks.
Stefan Seefeld <stefan@seefeld.name>
parents:
4211
diff
changeset
|
141 # As a consistency check, ensure that every link property is |
|
2b75274936bc
Add schema consistency checks.
Stefan Seefeld <stefan@seefeld.name>
parents:
4211
diff
changeset
|
142 # pointing at a defined class. Otherwise, the schema is |
|
2b75274936bc
Add schema consistency checks.
Stefan Seefeld <stefan@seefeld.name>
parents:
4211
diff
changeset
|
143 # internally inconsistent. This is an important safety |
|
2b75274936bc
Add schema consistency checks.
Stefan Seefeld <stefan@seefeld.name>
parents:
4211
diff
changeset
|
144 # measure as it protects against an accidental schema change |
|
2b75274936bc
Add schema consistency checks.
Stefan Seefeld <stefan@seefeld.name>
parents:
4211
diff
changeset
|
145 # 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
|
146 # 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
|
147 # 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
|
148 # as possible that it is no longer needed. |
|
2b75274936bc
Add schema consistency checks.
Stefan Seefeld <stefan@seefeld.name>
parents:
4211
diff
changeset
|
149 classes = db.getclasses() |
|
2b75274936bc
Add schema consistency checks.
Stefan Seefeld <stefan@seefeld.name>
parents:
4211
diff
changeset
|
150 for classname in classes: |
|
2b75274936bc
Add schema consistency checks.
Stefan Seefeld <stefan@seefeld.name>
parents:
4211
diff
changeset
|
151 cl = db.getclass(classname) |
|
5395
23b8e6067f7c
Python 3 preparation: update calls to dict methods.
Joseph Myers <jsm@polyomino.org.uk>
parents:
5383
diff
changeset
|
152 for propname, prop in cl.getprops().items(): |
|
4266
2b75274936bc
Add schema consistency checks.
Stefan Seefeld <stefan@seefeld.name>
parents:
4211
diff
changeset
|
153 if not isinstance(prop, (hyperdb.Link, |
|
2b75274936bc
Add schema consistency checks.
Stefan Seefeld <stefan@seefeld.name>
parents:
4211
diff
changeset
|
154 hyperdb.Multilink)): |
|
2b75274936bc
Add schema consistency checks.
Stefan Seefeld <stefan@seefeld.name>
parents:
4211
diff
changeset
|
155 continue |
|
2b75274936bc
Add schema consistency checks.
Stefan Seefeld <stefan@seefeld.name>
parents:
4211
diff
changeset
|
156 linkto = prop.classname |
|
2b75274936bc
Add schema consistency checks.
Stefan Seefeld <stefan@seefeld.name>
parents:
4211
diff
changeset
|
157 if linkto not in classes: |
|
6010
8ccb41b477d1
Flake8 cleanup. Formating only no code changes.
John Rouillard <rouilj@ieee.org>
parents:
5810
diff
changeset
|
158 raise ValueError("property %s.%s links to " |
|
8ccb41b477d1
Flake8 cleanup. Formating only no code changes.
John Rouillard <rouilj@ieee.org>
parents:
5810
diff
changeset
|
159 "non-existent class %s" |
|
8ccb41b477d1
Flake8 cleanup. Formating only no code changes.
John Rouillard <rouilj@ieee.org>
parents:
5810
diff
changeset
|
160 % (classname, propname, linkto)) |
|
4266
2b75274936bc
Add schema consistency checks.
Stefan Seefeld <stefan@seefeld.name>
parents:
4211
diff
changeset
|
161 |
|
2891
bc72b1c7319b
if optimize is set, load all extension modules in __init__()...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2890
diff
changeset
|
162 self.db_open = 1 |
|
6658
408fd477761f
Add i18n object to roundupdb.Database
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6536
diff
changeset
|
163 # *Must* call post_init! It is not an error if called multiple times. |
|
408fd477761f
Add i18n object to roundupdb.Database
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6536
diff
changeset
|
164 db.post_init() |
|
2633
a9e1fff1e793
I thought I committed this last night. Ho hum.
Richard Jones <richard@users.sourceforge.net>
parents:
2621
diff
changeset
|
165 return db |
|
a9e1fff1e793
I thought I committed this last night. Ho hum.
Richard Jones <richard@users.sourceforge.net>
parents:
2621
diff
changeset
|
166 |
|
2697
d138df58b0c3
load user interfaces
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2688
diff
changeset
|
167 def load_interfaces(self): |
|
d138df58b0c3
load user interfaces
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2688
diff
changeset
|
168 """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
|
169 env = {} |
|
2697
d138df58b0c3
load user interfaces
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2688
diff
changeset
|
170 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
|
171 self._execfile('interfaces.py', env) |
|
7017c8dd704c
Small improvements on instance.py by Cheer Xiao.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4587
diff
changeset
|
172 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
|
173 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
|
174 self.TemplatingUtils = env.get('TemplatingUtils', |
|
8ccb41b477d1
Flake8 cleanup. Formating only no code changes.
John Rouillard <rouilj@ieee.org>
parents:
5810
diff
changeset
|
175 templating.TemplatingUtils) |
|
2697
d138df58b0c3
load user interfaces
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2688
diff
changeset
|
176 |
|
2891
bc72b1c7319b
if optimize is set, load all extension modules in __init__()...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2890
diff
changeset
|
177 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
|
178 """Load python extensions |
|
bc72b1c7319b
if optimize is set, load all extension modules in __init__()...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2890
diff
changeset
|
179 |
|
bc72b1c7319b
if optimize is set, load all extension modules in __init__()...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2890
diff
changeset
|
180 Parameters: |
|
bc72b1c7319b
if optimize is set, load all extension modules in __init__()...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2890
diff
changeset
|
181 dirname: |
|
bc72b1c7319b
if optimize is set, load all extension modules in __init__()...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2890
diff
changeset
|
182 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
|
183 |
|
bc72b1c7319b
if optimize is set, load all extension modules in __init__()...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2890
diff
changeset
|
184 Return value: |
|
bc72b1c7319b
if optimize is set, load all extension modules in __init__()...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2890
diff
changeset
|
185 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
|
186 |
|
bc72b1c7319b
if optimize is set, load all extension modules in __init__()...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2890
diff
changeset
|
187 """ |
|
bc72b1c7319b
if optimize is set, load all extension modules in __init__()...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2890
diff
changeset
|
188 extensions = [] |
|
2688
eb14c12813a0
fix load_extensions():
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2677
diff
changeset
|
189 dirpath = os.path.join(self.tracker_home, dirname) |
|
eb14c12813a0
fix load_extensions():
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2677
diff
changeset
|
190 if os.path.isdir(dirpath): |
|
3771
bf660e65ba45
Directory structure changes.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
2977
diff
changeset
|
191 sys.path.insert(1, dirpath) |
|
8088
1045425c23b2
refactor!: replace os.listdir() with os.scandir()
John Rouillard <rouilj@ieee.org>
parents:
7649
diff
changeset
|
192 for dir_entry in os.scandir(dirpath): |
|
1045425c23b2
refactor!: replace os.listdir() with os.scandir()
John Rouillard <rouilj@ieee.org>
parents:
7649
diff
changeset
|
193 name = dir_entry.name |
|
2677
1f0143b53bee
fix .load_extensions():
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2647
diff
changeset
|
194 if not name.endswith('.py'): |
|
1f0143b53bee
fix .load_extensions():
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2647
diff
changeset
|
195 continue |
|
4588
7017c8dd704c
Small improvements on instance.py by Cheer Xiao.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4587
diff
changeset
|
196 env = {} |
|
7017c8dd704c
Small improvements on instance.py by Cheer Xiao.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4587
diff
changeset
|
197 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
|
198 extensions.append(env['init']) |
|
3773
21ff756e4549
Fixes for directory handling.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3771
diff
changeset
|
199 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
|
200 return extensions |
|
2638
18e86941c950
Load up extensions in the tracker "extensions" directory.
Richard Jones <richard@users.sourceforge.net>
parents:
2633
diff
changeset
|
201 |
|
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
|
202 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
|
203 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
|
204 db.tx_Source = tx_Source |
|
6010
8ccb41b477d1
Flake8 cleanup. Formating only no code changes.
John Rouillard <rouilj@ieee.org>
parents:
5810
diff
changeset
|
205 self._execfile('initial_data.py', |
|
8ccb41b477d1
Flake8 cleanup. Formating only no code changes.
John Rouillard <rouilj@ieee.org>
parents:
5810
diff
changeset
|
206 {'db': db, 'adminpw': adminpw, |
|
8ccb41b477d1
Flake8 cleanup. Formating only no code changes.
John Rouillard <rouilj@ieee.org>
parents:
5810
diff
changeset
|
207 '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
|
208 db.commit() |
|
a9e1fff1e793
I thought I committed this last night. Ho hum.
Richard Jones <richard@users.sourceforge.net>
parents:
2621
diff
changeset
|
209 db.close() |
|
a9e1fff1e793
I thought I committed this last night. Ho hum.
Richard Jones <richard@users.sourceforge.net>
parents:
2621
diff
changeset
|
210 |
|
a9e1fff1e793
I thought I committed this last night. Ho hum.
Richard Jones <richard@users.sourceforge.net>
parents:
2621
diff
changeset
|
211 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
|
212 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
|
213 |
|
a9e1fff1e793
I thought I committed this last night. Ho hum.
Richard Jones <richard@users.sourceforge.net>
parents:
2621
diff
changeset
|
214 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
|
215 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
|
216 |
|
4588
7017c8dd704c
Small improvements on instance.py by Cheer Xiao.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4587
diff
changeset
|
217 def _compile(self, fname): |
|
7017c8dd704c
Small improvements on instance.py by Cheer Xiao.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4587
diff
changeset
|
218 fname = os.path.join(self.tracker_home, fname) |
|
6479
808f7a8ed2b6
Clean leaking file descriptors. Eliminates ResourceWarnings.
John Rouillard <rouilj@ieee.org>
parents:
6330
diff
changeset
|
219 with builtins.open(fname) as fnamed: |
|
808f7a8ed2b6
Clean leaking file descriptors. Eliminates ResourceWarnings.
John Rouillard <rouilj@ieee.org>
parents:
6330
diff
changeset
|
220 return compile(fnamed.read(), fname, 'exec') |
|
4588
7017c8dd704c
Small improvements on instance.py by Cheer Xiao.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4587
diff
changeset
|
221 |
|
7017c8dd704c
Small improvements on instance.py by Cheer Xiao.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4587
diff
changeset
|
222 def _exec(self, obj, env): |
|
7017c8dd704c
Small improvements on instance.py by Cheer Xiao.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4587
diff
changeset
|
223 if self.libdir: |
|
7017c8dd704c
Small improvements on instance.py by Cheer Xiao.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4587
diff
changeset
|
224 sys.path.insert(1, self.libdir) |
|
7017c8dd704c
Small improvements on instance.py by Cheer Xiao.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4587
diff
changeset
|
225 exec(obj, env) |
|
7017c8dd704c
Small improvements on instance.py by Cheer Xiao.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4587
diff
changeset
|
226 if self.libdir: |
|
7017c8dd704c
Small improvements on instance.py by Cheer Xiao.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4587
diff
changeset
|
227 sys.path.remove(self.libdir) |
|
7017c8dd704c
Small improvements on instance.py by Cheer Xiao.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4587
diff
changeset
|
228 return env |
|
7017c8dd704c
Small improvements on instance.py by Cheer Xiao.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4587
diff
changeset
|
229 |
|
7017c8dd704c
Small improvements on instance.py by Cheer Xiao.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4587
diff
changeset
|
230 def _execfile(self, fname, env): |
|
7017c8dd704c
Small improvements on instance.py by Cheer Xiao.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4587
diff
changeset
|
231 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
|
232 |
|
2633
a9e1fff1e793
I thought I committed this last night. Ho hum.
Richard Jones <richard@users.sourceforge.net>
parents:
2621
diff
changeset
|
233 def registerAction(self, name, action): |
| 4083 | 234 |
| 235 # The logic here is this: | |
| 236 # * if `action` derives from actions.Action, | |
| 237 # it is executable as a generic action. | |
| 238 # * if, moreover, it also derives from cgi.actions.Bridge, | |
| 239 # it may in addition be called via CGI | |
| 240 # * in all other cases we register it as a CGI action, without | |
| 241 # any check (for backward compatibility). | |
| 242 if issubclass(action, actions.Action): | |
| 243 self.actions[name] = action | |
| 244 if issubclass(action, cgi_actions.Bridge): | |
| 245 self.cgi_actions[name] = action | |
| 246 else: | |
| 247 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
|
248 |
|
a9e1fff1e793
I thought I committed this last night. Ho hum.
Richard Jones <richard@users.sourceforge.net>
parents:
2621
diff
changeset
|
249 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
|
250 self.templating_utils[name] = function |
|
204
c1461733cbf9
Instances are now opened by a special function...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
251 |
|
6010
8ccb41b477d1
Flake8 cleanup. Formating only no code changes.
John Rouillard <rouilj@ieee.org>
parents:
5810
diff
changeset
|
252 |
|
6123
c177e7128dc9
issue2551083 Replace BaseException and Exception with RoundupException
John Rouillard <rouilj@ieee.org>
parents:
6010
diff
changeset
|
253 class TrackerError(RoundupException): |
|
1158
30db4a11d700
sanity check instance attributes on open
Richard Jones <richard@users.sourceforge.net>
parents:
1090
diff
changeset
|
254 pass |
|
30db4a11d700
sanity check instance attributes on open
Richard Jones <richard@users.sourceforge.net>
parents:
1090
diff
changeset
|
255 |
|
1780
d2801a2b0a77
Initial implementation (half-baked) at new Tracker instance.
Richard Jones <richard@users.sourceforge.net>
parents:
1174
diff
changeset
|
256 |
|
2851
96626831def1
trackers got a 'templates' attribute, containing html templates collection...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2836
diff
changeset
|
257 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
|
258 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
|
259 # user should upgrade... |
|
6300
778a9f455067
Remove old code import imp, old style trackers db/backend_name
John Rouillard <rouilj@ieee.org>
parents:
6123
diff
changeset
|
260 raise TrackerError("Old style trackers using dbinit.py " |
|
778a9f455067
Remove old code import imp, old style trackers db/backend_name
John Rouillard <rouilj@ieee.org>
parents:
6123
diff
changeset
|
261 "are not supported after release 2.0") |
|
204
c1461733cbf9
Instances are now opened by a special function...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
262 |
|
2851
96626831def1
trackers got a 'templates' attribute, containing html templates collection...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2836
diff
changeset
|
263 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
|
264 |
|
2621
d344419d599d
use new style config;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2584
diff
changeset
|
265 # vim: set filetype=python sts=4 sw=4 et si : |
