summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: 57dd999)
raw | patch | inline | side by side (parent: 57dd999)
author | richard <richard@57a73879-2fb5-44c3-a270-3262357dd7e2> | |
Mon, 9 Sep 2002 23:55:29 +0000 (23:55 +0000) | ||
committer | richard <richard@57a73879-2fb5-44c3-a270-3262357dd7e2> | |
Mon, 9 Sep 2002 23:55:29 +0000 (23:55 +0000) |
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 08fc092ddeed0f8877979e22234db22fefc2478b..440b0971f6f4e9fae84cb987d8f04bf22dd0473d 100644 (file)
--- a/roundup/admin.py
+++ b/roundup/admin.py
# 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:
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
%(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
#
# $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 f4485b1cbf299e2463f5f7e0e3f6d8fabe7c47a4..264814442e6a51e150a21c929dd5eea6815d35c8 100644 (file)
--- a/roundup/cgi/client.py
+++ b/roundup/cgi/client.py
-# $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).
# 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
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:
# 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 a301d7cd3fa04ac7bdc0fae34681d709171e47b2..65d07e9170c74153ab84809f6574bec920c5d604 100644 (file)
--- a/roundup/hyperdb.py
+++ b/roundup/hyperdb.py
# 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.
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 0ede7b06f0c697539bb75a2bd9d651e838605628..0fb1e5c9961e8368bc312beb870d93daa50d2c04 100644 (file)
--- a/roundup/init.py
+++ b/roundup/init.py
# 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.
The instance_home directory will be created using the files found in
the named template (roundup.templates.<name>). 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
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 edbfb89254cb66621090fc246985b0dd8fb93583..dc2117426410786731182c34b1bd6386e6680087 100644 (file)
--- a/roundup/mailgw.py
+++ b/roundup/mailgw.py
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 $
'''
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')
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:')
# 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
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')
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
# 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:
# 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
#
# $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).
index de8c855886db7cc95569da7234832ef77bc7402e..a64f168ab79f21496d771bf000725c1952b076b7 100644 (file)
# 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
index 6e3878ab1b1a928aebe285def98fb03c532b2862..237320ae9d3e0c3b66c16421d46525e6f91e96aa 100644 (file)
# 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):
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
user.setkey("username")
# FileClass automatically gets these properties:
- # content = String() [saved to disk in <instance home>/db/files/]
+ # content = String() [saved to disk in <tracker home>/db/files/]
# (it also gets the Class properties creation, activity and creator)
msg = FileClass(db, "msg",
author=Link("user", do_journal='no'),
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)
# 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
index fa605ee843597e008f2b0da80750402e8b2642ad..40f944bd98ac65f4e1f20a9537b9c18ea9fd2d72 100644 (file)
# 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
'''
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 6d531977479a332e96b65d867b3148df37480f8d..b757c243e4be8b49931460ab8cacb6cab121082c 100644 (file)
--- a/test/test_mailgw.py
+++ b/test/test_mailgw.py
# 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
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 <chef@bork.bork.bork>
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
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
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"
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
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
#
# $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