2004-05-24  Jp Calderone  <exarkun@divmod.com>

	* quotient/proto/imapup.py: Fixed header parameter double-quoting
	bug.

2004-05-24  Jp Calderone  <exarkun@divmod.com>

	* quotient/proto/twisted_sip.py, quotient/proto/smtpin.py: Lowered
	verbosity of logging to reduce the amount of private information
	displayed in logfiles.

2004-05-24  Jp Calderone  <exarkun@divmod.com>

	* atop/test/unittest.py: Document closeDbOnTearDown; add support for
	a default domain to which test avatars are added.

	* quotient/proto/smtpin.py, quotient/proto/smtpout.py: Greatly
	improved delivery failure error handling.

	* quotient/test/test_smtp.py: Tests for various failure conditions.

2004-05-24  Jonathan Simms <slyphon@divmod.com>
    * admin/release_divmod.py
    * admin/clean_user_dist_test.py: JP suggested that I run this test in a
    local checkout of the entire repository tree to cut down on log noise
    (to allow for multiple directory changes in a working copy with a
    single commit).

2004-05-24  Jonathan Simms <slyphon@divmod.com>

    * admin/release_divmod.py: refactored radix's release-twisted for use with
    divmod products. Creates the wip branch, checks out that branch, changes
    the version numbers, creates the tarballs, tests the tarballs in a new
    user's clean environment, finalizes the release tag, and uploads the
    tarballs to the appropriate place.
    * admin/clean_user_dist_test.py: a companion script to release_divmod.py, run by
    the test user

2004-05-21  Jp Calderone  <exarkun@divmod.com>

	* atop/store.py: Added "store" to the transaction context.
	* atop/util.py: Added asyncPoolQuery(), a version of queryIndex()
	which returns a Deferred that fires with the entire query results.

	* quotient/proto/popup.py, quotient/proto/imapup.py: Switched to use
	asyncPoolQuery() function.

	* quotient/proto/mboxlist.py: Removed deferredPoolQuery()

2004-05-17  Jonathan Simms  <slyphon@divmod.com>

	* ChangeLog: Imported svn log output as ChangeLog entries.

------------------------------------------------------------------------
r3618 | exarkun | 2004-05-17 16:55:21 -0400 (Mon, 17 May 2004) | 11 lines
Changed paths:
   M /trunk/quotient/smarts/person.py
   M /trunk/quotient/web/application.py
   M /trunk/quotient/web/compose.py
   M /trunk/quotient/web/people.py
   M /trunk/quotient/web/pools.py
   M /trunk/quotient/web/root.py
   M /trunk/quotient/web/skins/default.css
   M /trunk/quotient/web/skins/default.py
   A /trunk/quotient/web/skins/defaultimages/divmod-org-logo-small.png (from /branches/dp/people-skin/quotient/web/skins/defaultimages/divmod-org-logo-small.png:3616)
   M /trunk/quotient/web/webmail.py

Merge branches/dp/people-skin@3557 branches/dp/people-skin@3616 into trunk

 (dp says:) Redone person page with more concise data display 

   - New Edit Person screen using nevow.blocks and freeform-patterns custom 
     form
   - New Add Person screen with same form 
   - Some IE fixes for the whole app 
   - Smaller divmod.org logo when logged in.
------------------------------------------------------------------------
r3616 | exarkun | 2004-05-17 16:29:07 -0400 (Mon, 17 May 2004) | 5 lines
Changed paths:
   M /trunk/quotient/copyright.py

Set version correctly.

quotient.copyright.version should always be trunk-HEAD in this branch.  When
we prepare a release, the version can be updated in the release branch.
------------------------------------------------------------------------
r3612 | slyphon | 2004-05-17 10:11:15 -0400 (Mon, 17 May 2004) | 1 line
Changed paths:
   M /trunk/setup.py

tweak setup.py to install q.functional
------------------------------------------------------------------------
r3609 | slyphon | 2004-05-17 02:12:57 -0400 (Mon, 17 May 2004) | 1 line
Changed paths:
   A /trunk/tools/setup-dev.py

a python version of a quotient development setup script
------------------------------------------------------------------------
r3605 | exarkun | 2004-05-16 13:28:29 -0400 (Sun, 16 May 2004) | 4 lines
Changed paths:
   M /trunk/atop/credup.py

Add missing touch() calls to Avatar methods.

setSecurePassword and setInsecurePassword are broken without these calls.
------------------------------------------------------------------------
r3583 | glyph | 2004-05-14 10:17:15 -0400 (Fri, 14 May 2004) | 1 line
Changed paths:
   M /trunk/quotient/web/powerup.py
   M /trunk/quotient/web/root.py

Revert unintentional change of trunk.
------------------------------------------------------------------------
r3577 | glyph | 2004-05-13 21:46:03 -0400 (Thu, 13 May 2004) | 5 lines
Changed paths:
   M /trunk/atop/test/test_store.py
   M /trunk/atop/util.py

Here is a DSU implementation which partially supports the IPool interface.

