blob: e6c642a8f77b39f048f390331f9c8ea346a2738b (
plain) (
tree)
|
|
#!/usr/bin/env python
# -*- Mode: python -*-
#======================================================================
# FILE: Duration.py
# CREATOR: eric
#
# DESCRIPTION:
#
#
# $Id$
# $Locker$
#
# (C) COPYRIGHT 2001, Eric Busboom <eric@softwarestudio.org>
# (C) COPYRIGHT 2001, Patrick Lewis <plewis@inetarena.com>
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of either:
#
# The LGPL as published by the Free Software Foundation, version
# 2.1, available at: http://www.fsf.org/copyleft/lesser.html
#
# Or:
#
# The Mozilla Public License Version 1.0. You may obtain a copy of
# the License at http://www.mozilla.org/MPL/
#===============================================================
from LibicalWrap import *
from Property import Property
from types import DictType, StringType, IntType
class Duration(Property):
"""
Represent a length of time, like 3 minutes, or 6 days, 20 seconds.
"""
def __init__(self, arg, name="DURATION"):
"""
Create a new duration from an RFC2445 string or number of seconds.
Construct the duration from an iCalendar string or a number of seconds.
Duration("P3DT2H34M45S") Construct from an iCalendar string
Duration(3660) Construct from seconds
"""
self.dur = None
e=icalerror_supress("MALFORMEDDATA")
if isinstance(arg, DictType):
self.dur = icaldurationtype_from_string(arg['value'])
Property.__init__(self,ref=arg['ref'])
else:
if isinstance(arg, StringType):
self.dur = icaldurationtype_from_string(arg)
elif isinstance(arg, IntType):
self.dur = icaldurationtype_from_int(arg)
elif isinstance(arg,Duration):
self.dur = arg.dur
else:
self.dur = icaldurationtype_null_duration()
Property.__init__(self,type=name)
icalerror_restore("MALFORMEDDATA",e)
if self.dur == None or icaldurationtype_is_null_duration(self.dur):
raise Property.ConstructorFailedError("Failed to construct Duration from " +str(arg))
try:
self._update_value()
except Property.UpdateFailedError:
raise Property.ConstructorFailedError("Failed to construct Duration from " + str(arg))
def _update_value(self):
self.value(icaldurationtype_as_ical_string(self.dur),"DURATION")
def valid(self):
"Return true if this is a valid duration"
return not icaldurationtype_is_null_duration(self.dur)
def seconds(self,v=None):
"""Return or set duration in seconds"""
if(v != None):
self.dur = icaldurationtype_from_int(v);
self.dict['value'] = icaltimedurationtype_as_ical_string(self.dur)
return icaldurationtype_as_int(self.dur)
|