Index: trac/Session.py
===================================================================
--- trac/Session.py	(revision 1098)
+++ trac/Session.py	(working copy)
@@ -21,7 +21,7 @@
 
 import sys
 import time
-from util import hex_entropy, add_dict_to_hdf, TracError
+from util import hex_entropy, add_dict_to_hdf, TRUE, FALSE, TracError
 
 class Session:
     """Basic session handling and per-session storage."""
@@ -167,11 +167,17 @@
         self.bake_cookie()
 
     def purge_expired(self):
-        mintime = int(time.time()) - self.PURGE_AGE
-        self.env.log.debug('Purging old, expired, sessions.')
-        curs = self.db.cursor()
-        curs.execute("DELETE FROM session WHERE sid IN"
-                     " (SELECT sid FROM session WHERE var_name='mod_time'"
-                     "  AND var_value  < %i)", mintime)
-        self.db.commit()
+        val = self.env.get_config('trac','disable_session_purge','false')
+        disable_purge = val.lower() in TRUE
 
+        if not disable_purge:
+            mintime = int(time.time()) - self.PURGE_AGE
+            self.env.log.debug('Purging old, expired, sessions.')
+            curs = self.db.cursor()
+            curs.execute("DELETE FROM session WHERE sid IN"
+                         " (SELECT sid FROM session WHERE var_name='mod_time'"
+                         "  AND var_value  < %i)", mintime)
+            self.db.commit()
+        else:
+            self.env.log.debug('Not purging expired sessions.')
+
Index: trac/Ticket.py
===================================================================
--- trac/Ticket.py	(revision 1098)
+++ trac/Ticket.py	(working copy)
@@ -310,6 +310,7 @@
         ticket.setdefault('version',
                           self.env.get_config('ticket', 'default_version'))
         ticket.setdefault('reporter', util.get_reporter_id(self.req))
+	ticket.setdefault('owner', util.get_reporter_id(self.req))
 
         if ticket.has_key('description'):
             self.req.hdf.setValue('newticket.description_preview',
@@ -327,6 +328,8 @@
                         self.req.hdf, 'newticket.milestones')
         util.sql_to_hdf(self.db, 'SELECT name FROM version ORDER BY name',
                         self.req.hdf, 'newticket.versions')
+        util.sql_to_hdf(self.db, 'SELECT DISTINCT username FROM session ORDER BY username',
+                        self.req.hdf, 'newticket.owners')
 
         insert_custom_fields(self.env, self.req.hdf, ticket)
 
@@ -390,6 +393,8 @@
         util.sql_to_hdf(self.db, "SELECT name FROM enum WHERE type='resolution'"
                                  " ORDER BY value",
                         self.req.hdf, 'enums.resolution')
+	util.sql_to_hdf(self.db, 'SELECT DISTINCT username FROM session ORDER BY username',
+                        self.req.hdf, 'ticket.reassign_owners')
         util.hdf_add_if_missing(self.req.hdf, 'ticket.components', ticket['component'])
         util.hdf_add_if_missing(self.req.hdf, 'ticket.milestones', ticket['milestone'])
         util.hdf_add_if_missing(self.req.hdf, 'ticket.versions', ticket['version'])
Index: templates/ticket.cs
===================================================================
--- templates/ticket.cs	(revision 1098)
+++ templates/ticket.cs	(working copy)
@@ -229,10 +229,10 @@
    <?cs call:hdf_select(enums.resolution, "resolve_resolution", args.resolve_resolution) ?><br />
    <?cs call:action_radio('reassign') ?>
    <label for="reassign">reassign</label>
-   <label for="reassign_owner">to:</label>
-   <input type="text" id="reassign_owner" name="reassign_owner" size="40" value="<?cs
-     if:args.reassign_to ?><?cs var:args.reassign_to ?><?cs
-     else ?><?cs var:trac.authname ?><?cs /if ?>" /><?cs
+   <label for="reassign_owner">to:</label><?cs
+   if:args.reassign_to ?><?cs set:ticket.reassign_owner = args.reassign_to ?><?cs
+   else ?><?cs set:ticket.reassign_owner = trac.authname ?><?cs /if ?><?cs
+   call:hdf_select(ticket.reassign_owners, "reassign_owner", ticket.reassign_owner) ?><?cs
   /if ?><?cs
   if $ticket.status == "new" || $ticket.status == "assigned" || $ticket.status == "reopened" ?>
    <script type="text/javascript">
Index: templates/newticket.cs
===================================================================
--- templates/newticket.cs	(revision 1098)
+++ templates/newticket.cs	(working copy)
@@ -58,9 +58,8 @@
    call:hdf_select(enums.priority, "priority", newticket.priority) ?><br />
    <label for="milestone">Milestone:</label><?cs
    call:hdf_select(newticket.milestones, "milestone", newticket.milestone) ?><br />
-   <label for="owner">Assign to:</label>
-   <input type="text" id="owner" name="owner" size="20" value="<?cs
-     var:newticket.owner ?>" /><br />
+   <label for="owner">Assign to:</label><?cs
+   call:hdf_select(newticket.owners, "owner", newticket.owner) ?><br />
    <label for="cc">Cc:</label>
    <input type="text" id="cc" name="cc" size="30" value="<?cs var:newticket.cc ?>" />
   </div>

