kopia lustrzana https://github.com/glidernet/ogn-python
Bugfixed createTimestamp
rodzic
e62203638e
commit
60745fb6f3
|
@ -18,20 +18,16 @@ def dmsToDeg(dms):
|
|||
return d + m
|
||||
|
||||
|
||||
def createTimestamp(hhmmss, reference):
|
||||
def createTimestamp(hhmmss, reference=datetime.utcnow(), validate=False):
|
||||
hh = int(hhmmss[0:2])
|
||||
mm = int(hhmmss[2:4])
|
||||
ss = int(hhmmss[4:6])
|
||||
|
||||
if reference is None:
|
||||
reference = datetime.utcnow()
|
||||
return datetime(reference.year, reference.month, reference.day, hh, mm, ss)
|
||||
|
||||
if (reference.hour == 23) & (hh == 0):
|
||||
reference = reference + timedelta(days=1)
|
||||
elif (reference.hour == 0) & (hh == 23):
|
||||
reference = reference - timedelta(days=1)
|
||||
elif abs(reference.hour - hh) > 1:
|
||||
elif validate and abs(reference.hour - hh) > 1:
|
||||
raise Exception("Time difference is too big. Reference time:%s - timestamp:%s" % (reference, hhmmss))
|
||||
return datetime(reference.year, reference.month, reference.day, hh, mm, ss)
|
||||
|
||||
|
|
|
@ -29,7 +29,7 @@ class Beacon(AbstractConcreteBase, Base):
|
|||
altitude = Column(Integer)
|
||||
comment = None
|
||||
|
||||
def parse(self, text, reference_time=None):
|
||||
def parse(self, text):
|
||||
result = re_pattern_aprs.match(text)
|
||||
if result is None:
|
||||
raise AprsParseError(text)
|
||||
|
@ -37,7 +37,7 @@ class Beacon(AbstractConcreteBase, Base):
|
|||
self.name = result.group(1)
|
||||
self.receiver_name = result.group(2)
|
||||
|
||||
self.timestamp = createTimestamp(result.group(3), reference_time)
|
||||
self.timestamp = createTimestamp(result.group(3))
|
||||
|
||||
self.latitude = dmsToDeg(float(result.group(4)) / 100)
|
||||
if result.group(5) == "S":
|
||||
|
|
|
@ -10,16 +10,16 @@ class TestStringMethods(unittest.TestCase):
|
|||
self.assertAlmostEqual(dmsToDeg(dms), 50.805, 5)
|
||||
|
||||
def test_createTimestamp_seconds_behind(self):
|
||||
timestamp = createTimestamp('235959', datetime(2015, 10, 16, 0, 0, 1))
|
||||
self.assertEqual(timestamp, datetime(2015, 10, 15, 23, 59, 59))
|
||||
timestamp = createTimestamp('235959', reference=datetime(2015, 10, 16, 0, 0, 1))
|
||||
self.assertEqual(timestamp, datetime(2015, 10, 15, 23, 59, 59))
|
||||
|
||||
def test_createTimestamp_seconds_before(self):
|
||||
timestamp = createTimestamp('000001', datetime(2015, 10, 15, 23, 59, 59))
|
||||
self.assertEqual(timestamp, datetime(2015, 10, 16, 0, 0, 1))
|
||||
timestamp = createTimestamp('000001', reference=datetime(2015, 10, 15, 23, 59, 59))
|
||||
self.assertEqual(timestamp, datetime(2015, 10, 16, 0, 0, 1))
|
||||
|
||||
def test_createTimestamp_big_difference(self):
|
||||
with self.assertRaises(Exception):
|
||||
createTimestamp(datetime(2015, 10, 15, 23, 59, 59), '123456')
|
||||
createTimestamp('123456', reference=datetime(2015, 10, 15, 23, 59, 59), validate=True)
|
||||
|
||||
def test_create_aprs_login(self):
|
||||
basic_login = create_aprs_login('klaus', -1, 'myApp', '0.1')
|
||||
|
|
Ładowanie…
Reference in New Issue