From: richard Date: Mon, 9 Sep 2002 23:55:29 +0000 (+0000) Subject: instance_config -> config, and other related cleanups X-Git-Url: https://git.tokkee.org/?a=commitdiff_plain;h=74024ddfe0f40d61e5f0c52427b138da40782413;p=roundup.git instance_config -> config, and other related cleanups git-svn-id: http://svn.roundup-tracker.org/svnroot/roundup/trunk@1104 57a73879-2fb5-44c3-a270-3262357dd7e2 --- diff --git a/roundup/admin.py b/roundup/admin.py index 08fc092..440b097 100644 --- a/roundup/admin.py +++ b/roundup/admin.py @@ -16,7 +16,7 @@ # BASIS, AND THERE IS NO OBLIGATION WHATSOEVER TO PROVIDE MAINTENANCE, # SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. # -# $Id: admin.py,v 1.23 2002-08-19 02:53:27 richard Exp $ +# $Id: admin.py,v 1.24 2002-09-09 23:55:18 richard Exp $ import sys, os, getpass, getopt, re, UserDict, shlex, shutil try: @@ -301,7 +301,7 @@ Command help: print _(''' You should now edit the instance configuration file: - %(instance_config_file)s + %(config_file)s ... at a minimum, you must set MAILHOST, MAIL_DOMAIN and ADMIN_EMAIL. If you wish to modify the default schema, you should also edit the database @@ -309,7 +309,7 @@ Command help: %(database_config_file)s ... see the documentation on customizing for more information. ''')%{ - 'instance_config_file': os.path.join(instance_home, 'instance_config.py'), + 'config_file': os.path.join(instance_home, 'config.py'), 'database_config_file': os.path.join(instance_home, 'dbinit.py') } return 0 @@ -1146,6 +1146,9 @@ if __name__ == '__main__': # # $Log: not supported by cvs2svn $ +# Revision 1.23 2002/08/19 02:53:27 richard +# full database export and import is done +# # Revision 1.22 2002/08/16 04:26:42 richard # moving towards full database export # diff --git a/roundup/cgi/client.py b/roundup/cgi/client.py index f4485b1..2648144 100644 --- a/roundup/cgi/client.py +++ b/roundup/cgi/client.py @@ -1,4 +1,4 @@ -# $Id: client.py,v 1.24 2002-09-09 23:38:41 richard Exp $ +# $Id: client.py,v 1.25 2002-09-09 23:55:19 richard Exp $ __doc__ = """ WWW request handler (also used in the stand-alone server). @@ -310,12 +310,13 @@ class Client: # we just want to serve up the file named mt = mimetypes.guess_type(str(file))[0] self.header({'Content-Type': mt}) - self.write(open(os.path.join(self.instance.TEMPLATES, file)).read()) + self.write(open(os.path.join(self.instance.config.TEMPLATES, + file)).read()) def renderTemplate(self, name, extension, **kwargs): ''' Return a PageTemplate for the named page ''' - pt = getTemplate(self.instance.TEMPLATES, name, extension) + pt = getTemplate(self.instance.config.TEMPLATES, name, extension) # XXX handle PT rendering errors here more nicely try: # let the template render figure stuff out @@ -563,7 +564,7 @@ class Client: cl = self.db.user try: props = parsePropsFromForm(self.db, cl, self.form) - props['roles'] = self.instance.NEW_WEB_USER_ROLES + props['roles'] = self.instance.config.NEW_WEB_USER_ROLES self.userid = cl.create(**props) self.db.commit() except ValueError, message: @@ -1010,7 +1011,7 @@ class Client: # handle the messageid # TODO: handle inreplyto messageid = "<%s.%s.%s@%s>"%(time.time(), random.random(), - self.classname, self.instance.MAIL_DOMAIN) + self.classname, self.instance.config.MAIL_DOMAIN) # now create the message, attaching the files content = '\n'.join(m) diff --git a/roundup/hyperdb.py b/roundup/hyperdb.py index a301d7c..65d07e9 100644 --- a/roundup/hyperdb.py +++ b/roundup/hyperdb.py @@ -15,7 +15,7 @@ # BASIS, AND THERE IS NO OBLIGATION WHATSOEVER TO PROVIDE MAINTENANCE, # SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. # -# $Id: hyperdb.py,v 1.81 2002-08-30 08:37:16 richard Exp $ +# $Id: hyperdb.py,v 1.82 2002-09-09 23:55:19 richard Exp $ __doc__ = """ Hyperdatabase implementation, especially field types. @@ -607,399 +607,4 @@ def Choice(name, db, *options): cl.create(name=options[i], order=i) return hyperdb.Link(name) -# -# $Log: not supported by cvs2svn $ -# Revision 1.80 2002/08/16 04:28:13 richard -# added is_retired query to Class -# -# Revision 1.79 2002/07/29 23:30:14 richard -# documentation reorg post-new-security -# -# Revision 1.78 2002/07/21 03:26:37 richard -# Gordon, does this help? -# -# Revision 1.77 2002/07/18 11:27:47 richard -# ws -# -# Revision 1.76 2002/07/18 11:17:30 gmcm -# Add Number and Boolean types to hyperdb. -# Add conversion cases to web, mail & admin interfaces. -# Add storage/serialization cases to back_anydbm & back_metakit. -# -# Revision 1.75 2002/07/14 02:05:53 richard -# . all storage-specific code (ie. backend) is now implemented by the backends -# -# Revision 1.74 2002/07/10 00:24:10 richard -# braino -# -# Revision 1.73 2002/07/10 00:19:48 richard -# Added explicit closing of backend database handles. -# -# Revision 1.72 2002/07/09 21:53:38 gmcm -# Optimize Class.find so that the propspec can contain a set of ids to match. -# This is used by indexer.search so it can do just one find for all the index matches. -# This was already confusing code, but for common terms (lots of index matches), -# it is enormously faster. -# -# Revision 1.71 2002/07/09 03:02:52 richard -# More indexer work: -# - all String properties may now be indexed too. Currently there's a bit of -# "issue" specific code in the actual searching which needs to be -# addressed. In a nutshell: -# + pass 'indexme="yes"' as a String() property initialisation arg, eg: -# file = FileClass(db, "file", name=String(), type=String(), -# comment=String(indexme="yes")) -# + the comment will then be indexed and be searchable, with the results -# related back to the issue that the file is linked to -# - as a result of this work, the FileClass has a default MIME type that may -# be overridden in a subclass, or by the use of a "type" property as is -# done in the default templates. -# - the regeneration of the indexes (if necessary) is done once the schema is -# set up in the dbinit. -# -# Revision 1.70 2002/06/27 12:06:20 gmcm -# Improve an error message. -# -# Revision 1.69 2002/06/17 23:15:29 richard -# Can debug to stdout now -# -# Revision 1.68 2002/06/11 06:52:03 richard -# . #564271 ] find() and new properties -# -# Revision 1.67 2002/06/11 05:02:37 richard -# . #565979 ] code error in hyperdb.Class.find -# -# Revision 1.66 2002/05/25 07:16:24 rochecompaan -# Merged search_indexing-branch with HEAD -# -# Revision 1.65 2002/05/22 04:12:05 richard -# . applied patch #558876 ] cgi client customization -# ... with significant additions and modifications ;) -# - extended handling of ML assignedto to all places it's handled -# - added more NotFound info -# -# Revision 1.64 2002/05/15 06:21:21 richard -# . node caching now works, and gives a small boost in performance -# -# As a part of this, I cleaned up the DEBUG output and implemented TRACE -# output (HYPERDBTRACE='file to trace to') with checkpoints at the start of -# CGI requests. Run roundup with python -O to skip all the DEBUG/TRACE stuff -# (using if __debug__ which is compiled out with -O) -# -# Revision 1.63 2002/04/15 23:25:15 richard -# . node ids are now generated from a lockable store - no more race conditions -# -# We're using the portalocker code by Jonathan Feinberg that was contributed -# to the ASPN Python cookbook. This gives us locking across Unix and Windows. -# -# Revision 1.62 2002/04/03 07:05:50 richard -# d'oh! killed retirement of nodes :( -# all better now... -# -# Revision 1.61 2002/04/03 06:11:51 richard -# Fix for old databases that contain properties that don't exist any more. -# -# Revision 1.60 2002/04/03 05:54:31 richard -# Fixed serialisation problem by moving the serialisation step out of the -# hyperdb.Class (get, set) into the hyperdb.Database. -# -# Also fixed htmltemplate after the showid changes I made yesterday. -# -# Unit tests for all of the above written. -# -# Revision 1.59.2.2 2002/04/20 13:23:33 rochecompaan -# We now have a separate search page for nodes. Search links for -# different classes can be customized in instance_config similar to -# index links. -# -# Revision 1.59.2.1 2002/04/19 19:54:42 rochecompaan -# cgi_client.py -# removed search link for the time being -# moved rendering of matches to htmltemplate -# hyperdb.py -# filtering of nodes on full text search incorporated in filter method -# roundupdb.py -# added paramater to call of filter method -# roundup_indexer.py -# added search method to RoundupIndexer class -# -# Revision 1.59 2002/03/12 22:52:26 richard -# more pychecker warnings removed -# -# Revision 1.58 2002/02/27 03:23:16 richard -# Ran it through pychecker, made fixes -# -# Revision 1.57 2002/02/20 05:23:24 richard -# Didn't accomodate new values for new properties -# -# Revision 1.56 2002/02/20 05:05:28 richard -# . Added simple editing for classes that don't define a templated interface. -# - access using the admin "class list" interface -# - limited to admin-only -# - requires the csv module from object-craft (url given if it's missing) -# -# Revision 1.55 2002/02/15 07:27:12 richard -# Oops, precedences around the way w0rng. -# -# Revision 1.54 2002/02/15 07:08:44 richard -# . Alternate email addresses are now available for users. See the MIGRATION -# file for info on how to activate the feature. -# -# Revision 1.53 2002/01/22 07:21:13 richard -# . fixed back_bsddb so it passed the journal tests -# -# ... it didn't seem happy using the back_anydbm _open method, which is odd. -# Yet another occurrance of whichdb not being able to recognise older bsddb -# databases. Yadda yadda. Made the HYPERDBDEBUG stuff more sane in the -# process. -# -# Revision 1.52 2002/01/21 16:33:19 rochecompaan -# You can now use the roundup-admin tool to pack the database -# -# Revision 1.51 2002/01/21 03:01:29 richard -# brief docco on the do_journal argument -# -# Revision 1.50 2002/01/19 13:16:04 rochecompaan -# Journal entries for link and multilink properties can now be switched on -# or off. -# -# Revision 1.49 2002/01/16 07:02:57 richard -# . lots of date/interval related changes: -# - more relaxed date format for input -# -# Revision 1.48 2002/01/14 06:32:34 richard -# . #502951 ] adding new properties to old database -# -# Revision 1.47 2002/01/14 02:20:15 richard -# . changed all config accesses so they access either the instance or the -# config attriubute on the db. This means that all config is obtained from -# instance_config instead of the mish-mash of classes. This will make -# switching to a ConfigParser setup easier too, I hope. -# -# At a minimum, this makes migration a _little_ easier (a lot easier in the -# 0.5.0 switch, I hope!) -# -# Revision 1.46 2002/01/07 10:42:23 richard -# oops -# -# Revision 1.45 2002/01/02 04:18:17 richard -# hyperdb docstrings -# -# Revision 1.44 2002/01/02 02:31:38 richard -# Sorry for the huge checkin message - I was only intending to implement #496356 -# but I found a number of places where things had been broken by transactions: -# . modified ROUNDUPDBSENDMAILDEBUG to be SENDMAILDEBUG and hold a filename -# for _all_ roundup-generated smtp messages to be sent to. -# . the transaction cache had broken the roundupdb.Class set() reactors -# . newly-created author users in the mailgw weren't being committed to the db -# -# Stuff that made it into CHANGES.txt (ie. the stuff I was actually working -# on when I found that stuff :): -# . #496356 ] Use threading in messages -# . detectors were being registered multiple times -# . added tests for mailgw -# . much better attaching of erroneous messages in the mail gateway -# -# Revision 1.43 2001/12/20 06:13:24 rochecompaan -# Bugs fixed: -# . Exception handling in hyperdb for strings-that-look-like numbers got -# lost somewhere -# . Internet Explorer submits full path for filename - we now strip away -# the path -# Features added: -# . Link and multilink properties are now displayed sorted in the cgi -# interface -# -# Revision 1.42 2001/12/16 10:53:37 richard -# take a copy of the node dict so that the subsequent set -# operation doesn't modify the oldvalues structure -# -# Revision 1.41 2001/12/15 23:47:47 richard -# Cleaned up some bare except statements -# -# Revision 1.40 2001/12/14 23:42:57 richard -# yuck, a gdbm instance tests false :( -# I've left the debugging code in - it should be removed one day if we're ever -# _really_ anal about performace :) -# -# Revision 1.39 2001/12/02 05:06:16 richard -# . We now use weakrefs in the Classes to keep the database reference, so -# the close() method on the database is no longer needed. -# I bumped the minimum python requirement up to 2.1 accordingly. -# . #487480 ] roundup-server -# . #487476 ] INSTALL.txt -# -# I also cleaned up the change message / post-edit stuff in the cgi client. -# There's now a clearly marked "TODO: append the change note" where I believe -# the change note should be added there. The "changes" list will obviously -# have to be modified to be a dict of the changes, or somesuch. -# -# More testing needed. -# -# Revision 1.38 2001/12/01 07:17:50 richard -# . We now have basic transaction support! Information is only written to -# the database when the commit() method is called. Only the anydbm -# backend is modified in this way - neither of the bsddb backends have been. -# The mail, admin and cgi interfaces all use commit (except the admin tool -# doesn't have a commit command, so interactive users can't commit...) -# . Fixed login/registration forwarding the user to the right page (or not, -# on a failure) -# -# Revision 1.37 2001/11/28 21:55:35 richard -# . login_action and newuser_action return values were being ignored -# . Woohoo! Found that bloody re-login bug that was killing the mail -# gateway. -# (also a minor cleanup in hyperdb) -# -# Revision 1.36 2001/11/27 03:16:09 richard -# Another place that wasn't handling missing properties. -# -# Revision 1.35 2001/11/22 15:46:42 jhermann -# Added module docstrings to all modules. -# -# Revision 1.34 2001/11/21 04:04:43 richard -# *sigh* more missing value handling -# -# Revision 1.33 2001/11/21 03:40:54 richard -# more new property handling -# -# Revision 1.32 2001/11/21 03:11:28 richard -# Better handling of new properties. -# -# Revision 1.31 2001/11/12 22:01:06 richard -# Fixed issues with nosy reaction and author copies. -# -# Revision 1.30 2001/11/09 10:11:08 richard -# . roundup-admin now handles all hyperdb exceptions -# -# Revision 1.29 2001/10/27 00:17:41 richard -# Made Class.stringFind() do caseless matching. -# -# Revision 1.28 2001/10/21 04:44:50 richard -# bug #473124: UI inconsistency with Link fields. -# This also prompted me to fix a fairly long-standing usability issue - -# that of being able to turn off certain filters. -# -# Revision 1.27 2001/10/20 23:44:27 richard -# Hyperdatabase sorts strings-that-look-like-numbers as numbers now. -# -# Revision 1.26 2001/10/16 03:48:01 richard -# admin tool now complains if a "find" is attempted with a non-link property. -# -# Revision 1.25 2001/10/11 00:17:51 richard -# Reverted a change in hyperdb so the default value for missing property -# values in a create() is None and not '' (the empty string.) This obviously -# breaks CSV import/export - the string 'None' will be created in an -# export/import operation. -# -# Revision 1.24 2001/10/10 03:54:57 richard -# Added database importing and exporting through CSV files. -# Uses the csv module from object-craft for exporting if it's available. -# Requires the csv module for importing. -# -# Revision 1.23 2001/10/09 23:58:10 richard -# Moved the data stringification up into the hyperdb.Class class' get, set -# and create methods. This means that the data is also stringified for the -# journal call, and removes duplication of code from the backends. The -# backend code now only sees strings. -# -# Revision 1.22 2001/10/09 07:25:59 richard -# Added the Password property type. See "pydoc roundup.password" for -# implementation details. Have updated some of the documentation too. -# -# Revision 1.21 2001/10/05 02:23:24 richard -# . roundup-admin create now prompts for property info if none is supplied -# on the command-line. -# . hyperdb Class getprops() method may now return only the mutable -# properties. -# . Login now uses cookies, which makes it a whole lot more flexible. We can -# now support anonymous user access (read-only, unless there's an -# "anonymous" user, in which case write access is permitted). Login -# handling has been moved into cgi_client.Client.main() -# . The "extended" schema is now the default in roundup init. -# . The schemas have had their page headings modified to cope with the new -# login handling. Existing installations should copy the interfaces.py -# file from the roundup lib directory to their instance home. -# . Incorrectly had a Bizar Software copyright on the cgitb.py module from -# Ping - has been removed. -# . Fixed a whole bunch of places in the CGI interface where we should have -# been returning Not Found instead of throwing an exception. -# . Fixed a deviation from the spec: trying to modify the 'id' property of -# an item now throws an exception. -# -# Revision 1.20 2001/10/04 02:12:42 richard -# Added nicer command-line item adding: passing no arguments will enter an -# interactive more which asks for each property in turn. While I was at it, I -# fixed an implementation problem WRT the spec - I wasn't raising a -# ValueError if the key property was missing from a create(). Also added a -# protected=boolean argument to getprops() so we can list only the mutable -# properties (defaults to yes, which lists the immutables). -# -# Revision 1.19 2001/08/29 04:47:18 richard -# Fixed CGI client change messages so they actually include the properties -# changed (again). -# -# Revision 1.18 2001/08/16 07:34:59 richard -# better CGI text searching - but hidden filter fields are disappearing... -# -# Revision 1.17 2001/08/16 06:59:58 richard -# all searches use re now - and they're all case insensitive -# -# Revision 1.16 2001/08/15 23:43:18 richard -# Fixed some isFooTypes that I missed. -# Refactored some code in the CGI code. -# -# Revision 1.15 2001/08/12 06:32:36 richard -# using isinstance(blah, Foo) now instead of isFooType -# -# Revision 1.14 2001/08/07 00:24:42 richard -# stupid typo -# -# Revision 1.13 2001/08/07 00:15:51 richard -# Added the copyright/license notice to (nearly) all files at request of -# Bizar Software. -# -# Revision 1.12 2001/08/02 06:38:17 richard -# Roundupdb now appends "mailing list" information to its messages which -# include the e-mail address and web interface address. Templates may -# override this in their db classes to include specific information (support -# instructions, etc). -# -# Revision 1.11 2001/08/01 04:24:21 richard -# mailgw was assuming certain properties existed on the issues being created. -# -# Revision 1.10 2001/07/30 02:38:31 richard -# get() now has a default arg - for migration only. -# -# Revision 1.9 2001/07/29 09:28:23 richard -# Fixed sorting by clicking on column headings. -# -# Revision 1.8 2001/07/29 08:27:40 richard -# Fixed handling of passed-in values in form elements (ie. during a -# drill-down) -# -# Revision 1.7 2001/07/29 07:01:39 richard -# Added vim command to all source so that we don't get no steenkin' tabs :) -# -# Revision 1.6 2001/07/29 05:36:14 richard -# Cleanup of the link label generation. -# -# Revision 1.5 2001/07/29 04:05:37 richard -# Added the fabricated property "id". -# -# Revision 1.4 2001/07/27 06:25:35 richard -# Fixed some of the exceptions so they're the right type. -# Removed the str()-ification of node ids so we don't mask oopsy errors any -# more. -# -# Revision 1.3 2001/07/27 05:17:14 richard -# just some comments -# -# Revision 1.2 2001/07/22 12:09:32 richard -# Final commit of Grande Splite -# -# Revision 1.1 2001/07/22 11:58:35 richard -# More Grande Splite -# -# # vim: set filetype=python ts=4 sw=4 et si diff --git a/roundup/init.py b/roundup/init.py index 0ede7b0..0fb1e5c 100644 --- a/roundup/init.py +++ b/roundup/init.py @@ -15,7 +15,7 @@ # BASIS, AND THERE IS NO OBLIGATION WHATSOEVER TO PROVIDE MAINTENANCE, # SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. # -# $Id: init.py,v 1.22 2002-09-05 23:39:12 richard Exp $ +# $Id: init.py,v 1.23 2002-09-09 23:55:19 richard Exp $ __doc__ = """ Init (create) a roundup instance. @@ -65,7 +65,7 @@ def install(instance_home, template, backend): The instance_home directory will be created using the files found in the named template (roundup.templates.). A standard instance_home contains: - . instance_config.py + . config.py - simple configuration of things like the email address for the mail gateway, the mail domain, the mail host, ... . dbinit.py and select_db.py @@ -113,81 +113,4 @@ def initialise(instance_home, adminpw): instance = roundup.instance.open(instance_home) instance.init(password.Password(adminpw)) -# -# $Log: not supported by cvs2svn $ -# Revision 1.21 2002/08/16 04:25:03 richard -# cleanup: moved templatebuilder into templates.builder -# -# Revision 1.20 2002/07/14 02:05:53 richard -# . all storage-specific code (ie. backend) is now implemented by the backends -# -# Revision 1.19 2002/05/23 01:14:20 richard -# . split instance initialisation into two steps, allowing config changes -# before the database is initialised. -# -# Revision 1.18 2001/11/22 15:46:42 jhermann -# Added module docstrings to all modules. -# -# Revision 1.17 2001/11/12 23:17:38 jhermann -# Code using copyDigestedFile() that passes unit tests -# -# Revision 1.16 2001/10/09 07:25:59 richard -# Added the Password property type. See "pydoc roundup.password" for -# implementation details. Have updated some of the documentation too. -# -# Revision 1.15 2001/08/07 00:24:42 richard -# stupid typo -# -# Revision 1.14 2001/08/07 00:15:51 richard -# Added the copyright/license notice to (nearly) all files at request of -# Bizar Software. -# -# Revision 1.13 2001/08/06 01:20:00 richard -# Added documentaion. -# -# Revision 1.12 2001/08/05 07:43:52 richard -# Instances are now opened by a special function that generates a unique -# module name for the instances on import time. -# -# Revision 1.11 2001/08/04 22:42:43 richard -# Fixed sf.net bug #447671 - typo -# -# Revision 1.10 2001/08/03 01:28:33 richard -# Used the much nicer load_package, pointed out by Steve Majewski. -# -# Revision 1.9 2001/08/03 00:59:34 richard -# Instance import now imports the instance using imp.load_module so that -# we can have instance homes of "roundup" or other existing python package -# names. -# -# Revision 1.8 2001/07/29 07:01:39 richard -# Added vim command to all source so that we don't get no steenkin' tabs :) -# -# Revision 1.7 2001/07/28 07:59:53 richard -# Replaced errno integers with their module values. -# De-tabbed templatebuilder.py -# -# Revision 1.6 2001/07/24 11:18:25 anthonybaxter -# oops. left a print in -# -# Revision 1.5 2001/07/24 10:54:11 anthonybaxter -# oops. Html. -# -# Revision 1.4 2001/07/24 10:46:22 anthonybaxter -# Added templatebuilder module. two functions - one to pack up the html base, -# one to unpack it. Packed up the two standard templates into htmlbases. -# Modified __init__ to install them. -# -# __init__.py magic was needed for the rather high levels of wierd import magic. -# Reducing level of import magic == (good, future) -# -# Revision 1.3 2001/07/23 08:45:28 richard -# ok, so now "./roundup-admin init" will ask questions in an attempt to get a -# workable instance_home set up :) -# _and_ anydbm has had its first test :) -# -# Revision 1.2 2001/07/22 12:09:32 richard -# Final commit of Grande Splite -# -# # vim: set filetype=python ts=4 sw=4 et si diff --git a/roundup/mailgw.py b/roundup/mailgw.py index edbfb89..dc21174 100644 --- a/roundup/mailgw.py +++ b/roundup/mailgw.py @@ -73,7 +73,7 @@ are calling the create() method to create a new node). If an auditor raises an exception, the original message is bounced back to the sender with the explanatory message given in the exception. -$Id: mailgw.py,v 1.81 2002-08-19 00:21:56 richard Exp $ +$Id: mailgw.py,v 1.82 2002-09-09 23:55:19 richard Exp $ ''' @@ -192,7 +192,7 @@ class MailGW: m = self.bounce_message(message, sendto, m) except: # bounce the message back to the sender with the error message - sendto = [sendto[0][1], self.instance.ADMIN_EMAIL] + sendto = [sendto[0][1], self.instance.config.ADMIN_EMAIL] m = [''] m.append('An unexpected error occurred during the processing') m.append('of your message. The tracker administrator is being') @@ -205,7 +205,7 @@ class MailGW: m = self.bounce_message(message, sendto, m) else: # very bad-looking message - we don't even know who sent it - sendto = [self.instance.ADMIN_EMAIL] + sendto = [self.instance.config.ADMIN_EMAIL] m = ['Subject: badly formed message from mail gateway'] m.append('') m.append('The mail gateway retrieved a message which has no From:') @@ -218,11 +218,13 @@ class MailGW: # now send the message if SENDMAILDEBUG: open(SENDMAILDEBUG, 'w').write('From: %s\nTo: %s\n%s\n'%( - self.instance.ADMIN_EMAIL, ', '.join(sendto), m.getvalue())) + self.instance.config.ADMIN_EMAIL, ', '.join(sendto), + m.getvalue())) else: try: - smtp = smtplib.SMTP(self.instance.MAILHOST) - smtp.sendmail(self.instance.ADMIN_EMAIL, sendto, m.getvalue()) + smtp = smtplib.SMTP(self.instance.config.MAILHOST) + smtp.sendmail(self.instance.config.ADMIN_EMAIL, sendto, + m.getvalue()) except socket.error, value: raise MailGWError, "Couldn't send error email: "\ "mailhost %s"%value @@ -238,8 +240,8 @@ class MailGW: msg = cStringIO.StringIO() writer = MimeWriter.MimeWriter(msg) writer.addheader('Subject', subject) - writer.addheader('From', '%s <%s>'% (self.instance.INSTANCE_NAME, - self.instance.ISSUE_TRACKER_EMAIL)) + writer.addheader('From', '%s <%s>'% (self.instance.config.INSTANCE_NAME, + self.instance.config.ISSUE_TRACKER_EMAIL)) writer.addheader('To', ','.join(sendto)) writer.addheader('MIME-Version', '1.0') part = writer.startmultipartbody('mixed') @@ -318,8 +320,8 @@ class MailGW: if classname is None: # no classname, fallback on the default if hasattr(self.instance, 'MAIL_DEFAULT_CLASS') and \ - self.instance.MAIL_DEFAULT_CLASS: - classname = self.instance.MAIL_DEFAULT_CLASS + self.instance.config.MAIL_DEFAULT_CLASS: + classname = self.instance.config.MAIL_DEFAULT_CLASS else: # fail m = None @@ -560,7 +562,7 @@ Unknown address: %s # now update the recipients list recipients = [] - tracker_email = self.instance.ISSUE_TRACKER_EMAIL.lower() + tracker_email = self.instance.config.ISSUE_TRACKER_EMAIL.lower() for recipient in message.getaddrlist('to') + message.getaddrlist('cc'): r = recipient[1].strip().lower() if r == tracker_email or not r: @@ -582,7 +584,7 @@ Unknown address: %s # generate a messageid if there isn't one if not messageid: messageid = "<%s.%s.%s%s@%s>"%(time.time(), random.random(), - classname, nodeid, self.instance.MAIL_DOMAIN) + classname, nodeid, self.instance.config.MAIL_DOMAIN) # # now handle the body - find the message @@ -854,6 +856,9 @@ def parseContent(content, keep_citations, keep_body, # # $Log: not supported by cvs2svn $ +# Revision 1.81 2002/08/19 00:21:56 richard +# grant email access to admin too ;) +# # Revision 1.80 2002/08/01 00:56:22 richard # Added the web access and email access permissions, so people can restrict # access to users who register through the email interface (for example). diff --git a/roundup/templates/classic/__init__.py b/roundup/templates/classic/__init__.py index de8c855..a64f168 100644 --- a/roundup/templates/classic/__init__.py +++ b/roundup/templates/classic/__init__.py @@ -15,41 +15,10 @@ # BASIS, AND THERE IS NO OBLIGATION WHATSOEVER TO PROVIDE MAINTENANCE, # SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. # -# $Id: __init__.py,v 1.6 2002-09-05 23:39:14 richard Exp $ +# $Id: __init__.py,v 1.7 2002-09-09 23:55:19 richard Exp $ -import sys -from instance_config import * -from dbinit import * -from interfaces import * +import config +from dbinit import open, init +from interfaces import Client, MailGW -# -# $Log: not supported by cvs2svn $ -# Revision 1.5 2001/08/07 00:24:43 richard -# stupid typo -# -# Revision 1.4 2001/08/07 00:15:51 richard -# Added the copyright/license notice to (nearly) all files at request of -# Bizar Software. -# -# Revision 1.3 2001/07/29 07:01:39 richard -# Added vim command to all source so that we don't get no steenkin' tabs :) -# -# Revision 1.2 2001/07/24 10:46:22 anthonybaxter -# Added templatebuilder module. two functions - one to pack up the html base, -# one to unpack it. Packed up the two standard templates into htmlbases. -# Modified __init__ to install them. -# -# __init__.py magic was needed for the rather high levels of wierd import magic. -# Reducing level of import magic == (good, future) -# -# Revision 1.1 2001/07/23 23:28:43 richard -# Adding the classic template -# -# Revision 1.3 2001/07/23 23:16:01 richard -# Split off the interfaces (CGI, mailgw) into a separate file from the DB stuff. -# -# Revision 1.2 2001/07/23 04:33:21 anthonybaxter -# split __init__.py into 2. dbinit and instance_config. -# -# # vim: set filetype=python ts=4 sw=4 et si diff --git a/roundup/templates/classic/dbinit.py b/roundup/templates/classic/dbinit.py index 6e3878a..237320a 100644 --- a/roundup/templates/classic/dbinit.py +++ b/roundup/templates/classic/dbinit.py @@ -15,11 +15,11 @@ # BASIS, AND THERE IS NO OBLIGATION WHATSOEVER TO PROVIDE MAINTENANCE, # SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. # -# $Id: dbinit.py,v 1.25 2002-09-02 07:00:22 richard Exp $ +# $Id: dbinit.py,v 1.26 2002-09-09 23:55:19 richard Exp $ import os -import instance_config +import config from select_db import Database, Class, FileClass, IssueClass def open(name=None): @@ -28,7 +28,7 @@ def open(name=None): from roundup.hyperdb import String, Password, Date, Link, Multilink # open the database - db = Database(instance_config, name) + db = Database(config, name) # # Now initialise the schema. Must do this each time the database is @@ -66,7 +66,7 @@ def open(name=None): user.setkey("username") # FileClass automatically gets these properties: - # content = String() [saved to disk in /db/files/] + # content = String() [saved to disk in /db/files/] # (it also gets the Class properties creation, activity and creator) msg = FileClass(db, "msg", author=Link("user", do_journal='no'), @@ -154,7 +154,7 @@ def init(adminpw): can edit this before running the "roundup-admin initialise" command to change the initial database entries. ''' - dbdir = os.path.join(instance_config.DATABASE, 'files') + dbdir = os.path.join(config.DATABASE, 'files') if not os.path.isdir(dbdir): os.makedirs(dbdir) @@ -184,188 +184,10 @@ def init(adminpw): # create the two default users user = db.getclass('user') user.create(username="admin", password=adminpw, - address=instance_config.ADMIN_EMAIL, roles='Admin') + address=config.ADMIN_EMAIL, roles='Admin') user.create(username="anonymous", roles='Anonymous') db.commit() -# -# $Log: not supported by cvs2svn $ -# Revision 1.24 2002/09/01 04:32:30 richard -# . Lots of cleanup in the classic html (stylesheet, search page, index page, ...) -# . Reinstated searching, but not query saving yet -# . Filtering only allows sorting and grouping by one property - all backends -# now implement this behaviour. -# . Nosy list journalling turned off by default, everything else is on. -# . Added some convenience methods (reverse, propchanged, [item] accesses, ...) -# . Did I mention the stylesheet is much cleaner now? :) -# -# Revision 1.23 2002/08/30 08:30:45 richard -# allow perms on user class -# -# Revision 1.22 2002/08/01 00:56:22 richard -# Added the web access and email access permissions, so people can restrict -# access to users who register through the email interface (for example). -# Also added "security" command to the roundup-admin interface to display the -# Role/Permission config for an instance. -# -# Revision 1.21 2002/07/26 08:26:59 richard -# Very close now. The cgi and mailgw now use the new security API. The two -# templates have been migrated to that setup. Lots of unit tests. Still some -# issue in the web form for editing Roles assigned to users. -# -# Revision 1.20 2002/07/17 12:39:10 gmcm -# Saving, running & editing queries. -# -# Revision 1.19 2002/07/14 02:05:54 richard -# . all storage-specific code (ie. backend) is now implemented by the backends -# -# Revision 1.18 2002/07/09 03:02:53 richard -# More indexer work: -# - all String properties may now be indexed too. Currently there's a bit of -# "issue" specific code in the actual searching which needs to be -# addressed. In a nutshell: -# + pass 'indexme="yes"' as a String() property initialisation arg, eg: -# file = FileClass(db, "file", name=String(), type=String(), -# comment=String(indexme="yes")) -# + the comment will then be indexed and be searchable, with the results -# related back to the issue that the file is linked to -# - as a result of this work, the FileClass has a default MIME type that may -# be overridden in a subclass, or by the use of a "type" property as is -# done in the default templates. -# - the regeneration of the indexes (if necessary) is done once the schema is -# set up in the dbinit. -# -# Revision 1.17 2002/05/24 04:03:23 richard -# Added commentage to the dbinit files to help people with their -# customisation. -# -# Revision 1.16 2002/02/16 08:06:14 richard -# Removed the key property restriction on title of the classic issue class. -# -# Revision 1.15 2002/02/15 07:08:44 richard -# . Alternate email addresses are now available for users. See the MIGRATION -# file for info on how to activate the feature. -# -# Revision 1.14 2002/01/14 02:20:15 richard -# . changed all config accesses so they access either the instance or the -# config attriubute on the db. This means that all config is obtained from -# instance_config instead of the mish-mash of classes. This will make -# switching to a ConfigParser setup easier too, I hope. -# -# At a minimum, this makes migration a _little_ easier (a lot easier in the -# 0.5.0 switch, I hope!) -# -# Revision 1.13 2002/01/02 02:31:38 richard -# Sorry for the huge checkin message - I was only intending to implement #496356 -# but I found a number of places where things had been broken by transactions: -# . modified ROUNDUPDBSENDMAILDEBUG to be SENDMAILDEBUG and hold a filename -# for _all_ roundup-generated smtp messages to be sent to. -# . the transaction cache had broken the roundupdb.Class set() reactors -# . newly-created author users in the mailgw weren't being committed to the db -# -# Stuff that made it into CHANGES.txt (ie. the stuff I was actually working -# on when I found that stuff :): -# . #496356 ] Use threading in messages -# . detectors were being registered multiple times -# . added tests for mailgw -# . much better attaching of erroneous messages in the mail gateway -# -# Revision 1.12 2001/12/02 05:06:16 richard -# . We now use weakrefs in the Classes to keep the database reference, so -# the close() method on the database is no longer needed. -# I bumped the minimum python requirement up to 2.1 accordingly. -# . #487480 ] roundup-server -# . #487476 ] INSTALL.txt -# -# I also cleaned up the change message / post-edit stuff in the cgi client. -# There's now a clearly marked "TODO: append the change note" where I believe -# the change note should be added there. The "changes" list will obviously -# have to be modified to be a dict of the changes, or somesuch. -# -# More testing needed. -# -# Revision 1.11 2001/12/01 07:17:50 richard -# . We now have basic transaction support! Information is only written to -# the database when the commit() method is called. Only the anydbm -# backend is modified in this way - neither of the bsddb backends have been. -# The mail, admin and cgi interfaces all use commit (except the admin tool -# doesn't have a commit command, so interactive users can't commit...) -# . Fixed login/registration forwarding the user to the right page (or not, -# on a failure) -# -# Revision 1.10 2001/11/26 22:55:56 richard -# Feature: -# . Added INSTANCE_NAME to configuration - used in web and email to identify -# the instance. -# . Added EMAIL_SIGNATURE_POSITION to indicate where to place the roundup -# signature info in e-mails. -# . Some more flexibility in the mail gateway and more error handling. -# . Login now takes you to the page you back to the were denied access to. -# -# Fixed: -# . Lots of bugs, thanks Roché and others on the devel mailing list! -# -# Revision 1.9 2001/10/30 00:54:45 richard -# Features: -# . #467129 ] Lossage when username=e-mail-address -# . #473123 ] Change message generation for author -# . MailGW now moves 'resolved' to 'chatting' on receiving e-mail for an issue. -# -# Revision 1.8 2001/10/09 07:25:59 richard -# Added the Password property type. See "pydoc roundup.password" for -# implementation details. Have updated some of the documentation too. -# -# Revision 1.7 2001/08/07 00:24:43 richard -# stupid typo -# -# Revision 1.6 2001/08/07 00:15:51 richard -# Added the copyright/license notice to (nearly) all files at request of -# Bizar Software. -# -# Revision 1.5 2001/08/02 06:38:17 richard -# Roundupdb now appends "mailing list" information to its messages which -# include the e-mail address and web interface address. Templates may -# override this in their db classes to include specific information (support -# instructions, etc). -# -# Revision 1.4 2001/07/29 07:01:39 richard -# Added vim command to all source so that we don't get no steenkin' tabs :) -# -# Revision 1.3 2001/07/24 10:46:22 anthonybaxter -# Added templatebuilder module. two functions - one to pack up the html base, -# one to unpack it. Packed up the two standard templates into htmlbases. -# Modified __init__ to install them. -# -# __init__.py magic was needed for the rather high levels of wierd import magic. -# Reducing level of import magic == (good, future) -# -# Revision 1.2 2001/07/24 01:06:43 richard -# Oops - accidentally duped the keywords class -# -# Revision 1.1 2001/07/23 23:28:43 richard -# Adding the classic template -# -# Revision 1.4 2001/07/23 08:45:28 richard -# ok, so now "./roundup-admin init" will ask questions in an attempt to get a -# workable instance_home set up :) -# _and_ anydbm has had its first test :) -# -# Revision 1.3 2001/07/23 07:14:41 richard -# Moved the database backends off into backends. -# -# Revision 1.2 2001/07/23 06:25:50 richard -# relfected the move to roundup/backends -# -# Revision 1.1 2001/07/23 04:33:21 anthonybaxter -# split __init__.py into 2. dbinit and instance_config. -# -# Revision 1.1 2001/07/23 03:50:46 anthonybaxter -# moved templates to proper location -# -# Revision 1.2 2001/07/22 12:09:32 richard -# Final commit of Grande Splite -# -# # vim: set filetype=python ts=4 sw=4 et si diff --git a/roundup/templates/classic/interfaces.py b/roundup/templates/classic/interfaces.py index fa605ee..40f944b 100644 --- a/roundup/templates/classic/interfaces.py +++ b/roundup/templates/classic/interfaces.py @@ -15,9 +15,8 @@ # BASIS, AND THERE IS NO OBLIGATION WHATSOEVER TO PROVIDE MAINTENANCE, # SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. # -# $Id: interfaces.py,v 1.14 2002-08-30 08:31:01 richard Exp $ +# $Id: interfaces.py,v 1.15 2002-09-09 23:55:19 richard Exp $ -import instance_config from roundup import mailgw from roundup.cgi import client @@ -33,68 +32,4 @@ class MailGW(mailgw.MailGW): ''' pass -# -# $Log: not supported by cvs2svn $ -# Revision 1.13 2002/08/16 04:26:00 richard -# preparation for moving cgi modules around -# -# Revision 1.12 2002/01/14 02:20:15 richard -# . changed all config accesses so they access either the instance or the -# config attriubute on the db. This means that all config is obtained from -# instance_config instead of the mish-mash of classes. This will make -# switching to a ConfigParser setup easier too, I hope. -# -# At a minimum, this makes migration a _little_ easier (a lot easier in the -# 0.5.0 switch, I hope!) -# -# Revision 1.11 2002/01/02 02:32:38 richard -# ANONYMOUS_ACCESS -> ANONYMOUS_REGISTER -# -# Revision 1.10 2001/12/20 15:43:01 rochecompaan -# Features added: -# . Multilink properties are now displayed as comma separated values in -# a textbox -# . The add user link is now only visible to the admin user -# . Modified the mail gateway to reject submissions from unknown -# addresses if ANONYMOUS_ACCESS is denied -# -# Revision 1.9 2001/11/26 23:00:53 richard -# This config stuff is getting to be a real mess... -# -# Revision 1.8 2001/10/22 03:25:01 richard -# Added configuration for: -# . anonymous user access and registration (deny/allow) -# . filter "widget" location on index page (top, bottom, both) -# Updated some documentation. -# -# Revision 1.7 2001/10/09 07:38:58 richard -# Pushed the base code for the extended schema CGI interface back into the -# code cgi_client module so that future updates will be less painful. -# Also removed a debugging print statement from cgi_client. -# -# Revision 1.6 2001/08/07 00:24:43 richard -# stupid typo -# -# Revision 1.5 2001/08/07 00:15:51 richard -# Added the copyright/license notice to (nearly) all files at request of -# Bizar Software. -# -# Revision 1.4 2001/07/30 01:25:57 richard -# Changes to reflect cgi_client now implementing this template by default, -# and not "extended". -# -# Revision 1.3 2001/07/29 07:01:39 richard -# Added vim command to all source so that we don't get no steenkin' tabs :) -# -# Revision 1.2 2001/07/29 04:07:37 richard -# Fixed the classic template so it's more like the "advertised" Roundup -# template. -# -# Revision 1.1 2001/07/23 23:28:43 richard -# Adding the classic template -# -# Revision 1.1 2001/07/23 23:16:01 richard -# Split off the interfaces (CGI, mailgw) into a separate file from the DB stuff. -# -# # vim: set filetype=python ts=4 sw=4 et si diff --git a/test/test_mailgw.py b/test/test_mailgw.py index 6d53197..b757c24 100644 --- a/test/test_mailgw.py +++ b/test/test_mailgw.py @@ -8,7 +8,7 @@ # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. # -# $Id: test_mailgw.py,v 1.25 2002-07-29 00:56:06 richard Exp $ +# $Id: test_mailgw.py,v 1.26 2002-09-09 23:55:29 richard Exp $ import unittest, cStringIO, tempfile, os, shutil, errno, imp, sys, difflib @@ -119,7 +119,7 @@ This is a test submission of a new issue. self.doNewIssue() def testNewIssueNosy(self): - self.instance.ADD_AUTHOR_TO_NOSY = 'yes' + self.instance.config.ADD_AUTHOR_TO_NOSY = 'yes' message = cStringIO.StringIO('''Content-Type: text/plain; charset="iso-8859-1" From: Chef @@ -375,7 +375,7 @@ _________________________________________________________________________ def testFollowupNosyAuthor(self): self.doNewIssue() - self.db.config.ADD_AUTHOR_TO_NOSY = self.instance.ADD_AUTHOR_TO_NOSY = 'yes' + self.db.config.ADD_AUTHOR_TO_NOSY = 'yes' message = cStringIO.StringIO('''Content-Type: text/plain; charset="iso-8859-1" From: john@test @@ -422,7 +422,7 @@ _________________________________________________________________________ def testFollowupNosyRecipients(self): self.doNewIssue() - self.db.config.ADD_RECIPIENTS_TO_NOSY = self.instance.ADD_RECIPIENTS_TO_NOSY = 'yes' + self.db.config.ADD_RECIPIENTS_TO_NOSY = 'yes' message = cStringIO.StringIO('''Content-Type: text/plain; charset="iso-8859-1" From: richard@test @@ -470,7 +470,7 @@ _________________________________________________________________________ def testFollowupNosyAuthorAndCopy(self): self.doNewIssue() - self.db.config.ADD_AUTHOR_TO_NOSY = self.instance.ADD_AUTHOR_TO_NOSY = 'yes' + self.db.config.ADD_AUTHOR_TO_NOSY = 'yes' self.db.config.MESSAGES_TO_AUTHOR = 'yes' message = cStringIO.StringIO('''Content-Type: text/plain; charset="iso-8859-1" @@ -518,7 +518,7 @@ _________________________________________________________________________ def testFollowupNoNosyAuthor(self): self.doNewIssue() - self.instance.ADD_AUTHOR_TO_NOSY = 'no' + self.instance.config.ADD_AUTHOR_TO_NOSY = 'no' message = cStringIO.StringIO('''Content-Type: text/plain; charset="iso-8859-1" From: john@test @@ -564,7 +564,7 @@ _________________________________________________________________________ def testFollowupNoNosyRecipients(self): self.doNewIssue() - self.instance.ADD_RECIPIENTS_TO_NOSY = 'no' + self.instance.config.ADD_RECIPIENTS_TO_NOSY = 'no' message = cStringIO.StringIO('''Content-Type: text/plain; charset="iso-8859-1" From: richard@test @@ -781,6 +781,10 @@ def suite(): # # $Log: not supported by cvs2svn $ +# Revision 1.25 2002/07/29 00:56:06 richard +# Removed the unnecessary volatiledb and the related complications. Security +# much simpler and self-contained now. +# # Revision 1.24 2002/07/26 08:27:00 richard # Very close now. The cgi and mailgw now use the new security API. The two # templates have been migrated to that setup. Lots of unit tests. Still some