annotate roundup/date.py @ 635:3d61b5d2243e

Added popup help for classes using the classhelp html template function. - add <display call="classhelp('priority', 'id,name,description')"> to an item page, and it generates a link to a popup window which displays the id, name and description for the priority class. The description field won't exist in most installations, but it will be added to the default templates.
author Richard Jones <richard@users.sourceforge.net>
date Thu, 21 Feb 2002 06:57:39 +0000
parents c08fb4921eda
children 7dd13fd5d8ea
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
213
d45384bc6420 Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents: 206
diff changeset
1 #
d45384bc6420 Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents: 206
diff changeset
2 # Copyright (c) 2001 Bizar Software Pty Ltd (http://www.bizarsoftware.com.au/)
d45384bc6420 Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents: 206
diff changeset
3 # This module is free software, and you may redistribute it and/or modify
d45384bc6420 Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents: 206
diff changeset
4 # under the same terms as Python, so long as this copyright message and
d45384bc6420 Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents: 206
diff changeset
5 # disclaimer are retained in their original form.
d45384bc6420 Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents: 206
diff changeset
6 #
214
18134bffab37 stupid typo
Richard Jones <richard@users.sourceforge.net>
parents: 213
diff changeset
7 # IN NO EVENT SHALL BIZAR SOFTWARE PTY LTD BE LIABLE TO ANY PARTY FOR
213
d45384bc6420 Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents: 206
diff changeset
8 # DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING
d45384bc6420 Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents: 206
diff changeset
9 # OUT OF THE USE OF THIS CODE, EVEN IF THE AUTHOR HAS BEEN ADVISED OF THE
d45384bc6420 Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents: 206
diff changeset
10 # POSSIBILITY OF SUCH DAMAGE.
d45384bc6420 Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents: 206
diff changeset
11 #
d45384bc6420 Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents: 206
diff changeset
12 # BIZAR SOFTWARE PTY LTD SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING,
d45384bc6420 Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents: 206
diff changeset
13 # BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
d45384bc6420 Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents: 206
diff changeset
14 # FOR A PARTICULAR PURPOSE. THE CODE PROVIDED HEREUNDER IS ON AN "AS IS"
d45384bc6420 Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents: 206
diff changeset
15 # BASIS, AND THERE IS NO OBLIGATION WHATSOEVER TO PROVIDE MAINTENANCE,
d45384bc6420 Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents: 206
diff changeset
16 # SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
d45384bc6420 Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents: 206
diff changeset
17 #
585
c08fb4921eda %e is a UNIXism and not documented for Python
Jürgen Hermann <jhermann@users.sourceforge.net>
parents: 543
diff changeset
18 # $Id: date.py,v 1.18 2002-01-23 20:00:50 jhermann Exp $
406
bdc2ea127ae9 Added module docstrings to all modules.
Jürgen Hermann <jhermann@users.sourceforge.net>
parents: 248
diff changeset
19
bdc2ea127ae9 Added module docstrings to all modules.
Jürgen Hermann <jhermann@users.sourceforge.net>
parents: 248
diff changeset
20 __doc__ = """
bdc2ea127ae9 Added module docstrings to all modules.
Jürgen Hermann <jhermann@users.sourceforge.net>
parents: 248
diff changeset
21 Date, time and time interval handling.
bdc2ea127ae9 Added module docstrings to all modules.
Jürgen Hermann <jhermann@users.sourceforge.net>
parents: 248
diff changeset
22 """
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
23
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
24 import time, re, calendar
501
e0944187229f missed an import _
Richard Jones <richard@users.sourceforge.net>
parents: 487
diff changeset
25 from i18n import _
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
26
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
27 class Date:
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
28 '''
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
29 As strings, date-and-time stamps are specified with the date in
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
30 international standard format (yyyy-mm-dd) joined to the time
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
31 (hh:mm:ss) by a period ("."). Dates in this form can be easily compared
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
32 and are fairly readable when printed. An example of a valid stamp is
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
33 "2000-06-24.13:03:59". We'll call this the "full date format". When
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
34 Timestamp objects are printed as strings, they appear in the full date
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
35 format with the time always given in GMT. The full date format is
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
36 always exactly 19 characters long.
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
37
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
38 For user input, some partial forms are also permitted: the whole time
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
39 or just the seconds may be omitted; and the whole date may be omitted
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
40 or just the year may be omitted. If the time is given, the time is
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
41 interpreted in the user's local time zone. The Date constructor takes
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
42 care of these conversions. In the following examples, suppose that yyyy
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
43 is the current year, mm is the current month, and dd is the current day
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
44 of the month; and suppose that the user is on Eastern Standard Time.
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
45
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
46 "2000-04-17" means <Date 2000-04-17.00:00:00>
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
47 "01-25" means <Date yyyy-01-25.00:00:00>
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
48 "2000-04-17.03:45" means <Date 2000-04-17.08:45:00>
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
49 "08-13.22:13" means <Date yyyy-08-14.03:13:00>
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
50 "11-07.09:32:43" means <Date yyyy-11-07.14:32:43>
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
51 "14:25" means <Date yyyy-mm-dd.19:25:00>
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
52 "8:47:11" means <Date yyyy-mm-dd.13:47:11>
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
53 "." means "right now"
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
54
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
55 The Date class should understand simple date expressions of the form
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
56 stamp + interval and stamp - interval. When adding or subtracting
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
57 intervals involving months or years, the components are handled
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
58 separately. For example, when evaluating "2000-06-25 + 1m 10d", we
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
59 first add one month to get 2000-07-25, then add 10 days to get
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
60 2000-08-04 (rather than trying to decide whether 1m 10d means 38 or 40
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
61 or 41 days).
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
62
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
63 Example usage:
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
64 >>> Date(".")
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
65 <Date 2000-06-26.00:34:02>
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
66 >>> _.local(-5)
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
67 "2000-06-25.19:34:02"
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
68 >>> Date(". + 2d")
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
69 <Date 2000-06-28.00:34:02>
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
70 >>> Date("1997-04-17", -5)
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
71 <Date 1997-04-17.00:00:00>
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
72 >>> Date("01-25", -5)
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
73 <Date 2000-01-25.00:00:00>
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
74 >>> Date("08-13.22:13", -5)
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
75 <Date 2000-08-14.03:13:00>
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
76 >>> Date("14:25", -5)
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
77 <Date 2000-06-25.19:25:00>
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
78 '''
47
34491d9b91a0 Storing only marshallable data in the db - no nasty pickled class references.
Richard Jones <richard@users.sourceforge.net>
parents: 26
diff changeset
79 def __init__(self, spec='.', offset=0):
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
80 """Construct a date given a specification and a time zone offset.
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
81
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
82 'spec' is a full date or a partial form, with an optional
47
34491d9b91a0 Storing only marshallable data in the db - no nasty pickled class references.
Richard Jones <richard@users.sourceforge.net>
parents: 26
diff changeset
83 added or subtracted interval. Or a date 9-tuple.
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
84 'offset' is the local time zone offset from GMT in hours.
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
85 """
47
34491d9b91a0 Storing only marshallable data in the db - no nasty pickled class references.
Richard Jones <richard@users.sourceforge.net>
parents: 26
diff changeset
86 if type(spec) == type(''):
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
87 self.set(spec, offset=offset)
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
88 else:
75
fa5aea4c212e Fixed offset handling (shoulda read the spec a little better)
Richard Jones <richard@users.sourceforge.net>
parents: 47
diff changeset
89 y,m,d,H,M,S,x,x,x = spec
fa5aea4c212e Fixed offset handling (shoulda read the spec a little better)
Richard Jones <richard@users.sourceforge.net>
parents: 47
diff changeset
90 ts = calendar.timegm((y,m,d,H+offset,M,S,0,0,0))
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
91 self.year, self.month, self.day, self.hour, self.minute, \
75
fa5aea4c212e Fixed offset handling (shoulda read the spec a little better)
Richard Jones <richard@users.sourceforge.net>
parents: 47
diff changeset
92 self.second, x, x, x = time.gmtime(ts)
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
93
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
94 def applyInterval(self, interval):
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
95 ''' Apply the interval to this date
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
96 '''
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
97 t = (self.year + interval.year,
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
98 self.month + interval.month,
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
99 self.day + interval.day,
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
100 self.hour + interval.hour,
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
101 self.minute + interval.minute,
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
102 self.second + interval.second, 0, 0, 0)
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
103 self.year, self.month, self.day, self.hour, self.minute, \
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
104 self.second, x, x, x = time.gmtime(calendar.timegm(t))
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
105
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
106 def __add__(self, other):
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
107 """Add an interval to this date to produce another date."""
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
108 t = (self.year + other.sign * other.year,
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
109 self.month + other.sign * other.month,
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
110 self.day + other.sign * other.day,
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
111 self.hour + other.sign * other.hour,
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
112 self.minute + other.sign * other.minute,
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
113 self.second + other.sign * other.second, 0, 0, 0)
47
34491d9b91a0 Storing only marshallable data in the db - no nasty pickled class references.
Richard Jones <richard@users.sourceforge.net>
parents: 26
diff changeset
114 return Date(time.gmtime(calendar.timegm(t)))
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
115
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
116 # XXX deviates from spec to allow subtraction of dates as well
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
117 def __sub__(self, other):
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
118 """ Subtract:
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
119 1. an interval from this date to produce another date.
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
120 2. a date from this date to produce an interval.
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
121 """
228
1d1848c99abe Fixed some isFooTypes that I missed.
Richard Jones <richard@users.sourceforge.net>
parents: 214
diff changeset
122 if isinstance(other, Date):
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
123 # TODO this code will fall over laughing if the dates cross
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
124 # leap years, phases of the moon, ....
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
125 a = calendar.timegm((self.year, self.month, self.day, self.hour,
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
126 self.minute, self.second, 0, 0, 0))
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
127 b = calendar.timegm((other.year, other.month, other.day, other.hour,
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
128 other.minute, other.second, 0, 0, 0))
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
129 diff = a - b
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
130 if diff < 0:
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
131 sign = -1
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
132 diff = -diff
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
133 else:
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
134 sign = 1
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
135 S = diff%60
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
136 M = (diff/60)%60
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
137 H = (diff/(60*60))%60
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
138 if H>1: S = 0
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
139 d = (diff/(24*60*60))%30
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
140 if d>1: H = S = M = 0
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
141 m = (diff/(30*24*60*60))%12
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
142 if m>1: H = S = M = 0
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
143 y = (diff/(365*24*60*60))
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
144 if y>1: d = H = S = M = 0
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
145 return Interval((y, m, d, H, M, S), sign=sign)
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
146 t = (self.year - other.sign * other.year,
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
147 self.month - other.sign * other.month,
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
148 self.day - other.sign * other.day,
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
149 self.hour - other.sign * other.hour,
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
150 self.minute - other.sign * other.minute,
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
151 self.second - other.sign * other.second, 0, 0, 0)
47
34491d9b91a0 Storing only marshallable data in the db - no nasty pickled class references.
Richard Jones <richard@users.sourceforge.net>
parents: 26
diff changeset
152 return Date(time.gmtime(calendar.timegm(t)))
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
153
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
154 def __cmp__(self, other):
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
155 """Compare this date to another date."""
543
22e0edf7da6e lots of date/interval related changes: more relaxed date format for input
Richard Jones <richard@users.sourceforge.net>
parents: 501
diff changeset
156 if other is None:
22e0edf7da6e lots of date/interval related changes: more relaxed date format for input
Richard Jones <richard@users.sourceforge.net>
parents: 501
diff changeset
157 return 1
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
158 for attr in ('year', 'month', 'day', 'hour', 'minute', 'second'):
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
159 r = cmp(getattr(self, attr), getattr(other, attr))
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
160 if r: return r
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
161 return 0
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
162
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
163 def __str__(self):
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
164 """Return this date as a string in the yyyy-mm-dd.hh:mm:ss format."""
206
1eb862f4bf56 Changed date.Date to use regular string formatting instead of strftime.
Richard Jones <richard@users.sourceforge.net>
parents: 179
diff changeset
165 return '%4d-%02d-%02d.%02d:%02d:%02d'%(self.year, self.month, self.day,
1eb862f4bf56 Changed date.Date to use regular string formatting instead of strftime.
Richard Jones <richard@users.sourceforge.net>
parents: 179
diff changeset
166 self.hour, self.minute, self.second)
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
167
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
168 def pretty(self):
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
169 ''' print up the date date using a pretty format...
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
170 '''
585
c08fb4921eda %e is a UNIXism and not documented for Python
Jürgen Hermann <jhermann@users.sourceforge.net>
parents: 543
diff changeset
171 str = time.strftime('%d %B %Y', (self.year, self.month,
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
172 self.day, self.hour, self.minute, self.second, 0, 0, 0))
585
c08fb4921eda %e is a UNIXism and not documented for Python
Jürgen Hermann <jhermann@users.sourceforge.net>
parents: 543
diff changeset
173 if str[0] == '0': return ' ' + str[1:]
c08fb4921eda %e is a UNIXism and not documented for Python
Jürgen Hermann <jhermann@users.sourceforge.net>
parents: 543
diff changeset
174 return str
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
175
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
176 def set(self, spec, offset=0, date_re=re.compile(r'''
543
22e0edf7da6e lots of date/interval related changes: more relaxed date format for input
Richard Jones <richard@users.sourceforge.net>
parents: 501
diff changeset
177 (((?P<y>\d\d\d\d)-)?((?P<m>\d\d?)-(?P<d>\d\d?))?)? # yyyy-mm-dd
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
178 (?P<n>\.)? # .
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
179 (((?P<H>\d?\d):(?P<M>\d\d))?(:(?P<S>\d\d))?)? # hh:mm:ss
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
180 (?P<o>.+)? # offset
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
181 ''', re.VERBOSE)):
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
182 ''' set the date to the value in spec
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
183 '''
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
184 m = date_re.match(spec)
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
185 if not m:
487
2f4c37d28108 I18N'ification
Richard Jones <richard@users.sourceforge.net>
parents: 406
diff changeset
186 raise ValueError, _('Not a date spec: [[yyyy-]mm-dd].[[h]h:mm[:ss]]'
2f4c37d28108 I18N'ification
Richard Jones <richard@users.sourceforge.net>
parents: 406
diff changeset
187 '[offset]')
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
188 info = m.groupdict()
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
189
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
190 # get the current date/time using the offset
168
92ac7b6c0301 Fixed the 2.1-specific gmtime() (no arg) call in roundup.date. (Paul Wright)
Richard Jones <richard@users.sourceforge.net>
parents: 127
diff changeset
191 y,m,d,H,M,S,x,x,x = time.gmtime(time.time())
75
fa5aea4c212e Fixed offset handling (shoulda read the spec a little better)
Richard Jones <richard@users.sourceforge.net>
parents: 47
diff changeset
192
fa5aea4c212e Fixed offset handling (shoulda read the spec a little better)
Richard Jones <richard@users.sourceforge.net>
parents: 47
diff changeset
193 # override year, month, day parts
fa5aea4c212e Fixed offset handling (shoulda read the spec a little better)
Richard Jones <richard@users.sourceforge.net>
parents: 47
diff changeset
194 if info['m'] is not None and info['d'] is not None:
fa5aea4c212e Fixed offset handling (shoulda read the spec a little better)
Richard Jones <richard@users.sourceforge.net>
parents: 47
diff changeset
195 m = int(info['m'])
fa5aea4c212e Fixed offset handling (shoulda read the spec a little better)
Richard Jones <richard@users.sourceforge.net>
parents: 47
diff changeset
196 d = int(info['d'])
fa5aea4c212e Fixed offset handling (shoulda read the spec a little better)
Richard Jones <richard@users.sourceforge.net>
parents: 47
diff changeset
197 if info['y'] is not None: y = int(info['y'])
fa5aea4c212e Fixed offset handling (shoulda read the spec a little better)
Richard Jones <richard@users.sourceforge.net>
parents: 47
diff changeset
198 H = M = S = 0
fa5aea4c212e Fixed offset handling (shoulda read the spec a little better)
Richard Jones <richard@users.sourceforge.net>
parents: 47
diff changeset
199
fa5aea4c212e Fixed offset handling (shoulda read the spec a little better)
Richard Jones <richard@users.sourceforge.net>
parents: 47
diff changeset
200 # override hour, minute, second parts
fa5aea4c212e Fixed offset handling (shoulda read the spec a little better)
Richard Jones <richard@users.sourceforge.net>
parents: 47
diff changeset
201 if info['H'] is not None and info['M'] is not None:
fa5aea4c212e Fixed offset handling (shoulda read the spec a little better)
Richard Jones <richard@users.sourceforge.net>
parents: 47
diff changeset
202 H = int(info['H']) - offset
fa5aea4c212e Fixed offset handling (shoulda read the spec a little better)
Richard Jones <richard@users.sourceforge.net>
parents: 47
diff changeset
203 M = int(info['M'])
fa5aea4c212e Fixed offset handling (shoulda read the spec a little better)
Richard Jones <richard@users.sourceforge.net>
parents: 47
diff changeset
204 S = 0
fa5aea4c212e Fixed offset handling (shoulda read the spec a little better)
Richard Jones <richard@users.sourceforge.net>
parents: 47
diff changeset
205 if info['S'] is not None: S = int(info['S'])
fa5aea4c212e Fixed offset handling (shoulda read the spec a little better)
Richard Jones <richard@users.sourceforge.net>
parents: 47
diff changeset
206
fa5aea4c212e Fixed offset handling (shoulda read the spec a little better)
Richard Jones <richard@users.sourceforge.net>
parents: 47
diff changeset
207 # now handle the adjustment of hour
fa5aea4c212e Fixed offset handling (shoulda read the spec a little better)
Richard Jones <richard@users.sourceforge.net>
parents: 47
diff changeset
208 ts = calendar.timegm((y,m,d,H,M,S,0,0,0))
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
209 self.year, self.month, self.day, self.hour, self.minute, \
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
210 self.second, x, x, x = time.gmtime(ts)
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
211
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
212 if info['o']:
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
213 self.applyInterval(Interval(info['o']))
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
214
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
215 def __repr__(self):
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
216 return '<Date %s>'%self.__str__()
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
217
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
218 def local(self, offset):
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
219 """Return this date as yyyy-mm-dd.hh:mm:ss in a local time zone."""
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
220 t = (self.year, self.month, self.day, self.hour + offset, self.minute,
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
221 self.second, 0, 0, 0)
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
222 self.year, self.month, self.day, self.hour, self.minute, \
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
223 self.second, x, x, x = time.gmtime(calendar.timegm(t))
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
224
47
34491d9b91a0 Storing only marshallable data in the db - no nasty pickled class references.
Richard Jones <richard@users.sourceforge.net>
parents: 26
diff changeset
225 def get_tuple(self):
34491d9b91a0 Storing only marshallable data in the db - no nasty pickled class references.
Richard Jones <richard@users.sourceforge.net>
parents: 26
diff changeset
226 return (self.year, self.month, self.day, self.hour, self.minute,
34491d9b91a0 Storing only marshallable data in the db - no nasty pickled class references.
Richard Jones <richard@users.sourceforge.net>
parents: 26
diff changeset
227 self.second, 0, 0, 0)
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
228
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
229 class Interval:
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
230 '''
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
231 Date intervals are specified using the suffixes "y", "m", and "d". The
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
232 suffix "w" (for "week") means 7 days. Time intervals are specified in
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
233 hh:mm:ss format (the seconds may be omitted, but the hours and minutes
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
234 may not).
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
235
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
236 "3y" means three years
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
237 "2y 1m" means two years and one month
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
238 "1m 25d" means one month and 25 days
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
239 "2w 3d" means two weeks and three days
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
240 "1d 2:50" means one day, two hours, and 50 minutes
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
241 "14:00" means 14 hours
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
242 "0:04:33" means four minutes and 33 seconds
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
243
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
244 Example usage:
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
245 >>> Interval(" 3w 1 d 2:00")
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
246 <Interval 22d 2:00>
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
247 >>> Date(". + 2d") - Interval("3w")
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
248 <Date 2000-06-07.00:34:02>
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
249 '''
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
250 def __init__(self, spec, sign=1):
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
251 """Construct an interval given a specification."""
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
252 if type(spec) == type(''):
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
253 self.set(spec)
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
254 else:
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
255 self.sign = sign
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
256 self.year, self.month, self.day, self.hour, self.minute, \
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
257 self.second = spec
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
258
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
259 def __cmp__(self, other):
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
260 """Compare this interval to another interval."""
543
22e0edf7da6e lots of date/interval related changes: more relaxed date format for input
Richard Jones <richard@users.sourceforge.net>
parents: 501
diff changeset
261 if other is None:
22e0edf7da6e lots of date/interval related changes: more relaxed date format for input
Richard Jones <richard@users.sourceforge.net>
parents: 501
diff changeset
262 return 1
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
263 for attr in ('year', 'month', 'day', 'hour', 'minute', 'second'):
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
264 r = cmp(getattr(self, attr), getattr(other, attr))
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
265 if r: return r
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
266 return 0
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
267
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
268 def __str__(self):
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
269 """Return this interval as a string."""
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
270 sign = {1:'+', -1:'-'}[self.sign]
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
271 l = [sign]
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
272 if self.year: l.append('%sy'%self.year)
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
273 if self.month: l.append('%sm'%self.month)
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
274 if self.day: l.append('%sd'%self.day)
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
275 if self.second:
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
276 l.append('%d:%02d:%02d'%(self.hour, self.minute, self.second))
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
277 elif self.hour or self.minute:
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
278 l.append('%d:%02d'%(self.hour, self.minute))
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
279 return ' '.join(l)
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
280
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
281 def set(self, spec, interval_re = re.compile('''
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
282 \s*
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
283 (?P<s>[-+])? # + or -
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
284 \s*
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
285 ((?P<y>\d+\s*)y)? # year
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
286 \s*
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
287 ((?P<m>\d+\s*)m)? # month
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
288 \s*
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
289 ((?P<w>\d+\s*)w)? # week
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
290 \s*
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
291 ((?P<d>\d+\s*)d)? # day
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
292 \s*
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
293 (((?P<H>\d?\d):(?P<M>\d\d))?(:(?P<S>\d\d))?)? # time
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
294 \s*
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
295 ''', re.VERBOSE)):
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
296 ''' set the date to the value in spec
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
297 '''
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
298 self.year = self.month = self.week = self.day = self.hour = \
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
299 self.minute = self.second = 0
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
300 self.sign = 1
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
301 m = interval_re.match(spec)
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
302 if not m:
487
2f4c37d28108 I18N'ification
Richard Jones <richard@users.sourceforge.net>
parents: 406
diff changeset
303 raise ValueError, _('Not an interval spec: [+-] [#y] [#m] [#w] '
2f4c37d28108 I18N'ification
Richard Jones <richard@users.sourceforge.net>
parents: 406
diff changeset
304 '[#d] [[[H]H:MM]:SS]')
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
305
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
306 info = m.groupdict()
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
307 for group, attr in {'y':'year', 'm':'month', 'w':'week', 'd':'day',
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
308 'H':'hour', 'M':'minute', 'S':'second'}.items():
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
309 if info[group] is not None:
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
310 setattr(self, attr, int(info[group]))
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
311
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
312 if self.week:
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
313 self.day = self.day + self.week*7
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
314
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
315 if info['s'] is not None:
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
316 self.sign = {'+':1, '-':-1}[info['s']]
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
317
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
318 def __repr__(self):
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
319 return '<Interval %s>'%self.__str__()
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
320
487
2f4c37d28108 I18N'ification
Richard Jones <richard@users.sourceforge.net>
parents: 406
diff changeset
321 def pretty(self):
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
322 ''' print up the date date using one of these nice formats..
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
323 '''
179
a44c70b25369 Extended the range of intervals that are pretty-printed...
Richard Jones <richard@users.sourceforge.net>
parents: 168
diff changeset
324 if self.year or self.month > 2:
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
325 return None
248
96cdd8ef0581 Added some more help to roundup-admin
Richard Jones <richard@users.sourceforge.net>
parents: 234
diff changeset
326 if self.month or self.day > 13:
179
a44c70b25369 Extended the range of intervals that are pretty-printed...
Richard Jones <richard@users.sourceforge.net>
parents: 168
diff changeset
327 days = (self.month * 30) + self.day
a44c70b25369 Extended the range of intervals that are pretty-printed...
Richard Jones <richard@users.sourceforge.net>
parents: 168
diff changeset
328 if days > 28:
248
96cdd8ef0581 Added some more help to roundup-admin
Richard Jones <richard@users.sourceforge.net>
parents: 234
diff changeset
329 if int(days/30) > 1:
487
2f4c37d28108 I18N'ification
Richard Jones <richard@users.sourceforge.net>
parents: 406
diff changeset
330 return _('%(number)s months')%{'number': int(days/30)}
248
96cdd8ef0581 Added some more help to roundup-admin
Richard Jones <richard@users.sourceforge.net>
parents: 234
diff changeset
331 else:
487
2f4c37d28108 I18N'ification
Richard Jones <richard@users.sourceforge.net>
parents: 406
diff changeset
332 return _('1 month')
179
a44c70b25369 Extended the range of intervals that are pretty-printed...
Richard Jones <richard@users.sourceforge.net>
parents: 168
diff changeset
333 else:
487
2f4c37d28108 I18N'ification
Richard Jones <richard@users.sourceforge.net>
parents: 406
diff changeset
334 return _('%(number)s weeks')%{'number': int(days/7)}
179
a44c70b25369 Extended the range of intervals that are pretty-printed...
Richard Jones <richard@users.sourceforge.net>
parents: 168
diff changeset
335 if self.day > 7:
487
2f4c37d28108 I18N'ification
Richard Jones <richard@users.sourceforge.net>
parents: 406
diff changeset
336 return _('1 week')
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
337 if self.day > 1:
487
2f4c37d28108 I18N'ification
Richard Jones <richard@users.sourceforge.net>
parents: 406
diff changeset
338 return _('%(number)s days')%{'number': self.day}
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
339 if self.day == 1 or self.hour > 12:
487
2f4c37d28108 I18N'ification
Richard Jones <richard@users.sourceforge.net>
parents: 406
diff changeset
340 return _('yesterday')
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
341 if self.hour > 1:
487
2f4c37d28108 I18N'ification
Richard Jones <richard@users.sourceforge.net>
parents: 406
diff changeset
342 return _('%(number)s hours')%{'number': self.hour}
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
343 if self.hour == 1:
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
344 if self.minute < 15:
487
2f4c37d28108 I18N'ification
Richard Jones <richard@users.sourceforge.net>
parents: 406
diff changeset
345 return _('an hour')
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
346 quart = self.minute/15
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
347 if quart == 2:
487
2f4c37d28108 I18N'ification
Richard Jones <richard@users.sourceforge.net>
parents: 406
diff changeset
348 return _('1 1/2 hours')
2f4c37d28108 I18N'ification
Richard Jones <richard@users.sourceforge.net>
parents: 406
diff changeset
349 return _('1 %(number)s/4 hours')%{'number': quart}
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
350 if self.minute < 1:
487
2f4c37d28108 I18N'ification
Richard Jones <richard@users.sourceforge.net>
parents: 406
diff changeset
351 return _('just now')
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
352 if self.minute == 1:
487
2f4c37d28108 I18N'ification
Richard Jones <richard@users.sourceforge.net>
parents: 406
diff changeset
353 return _('1 minute')
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
354 if self.minute < 15:
487
2f4c37d28108 I18N'ification
Richard Jones <richard@users.sourceforge.net>
parents: 406
diff changeset
355 return _('%(number)s minutes')%{'number': self.minute}
179
a44c70b25369 Extended the range of intervals that are pretty-printed...
Richard Jones <richard@users.sourceforge.net>
parents: 168
diff changeset
356 quart = int(self.minute/15)
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
357 if quart == 2:
487
2f4c37d28108 I18N'ification
Richard Jones <richard@users.sourceforge.net>
parents: 406
diff changeset
358 return _('1/2 an hour')
2f4c37d28108 I18N'ification
Richard Jones <richard@users.sourceforge.net>
parents: 406
diff changeset
359 return _('%(number)s/4 hour')%{'number': quart}
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
360
47
34491d9b91a0 Storing only marshallable data in the db - no nasty pickled class references.
Richard Jones <richard@users.sourceforge.net>
parents: 26
diff changeset
361 def get_tuple(self):
34491d9b91a0 Storing only marshallable data in the db - no nasty pickled class references.
Richard Jones <richard@users.sourceforge.net>
parents: 26
diff changeset
362 return (self.year, self.month, self.day, self.hour, self.minute,
34491d9b91a0 Storing only marshallable data in the db - no nasty pickled class references.
Richard Jones <richard@users.sourceforge.net>
parents: 26
diff changeset
363 self.second)
34491d9b91a0 Storing only marshallable data in the db - no nasty pickled class references.
Richard Jones <richard@users.sourceforge.net>
parents: 26
diff changeset
364
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
365
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
366 def test():
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
367 intervals = (" 3w 1 d 2:00", " + 2d", "3w")
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
368 for interval in intervals:
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
369 print '>>> Interval("%s")'%interval
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
370 print `Interval(interval)`
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
371
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
372 dates = (".", "2000-06-25.19:34:02", ". + 2d", "1997-04-17", "01-25",
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
373 "08-13.22:13", "14:25")
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
374 for date in dates:
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
375 print '>>> Date("%s")'%date
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
376 print `Date(date)`
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
377
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
378 sums = ((". + 2d", "3w"), (".", " 3w 1 d 2:00"))
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
379 for date, interval in sums:
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
380 print '>>> Date("%s") + Interval("%s")'%(date, interval)
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
381 print `Date(date) + Interval(interval)`
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
382
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
383 if __name__ == '__main__':
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
384 test()
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
385
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
386 #
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
387 # $Log: not supported by cvs2svn $
585
c08fb4921eda %e is a UNIXism and not documented for Python
Jürgen Hermann <jhermann@users.sourceforge.net>
parents: 543
diff changeset
388 # Revision 1.17 2002/01/16 07:02:57 richard
c08fb4921eda %e is a UNIXism and not documented for Python
Jürgen Hermann <jhermann@users.sourceforge.net>
parents: 543
diff changeset
389 # . lots of date/interval related changes:
c08fb4921eda %e is a UNIXism and not documented for Python
Jürgen Hermann <jhermann@users.sourceforge.net>
parents: 543
diff changeset
390 # - more relaxed date format for input
c08fb4921eda %e is a UNIXism and not documented for Python
Jürgen Hermann <jhermann@users.sourceforge.net>
parents: 543
diff changeset
391 #
543
22e0edf7da6e lots of date/interval related changes: more relaxed date format for input
Richard Jones <richard@users.sourceforge.net>
parents: 501
diff changeset
392 # Revision 1.16 2002/01/08 11:56:24 richard
22e0edf7da6e lots of date/interval related changes: more relaxed date format for input
Richard Jones <richard@users.sourceforge.net>
parents: 501
diff changeset
393 # missed an import _
22e0edf7da6e lots of date/interval related changes: more relaxed date format for input
Richard Jones <richard@users.sourceforge.net>
parents: 501
diff changeset
394 #
501
e0944187229f missed an import _
Richard Jones <richard@users.sourceforge.net>
parents: 487
diff changeset
395 # Revision 1.15 2002/01/05 02:27:00 richard
e0944187229f missed an import _
Richard Jones <richard@users.sourceforge.net>
parents: 487
diff changeset
396 # I18N'ification
e0944187229f missed an import _
Richard Jones <richard@users.sourceforge.net>
parents: 487
diff changeset
397 #
487
2f4c37d28108 I18N'ification
Richard Jones <richard@users.sourceforge.net>
parents: 406
diff changeset
398 # Revision 1.14 2001/11/22 15:46:42 jhermann
2f4c37d28108 I18N'ification
Richard Jones <richard@users.sourceforge.net>
parents: 406
diff changeset
399 # Added module docstrings to all modules.
2f4c37d28108 I18N'ification
Richard Jones <richard@users.sourceforge.net>
parents: 406
diff changeset
400 #
406
bdc2ea127ae9 Added module docstrings to all modules.
Jürgen Hermann <jhermann@users.sourceforge.net>
parents: 248
diff changeset
401 # Revision 1.13 2001/09/18 22:58:37 richard
bdc2ea127ae9 Added module docstrings to all modules.
Jürgen Hermann <jhermann@users.sourceforge.net>
parents: 248
diff changeset
402 #
bdc2ea127ae9 Added module docstrings to all modules.
Jürgen Hermann <jhermann@users.sourceforge.net>
parents: 248
diff changeset
403 # Added some more help to roundu-admin
bdc2ea127ae9 Added module docstrings to all modules.
Jürgen Hermann <jhermann@users.sourceforge.net>
parents: 248
diff changeset
404 #
248
96cdd8ef0581 Added some more help to roundup-admin
Richard Jones <richard@users.sourceforge.net>
parents: 234
diff changeset
405 # Revision 1.12 2001/08/17 03:08:11 richard
96cdd8ef0581 Added some more help to roundup-admin
Richard Jones <richard@users.sourceforge.net>
parents: 234
diff changeset
406 # fixed prettification of intervals of 1 week
96cdd8ef0581 Added some more help to roundup-admin
Richard Jones <richard@users.sourceforge.net>
parents: 234
diff changeset
407 #
234
0dfe39b4fa17 fixed prettification of intervals of 1 week
Richard Jones <richard@users.sourceforge.net>
parents: 228
diff changeset
408 # Revision 1.11 2001/08/15 23:43:18 richard
0dfe39b4fa17 fixed prettification of intervals of 1 week
Richard Jones <richard@users.sourceforge.net>
parents: 228
diff changeset
409 # Fixed some isFooTypes that I missed.
0dfe39b4fa17 fixed prettification of intervals of 1 week
Richard Jones <richard@users.sourceforge.net>
parents: 228
diff changeset
410 # Refactored some code in the CGI code.
0dfe39b4fa17 fixed prettification of intervals of 1 week
Richard Jones <richard@users.sourceforge.net>
parents: 228
diff changeset
411 #
228
1d1848c99abe Fixed some isFooTypes that I missed.
Richard Jones <richard@users.sourceforge.net>
parents: 214
diff changeset
412 # Revision 1.10 2001/08/07 00:24:42 richard
1d1848c99abe Fixed some isFooTypes that I missed.
Richard Jones <richard@users.sourceforge.net>
parents: 214
diff changeset
413 # stupid typo
1d1848c99abe Fixed some isFooTypes that I missed.
Richard Jones <richard@users.sourceforge.net>
parents: 214
diff changeset
414 #
214
18134bffab37 stupid typo
Richard Jones <richard@users.sourceforge.net>
parents: 213
diff changeset
415 # Revision 1.9 2001/08/07 00:15:51 richard
18134bffab37 stupid typo
Richard Jones <richard@users.sourceforge.net>
parents: 213
diff changeset
416 # Added the copyright/license notice to (nearly) all files at request of
18134bffab37 stupid typo
Richard Jones <richard@users.sourceforge.net>
parents: 213
diff changeset
417 # Bizar Software.
18134bffab37 stupid typo
Richard Jones <richard@users.sourceforge.net>
parents: 213
diff changeset
418 #
213
d45384bc6420 Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents: 206
diff changeset
419 # Revision 1.8 2001/08/05 07:46:12 richard
d45384bc6420 Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents: 206
diff changeset
420 # Changed date.Date to use regular string formatting instead of strftime -
d45384bc6420 Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents: 206
diff changeset
421 # win32 seems to have problems with %T and no hour... or something...
d45384bc6420 Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents: 206
diff changeset
422 #
206
1eb862f4bf56 Changed date.Date to use regular string formatting instead of strftime.
Richard Jones <richard@users.sourceforge.net>
parents: 179
diff changeset
423 # Revision 1.7 2001/08/02 00:27:04 richard
1eb862f4bf56 Changed date.Date to use regular string formatting instead of strftime.
Richard Jones <richard@users.sourceforge.net>
parents: 179
diff changeset
424 # Extended the range of intervals that are pretty-printed before actual dates
1eb862f4bf56 Changed date.Date to use regular string formatting instead of strftime.
Richard Jones <richard@users.sourceforge.net>
parents: 179
diff changeset
425 # are displayed.
1eb862f4bf56 Changed date.Date to use regular string formatting instead of strftime.
Richard Jones <richard@users.sourceforge.net>
parents: 179
diff changeset
426 #
179
a44c70b25369 Extended the range of intervals that are pretty-printed...
Richard Jones <richard@users.sourceforge.net>
parents: 168
diff changeset
427 # Revision 1.6 2001/07/31 09:54:18 richard
a44c70b25369 Extended the range of intervals that are pretty-printed...
Richard Jones <richard@users.sourceforge.net>
parents: 168
diff changeset
428 # Fixed the 2.1-specific gmtime() (no arg) call in roundup.date. (Paul Wright)
a44c70b25369 Extended the range of intervals that are pretty-printed...
Richard Jones <richard@users.sourceforge.net>
parents: 168
diff changeset
429 #
168
92ac7b6c0301 Fixed the 2.1-specific gmtime() (no arg) call in roundup.date. (Paul Wright)
Richard Jones <richard@users.sourceforge.net>
parents: 127
diff changeset
430 # Revision 1.5 2001/07/29 07:01:39 richard
92ac7b6c0301 Fixed the 2.1-specific gmtime() (no arg) call in roundup.date. (Paul Wright)
Richard Jones <richard@users.sourceforge.net>
parents: 127
diff changeset
431 # Added vim command to all source so that we don't get no steenkin' tabs :)
92ac7b6c0301 Fixed the 2.1-specific gmtime() (no arg) call in roundup.date. (Paul Wright)
Richard Jones <richard@users.sourceforge.net>
parents: 127
diff changeset
432 #
127
0791d13baea7 Added vim command to all source so that we don't get no steenkin' tabs :)
Richard Jones <richard@users.sourceforge.net>
parents: 75
diff changeset
433 # Revision 1.4 2001/07/25 04:09:34 richard
0791d13baea7 Added vim command to all source so that we don't get no steenkin' tabs :)
Richard Jones <richard@users.sourceforge.net>
parents: 75
diff changeset
434 # Fixed offset handling (shoulda read the spec a little better)
0791d13baea7 Added vim command to all source so that we don't get no steenkin' tabs :)
Richard Jones <richard@users.sourceforge.net>
parents: 75
diff changeset
435 #
75
fa5aea4c212e Fixed offset handling (shoulda read the spec a little better)
Richard Jones <richard@users.sourceforge.net>
parents: 47
diff changeset
436 # Revision 1.3 2001/07/23 07:56:05 richard
fa5aea4c212e Fixed offset handling (shoulda read the spec a little better)
Richard Jones <richard@users.sourceforge.net>
parents: 47
diff changeset
437 # Storing only marshallable data in the db - no nasty pickled class references.
fa5aea4c212e Fixed offset handling (shoulda read the spec a little better)
Richard Jones <richard@users.sourceforge.net>
parents: 47
diff changeset
438 #
47
34491d9b91a0 Storing only marshallable data in the db - no nasty pickled class references.
Richard Jones <richard@users.sourceforge.net>
parents: 26
diff changeset
439 # Revision 1.2 2001/07/22 12:09:32 richard
34491d9b91a0 Storing only marshallable data in the db - no nasty pickled class references.
Richard Jones <richard@users.sourceforge.net>
parents: 26
diff changeset
440 # Final commit of Grande Splite
34491d9b91a0 Storing only marshallable data in the db - no nasty pickled class references.
Richard Jones <richard@users.sourceforge.net>
parents: 26
diff changeset
441 #
26
c7c14960f413 Final commit of Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents: 25
diff changeset
442 # Revision 1.1 2001/07/22 11:58:35 richard
c7c14960f413 Final commit of Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents: 25
diff changeset
443 # More Grande Splite
25
4cf1daf2f2eb More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
444 #
127
0791d13baea7 Added vim command to all source so that we don't get no steenkin' tabs :)
Richard Jones <richard@users.sourceforge.net>
parents: 75
diff changeset
445 #
0791d13baea7 Added vim command to all source so that we don't get no steenkin' tabs :)
Richard Jones <richard@users.sourceforge.net>
parents: 75
diff changeset
446 # vim: set filetype=python ts=4 sw=4 et si

Roundup Issue Tracker: http://roundup-tracker.org/