[Rt-commit] r18899 - in rt/3.999/trunk: . lib lib/RT lib/RT/Action lib/RT/Condition lib/RT/Interface lib/RT/Model sbin share/html/Admin/Elements share/html/Approvals/Elements share/html/Elements share/html/NoAuth/iCal share/html/Ticket/Elements share/html/Tools/Reports t/api t/ticket

sartak at bestpractical.com sartak at bestpractical.com
Fri Mar 20 16:17:16 EDT 2009


Author: sartak
Date: Fri Mar 20 16:17:15 2009
New Revision: 18899

Added:
   rt/3.999/trunk/.gitignore
Removed:
   rt/3.999/trunk/lib/RT/Date.pm
Modified:
   rt/3.999/trunk/   (props changed)
   rt/3.999/trunk/lib/RT.pm
   rt/3.999/trunk/lib/RT/Action/UpdateTicket.pm
   rt/3.999/trunk/lib/RT/Condition/BeforeDue.pm
   rt/3.999/trunk/lib/RT/DateTime.pm
   rt/3.999/trunk/lib/RT/Interface/Email.pm
   rt/3.999/trunk/lib/RT/Interface/Web.pm
   rt/3.999/trunk/lib/RT/Model/Ticket.pm
   rt/3.999/trunk/lib/RT/Model/TicketCollection.pm
   rt/3.999/trunk/lib/RT/Model/Transaction.pm
   rt/3.999/trunk/lib/RT/Record.pm
   rt/3.999/trunk/sbin/rt-email-digest
   rt/3.999/trunk/share/html/Admin/Elements/ShowKeyInfo
   rt/3.999/trunk/share/html/Approvals/Elements/PendingMyApproval
   rt/3.999/trunk/share/html/Elements/SelectDate
   rt/3.999/trunk/share/html/NoAuth/iCal/dhandler
   rt/3.999/trunk/share/html/REST/1.0/Forms/ticket/default
   rt/3.999/trunk/share/html/Ticket/Elements/Reminders
   rt/3.999/trunk/share/html/Tools/Reports/CreatedByDates.html
   rt/3.999/trunk/share/html/Tools/Reports/ResolvedByDates.html
   rt/3.999/trunk/t/api/reminders.t
   rt/3.999/trunk/t/ticket/action_linear_escalate.t

Log:
Finish DateTime merge

Added: rt/3.999/trunk/.gitignore
==============================================================================
--- (empty file)
+++ rt/3.999/trunk/.gitignore	Fri Mar 20 16:17:15 2009
@@ -0,0 +1,13 @@
+META.yml
+Makefile
+Makefile.old
+MANIFEST
+MANIFEST.bak
+SIGNATURE
+blib/
+inc/
+mason*/
+pm_to_blib
+t/data/gnupg/keyrings/random_seed
+t/mailbox_*
+

Modified: rt/3.999/trunk/lib/RT.pm
==============================================================================
--- rt/3.999/trunk/lib/RT.pm	(original)
+++ rt/3.999/trunk/lib/RT.pm	Fri Mar 20 16:17:15 2009
@@ -51,6 +51,7 @@
 package RT;
 
 use RT::CurrentUser;
+use RT::DateTime;
 use Jifty::Util;
 
 use strict;

Modified: rt/3.999/trunk/lib/RT/Action/UpdateTicket.pm
==============================================================================
--- rt/3.999/trunk/lib/RT/Action/UpdateTicket.pm	(original)
+++ rt/3.999/trunk/lib/RT/Action/UpdateTicket.pm	Fri Mar 20 16:17:15 2009
@@ -31,8 +31,8 @@
         if ( defined $value ) {
 
             # convert date to be as UTC
-            my $date = RT::Date->new_from_string($value);
-            $self->argument_value( $field, $date->iso );
+            my $date = RT::DateTime->new_from_string($value);
+            $self->argument_value($field, $date);
         }
     }
 

Modified: rt/3.999/trunk/lib/RT/Condition/BeforeDue.pm
==============================================================================
--- rt/3.999/trunk/lib/RT/Condition/BeforeDue.pm	(original)
+++ rt/3.999/trunk/lib/RT/Condition/BeforeDue.pm	Fri Mar 20 16:17:15 2009
@@ -48,8 +48,6 @@
 package RT::Condition::BeforeDue;
 use base 'RT::Condition';
 
-use RT::Date;
-
 use strict;
 
 sub is_applicable {
@@ -64,8 +62,7 @@
     }
     my $elapse = $e{'d'} * 24 * 60 * 60 + $e{'h'} * 60 * 60 + $e{'m'} * 60 + $e{'s'};
 
-    my $cur = RT::Date->new( RT->system_user );
-    $cur->set_to_now();
+    my $cur = RT::DateTime->now;
     my $due = $self->ticket_obj->due;
     return (undef) if $due->epoch <= 0;
 

