Code

pre-release stuff
authorrichard <richard@57a73879-2fb5-44c3-a270-3262357dd7e2>
Fri, 9 May 2003 05:04:34 +0000 (05:04 +0000)
committerrichard <richard@57a73879-2fb5-44c3-a270-3262357dd7e2>
Fri, 9 May 2003 05:04:34 +0000 (05:04 +0000)
git-svn-id: http://svn.roundup-tracker.org/svnroot/roundup/trunk@1706 57a73879-2fb5-44c3-a270-3262357dd7e2

MANIFEST.in
README.txt
demo.py [new file with mode: 0644]
doc/announcement.txt
doc/installation.txt
roundup/__init__.py
setup.py

index 26aa1a6cdf5c21f40b58006d210976ca5ade809b..42c1a3b3cdd7029422df940fb420a8900904f17a 100644 (file)
@@ -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
 
index 7f539f3e28ffccc33c3685ddd1176217e0aa187e..64577860299cfb596ba0aa5434528b055ea0b9f9 100644 (file)
@@ -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 (file)
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
index fd2f052dd00f8fd2dfd865930bef0e30583d9249..73b1883eef82cdfecfff8bf9453ae7321fb40e2b 100644 (file)
@@ -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/
index da4461003f882b92572032636854cd893fb80731..28f690b83c977de2e7b1950cc26e04a48538e939 100644 (file)
@@ -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:
 
index 9eb351dd6c24320a8a668b322868d4a67c7a044d..27dbc317836c85fad7a3af18edd4addeddebad38 100644 (file)
@@ -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
index 01ab61194bbfec4c6d6fa136330a20da92286023..9ebfc28088b48af096722ec6958526d9716c342a 100644 (file)
--- 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