I'm going to worry about sucking in thousands of items at a time later.  Right
now it just accepts a list.
------------------------------------------------------------------------
r3554 | dp | 2004-05-12 12:40:01 -0400 (Wed, 12 May 2004) | 6 lines
Changed paths:
   M /trunk/quotient/taglib.py
   M /trunk/quotient/web/pools.py
   M /trunk/quotient/web/root.py
   M /trunk/quotient/web/skins/default.css
   M /trunk/quotient/web/skins/default.py
   M /trunk/quotient/web/skins/defaultimages/toolbar/forward.png
   M /trunk/quotient/web/skins/defaultimages/toolbar/redirect.png
   M /trunk/quotient/web/skins/defaultimages/toolbar/reply.png
   M /trunk/quotient/web/webmail.py

Re-skin the message detail page.
- Tertiary nav is implemented with graphical as well as textual labels for mail actions.
- Message detail looks much like the mockup, and will have problems if you resize it to be too narrow until we implement format-flowed
- Extract indicators are not rendered for now
- Pool browser has a slightly improved look, which is a little cleaner and easier to look at
------------------------------------------------------------------------
r3551 | slyphon | 2004-05-12 11:28:27 -0400 (Wed, 12 May 2004) | 77 lines
Changed paths:
   M /trunk/quotient/components.wsv
   A /trunk/quotient/functional (from /branches/slyphon/issue1375/quotient/functional:3550)
   M /trunk/quotient/taglib.py
   D /trunk/quotient/test/navtags.py
   M /trunk/quotient/test/test_functional.py
   M /trunk/quotient/test/test_webui.py
   D /trunk/quotient/web/functional.py
   D /trunk/quotient/web/newclient.py
   M /trunk/quotient/web/powerup.py

a complete rewrite of the functional test framework

merge -r3384:HEAD $issue1375 trunk/

all of the framework code has been moved into q.functional, and will be 
moved (shortly) into the Nevow repository. 

a summary of the changes made:

client

    - separated Client from functional.py and gave it its own,
      monolithic module (like log.py). There is one client instance (as
      you only need one when doing functional testing) and one 'page'
      instance. 


    - detangled the urltrail code from FunctionalBase, made it its own
      class in f.client. 

    - all dom abstraction objects (link, form, page) are now in client

