Skip to content

Commit 02a3951

Browse files
Merge pull request #152 from pkubiak/feature-log-uuid
Add .uuid field to Log class
2 parents ab3f3f1 + 5b79b21 commit 02a3951

File tree

3 files changed

+40
-11
lines changed

3 files changed

+40
-11
lines changed

pycaching/cache.py

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1041,12 +1041,13 @@ def load_logbook(self, limit=float("inf")):
10411041
img_filename = log_data["LogTypeImage"].rsplit(".", 1)[0] # filename w/o extension
10421042

10431043
# create and fill log object
1044-
log = Log()
1045-
log.type = LogType.from_filename(img_filename)
1046-
log.text = log_data["LogText"]
1047-
log.visited = log_data["Visited"]
1048-
log.author = log_data["UserName"]
1049-
yield log
1044+
yield Log(
1045+
uuid=log_data['LogGuid'],
1046+
type=LogType.from_filename(img_filename),
1047+
text=log_data["LogText"],
1048+
visited=log_data["Visited"],
1049+
author=log_data["UserName"]
1050+
)
10501051

10511052
# TODO: trackable list can have multiple pages - handle it in similar way as _logbook_get_page
10521053
# for example see: http://www.geocaching.com/geocache/GC26737_geocaching-jinak-tb-gc-hrbitov

pycaching/log.py

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,9 @@
1212
class Log(object):
1313
"""Represents a log record with its properties."""
1414

15-
def __init__(self, *, type=None, text=None, visited=None, author=None):
15+
def __init__(self, *, uuid=None, type=None, text=None, visited=None, author=None):
16+
if uuid is not None:
17+
self.uuid = uuid
1618
if type is not None:
1719
self.type = type
1820
if text is not None:
@@ -26,6 +28,18 @@ def __str__(self):
2628
"""Return log text."""
2729
return self.text
2830

31+
@property
32+
def uuid(self):
33+
"""The log unique identifier.
34+
35+
:type: :class:`str`
36+
"""
37+
return self._uuid
38+
39+
@uuid.setter
40+
def uuid(self, uuid):
41+
self._uuid = uuid
42+
2943
@property
3044
def type(self):
3145
"""The log type.

test/test_cache.py

Lines changed: 18 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -288,10 +288,24 @@ def test_load_trackables(self):
288288

289289
def test_load_logbook(self):
290290
with self.recorder.use_cassette('cache_logbook'):
291-
# limit over 100 tests pagination
292-
log_authors = list(map(lambda log: log.author, self.c.load_logbook(limit=200)))
293-
for expected_author in ["Dudny-1995", "Sopdet Reviewer", "donovanstangiano83"]:
294-
self.assertIn(expected_author, log_authors)
291+
# limit over 200 tests pagination
292+
logs = [
293+
(log.uuid, log.author, log.type)
294+
for log in self.c.load_logbook(limit=200)
295+
]
296+
297+
expected_logs = [
298+
('9767f72f-ba69-43ee-affc-44edc0ac8516', 'Dudny-1995', LogType.note),
299+
('a4ea42f1-7020-4503-b704-b8aa7b92d02c', 'Sopdet Reviewer', LogType.archive),
300+
('3f3d3383-adc6-415f-a18a-2c9a96e83238', 'donovanstangiano83', LogType.needs_archive),
301+
('51fbf641-f497-4522-9cdb-2ccd17223567', 'tunklt', LogType.didnt_find_it),
302+
('d4b29fa7-65d5-4fbe-a2f5-aeb4d9a7ee3b', 'ricoo', LogType.temp_disable_listing),
303+
('61607c93-3bec-4314-947f-0fd4bf8939e1', 'showpa', LogType.found_it),
304+
('9d052a22-d615-4bdc-bf25-018e537fda0a', 'Tomasook', LogType.needs_maintenance)
305+
]
306+
307+
for expected_log in expected_logs:
308+
self.assertIn(expected_log, logs)
295309

296310
def test_load_log_page(self):
297311
expected_types = {t.value for t in (LogType.found_it, LogType.didnt_find_it, LogType.note)}

0 commit comments

Comments
 (0)