Modified: rt/3.999/trunk/lib/RT/DateTime.pm
==============================================================================
--- rt/3.999/trunk/lib/RT/DateTime.pm	(original)
+++ rt/3.999/trunk/lib/RT/DateTime.pm	Fri Mar 20 16:17:15 2009
@@ -10,8 +10,6 @@
 
 sub _stringify { shift->config_format }
 
-sub is_unset { shift->epoch == 0 }
-
 sub age {
     my $self  = shift;
     my $until = shift || RT::DateTime->now;
@@ -28,8 +26,8 @@
         $tz = $self->current_user->user_object->time_zone;
     }
 
-    # if the user time zone is requested and the user has none, use the server's
-    # time zone
+    # if the "user" time zone is requested and the user has none, use the
+    # "server" time zone
     if (!$tz || lc($tz) eq 'server' || lc($tz) eq 'system') {
         $tz = RT->config->get('TimeZone');
     }
@@ -41,6 +39,8 @@
     my $self = shift;
     my %args = @_;
 
+    return $self->new_unset if @_ == 0;
+
     $args{time_zone} = $self->_canonicalize_time_zone($args{time_zone})
         if defined $args{time_zone};
 
@@ -68,8 +68,9 @@
 
     my $dt = $class->SUPER::new_from_string($string, %args);
 
+    # always return a valid RT::DateTime object
     if (!defined($dt)) {
-        return RT::DateTime->from_epoch(epoch => 0);
+        return RT::DateTime->new_unset;
     }
 
     return $dt;
@@ -105,17 +106,47 @@
     return $self->strftime('%a, %d %b %Y %H:%M:%S %z');
 }
 
+sub rfc2616 {
+    my $self = _canonicalize_self(@_);
+
+    # Always in UTC!
+    my $in_utc = $self->clone;
+    $in_utc->set_time_zone('UTC');
+
+    return $in_utc->strftime('%a, %d %b %Y %H:%M:%S GMT');
+}
+
 sub iso {
     my $self = _canonicalize_self(@_);
 
     return $self->strftime('%Y-%m-%d %H:%M:%S');
 }
 
+sub iCal {
+    my $self = _canonicalize_self(@_);
+
+    # Always in UTC!
+    my $in_utc = $self->clone;
+    $in_utc->set_time_zone('UTC');
+
+    return $in_utc->strftime('%Y%m%dT%H%M%SZ');
+}
+
 sub config_format {
     my $self = _canonicalize_self(@_);
 
     return $self->strftime(RT->config->get('DateTimeFormat'));
 }
 
+sub date {
+    my $self = _canonicalize_self(@_);
+
+    return $self->ymd('-'); # XXX: should figure something out from config
+}
+
+sub is_unset { shift->epoch == 0 }
+
+sub new_unset { RT::DateTime->from_epoch(epoch => 0) }
+
 1;
 

Modified: rt/3.999/trunk/lib/RT/Interface/Email.pm
==============================================================================
--- rt/3.999/trunk/lib/RT/Interface/Email.pm	(original)
+++ rt/3.999/trunk/lib/RT/Interface/Email.pm	Fri Mar 20 16:17:15 2009
@@ -359,9 +359,7 @@
     }
 
     unless ( $args{'entity'}->head->get('date') ) {
-        require RT::Date;
-        my $date = RT::Date->new( current_user => RT->system_user );
-        $date->set_to_now;
+        my $date = RT::DateTime->now;
         $args{'entity'}->head->set( 'date', $date->rfc2822( time_zone => 'server' ) );
     }
 