navtags

    - completely refactored. implementation is more straightforward, 
      got rid of need for INavigate, decoupled assertions from the 
      TestCase

    - tags for all unittest assertions except for "failUnlessRaises"
      (which wasn't necessary)

    - added a 'call' tag which can be used instead of lambdas (mostly
      cosmetic, but kinda nice) 

    - navtags now have full working correct (afaict) unittests

runSeq 

    - is now part of the navtags module. this will allow for
      someone to use the navtags in a non-testcase scenario. also
      drastically simplifies execution

    - now handles generator, iteratable, function, and method
      types properly

    - is now completely asynchronous (thank you JP)

    - allows for a per-iteration callback to be assigned to each item (usually
      a tag) in the sequence, to allow for logging, etc.

functional.py

    - renamed q.f.unittest, FunctionalBase now q.f.unittest.TestCase

    - cleaned up crufty, hackish, awful reporting code

    - separated the Quotient-specific code into TestCase and left
      TheOneTrueBaseClass simple and small. this will help if we ever
      want to write a functional test that will run against an
      already-running instance, or use it in metric-gathering

    - SekritAgent has a new test-side interface SekritHQ that handles calls
      in a synchronous manner (for testing purposes).

test_webui

    - able to use verbatim with no changes to test methods
    - removed idiotic metaclass and replaced with 2-liner in setUp :P
    - addition of SekritHQ makes searchup tests readable

Overall
    
    - each module (and class, where necessary) has a logging key and observer
      so it is possible to turn logging for one particular code path on
      or off
------------------------------------------------------------------------
r3539 | exarkun | 2004-05-11 19:45:43 -0400 (Tue, 11 May 2004) | 7 lines
Changed paths:
   M /trunk/quotient/grabbers.py

merge /b/e/issue252@3448 /b/e/issue252@3538 into trunk

Messages retrieved via POP3 with extraordinarily long lines will now be
marked as "bad" on the grabber factory and skipped on subsequent grab
attempts.  When a particular number of bad messages is acheived, the grabber
factory will be paused.
------------------------------------------------------------------------
r3525 | dp | 2004-05-11 12:03:30 -0400 (Tue, 11 May 2004) | 21 lines
Changed paths:
   M /trunk/quotient/cleanup.py
   M /trunk/quotient/grabbers.py
   D /trunk/quotient/web/billboards
   M /trunk/quotient/web/compose.py
   M /trunk/quotient/web/root.py
   M /trunk/quotient/web/skins/default.css
   M /trunk/quotient/web/skins/default.py
   D /trunk/quotient/web/skins/defaultimages/anonymous-logo.png
   A /trunk/quotient/web/skins/defaultimages/divmod-org-logo.png (from /branches/glyph/golgotha-release-prep/quotient/web/skins/defaultimages/divmod-org-logo.png:3524)
   D /trunk/quotient/web/skins/defaultimages/newdivmod.png
   A /trunk/quotient/web/skins/defaultimages/submit-buttons (from /branches/glyph/golgotha-release-prep/quotient/web/skins/defaultimages/submit-buttons:3524)
   M /trunk/quotient/web/skins/defaultimages/submit-buttons/compose.png
   D /trunk/quotient/web/templates

Cleanup and bug fixes in preparation for the golgotha release.

- Final compose screen tweaks
  - It looks as much like the mockup as humanly possible
  - The 'to' address is now a required field
  - Mozilla and all other browsers render it slightly differently, but similarly enough to be acceptable. Deal.
- Code to conditionally render the anonymous pages depending on whether you have 'exponent' installed or not.
  - If exponent is installed, billboards will be rendered and the divmod.com logo will be used.
  -If not, no billboards will be rendered and the .org logo will be used.
- Removal of unused quotient/web/templates directory (from woven days)
- Bugfixes in adding grabbers
  - Username, password, and host are now required
  - The port now renders correctly when the error form renders
- Bugfixes in cleanup control panel
  - The "Clean threshold" and "Spam threshold" are now required
  - A bug which has been there since the beginning of time is fixed
    -    cleanThresh = property(cleanThreshGet, spamThreshSet)
    +    cleanThresh = property(cleanThreshGet, cleanThreshSet)
    - This prevented you from ever setting the clean threshold
------------------------------------------------------------------------
r3524 | exarkun | 2004-05-11 11:45:45 -0400 (Tue, 11 May 2004) | 15 lines
Changed paths:
   M /trunk/quotient/cleanup.py
   M /trunk/quotient/mimemessage.py
   M /trunk/quotient/proto/imapup.py
   M /trunk/quotient/test/test_imap.py
   M /trunk/quotient/test/test_interactions.py
   M /trunk/quotient/test/test_mimemessage.py
   M /trunk/quotient/web/compose.py
   M /trunk/quotient/web/webmail.py

merge /b/e/issue1398@3492 /b/e/issue1398@3523 into trunk

MIMEMessages previously had a single set of flags which was used by all
pools which contained them. This became problematic as IMAP4 uses the
DELETED flag to indicate that a message is pending deletion in a particular
folder. These changes allow flags to be set on a per-pool basis where
desirable, and changes certain parts of the code to change them that way
where appropriate. In particular, the IMAP4 server will now set the \Deleted
flag on a per-pool basis, causing messages deleted via IMAP4 to only be
deleted from the folder the user deleted them from. Other flags will still
be set "globally" for a message regardless of which folder a user flags them
in. QA should focus on all parts of the app which rely on or modify flags.
The IMAP4 server, the web ui for marking read/unread, the summary page's
new/unread tabulation code, etc.
------------------------------------------------------------------------
r3521 | exarkun | 2004-05-11 11:15:08 -0400 (Tue, 11 May 2004) | 2 lines
Changed paths:
   A /trunk/tools/freeze-outbound.py

tool to disable delivery of all messages in outboxes
------------------------------------------------------------------------
r3502 | dp | 2004-05-10 15:13:38 -0400 (Mon, 10 May 2004) | 2 lines
Changed paths:
   M /trunk/quotient/web/compose.py

Make the 'to' required, and remove a bunch of nasty crufty code
------------------------------------------------------------------------
r3495 | exarkun | 2004-05-10 09:36:45 -0400 (Mon, 10 May 2004) | 7 lines
Changed paths:
   M /trunk/atop/util.py

Swap implementations of determinePageSize.

The version which touches the database is not safe to use until we
understasnd how to avoid DB_LOCK_DEADLOCK errors in our actual server
process.  The simplified (now-enabled) version is correct for the default
configuration of Berkeley DB on Linux/x86/ext3.
------------------------------------------------------------------------
r3475 | exarkun | 2004-05-07 11:41:41 -0400 (Fri, 07 May 2004) | 6 lines
Changed paths:
   M /trunk/quotient/proto/smtpout.py

Get rid of defunct Windows DNS support.

This change probably only effects sending mail on Windows.  Since the
hardcoded DNS address in this code is no longer /running/ a recursive domain
name server, the code was broken anyway.
------------------------------------------------------------------------
r3471 | dp | 2004-05-07 09:36:17 -0400 (Fri, 07 May 2004) | 5 lines
Changed paths:
   A /trunk/quotient/web/scripts.js
   M /trunk/quotient/web/skins/default.css

Put the timer and the version reporting back into the page output.

Put a placeholder scripts.js file into place to avoid an exception because the file does not exist, and for future 
quotient-specific scripts.
------------------------------------------------------------------------
r3466 | glyph | 2004-05-06 19:22:08 -0400 (Thu, 06 May 2004) | 8 lines
Changed paths:
   M /trunk/admin/chbranch

This changes chbranch so it no longer automatically adds your username.

I was getting tired of always manually re-linking when using someone else's
branch, which I seem to be doing more than using my own.  The only difference
is now, to get the old behavior, you do 'chbranch Quotient glyph/issue123'.  Of
course, this also enables you to select branches from other users (and those
that violate policy) easily.
------------------------------------------------------------------------
r3461 | amir | 2004-05-06 15:43:39 -0400 (Thu, 06 May 2004) | 9 lines
Changed paths:
   M /trunk/quotient/web/webmail.py

Reformat date column.

I made this change directly to trunk since it is a cosmetic change.
I tested it locally, but it may break some functional tests.

The new code does more operations than the old code, but I don't
think that it will impact render times.
------------------------------------------------------------------------
r3450 | slyphon | 2004-05-06 10:41:48 -0400 (Thu, 06 May 2004) | 1 line
Changed paths:
   A /trunk/admin/no_outgoing_mail.diff

the diff to turn off outgoing mail during testing
------------------------------------------------------------------------
r3443 | exarkun | 2004-05-05 19:30:46 -0400 (Wed, 05 May 2004) | 2 lines
Changed paths:
   A /sandbox (from /trunk/sandbox:3402)
   D /trunk/sandbox

Move sandbox to a non-Quotient-sourcey location
------------------------------------------------------------------------
r3433 | slyphon | 2004-05-05 10:09:26 -0400 (Wed, 05 May 2004) | 4 lines
Changed paths:
   M /trunk/quotient/smarts/person.py
   M /trunk/quotient/web/people.py

merge changes from branches/amir/406_1374 --> trunk

person upgrader changes fixes and changes
------------------------------------------------------------------------
r3432 | glyph | 2004-05-05 08:59:34 -0400 (Wed, 05 May 2004) | 9 lines
Changed paths:
   M /trunk/quotient/test/test_searchup.py

Trivial change to test_searchup which will hopefully make BuildBot happy.

The tests all pass locally, but I believe there may be a race condition that
requires that the deferred used in the functional tests must also be used
sometimes.  I hope that is the problem, and not that tesla needs a new version
of buildbot...

Committing this to test the fix.
------------------------------------------------------------------------
r3431 | glyph | 2004-05-05 08:48:02 -0400 (Wed, 05 May 2004) | 17 lines
Changed paths:
   M /trunk/quotient/mimebakery.py
   M /trunk/quotient/mimemessage.py
   M /trunk/quotient/proto/smtpout.py
   M /trunk/quotient/signup.py
   M /trunk/quotient/test/emaildata.py
   M /trunk/quotient/test/test_popup.py
   M /trunk/quotient/test/test_usercreate.py
   M /trunk/quotient/web/compose.py
   A /trunk/quotient/web/skins/defaultimages/toolbar/dont-trust-html.png (from /branches/glyph/issue331etc/quotient/web/skins/defaultimages/toolbar/dont-trust-html.png:3430)
   M /trunk/quotient/web/webmail.py

Merging issue331etc branch.  Fix as many low-hanging-fruit bugs as possible.

This fixes the following tickets:

    #50: AttributeError: 'MIMEMessage' object has no attribute 'bodyOffset'
    #1352: Exception when sending mail with no body text (mimebakery)
    #147: Reply does not set the "References" header or the "In-Reply-To" header
    #208: Traceback when downloading attachment
    #204: On message redirect: exceptions.ValueError: No displayable parts found
    #278: No way of getting from html to text/plain view
    #331: Traceback from ticket redemption code on ERIN

It also fixes a broken unit test for importing directories.

Most of these fixes are cosmetic; the ones that are not will not affect
existing data.
------------------------------------------------------------------------
r3419 | glyph | 2004-05-05 06:31:07 -0400 (Wed, 05 May 2004) | 20 lines
Changed paths:
   M /trunk/quotient/searchup.py
   M /trunk/quotient/sysup.py
   M /trunk/quotient/test/test_searchup.py
   M /trunk/quotient/web/functional.py
   M /trunk/quotient/web/root.py

A smattering of related bug-fixes and refactorings to tests more reliable.

This changes Searchup to provide the same interface as before, but with about
1/10 the number of Deferreds and dangerous, volatile lists of Deferreds getting
persisted accidentally as before.  I have also made a small correction to
functional.py and fixed a bizarre and agressive error message in root.py.

Even when we do move indexing back out into a thread or process, I think that
the model of the Deferred which exists now is a serviceable one.

Thank you to exarkun for the work to get me started on this, because I just
could not figure out what was going on.

One warning about this change: I have reduced the indexing interval to 1/10 of
a second, in order to make the tests run in an acceptable amount of time.  I'm
not sure why it was 10 seconds before, or if that was an intentional limit, so
my change may be undesireable in production.  However, I have also moved it out
into a variable (searchup.INDEXING_INTERVAL) which can be tweaked as
appropriate for the functional tests.
------------------------------------------------------------------------
r3410 | glyph | 2004-05-04 23:43:29 -0400 (Tue, 04 May 2004) | 8 lines
Changed paths:
   M /trunk/quotient/web/webmail.py

Fix issue 63: generate URLs such that a user can right-click to save.

I apologize if this breaks the functional tests, but I have determined that
there is something seriously wrong with my development environment and the
tests are failing even with no local changes.  (In fact, the tests are failing
even with no local changes *with a completely fresh user and environment* on
this machine.)
------------------------------------------------------------------------
r3406 | exarkun | 2004-05-04 17:10:38 -0400 (Tue, 04 May 2004) | 10 lines
Changed paths:
   M /trunk/quotient/proto/smtpout.py
   M /trunk/quotient/reset.py
   M /trunk/quotient/test/test_reset.py
   M /trunk/quotient/test/test_smtp.py

Merge OutgoingMailup fixes (issue 254) into trunk

This merges revisions 3065:3405 of branches/exarkun/issue254 into trunk.

See previous commit message for details.

This commit fixes a problem where DeliveryInformation instances which lacked
a 'nextAttempt' attribute (possible if they had never been run) caused an
upgrader to fail.
------------------------------------------------------------------------
r3403 | slyphon | 2004-05-04 15:23:54 -0400 (Tue, 04 May 2004) | 1 line
Changed paths:
   A /trunk/admin/chat_cal_off.diff

a diff for shutting off calendar and chat when preparing erin builds
------------------------------------------------------------------------
r3402 | exarkun | 2004-05-04 14:33:38 -0400 (Tue, 04 May 2004) | 13 lines
Changed paths:
   M /trunk/quotient/grabbers.py

Merge grabber fixes (issue 1290) into trunk

This is a merge of revisions 3374:3401 of branches/exarkun/issue1290 into
trunk.

These changes increase the correctness of the transactional code in
grabbers.py.  This should resolve the intermittent and apparently random
failures of grabbers.

Important parts of the connection lost and connection failed handlers for
the grabber code has been changed.  QA should focus on grabbers with
particular attention towards connection error handling.
------------------------------------------------------------------------
r3401 | exarkun | 2004-05-04 14:26:21 -0400 (Tue, 04 May 2004) | 8 lines
Changed paths:
   M /trunk/atop/sched.py
   M /trunk/atop/store.py
   M /trunk/atop/test/test_sched.py
   M /trunk/atop/upgrade.py
   M /trunk/quotient/application.py
   M /trunk/quotient/cleanup.py
   M /trunk/quotient/mimemessage.py

Merge deduplication code (issue 36) into trunk

This is a merge of revisions 3075:3399 of branches/exarkun/issue36 into
trunk.  See previous merge commit messages for details.

This change includes an additional fix for the OutgoingMailup 'scheduled'
AttributeError.
------------------------------------------------------------------------
r3397 | exarkun | 2004-05-04 12:11:18 -0400 (Tue, 04 May 2004) | 12 lines
Changed paths:
   M /trunk/quotient/grabbers.py
   M /trunk/quotient/mimemessage.py
   M /trunk/quotient/proto/smtpin.py
   M /trunk/quotient/scripts/usercreate.py

Merging smtp server fixes (issue 1360) into trunk

This change fixes the SMTP server so that it no longer calls transactional
code outside of a transaction.

Delivering mail into Quotient via SMTP should now work again.

The changes touch several other places in the code which create MIME
receivers because the way message origins are set has been changed. 
Mailbox and directory imports are affected, as are the POP3 and IMAP4
grabbers.
------------------------------------------------------------------------
r3396 | exarkun | 2004-05-04 12:10:27 -0400 (Tue, 04 May 2004) | 7 lines
Changed paths:
   M /trunk/quotient/searchup.py

Remove unnecessary, expensive code (twiddle some whitespace too).

numitems was unused by anything, and the calculation of it was both
expensive and potentially broken.  Removing it should have no effect except
to prevent the lock limit from being exceeded when the searchup runs and
there are many messages awaiting indexing.
------------------------------------------------------------------------
r3389 | slyphon | 2004-05-03 20:15:47 -0400 (Mon, 03 May 2004) | 1 line
Changed paths:
   M /trunk/quotient/web/pools.py

donovans patch to remove the little blue squares in the tdb
------------------------------------------------------------------------
r3385 | slyphon | 2004-05-03 19:15:24 -0400 (Mon, 03 May 2004) | 7 lines
Changed paths:
   M /trunk/quotient/components.wsv
   A /trunk/quotient/test/qab.py (from /branches/slyphon/issue1355/quotient/test/qab.py:3384)
   M /trunk/quotient/test/qmanhole.py
   M /trunk/quotient/test/test_webui.py
   M /trunk/quotient/web/functional.py
   D /trunk/quotient/web/functional2.py
   A /trunk/tools/qab.tac (from /branches/slyphon/issue1355/tools/qab.tac:3384)
   A /trunk/tools/setup-dev.zsh (from /branches/slyphon/issue1355/tools/setup-dev.zsh:3384)

A render-times and response time measuring app

this includes some refactoring of the functional testing framework
to be more sensible, and to allow other things besides the functional tests
to use the Client and functionality.
------------------------------------------------------------------------
r3373 | exarkun | 2004-05-03 16:19:31 -0400 (Mon, 03 May 2004) | 8 lines
Changed paths:
   M /trunk/atop/store.py

Fix typo which causes joining a database to be impossible

This bug has not been hit anywhere yet, as we do not use the db joining
code.  The fix is trivial.  This bug was completely invisible, as is the
fix.

No QA is necessary.
------------------------------------------------------------------------
r3343 | slyphon | 2004-05-01 01:30:56 -0400 (Sat, 01 May 2004) | 1 line
Changed paths:
   A /trunk/tools/svnlogparse.py

parse svn xml-format log and generate representational python objects
------------------------------------------------------------------------
r3342 | exarkun | 2004-04-30 21:31:27 -0400 (Fri, 30 Apr 2004) | 14 lines
Changed paths:
   M /trunk/atop/sched.py
   M /trunk/atop/store.py
   M /trunk/atop/test/test_sched.py
   M /trunk/atop/upgrade.py
   M /trunk/quotient/application.py
   M /trunk/quotient/cleanup.py
   M /trunk/quotient/mimemessage.py

Merge issue 36 (message deduplication) into trunk

This includes heavy changes to the way the scheduler works, including a
bandaid for the duplicate keys in the scheduled items pool and a batch()
method on the store which two pieces of code have been refactored to use.

A MIMEMessage upgrader has been moved out to become part of an Avatar
upgrader, as it was creating a circular dependency.

Finally, a deduplicating upgrader has been added and is invoked in an Avatar
upgrader.  The deduplicator examines various headers and removes messages
found to be duplicates of other messages.  Flags and the pop3uid index key
are transferred from removed duplicates to the message which is left behind.
------------------------------------------------------------------------
r3340 | exarkun | 2004-04-30 21:18:32 -0400 (Fri, 30 Apr 2004) | 4 lines
Changed paths:
   M /trunk/quotient/proto/imapup.py

Merge issue 437 (error storing \Flagged via IMAP4) into trunk

This fixes the problem with evolution storing \Flagged on messages.
------------------------------------------------------------------------
r3304 | root | 2004-04-30 14:26:57 -0400 (Fri, 30 Apr 2004) | 1 line
Changed paths:
   A /trunk/quotient/tools

a new home for QuotientTools
------------------------------------------------------------------------
r3295 | dp | 2004-04-29 13:29:59 -0400 (Thu, 29 Apr 2004) | 2 lines
Changed paths:
   M /trunk/quotient/web/skins/default.css

Make the CSS background color of the main body content area of the
skin white. This prevents the watery background from showing through
on most screens, including compose and pool browser screens, but does
not affect the message detail. Message detail layout will have to be
rearchitected (has to be anyway...)
------------------------------------------------------------------------
r3276 | slyphon | 2004-04-27 11:33:24 -0400 (Tue, 27 Apr 2004) | 6 lines
Changed paths:
   A /trunk/admin/zsh_svn_aliases

in addition to glyph's cool scripts, i found these zsh functions and variables useful

with appropriate comments. please use and comment and change and add things that 
you've found useful
------------------------------------------------------------------------
r3272 | slyphon | 2004-04-27 10:52:37 -0400 (Tue, 27 Apr 2004) | 5 lines
Changed paths:
   M /trunk/quotient/application.py
   M /trunk/quotient/configure.py
   M /trunk/quotient/mimemessage.py
   M /trunk/quotient/puplist.py
   A /trunk/quotient/sumup.py (from /branches/slyphon/issue1287/quotient/sumup.py:3271)
   M /trunk/quotient/test/navtags.py
   M /trunk/quotient/test/test_mimemessage.py
   M /trunk/quotient/test/test_webui.py
   M /trunk/quotient/web/application.py
   M /trunk/quotient/web/functional.py
   M /trunk/quotient/web/pools.py
   M /trunk/quotient/web/root.py
   M /trunk/quotient/webcomponents.wsv

remerging newandunread into trunk. this merge will cause buildbot to go red correctly

there is an issue with a blank username causing a traceback on the signup page
which the functional tests catch correctly
------------------------------------------------------------------------
r3265 | exarkun | 2004-04-26 18:36:30 -0400 (Mon, 26 Apr 2004) | 11 lines
Changed paths:
   M /trunk/quotient/proto/smtpout.py
   M /trunk/quotient/test/test_smtp.py

Merge issue 1311 (getHostByName workaround) into trunk

A copy of MXCalculator has been moved into Quotient.  This one notices a
None return from getHostByName (something it is not supposed to do) and
translates it into a TimeoutError, which is already handled by the code
usnig MXCalculator (by attempting a retry after a delay).  A unit test for
this behavior has also been added.

QA should attempt to send mail to a variety of domains with this code, both
valid and invalid ones, and observe the bounce and retry behavior.
------------------------------------------------------------------------
r3257 | exarkun | 2004-04-26 17:26:06 -0400 (Mon, 26 Apr 2004) | 11 lines
Changed paths:
   M /trunk/quotient/grabbers.py

merge issue 16 (shutdown order bugs) into trunk

GrabberManager storeup has been added.  All GrabberPowerups add their avatar
to the manager when they are created (and existing powerups have an
upgrader).  When the system is shutdown, the GrabberManager looks through
all the powerups' factories and calls loseConnection on any protocol they
currently have connected.  After an arbitrary delay (loseConnection does not
return a Deferred), GrabberManager informs its parent service that it has
shutdown, and the store is allowed to close.
------------------------------------------------------------------------
r3254 | amir | 2004-04-26 16:49:43 -0400 (Mon, 26 Apr 2004) | 2 lines
Changed paths:
   M /trunk/quotient/application.py
   M /trunk/quotient/configure.py
   M /trunk/quotient/mimemessage.py
   M /trunk/quotient/puplist.py
   A /trunk/quotient/sumup.py (from /branches/amir/newandunread/quotient/sumup.py:3246)
   M /trunk/quotient/test/test_mimemessage.py
   M /trunk/quotient/test/test_webui.py
   M /trunk/quotient/web/application.py
   M /trunk/quotient/web/pools.py
   M /trunk/quotient/web/root.py
   M /trunk/quotient/webcomponents.wsv

New and unread on summary view. aka ticket 144. Ready for QA.
------------------------------------------------------------------------
r3252 | exarkun | 2004-04-26 16:23:41 -0400 (Mon, 26 Apr 2004) | 5 lines
Changed paths:
   M /trunk/doc/sample.tac
   M /trunk/quotient/deployment.py
   M /trunk/quotient/scripts/usercreate.py
   M /trunk/quotient/sysup.py
   M /trunk/quotient/tap2.py
   M /trunk/quotient/web/functional.py

merge 1292 and 1293 (multidomain fixes) into trunk (take 2)

"domainName" to deploy() is now "domainNames" and a list of strings. 
divmod-create-user has been fixed to respect the --domain parameter.
------------------------------------------------------------------------
r3249 | glyph | 2004-04-26 16:06:32 -0400 (Mon, 26 Apr 2004) | 14 lines
Changed paths:
   A /trunk/admin/branchify
   A /trunk/admin/chbranch
   A /trunk/admin/mkbranch
   A /trunk/admin/unbranch

These are some convenience scripts for using Subversion with branch-based
development.  They require that you have a directory structure like this:

~/Projects/svn/Quotient/trunk
~/Projects/svn/Quotient/branches/your-username/your-branches
~/Projects/Quotient (which is a symlink to) -> ~/Projects/svn/Quotient/trunk

and automate various operations there.  The really interesting ones are
"mkbranch" which creates a new branch in the appropriate place, and "unbranch"
which will merge your working copy.  This speeds up the creation of branches by
avoiding the potentially expensive re-check-out step without requiring that you
have a full checkout of the whole repository.
------------------------------------------------------------------------
r3240 | glyph | 2004-04-26 14:16:17 -0400 (Mon, 26 Apr 2004) | 1 line
Changed paths:
   M /trunk/quotient/web/functional.py
   M /trunk/quotient/web/newclient.py
   M /trunk/quotient/web/root.py

This ought to merge the fix for issue 237, "don't publish claim-a-ticket over insecure http"
------------------------------------------------------------------------
r3227 | exarkun | 2004-04-26 12:34:15 -0400 (Mon, 26 Apr 2004) | 10 lines
Changed paths:
   M /trunk/atop/store.py
   M /trunk/atop/test/test_store.py

Merge issue 1281 (_inMemoryRevert / doUpgrade interaction) into trunk

Aborted transactions no longer attempt to upgrade Items which were loaded
from disk within that transaction.  This should not change any visible
non-error behavior, but makes error cases much easier to deal with.  In
particular, the double-exception of transaction-failed followed by
doUpgrade-failed should no longer occur, reducing inconsistencies and
irrelevant tracebacks.
------------------------------------------------------------------------
r3226 | exarkun | 2004-04-26 12:24:49 -0400 (Mon, 26 Apr 2004) | 7 lines
Changed paths:
   M /trunk/atop/service.py
   M /trunk/quotient/deployment.py

merge issue303 (run scheduled tasks on startup) into trunk (take 2)

With this change, scheduled events which should be run around the time of
startup are run right away, rather than being put off until another Item is
scheduled.
------------------------------------------------------------------------
r3216 | slyphon | 2004-04-26 11:27:28 -0400 (Mon, 26 Apr 2004) | 1 line
Changed paths:
   M /trunk/quotient/voiceup.py

resolves issue 279 -- allows divmod developers a plan where they can make international calls
------------------------------------------------------------------------
r3178 | slyphon | 2004-04-22 22:12:08 -0400 (Thu, 22 Apr 2004) | 1 line
Changed paths:
   M /trunk/quotient/components.wsv
   M /trunk/quotient/searchup.py
   M /trunk/quotient/test/navtags.py
   M /trunk/quotient/test/test_searchup.py
   M /trunk/quotient/test/test_webui.py
   M /trunk/quotient/web/functional.py

merge branches/slyphon/issue1303 > trunk, searchup functional tests
------------------------------------------------------------------------
r3134 | exarkun | 2004-04-20 13:55:25 -0400 (Tue, 20 Apr 2004) | 2 lines
Changed paths:
   M /branches/erin/quotient/proto/smtpout.py
   M /trunk/quotient/proto/smtpout.py

Try again to handle defer.TimeoutError
------------------------------------------------------------------------
r3108 | washort | 2004-04-19 12:53:58 -0400 (Mon, 19 Apr 2004) | 1 line
Changed paths:
   M /trunk/quotient/deployment.py
   M /trunk/quotient/voiceup.py

merge CDR billing to trunk
------------------------------------------------------------------------
r3086 | washort | 2004-04-17 16:02:10 -0400 (Sat, 17 Apr 2004) | 1 line
Changed paths:
   A /trunk/quotient/cdrmonitor.py

CDR monitor
------------------------------------------------------------------------
r3074 | exarkun | 2004-04-16 17:42:18 -0400 (Fri, 16 Apr 2004) | 1 line
Changed paths:
   A /trunk/sandbox/exarkun/test_dedup.py

Big honking message deduplication test
------------------------------------------------------------------------
r3073 | exarkun | 2004-04-16 17:39:08 -0400 (Fri, 16 Apr 2004) | 2 lines
Changed paths:
   A /trunk/atop/revert.py
   M /trunk/atop/store.py

Factor pickle/cPickle craziness out into a separate module; support pickle again.
------------------------------------------------------------------------
r3069 | exarkun | 2004-04-15 21:27:38 -0400 (Thu, 15 Apr 2004) | 2 lines
Changed paths:
   M /trunk/atop/sched.py
   M /trunk/quotient/application.py
   M /trunk/quotient/smarts/person.py

Code to make people/message dedup upgrade work
------------------------------------------------------------------------
r3067 | amir | 2004-04-15 19:22:03 -0400 (Thu, 15 Apr 2004) | 1 line
Changed paths:
   M /trunk/quotient/web/skins/defaultimages/tabs-logged-in-on/Divmod.png

Divmod tab icon.
------------------------------------------------------------------------
r3063 | exarkun | 2004-04-15 17:27:52 -0400 (Thu, 15 Apr 2004) | 2 lines
Changed paths:
   M /trunk/atop/store.py

Work even if no IService component is installed on the Store
------------------------------------------------------------------------
r3054 | washort | 2004-04-15 13:13:46 -0400 (Thu, 15 Apr 2004) | 1 line
Changed paths:
   A /trunk/sandbox/voiceup.py (from /trunk/quotient/voiceup.py:2851)

move CDR features out, start replacing with pb interface
------------------------------------------------------------------------
r3053 | exarkun | 2004-04-15 11:29:49 -0400 (Thu, 15 Apr 2004) | 2 lines
Changed paths:
   M /trunk/quotient/mimemessage.py
   M /trunk/quotient/smarts/base.py
   M /trunk/quotient/smarts/person.py
   M /trunk/quotient/test/test_usercreate.py

First part of person deduplication upgrader
------------------------------------------------------------------------
r3050 | exarkun | 2004-04-15 10:37:40 -0400 (Thu, 15 Apr 2004) | 2 lines
Changed paths:
   M /trunk/quotient/cleanup.py

Limit the amount of work done in a single transaction
------------------------------------------------------------------------
r3048 | slyphon | 2004-04-15 00:45:46 -0400 (Thu, 15 Apr 2004) | 3 lines
Changed paths:
   M /trunk/quotient/components.wsv
   M /trunk/quotient/test/navtags.py
   M /trunk/quotient/test/test_webui.py
   M /trunk/quotient/test/testdata/ascii/echo.eml
   M /trunk/quotient/test/testdata/ascii/foxtrot.eml
   M /trunk/quotient/web/functional.py
   M /trunk/quotient/web/newclient.py

merged r3033:3046 branches/slyphon/search_functional_tests --> trunk/
------------------------------------------------------------------------
r1622 | amir | 2003-12-03 17:17:28 -0500 (Wed, 03 Dec 2003) | 15 lines
Changed paths:
   M /trunk/quotient/smartenup.py
   M /trunk/quotient/smarts/attachment.py
   M /trunk/quotient/smarts/base.py
   M /trunk/quotient/smarts/image.py
   M /trunk/quotient/smarts/person.py
   M /trunk/quotient/smarts/phone.py
   M /trunk/quotient/smarts/question.py
   M /trunk/quotient/smarts/url.py
   M /trunk/quotient/web/webmail.py

Extracts are no longer Items. They are stored in item.extracts.
The extract pools now have messages in them, not extracts.
One result of this is that messages with many extracts (eg urls in
mailing lists) can grow to over 10k. We may need to introduce
another Item to keep metadata about the message so we can split
the storage between two Items, which would help with writes at the
very least. (We may want to do something similar with a central
counter objects to reduce transaction overhead. Rather than say, every
powerup being written out for every message simply because it updates
a counter).
Image rendering is broken. To render images it needs to get the item
in the images pool, iterate over its extracts and render the ones that
have an IImage. I tried to figure this out in pools.py but got lost.
------------------------------------------------------------------------
