# HG changeset patch # User Paul Boddie # Date 1431713751 -7200 # Node ID 65092bd5fd2971b6960eb21eb0f7211b3bdd81a1 # Parent b9c05d30449f1cdf9e1078d3fc599aa43873f6ef Added convenience methods for object copying, property access and removal, and time zone identifier acquisition. diff -r b9c05d30449f -r 65092bd5fd29 imiptools/data.py --- a/imiptools/data.py Fri May 15 14:56:21 2015 +0200 +++ b/imiptools/data.py Fri May 15 20:15:51 2015 +0200 @@ -43,6 +43,9 @@ def __init__(self, fragment): self.objtype, (self.details, self.attr) = fragment.items()[0] + def copy(self): + return Object(to_dict(self.to_node())) + def get_items(self, name, all=True): return get_items(self.details, name, all) @@ -89,6 +92,9 @@ def has_key(self, name): return self.details.has_key(name) + def get(self, name): + return self.details.get(name) + def __getitem__(self, name): return self.details[name] @@ -98,6 +104,16 @@ def __delitem__(self, name): del self.details[name] + def remove(self, name): + try: + del self[name] + except KeyError: + pass + + def remove_all(self, names): + for name in names: + self.remove(name) + # Computed results. def has_recurrence(self, tzid, recurrence): @@ -389,6 +405,9 @@ self.start_attr = start_attr self.end_attr = end_attr + def get_tzid(self): + return get_tzid(self.start_attr, self.end_attr) + def as_tuple(self): return self.start, self.end, self.origin, self.start_attr, self.end_attr