-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdatabase_search.py
More file actions
59 lines (47 loc) · 1.9 KB
/
database_search.py
File metadata and controls
59 lines (47 loc) · 1.9 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
import json
class DatabaseWorker(object):
def __init__(self, database_path):
self._database_path = database_path
with open(self._database_path, 'r') as f:
self._database = json.load(f)
self._instrument = self._database['instrument']
@staticmethod
def list_in_key_dict(param_list, param_dict):
keys = param_dict.keys()
for param in param_list:
if param not in keys:
return False
return True
def thread_search(self, param_dict):
if self.list_in_key_dict(['step', 'accuracy'], param_dict):
self.search_request(param_dict)
@staticmethod
def measuring_type(db_item_type, need_type_param):
for key, value in db_item_type:
if key == need_type_param and value == True:
return True
return False
@staticmethod
def suitable(instrument, param):
instrument_keys = instrument.keys()
param_keys = param.keys()
# if 'accuracy' in param_keys and 'accuracy' in instrument_keys and float(param['accuracy']) >= float(instrument['accuracy']):
#
def search_request(self, param):
instrument_list = []
for item in self._database:
if self.measuring_type(item['measuring_type'], param['type']) and self.suitable(item, param=param):
instrument_list.append(item)
# def search(self, param_dict):
# if 'type' in param_dict.keys():
def search(self, **kwargs):
if 'type' in kwargs.keys():
type_search = kwargs['type']
if type_search == 'thread':
self.thread_search(**kwargs)
elif type_search == 'size':
self.size_search(**kwargs)
elif type_search == 'roughness':
self.roughness_search(**kwargs)
elif type_search == 'angle':
self.angle_search(**kwargs)