Modified: rt/3.999/trunk/lib/RT/Interface/Web.pm
==============================================================================
--- rt/3.999/trunk/lib/RT/Interface/Web.pm	(original)
+++ rt/3.999/trunk/lib/RT/Interface/Web.pm	Fri Mar 20 16:17:15 2009
@@ -204,13 +204,12 @@
 =cut
 
 sub static_file_headers {
-    my $date = RT::Date->new( current_user => RT->system_user );
-
     # make cache public
     $HTML::Mason::Commands::r->headers_out->{'Cache-Control'} = 'max-age=259200, public';
 
     # Expire things in a month.
-    $date->set( value => time + 30 * 24 * 60 * 60 );
+    my $date = RT::DateTime->now;
+    $date->add(months => 1);
     $HTML::Mason::Commands::r->headers_out->{'Expires'} = $date->rfc2616;
 
     # if we set 'Last-Modified' then browser request a comp using 'If-Modified-Since'

Modified: rt/3.999/trunk/lib/RT/Model/Ticket.pm
==============================================================================
--- rt/3.999/trunk/lib/RT/Model/Ticket.pm	(original)
+++ rt/3.999/trunk/lib/RT/Model/Ticket.pm	Fri Mar 20 16:17:15 2009
@@ -71,7 +71,6 @@
 use RT::Model::Queue;
 use RT::Model::User;
 use RT::Model::LinkCollection;
-use RT::Date;
 use RT::Model::CustomFieldCollection;
 use RT::Model::TicketCollection;
 use RT::Model::TransactionCollection;
@@ -336,6 +335,7 @@
         starts              => undef,
         started             => undef,
         resolved            => undef,
+        told                => undef,
         mime_obj            => undef,
         _record_transaction => 1,
         dry_run             => 0,
@@ -406,39 +406,53 @@
         unless defined $args{'priority'};
 
     # {{{ Dates
-    #TODO we should see what sort of due date we're getting, rather +
-    # than assuming it's in ISO format.
-
     #Set the due date. if we didn't get fed one, use the queue default due in
-    my $due = RT::Date->new();
+    my $due;
     if ( defined $args{'due'} ) {
-        $due->set( format => 'ISO', value => $args{'due'} );
+        $due = RT::DateTime->new_from_string($args{'due'});
     } elsif ( my $due_in = $queue_obj->default_due_in ) {
-        $due->set_to_now;
-        $due->add_days($due_in);
+        $due = RT::DateTime->now;
+        $due->add(days => $due_in);
+    } else {
+        $due = RT::DateTime->new_unset;
     }
 
-    my $starts = RT::Date->new();
+    my $starts;
     if ( defined $args{'starts'} ) {
-        $starts->set( format => 'ISO', value => $args{'starts'} );
+        $starts = RT::DateTime->new_from_string($args{'starts'});
+    } else {
+        $starts = RT::DateTime->new_unset;
     }
 
-    my $started = RT::Date->new();
+    my $started;
     if ( defined $args{'started'} ) {
-        $started->set( format => 'ISO', value => $args{'started'} );
+        $started = RT::DateTime->new_from_string($args{'started'});
     } elsif ( !$queue_obj->status_schema->is_initial( $args{'status'} ) ) {
-        $started->set_to_now;
+        $started = RT::DateTime->now;
+    }
+    else {
+        $started = RT::DateTime->new_unset;
     }
 
-    my $Resolved = RT::Date->new();
+    my $resolved;
     if ( defined $args{'resolved'} ) {
-        $Resolved->set( format => 'ISO', value => $args{'resolved'} );
+        $resolved = RT::DateTime->new_from_string($args{'resolved'});
     }
-
     #If the status is an inactive status, set the resolved date
     elsif ( $queue_obj->status_schema->is_inactive( $args{'status'} ) ) {
         Jifty->log->debug( "Got a " . $args{'status'} . "(inactive) ticket with undefined resolved date. Setting to now." );
-        $Resolved->set_to_now;
+        $resolved = RT::DateTime->now;
+    }
+    else {
+        $resolved = RT::DateTime->new_unset;
+    }
+
+    my $told;
+    if ( defined $args{'told'} ) {
+        $told = RT::DateTime->new_from_string($args{'told'});
+    }
+    else {
+        $told = RT::DateTime->new_unset;
     }
 
     # }}}
@@ -533,10 +547,11 @@
         time_estimated   => $args{'time_estimated'},
         time_left        => $args{'time_left'},
         type             => $args{'type'},
-        starts           => $starts->iso,
-        started          => $started->iso,
-        resolved         => $Resolved->iso,
-        due              => $due->iso
+        starts           => $starts,
+        started          => $started,
+        resolved         => $resolved,
+        told             => $told,
+        due              => $due,
     );
 
     # Parameters passed in during an import that we probably don't want to touch, otherwise
@@ -977,11 +992,11 @@
     }
 
     #We create a date object to catch date weirdness
-    my $time_obj = RT::Date->new( current_user => $self->current_user() );
+    my $time_obj;
     if ($time) {
-        $time_obj->set( format => 'ISO', value => $time );
+        $time_obj = RT::DateTime->new_from_string($time);
     } else {
-        $time_obj->set_to_now();
+        $time_obj = RT::DateTime->now;
     }
 
     #Now that we're starting, open this ticket
@@ -1013,18 +1028,9 @@
     #This is not really a date object, but if we diff a number of seconds
     #vs the epoch, we'll get a nice description of time worked.
 
-    my $worked = RT::Date->new();
-
-    #return the  #of minutes worked turned into seconds and written as
-    # a simple text string
-
-    return ( $worked->duration_as_string( $self->time_worked * 60 ) );
+    return RT::DateTime::Duration->new(minutes => $self->time_worked)->as_string;
 }
 
-
-
-
-
 =head2 comment
 
 comment on this ticket.
@@ -1987,14 +1993,13 @@
         return ( 0, _('That ticket has unresolved dependencies') );
     }
 
-    my $now = RT::Date->new;
-    $now->set_to_now();
+    my $now = RT::DateTime->now;
 
     #If we're changing the status from intial to non-initial, record that we've started
     if ( $schema->is_initial( $self->status ) && !$schema->is_initial( $args{status} ) )  {
         $self->_set(
             column             => 'started',
-            value              => $now->iso,
+            value              => $now,
             record_transaction => 0
         );
     }
@@ -2004,7 +2009,7 @@
     if ( $schema->is_inactive( $args{status} ) ) {
         $self->_set(
             column             => 'resolved',
-            value              => $now->iso,
+            value              => $now,
             record_transaction => 0
         );
     }
