Completed
Push — master ( 72b331...d4b7d2 )
by Steffen
02:14
created

kuon.watcher.tracker.tracker.Tracker.remove_item()   A

Complexity

Conditions 2

Size

Total Lines 9
Code Lines 4

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
eloc 4
dl 0
loc 9
rs 10
c 0
b 0
f 0
cc 2
nop 2
1
#!/usr/bin/python
2
# -*- coding: utf-8 -*-
3
import logging
4
5
from kuon.api_response import LockedDict, LockedList
6
from kuon.watcher.tracker.json_manager import JsonManager
7
8
9
class TrackConditions:
10
    BELOW_VALUE = 0
11
    BELOW_AVERAGE_LAST_SOLD = 1
12
    BELOW_CHEAPEST_LAST_SOLD = 2
13
14
15
class Tracker:
16
    """Class to track search terms with conditions"""
17
18
    ITEM_REQUIRED_KEYWORDS = ('search_item', 'conditions')
19
20
    def __init__(self, log_level=logging.ERROR):
21
        """Initializing function"""
22
        logging.basicConfig(level=log_level,
23
                            format='[%(asctime)s.%(msecs)03d %(levelname)s %(name)s] %(message)s',
24
                            datefmt="%H:%M:%S")
25
        self.logger = logging.getLogger("watcher_tracker")
26
27
        self._json_manager = JsonManager()
28
        self._tracked_items = self._json_manager.get_tracked_items(self.ITEM_REQUIRED_KEYWORDS)
29
30
    @property
31
    def tracked_items(self):
32
        """Get the tracked items as LockedList
33
34
        :return:
35
        """
36
        return LockedList(self._tracked_items)
37
38
    def add_item(self, item: LockedDict):
39
        """Adds an item to the tracking list
40
41
        :param item:
42
        :return:
43
        """
44
        if not all([key in item for key in Tracker.ITEM_REQUIRED_KEYWORDS]):
45
            self.logger.error('Not all required keywords ({keywords}) are in the added item'.format(
46
                keywords=",".join(Tracker.ITEM_REQUIRED_KEYWORDS)))
47
            return
48
49
        if item not in self._tracked_items:
50
            self._tracked_items.append(item)
51
            self._json_manager.save_tracked_items(self._tracked_items)
52
53
    def remove_item(self, item: LockedDict):
54
        """Removes an item from the tracking list
55
56
        :param item:
57
        :return:
58
        """
59
        if item in self._tracked_items:
60
            self._tracked_items.remove(item)
61
            self._json_manager.save_tracked_items(self._tracked_items)
62