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