@@ -2037,14 +2042,11 @@
         return ( 0, _("Permission Denied") );
     }
 
-    my $datetold = RT::Date->new();
+    my $datetold;
     if ($told) {
-        $datetold->set(
-            format => 'iso',
-            value  => $told
-        );
+        $datetold = RT::DateTime->new_from_string($told);
     } else {
-        $datetold->set_to_now();
+        $datetold = RT::DateTime->now;
     }
 
     return (
@@ -2066,14 +2068,11 @@
 sub _set_told {
     my $self = shift;
 
-    my $now = RT::Date->new();
-    $now->set_to_now();
-
     #use __set to get no ACLs ;)
     return (
         $self->__set(
             column => 'told',
-            value  => $now->iso
+            value  => RT::DateTime->now(),
         )
     );
 }

Modified: rt/3.999/trunk/lib/RT/Model/TicketCollection.pm
==============================================================================
--- rt/3.999/trunk/lib/RT/Model/TicketCollection.pm	(original)
+++ rt/3.999/trunk/lib/RT/Model/TicketCollection.pm	Fri Mar 20 16:17:15 2009
@@ -533,7 +533,7 @@
         # particular single day.  in the database, we need to check for >
         # and < the edges of that day.
 
-        $date->truncate(to => 'day')->set_time_zone('server');
+        $date->truncate(to => 'day')->set_time_zone('UTC');
         my $daystart = $date->iso;
         my $dayend = $date->add(days => 1)->iso;
 
@@ -632,7 +632,7 @@
         # particular single day.  in the database, we need to check for >
         # and < the edges of that day.
 
-        $date->truncate(to => 'day')->set_time_zone('server');
+        $date->truncate(to => 'day')->set_time_zone('UTC');
         my $daystart = $date->iso;
         my $dayend = $date->add(days => 1)->iso;
 

Modified: rt/3.999/trunk/lib/RT/Model/Transaction.pm
==============================================================================
--- rt/3.999/trunk/lib/RT/Model/Transaction.pm	(original)
+++ rt/3.999/trunk/lib/RT/Model/Transaction.pm	Fri Mar 20 16:17:15 2009
@@ -928,23 +928,9 @@
     },
     told => sub {
         my $self = shift;
-        if ( $self->field eq 'told' ) {
-            my $t1 = RT::Date->new();
-            $t1->set( format => 'ISO', value => $self->new_value );
-            my $t2 = RT::Date->new();
-            $t2->set( format => 'ISO', value => $self->old_value );
-            return _( "%1 changed from %2 to %3", $self->field, $t2->as_string, $t1->as_string );
-        } else {
-            return _(
-                "%1 changed from %2 to %3",
-                $self->field,
-                (   $self->old_value
-                    ? "'" . $self->old_value . "'"
-                    : _("(no value)")
-                ),
-                "'" . $self->new_value . "'"
-            );
-        }
+        my $old = RT::DateTime->new_from_string($self->new_value);
+        my $new = RT::DateTime->new_from_string($self->old_value);
+        return _( "%1 changed from %2 to %3", $self->field, $old, $new );
     },
     set => sub {
         my $self = shift;
@@ -960,11 +946,9 @@
 
         # Write the date/time change at local time:
         elsif ( $self->field =~ /due|starts|started/i ) {
-            my $t1 = RT::Date->new();
-            $t1->set( format => 'ISO', value => $self->new_value );
-            my $t2 = RT::Date->new();
-            $t2->set( format => 'ISO', value => $self->old_value );
-            return _( "%1 changed from %2 to %3", $self->field, $t2->as_string, $t1->as_string );
+            my $old = RT::DateTime->new_from_string($self->new_value);
+            my $new = RT::DateTime->new_from_string($self->old_value);
+            return _( "%1 changed from %2 to %3", $self->field, $old, $new );
         } else {
             return _(
                 "%1 changed from %2 to %3",

Modified: rt/3.999/trunk/lib/RT/Record.pm
==============================================================================
--- rt/3.999/trunk/lib/RT/Record.pm	(original)
+++ rt/3.999/trunk/lib/RT/Record.pm	Fri Mar 20 16:17:15 2009
@@ -66,7 +66,6 @@
 use strict;
 use warnings;
 
-use RT::Date;
 use RT::Model::User;
 use RT::Model::AttributeCollection;
 use RT::Model::Attribute;
@@ -400,12 +399,11 @@
 
 sub set_last_updated {
     my $self = shift;
-    my $now = RT::Date->new( current_user => $self->current_user );
-    $now->set_to_now();
+    my $now = RT::DateTime->now;
 
     my ( $msg, $val ) = $self->__set(
         column => 'last_updated',
-        value  => $now->iso
+        value  => $now,
     );
     ( $msg, $val ) = $self->__set(
         column => 'last_updated_by',

Modified: rt/3.999/trunk/sbin/rt-email-digest
==============================================================================
--- rt/3.999/trunk/sbin/rt-email-digest	(original)
+++ rt/3.999/trunk/sbin/rt-email-digest	Fri Mar 20 16:17:15 2009
@@ -200,17 +200,16 @@
 
     # Specify a short time for digest overlap, in case we aren't starting
     # this process exactly on time.
-    my $OVERLAP_HEDGE = -30;
+    my $OVERLAP_HEDGE = 30;
 
-    my $since_date = RT::Date->new( current_user => RT->system_user );
-    $since_date->set( format => 'unix', value => time() );
+    my $since_date = RT::DateTime->now;
     if ( $frequency eq 'daily' ) {
-        $since_date->add_days(-1);
+        $since_date->subtract(days => 1);
     } else {
-        $since_date->add_days(-7);
+        $since_date->subtract(days => 7);
     }
 
-    $since_date->add_seconds($OVERLAP_HEDGE);
+    $since_date->subtract(seconds => $OVERLAP_HEDGE);
 
     return $since_date;
 }
@@ -296,13 +295,7 @@
                 unless ($date) {
                     my $txn_obj = RT::Model::Transaction->new( current_user => RT->system_user );
                     $txn_obj->load($txn);
-                    my $date_obj = RT::Date->new( current_user => RT->system_user );
-                    $date_obj->set(
-                        format => 'sql',
-                        value  => $txn_obj->created
-                    );
-                    $date = strftime( '%a, %d %b %Y %H:%M:%S %z',
-                        @{ [ localtime( $date_obj->unix ) ] } );
+                    $date = RT::DateTime->new_from_string($txn_obj->created)->rfc2822;
                 }
                 $contents_body .= "Date: $date\n\n";
                 $contents_body .= $msg->content . "\n";

Modified: rt/3.999/trunk/share/html/Admin/Elements/ShowKeyInfo
==============================================================================
--- rt/3.999/trunk/share/html/Admin/Elements/ShowKeyInfo	(original)
+++ rt/3.999/trunk/share/html/Admin/Elements/ShowKeyInfo	Fri Mar 20 16:17:15 2009
@@ -56,16 +56,16 @@
 % }
 
 <tr><th><% _('Created') %>:</th>
-<td><% $res{'info'}{'created'}? $res{'info'}{'created'}->as_string( Time => 0 ): _('never') %></td></tr>
+<td><% $res{'info'}{'created'}? $res{'info'}{'created'}->date : _('never') %></td></tr>
 
 <tr><th><% _('Expire') %>:</th>
-<td><% $res{'info'}{'expire'}? $res{'info'}{'expire'}->as_string( Time => 0 ): _('never') %></td></tr>
+<td><% $res{'info'}{'expire'}? $res{'info'}{'expire'}->date : _('never') %></td></tr>
 
 % foreach my $uinfo( @{ $res{'info'}{'user'} } ) {
 <tr><th><% _('User (Created - expire)') %>:</th>
 <td><% $uinfo->{'string'} %>\
-(<% $uinfo->{'created'}? $uinfo->{'created'}->as_string( Time => 0 ): _('never') %> - \
-<% $uinfo->{'expire'}? $uinfo->{'expire'}->as_string( Time => 0 ): _('never') %>)
+(<% $uinfo->{'created'}? $uinfo->{'created'}->date : _('never') %> - \
+<% $uinfo->{'expire'}? $uinfo->{'expire'}->date : _('never') %>)
 </td></tr>
 % }
 

Modified: rt/3.999/trunk/share/html/Approvals/Elements/PendingMyApproval
==============================================================================
--- rt/3.999/trunk/share/html/Approvals/Elements/PendingMyApproval	(original)
+++ rt/3.999/trunk/share/html/Approvals/Elements/PendingMyApproval	Fri Mar 20 16:17:15 2009
@@ -76,31 +76,32 @@
 my $group_tickets = RT::Model::TicketCollection->new( current_user => Jifty->web->current_user );
 $group_tickets->limit_watcher( value => Jifty->web->current_user->user_object->email, type => 'admin_cc' );
 
-my $Created_before = RT::Date->new();
-my $Created_after = RT::Date->new();
+my $created_before = RT::DateTime->new_from_string($ARGS{'created_before'});
+my $created_after  = RT::DateTime->new_from_string($ARGS{'created_after'});
 
 foreach ($tickets, $group_tickets) {
-    $_->limit( column      => 'type', value => 'approval' );
+    $_->limit( column => 'type', value => 'approval' );
 
     if ( $ARGS{'show_resolved'} ) {
-	$_->limit_status( value => 'resolved' );
+        $_->limit_status( value => 'resolved' );
     }
+
     if ( $ARGS{'show_rejected'} ) {
-	$_->limit_status( value => 'rejected' );
+        $_->limit_status( value => 'rejected' );
     }
+
     if ( $ARGS{'show_pending'} || ( !$ARGS{'show_rejected'} && !$ARGS{'resolved'} ) ) {
-	$_->limit_status( value => 'open' );
-	$_->limit_status( value => 'new' );
-	$_->limit_status( value => 'stalled' );
+        $_->limit_status( value => 'open' );
+        $_->limit_status( value => 'new' );
+        $_->limit_status( value => 'stalled' );
     }
 
-    if ( $ARGS{'created_before'} ) {
-	$Created_before->set( format => 'unknown', value => $ARGS{'created_before'} );
-	$_->limit_created( operator => "<=", value => $Created_before->iso );
+    if ($created_before->is_set) {
+        $_->limit_created( operator => "<=", value => $created_before );
     }
-    if ( $ARGS{'created_after'} ) {
-	$Created_after->set( format => 'unknown', value => $ARGS{'created_after'} );
-	$_->limit_created( operator => ">=", value => $Created_after->iso );
+
+    if ($created_after->is_set) {
+        $_->limit_created( operator => ">=", value => $created_after );
     }
 }
 

Modified: rt/3.999/trunk/share/html/Elements/SelectDate
==============================================================================
--- rt/3.999/trunk/share/html/Elements/SelectDate	(original)
+++ rt/3.999/trunk/share/html/Elements/SelectDate	Fri Mar 20 16:17:15 2009
@@ -47,15 +47,15 @@
 %# END BPS TAGGED BLOCK }}}
 <input type="text" id="<% $name %>" name="<% $name %>" class="datetime" value="<% $value %>" size="<% $size %>" />
 <%init>
-unless ((defined $default) or 
-	($current <= 0)) {
-	my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) =
-                                            localtime($current);
-        $default = sprintf("%04d-%02d-%02d %02d:%02d",                         
-                           $year+1900,$mon+1,$mday,                            
-                           $hour,$min);   
+undef $default if ref($default) && !$default->is_set;
+undef $value   if ref($value)   && !$value->is_set;
+
+if (!defined($default) && $current > 0) {
+    $default = RT::DateTime->from_epoch($current);
 }
+
 $value = $value || $default;
+$value = $value->iso if ref($value);
 
 unless ($name) {
 	$name = $menu_prefix. "_date";

Modified: rt/3.999/trunk/share/html/NoAuth/iCal/dhandler
==============================================================================
--- rt/3.999/trunk/share/html/NoAuth/iCal/dhandler	(original)
+++ rt/3.999/trunk/share/html/NoAuth/iCal/dhandler	Fri Mar 20 16:17:15 2009
@@ -90,7 +90,7 @@
 
     my $starttime = $t->starts->epoch > 0 ? $t->starts : $t->created;
 
-    my $now = RT::Date->new; $now->set_to_now;
+    my $now   = RT::DateTime->now;
     my $start = Data::ICal::Entry::Event->new;
     my $end   = Data::ICal::Entry::Event->new;
     $_->add_properties(

Modified: rt/3.999/trunk/share/html/REST/1.0/Forms/ticket/default
==============================================================================
--- rt/3.999/trunk/share/html/REST/1.0/Forms/ticket/default	(original)
+++ rt/3.999/trunk/share/html/REST/1.0/Forms/ticket/default	Fri Mar 20 16:17:15 2009
@@ -92,14 +92,14 @@
     if (!keys(%data)) {
         # GET ticket/new: Return a suitable default form.
         # We get defaults from queue/1 (XXX: What if it isn't there?).
-        my $due = RT::Date->new( current_user => Jifty->web->current_user ) ;
         my $queue = RT::Model::Queue->new ( current_user =>
                 Jifty->web->current_user ) ;
-        my $starts = RT::Date->new( current_user => Jifty->web->current_user);
         $queue->load(1);
-        $due->set_to_now;
-        $due->add_days($queue->default_due_in) if $queue->default_due_in;
-        $starts->set_to_now;
+
+        my $due = RT::DateTime->now;
+        $due->add(days => $queue->default_due_in) if $queue->default_due_in;
+
+        my $starts = RT::DateTime->now;
 
         return [
             "# Required: id, Queue",
@@ -133,8 +133,7 @@
         foreach my $k (keys %data) {
             # flexibly parse any dates
             if ($dates{lc $k}) {
-                my $time = RT::Date->new( current_user => Jifty->web->current_user );
-                $time->set(format => 'unknown', value => $data{$k});
+                my $time = RT::DateTime->new_from_string($data{$k});
                 $data{$k} = $time->iso;
             }
 
@@ -187,7 +186,7 @@
 
 # Now we know we're dealing with an existing ticket.
 if (!keys(%data)) {
-    my ($time, $key, $val, @data);
+    my ($key, $val, @data);
 
     push @data, [ id    => "ticket/".$ticket->id   ];
     push @data, [ queue => $ticket->queue->name ] 
@@ -208,14 +207,11 @@
         push @data, [ $key => [ $ticket->role_group($key eq 'requestors' ? 'requestor' : $key)->member_emails ] ];
     }
 
-    $time = RT::Date->new();
     foreach $key (@dates) {
-	next unless (!%$fields || (exists $fields->{lc $key}));
-        $time->set(format => 'sql', value => $ticket->$key);
-        push @data, [ $key => $time->as_string ];
+        next unless (!%$fields || (exists $fields->{lc $key}));
+        push @data, [ $key => $ticket->$key->iso ];
     }
 
-    $time = RT::Date->new();
     foreach $key (qw(time_estimated time_worked time_left)) {
 	next unless (!%$fields || (exists $fields->{lc $key}));
         $val = $ticket->$key || 0;
@@ -278,12 +274,11 @@
             $key = $dates{$key};
             $set = "set_$key";
 
-            my $time = RT::Date->new() ;
-            $time->set(format => 'sql', value => $ticket->$key);
-            next if ($val =~ /^not set$/i || $val eq $time->as_string);
+            my $time = RT::DateTime->new_from_string($ticket->$key);
+            next if ($val =~ /^not set$/i || $val eq $time->iso);
 
-            $time->set(format => 'unknown', value => $val);
-            ($n, $s) = $ticket->$set($time->iso);
+            $time = RT::DateTime->new_from_string($val);
+            ($n, $s) = $ticket->$set($time);
         }
         elsif (exists $people{$key}) {
             $key = $people{$key};

Modified: rt/3.999/trunk/share/html/Ticket/Elements/Reminders
==============================================================================
--- rt/3.999/trunk/share/html/Ticket/Elements/Reminders	(original)
+++ rt/3.999/trunk/share/html/Ticket/Elements/Reminders	Fri Mar 20 16:17:15 2009
@@ -83,19 +83,11 @@
 }
 
 if ( $request_args->{'NewReminder-Subject'} ) {
-    my $due     = RT::Date->new();
-    my $date    = Time::ParseDate::parsedate(
-        $request_args->{'NewReminder-Due'},
-        UK            => RT->config->get('DateDayBeforeMonth'),
-        PREFER_PAST   => 0,
-        PREFER_FUTURE => 1
-    );
-    $due->set( value => $date, format => 'unix' );
+    my $due = RT::DateTime->new_from_string($request_args->{'NewReminder-Due'});
     my ( $add_id, $msg, $txnid ) = $ticket->reminders->add(
-
         subject => $request_args->{'NewReminder-Subject'},
         owner   => $request_args->{'NewReminder-Owner'},
-        due     => $due->iso
+        due     => $due,
     );
 }
 

Modified: rt/3.999/trunk/share/html/Tools/Reports/CreatedByDates.html
==============================================================================
--- rt/3.999/trunk/share/html/Tools/Reports/CreatedByDates.html	(original)
+++ rt/3.999/trunk/share/html/Tools/Reports/CreatedByDates.html	Fri Mar 20 16:17:15 2009
@@ -53,31 +53,21 @@
 <%init>
 my $title = _("Created tickets in period, grouped by status");
 my $q = RT::Model::Queue->new( current_user => Jifty->web->current_user );
-my $before = RT::Date->new();
-my $after = RT::Date->new();
 my $query = 'Status != "deleted" ';
 
-
-if ($created_after) {
-    $after->set(format => 'unknown', value => $created_after);
-    $created_after = $after->as_string;
-}
-if ($created_before) {
-    $before->set(format => 'unknown', value => $created_before);
-    $created_before = $before->as_string;
-}
-
+my $after = RT::DateTime->new_from_string($created_after);
+my $before = RT::DateTime->new_from_string($created_before);
 
 $q->load_by_cols(name => $queue);
 </%init>
 <&| /_elements/wrapper, title => $title &>
 <& /Tools/Reports/Elements/Tabs, current_tab => 'Tools/Reports/CreatedByDates.html', title => $title &>
 <form method="post" action="CreatedByDates.html">
-% if ($queue|| $created_before ||$created_after) {
+% if ($queue || $before->is_set || $after->is_set) {
 % # if we have a queue, do the search
 % if ($queue) { $query .= " AND queue = '$queue'"}
-% if ($created_before) { $query .= " AND Created < '".$before->iso."'"; }
-% if ($created_after) { $query .= " AND Created > '".$after->iso."'"}
+% if ($before->is_set) { $query .= " AND Created < '".$before->iso."'"; }
+% if ($after->is_set) { $query .= " AND Created > '".$after->iso."'"}
 % my $groupby = 'Status';
 <& /Search/Elements/Chart, query => $query, primary_group_by => $groupby &>
 % }
@@ -86,9 +76,9 @@
 
 <br /><&|/l&>Queue</&>: <& /Elements/SelectQueue, name => 'queue', named_values => 1, default => $q->id &>
 <br /><&|/l&>Tickets Created after</&>: 
-<& /Elements/SelectDate, name => 'created_after', default => ($created_after) ? $after->iso : ''&>
+<& /Elements/SelectDate, name => 'created_after', default => $after &>
 <br /><&|/l&>Tickets Created before</&>: 
-<& /Elements/SelectDate, name => 'created_before', default => ($created_before) ? $before->iso : ''&>
+<& /Elements/SelectDate, name => 'created_before', default => $before &>
 
 <& /Elements/Submit&>
 </form>

Modified: rt/3.999/trunk/share/html/Tools/Reports/ResolvedByDates.html
==============================================================================
--- rt/3.999/trunk/share/html/Tools/Reports/ResolvedByDates.html	(original)
+++ rt/3.999/trunk/share/html/Tools/Reports/ResolvedByDates.html	Fri Mar 20 16:17:15 2009
@@ -53,32 +53,22 @@
 <%init>
 my $title = _("Resolved tickets in period, grouped by owner");
 my $q = RT::Model::Queue->new( current_user => Jifty->web->current_user );
-my $before = RT::Date->new();
-my $after = RT::Date->new();
 my $query = '';
 
-
-if ($resolved_after) {
-    $after->set(format => 'unknown', value => $resolved_after);
-    $resolved_after = $after->as_string;
-}
-if ($resolved_before) {
-    $before->set(format => 'unknown', value => $resolved_before);
-    $resolved_before = $before->as_string;
-}
-
+my $after = RT::DateTime->new_from_string($resolved_after);
+my $before = RT::DateTime->new_from_string($resolved_before);
 
 $q->load_by_cols(name => $queue);
 </%init>
 <&| /_elements/wrapper, title => $title &>
 <& /Tools/Reports/Elements/Tabs, current_tab => 'Tools/Reports/ResolvedByDates.html', title => $title &>
 <form method="post" action="ResolvedByDates.html">
-% if ($queue|| $resolved_before ||$resolved_after) {
+% if ($queue || $before->is_set || $after->is_set) {
 % # if we have a queue, do the search
 % $query = "Status = 'resolved'";
 % if ($queue) { $query .= " AND queue = '$queue'"}
-% if ($resolved_before) { $query .= " AND resolved < '".$before->iso."'"; }
-% if ($resolved_after) { $query .= " AND resolved > '".$after->iso."'"}
+% if ($before->is_set) { $query .= " AND resolved < '".$before->iso."'"; }
+% if ($after->is_set) { $query .= " AND resolved > '".$after->iso."'"}
 % my $groupby = 'Owner';
 <& /Search/Elements/Chart, query => $query, primary_group_by => $groupby &>
 % }
@@ -87,9 +77,9 @@
 
 <br /><&|/l&>Queue</&>: <& /Elements/SelectQueue, name => 'queue', named_values => 1, default => $q->id &>
 <br /><&|/l&>Tickets resolved after</&>: 
-<& /Elements/SelectDate, name => 'resolved_after', default => ($resolved_after) ? $after->iso : ''&>
+<& /Elements/SelectDate, name => 'resolved_after', default => $after &>
 <br /><&|/l&>Tickets resolved before</&>: 
-<& /Elements/SelectDate, name => 'resolved_before', default => ($resolved_before) ? $before->iso : ''&>
+<& /Elements/SelectDate, name => 'resolved_before', default => $before &>
 
 <& /Elements/Submit&>
 </form>

Modified: rt/3.999/trunk/t/api/reminders.t
==============================================================================
--- rt/3.999/trunk/t/api/reminders.t	(original)
+++ rt/3.999/trunk/t/api/reminders.t	Fri Mar 20 16:17:15 2009
@@ -33,13 +33,12 @@
 isnt($id , 0, 'Success creating ticket');
 
 # Add reminder
-my $due_obj = RT::Date->new( RT->system_user);
-$due_obj->set_to_now;
+my $due = RT::DateTime->now(current_user => RT->system_user);
 ok(my ( $add_id, $add_msg, $txnid ) = $t->reminders->add(
     subject => 'TestReminder',
     owner   => 'root',
-    due     => $due_obj->iso
-    ), 'Add reminder');
+    due     => $due,
+), 'Add reminder');
 
 # Check that the new Reminder is here
 my $reminders = $t->reminders->collection;

Modified: rt/3.999/trunk/t/ticket/action_linear_escalate.t
==============================================================================
--- rt/3.999/trunk/t/ticket/action_linear_escalate.t	(original)
+++ rt/3.999/trunk/t/ticket/action_linear_escalate.t	Fri Mar 20 16:17:15 2009
@@ -66,10 +66,9 @@
 sub create_ticket_as_ok {
     my $user = shift;
 
-    my $created = RT::Date->new( current_user => RT->system_user );
-    $created->unix(time() - ( 7 * 24 * 60**2 ));
-    my $due = RT::Date->new( current_user => RT->system_user );
-    $due->unix(time() + ( 7 * 24 * 60**2 ));
+    my $one_week_ago = time() - (7 * 24 * 60 * 60);
+    my $created = RT::DateTime->from_epoch(epoch => $one_week_ago);
+    my $due = RT::DateTime->from_epoch(epoch => $one_week_ago);
 
     my $ticket = RT::Model::Ticket->new( current_user => $user);
     ($id, $msg) = $ticket->create( queue => $q->id,


More information about the Rt-commit mailing list