Index: sodar/trunk/sodar/data.py =================================================================== --- sodar/trunk/sodar/data.py (revision 61) +++ sodar/trunk/sodar/data.py (revision 62) @@ -22,18 +22,10 @@ def __getitem__(self,index): - """allow retrieval by sample time in header + """allow sample retrieval by sample time in header """ try: - int(index) - except ValueError: # string like YYYY-MM can't convert to int + return super(Data,self).__getitem__(index) + except TypeError: return self.find(index) - except TypeError: # something other than integer or string - raise TypeError,'Data index must be integer or YYYY-MM-DD-HH-MM' - try: - return super(Data,self).__getitem__(index) - except IndexError: # integer index out of range - raise IndexError, 'Data index out of range' - except TypeError: # string representation of integer index - raise ValueError,'Data index must be integer or YYYY-MM-DD-HH-MM' def find(self,index): @@ -46,4 +38,6 @@ except ValueError: raise ValueError,'Data index by date must be "YYYY-MM-DD-HH-MM"' + except AttributeError: + raise AttributeError,'Data index by date must be "YYYY-MM-DD-HH-MM"' for sample in self: if sample.header['YEAR'].rjust(4,'0') != year: continue @@ -125,15 +119,5 @@ try: return super(Body,self).__getitem__(index) - except IndexError: # integer index out of range - raise IndexError, 'Body index out of range' - except TypeError: # possible string representation of integer index - try: - int(index) # is string? - except ValueError: #bad string - raise ValueError, \ - 'Body index must be position integer or altitude string' - except TypeError: # not a string - raise TypeError, \ - 'Body index must be position integer or altitude string' + except TypeError: return self.find(index)