X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=PLC%2FTimestamp.py;h=faad925f805e606c498b571de52c8ea90f92fa98;hb=6e915d8a9ac5474c20482751ab6d24e6ce13aec9;hp=149c6e5d9ce1a6b74ad883e5e393efe9cdc4b077;hpb=3b44c0228c26dc43d985185afc225caa5f48c1fb;p=plcapi.git diff --git a/PLC/Timestamp.py b/PLC/Timestamp.py index 149c6e5..faad925 100644 --- a/PLC/Timestamp.py +++ b/PLC/Timestamp.py @@ -5,7 +5,6 @@ # natively marshalled over xmlrpc # -from types import StringTypes import time, calendar import datetime @@ -59,12 +58,13 @@ class Timestamp: Returns a GMT timestamp string suitable to feed SQL. """ - if not timezone: output_format = Timestamp.sql_format - else: output_format = Timestamp.sql_format_utc + output_format = (Timestamp.sql_format_utc if timezone + else Timestamp.sql_format) - if Timestamp.debug: print('sql_validate, in:',input, end=' ') - if isinstance(input, StringTypes): - sql='' + if Timestamp.debug: + print('sql_validate, in:', input, end=' ') + if isinstance(input, str): + sql = '' # calendar.timegm() is the inverse of time.gmtime() for time_format in Timestamp.input_formats: try: @@ -72,11 +72,12 @@ class Timestamp: sql = time.strftime(output_format, time.gmtime(timestamp)) break # wrong format: ignore - except ValueError: pass + except ValueError: + pass # could not parse it if not sql: raise PLCInvalidArgument("Cannot parse timestamp %r - not in any of %r formats"%(input,Timestamp.input_formats)) - elif isinstance (input,(int,float)): + elif isinstance(input, (int, float)): try: timestamp = int(input) sql = time.strftime(output_format, time.gmtime(timestamp)) @@ -98,7 +99,7 @@ class Timestamp: @staticmethod - def cast_long (input): + def cast_long(input): """ Translates input timestamp as a unix timestamp. @@ -106,20 +107,24 @@ class Timestamp: 00:00:00 GMT), a string (in one of the supported input formats above). """ - if Timestamp.debug: print('cast_long, in:',input, end=' ') - if isinstance(input, StringTypes): - timestamp=0 + if Timestamp.debug: + print('cast_long, in:', input, end=' ') + if isinstance(input, str): + timestamp = 0 for time_format in Timestamp.input_formats: try: - result=calendar.timegm(time.strptime(input, time_format)) - if Timestamp.debug: print('out:',result) + result = calendar.timegm(time.strptime(input, time_format)) + if Timestamp.debug: + print('out:', result) return result # wrong format: ignore - except ValueError: pass - raise PLCInvalidArgument("Cannot parse timestamp %r - not in any of %r formats"%(input,Timestamp.input_formats)) - elif isinstance (input,(int,float)): - result=int(input) - if Timestamp.debug: print('out:',result) + except ValueError: + pass + raise PLCInvalidArgument("Cannot parse timestamp %r - not in any of %r formats"%(input, Timestamp.input_formats)) + elif isinstance(input, (int, float)): + result = int(input) + if Timestamp.debug: + print('out:',result) return result else: raise PLCInvalidArgument("Timestamp %r - unsupported type %r"%(input,type(input))) @@ -136,11 +141,13 @@ class Duration: @staticmethod def to_string(duration): result=[] - left=duration - (days,left) = divmod(left,Duration.DAY) - if days: result.append("%d d)"%td.days) - (hours,left) = divmod (left,Duration.HOUR) - if hours: result.append("%d h"%hours) + left = duration + (days, left) = divmod(left, Duration.DAY) + if days: + result.append("%d d)"%td.days) + (hours, left) = divmod (left, Duration.HOUR) + if hours: + result.append("%d h"%hours) (minutes, seconds) = divmod (left, Duration.MINUTE) if minutes: result.append("%d m"%minutes) if seconds: result.append("%d s"%seconds) @@ -151,6 +158,6 @@ class Duration: def validate (duration): # support seconds only for now, works for int/long/str try: - return int (duration) + return int(duration) except: raise PLCInvalidArgument("Could not parse duration %r"%duration)