Coverage for src/artemis_sg/item.py: 94%
28 statements
« prev ^ index » next coverage.py v7.3.2, created at 2023-10-05 09:33 -0700
« prev ^ index » next coverage.py v7.3.2, created at 2023-10-05 09:33 -0700
1# -*- coding: utf-8 -*-
3import logging
5import isbnlib
8class Item:
9 def __init__(self, keys, values, row_num, isbn_key):
10 keys = list(map(lambda x: x.strip().upper(), keys))
11 self.data = dict(zip(keys, values))
12 self.data_row_num = row_num
13 self.isbn_key = isbn_key
14 self.isbn = str(self.data[isbn_key])
15 self.isbn10 = isbnlib.to_isbn10(self.isbn)
16 self.image_urls = []
17 if "DESCRIPTION" not in self.data.keys():
18 self.data["DESCRIPTION"] = ""
19 self._sort_data()
21 def _sort_data(self):
22 namespace = f"{type(self).__name__}.{self._sort_data.__name__}"
24 def sortOrder(e):
25 defined_order = [
26 "TITLE",
27 "SUBTITLE",
28 "AUTHOR",
29 "PUBLISHER",
30 "PUB DATE",
31 "PUBLISHERDATE",
32 "FORMAT",
33 ]
34 if e in defined_order: 34 ↛ 35line 34 didn't jump to line 35, because the condition on line 34 was never true
35 return defined_order.index(e)
36 return 99
38 sorted_keys = list(self.data.keys())
39 # sort by defined order
40 sorted_keys.sort(key=sortOrder)
41 # move ISBN and DESCRIPTION to end of list
42 sorted_keys.sort(key=self.isbn_key.__eq__)
43 sorted_keys.sort(key="DESCRIPTION".__eq__)
44 logging.debug(f"{namespace}: Sorted keys: {sorted_keys}")
46 sorted_data = {key: self.data[key] for key in sorted_keys}
47 self.data = sorted_data