From 56bdff7ca153846aab4e10703b8763cfbb55bf9f Mon Sep 17 00:00:00 2001 From: richard Date: Fri, 9 May 2003 05:04:34 +0000 Subject: [PATCH] pre-release stuff git-svn-id: http://svn.roundup-tracker.org/svnroot/roundup/trunk@1706 57a73879-2fb5-44c3-a270-3262357dd7e2 --- MANIFEST.in | 2 +- README.txt | 5 ++- demo.py | 98 ++++++++++++++++++++++++++++++++++++++++++++ doc/announcement.txt | 57 +++++++++++++++----------- doc/installation.txt | 4 +- roundup/__init__.py | 4 +- setup.py | 80 +----------------------------------- 7 files changed, 142 insertions(+), 108 deletions(-) create mode 100644 demo.py diff --git a/MANIFEST.in b/MANIFEST.in index 26aa1a6..42c1a3b 100644 --- a/MANIFEST.in +++ b/MANIFEST.in @@ -10,7 +10,7 @@ recursive-include templates *.* home* page* recursive-exclude roundup *.pyc *.pyo .cvsignore recursive-exclude frontends *.pyc *.pyo .cvsignore recursive-exclude templates *.pyc *.pyo .cvsignore -include run_tests *.txt +include run_tests *.txt demo.py exclude BUILD.txt I18N_PROGRESS.txt TODO.txt exclude doc/security.txt doc/templating.txt diff --git a/README.txt b/README.txt index 7f539f3..6457786 100644 --- a/README.txt +++ b/README.txt @@ -12,8 +12,11 @@ INSTANT GRATIFICATION The impatient may try Roundup immediately by typing at the console:: - python setup.py demo + python demo.py +To start anew (a fresh demo instance):: + + python demo.py nuke Installation ============ diff --git a/demo.py b/demo.py new file mode 100644 index 0000000..299133a --- /dev/null +++ b/demo.py @@ -0,0 +1,98 @@ +#! /usr/bin/env python +# +# Copyright (c) 2003 Richard Jones (richard@mechanicalcat.net) +# +# $Id: demo.py,v 1.1 2003-05-09 05:04:33 richard Exp $ + +import sys, os, string, re, urlparse +import shutil, socket, errno, BaseHTTPServer +from glob import glob + +def install_demo(home): + # create the instance + try: + shutil.rmtree(home) + except os.error, error: + if error.errno != errno.ENOENT: + raise + from roundup import init, instance, password + init.install(home, os.path.join('templates', 'classic')) + # don't have email flying around + os.remove(os.path.join(home, 'detectors', 'nosyreaction.py')) + init.write_select_db(home, 'anydbm') + + # figure basic params for server + hostname = socket.gethostname() + # pick a fairly odd, random port + port = 8917 + while 1: + print 'Trying to set up web server on port %d ...'%port, + s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) + s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) + try: + s.connect((hostname, port)) + except socket.error, e: + if not hasattr(e, 'args') or e.args[0] != errno.ECONNREFUSED: + raise + print 'should be ok.' + break + else: + s.close() + print 'already in use.' + port += 100 + url = 'http://%s:%s/demo/'%(hostname, port) + + # write the config + f = open(os.path.join(home, 'config.py'), 'r') + s = f.read().replace('http://tracker.example/cgi-bin/roundup.cgi/bugs/', + url) + f.close() + f = open(os.path.join(home, 'config.py'), 'w') + f.write(s) + f.close() + + # initialise the database + init.initialise(home, 'admin') + + # add the "demo" user + tracker = instance.open(home) + db = tracker.open('admin') + db.user.create(username='demo', password=password.Password('demo'), + realname='Demo User', roles='User') + db.commit() + db.close() + +def run_demo(): + ''' Run a demo server for users to play with for instant gratification. + + Sets up the web service on localhost. Disables nosy lists. + ''' + home = os.path.abspath('demo') + if not os.path.exists(home) or sys.argv[-1] == 'nuke': + install_demo(home) + + f = open(os.path.join(home, 'config.py'), 'r') + url = re.search(r'^TRACKER_WEB\s*=\s*[\'"](http.+/)[\'"]$', f.read(), + re.M|re.I).group(1) + f.close() + hostname, port = urlparse.urlparse(url)[1].split(':') + port = int(port) + + # ok, so start up the server + from roundup.scripts.roundup_server import RoundupRequestHandler + RoundupRequestHandler.TRACKER_HOMES = {'demo': home} + httpd = BaseHTTPServer.HTTPServer((hostname, port), RoundupRequestHandler) + print 'Server running - connect to:\n %s'%url + print '1. Log in as "demo"/"demo" or "admin"/"admin".' + print '2. Hit Control-C to stop the server.' + print '3. Re-start the server by running "python demo.py" again.' + print '4. Re-initialise the server by running "python demo.py nuke".' + try: + httpd.serve_forever() + except KeyboardInterrupt: + print 'Keyboard Interrupt: exiting' + +if __name__ == '__main__': + run_demo() + +# vim: set filetype=python ts=4 sw=4 et si diff --git a/doc/announcement.txt b/doc/announcement.txt index fd2f052..73b1883 100644 --- a/doc/announcement.txt +++ b/doc/announcement.txt @@ -1,34 +1,43 @@ -================================================= -SC-Track Roundup 0.5.4 - an issue tracking system -================================================= +=================================================== +SC-Track Roundup 0.6.0b1 - an issue tracking system +=================================================== -This is a bugfix release for version 0.5.x - if you're upgrading from before -0.5, you *must* read doc/upgrading.txt! +This is the first release of the new version of Roundup which contains a +lot of new features. This release may contain bugs, so please run this using +a backup of your production tracker. Always follow the "Software Upgrade" +guidelines given in the maintenance documentation. If you're upgrading from +an older version of Roundup you *must* read doc/upgrading.txt! Unfortunately, the Zope frontend for Roundup is currently broken, with no fix in the forseeable future. -Roundup requires python 2.1.3 or later for correct operation. Users of the -sqlite backend are encouraged to upgrade sqlite to version 2.7.3. +Roundup requires python 2.1.3 or later for correct operation. -We've had a good crack at bugs (thanks to all who contributed!): +This release has all the bugfixes from the latest 0.5 maintnenance release +plus lots of new goodies including: -- key the templates cache off full path, not filename -- implemented whole-database locking -- hyperlinking of special text (url, email, item designator) in messages -- fixed time default in date.py -- fixed error in cgi/templates.py (sf bug 652089) -- fixed handling of missing password (sf bug 655632) -- applied patches for handling Outlook quirks (thanks Andrey Lebedev) - (multipart/alternative, "fw" and content-type "name") -- fire auditors and reactors in rdbms retire (thanks Sheila King) -- better match for mailgw help "command" text -- handle :add: better in cgi form parsing (sf bug 663235) -- handle all-whitespace multilink values in forms (sf bug 663855) -- fixed searching on date / interval fields (sf bug 658157) -- fixed form elements names in search form to allow grouping and sorting - on "creation" field -- display of saved queries is now performed correctly +- new instant-gratification Demo Mode ("python demo.py" :) +- added mysql backend (see doc/mysql.txt for details) +- web interface cleanups including nicer history display, nicer index + navigation and nicer popup list windows +- searching of date ranges +- better international support, including utf-8 email handling and ability + to display localized dates in web interface. +- more documentation including revamped design document, unix manual pages + and some FAQ entries +- significantly more powerful form handling allowing editing of multiple items + and creation of multiple items +- tracker templates can contain subdirectories and static files (e.g. images) + and we may now distribute templates separately from Roundup. Template + HTML files now have a .html extension too. +- user registration is now a two-step process, with confirmation from the email + address supplied in the registration form, and we also have a password reset + feature for forgotten password / login +- Windows Service mode for roundup-server when daemonification is attempted + on Windows. +- fixed issues with dumb email or web clients +- lots more little tweaks and back-end work... +- email system handles more SMTP and POP features (TLS, APOP, ...) Source and documentation is available at the website: http://roundup.sourceforge.net/ diff --git a/doc/installation.txt b/doc/installation.txt index da44610..28f690b 100644 --- a/doc/installation.txt +++ b/doc/installation.txt @@ -2,7 +2,7 @@ Installing Roundup ================== -:Version: $Revision: 1.49 $ +:Version: $Revision: 1.50 $ .. contents:: @@ -67,7 +67,7 @@ For The Really Impatient ======================== If you just want to give Roundup a whirl Right Now, then simply run -``python setup.py demo``. This will set up a simple demo tracker on your +``python demo.py``. This will set up a simple demo tracker on your machine. When it's done, it'll print out a URL to point your web browser at so you may start playing. Three users will be set up: diff --git a/roundup/__init__.py b/roundup/__init__.py index 9eb351d..27dbc31 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.21 2003-05-08 07:04:08 richard Exp $ +# $Id: __init__.py,v 1.22 2003-05-09 05:04:34 richard Exp $ ''' Roundup - issue tracking for knowledge workers. @@ -67,6 +67,6 @@ written by Ka-Ping Yee in the "doc" directory. If nothing else, it has a much prettier cake :) ''' -__version__ = '0.6.0a1' +__version__ = '0.6.0b1' # vim: set filetype=python ts=4 sw=4 et si diff --git a/setup.py b/setup.py index 01ab611..9ebfc28 100644 --- a/setup.py +++ b/setup.py @@ -16,7 +16,7 @@ # BASIS, AND THERE IS NO OBLIGATION WHATSOEVER TO PROVIDE MAINTENANCE, # SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. # -# $Id: setup.py,v 1.50 2003-04-25 02:09:20 richard Exp $ +# $Id: setup.py,v 1.51 2003-05-09 05:04:33 richard Exp $ from distutils.core import setup, Extension from distutils.util import get_platform @@ -211,83 +211,7 @@ def main(): data_files = installdatafiles ) -def install_demo(): - ''' Install a demo server for users to play with for instant gratification. - - Sets up the web service on localhost port 8080. Disables nosy lists. - ''' - import shutil, socket, errno, BaseHTTPServer - - # create the instance - home = os.path.abspath('demo') - try: - shutil.rmtree(home) - except os.error, error: - if error.errno != errno.ENOENT: - raise - from roundup import init, instance, password - init.install(home, os.path.join('templates', 'classic')) - # don't have email flying around - os.remove(os.path.join(home, 'detectors', 'nosyreaction.py')) - init.write_select_db(home, 'anydbm') - - # figure basic params for server - hostname = socket.gethostname() - # pick a fairly odd, random port - port = 8917 - while 1: - print 'Trying to set up web server on port %d ...'%port, - s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) - s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) - try: - s.connect((hostname, port)) - except socket.error, e: - if not hasattr(e, 'args') or e.args[0] != errno.ECONNREFUSED: - raise - print 'should be ok.' - break - else: - s.close() - print 'already in use.' - port += 100 - url = 'http://%s:%s/demo/'%(hostname, port) - - # write the config - f = open(os.path.join(home, 'config.py'), 'r') - s = f.read().replace('http://tracker.example/cgi-bin/roundup.cgi/bugs/', - url) - f.close() - f = open(os.path.join(home, 'config.py'), 'w') - f.write(s) - f.close() - - # initialise the database - init.initialise(home, 'admin') - - # add the "demo" user - tracker = instance.open(home) - db = tracker.open('admin') - db.user.create(username='demo', password=password.Password('demo'), - realname='Demo User', roles='User') - db.commit() - db.close() - - # ok, so start up the server - from roundup.scripts.roundup_server import RoundupRequestHandler - RoundupRequestHandler.TRACKER_HOMES = {'demo': home} - httpd = BaseHTTPServer.HTTPServer((hostname, port), RoundupRequestHandler) - print 'Server running - connect to:\n %s'%url - print 'You may log in as "demo"/"demo" or "admin"/"admin".' - print 'Hit Control-C to stop the server.' - try: - httpd.serve_forever() - except KeyboardInterrupt: - print 'Keyboard Interrupt: exiting' - if __name__ == '__main__': - if len(sys.argv) > 1 and sys.argv[1] == 'demo': - install_demo() - else: - main() + main() # vim: set filetype=python ts=4 sw=4 et si -- 2.30.2