-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmetadata_handler.py
68 lines (54 loc) · 2.3 KB
/
metadata_handler.py
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
59
60
61
62
63
64
65
66
67
68
import os
import json
from python_datalogger import DataLogger
class MetadataHandler:
__metadata_file = "FileData.json"
__template_file = {
"FileData": []
}
__temp_files = os.listdir()
def __init__(self, filename: str, password: str, status: str):
self.init_env()
self.__temp_filename = filename
self.__temp_password = password
self.__status = status
self.__temp_array = {"filename": self.__temp_filename, "password": self.__temp_password,
"status": self.__status}
self.__current_array = []
self.__json_data = {}
self.save_metadata()
@classmethod
def init_env(cls):
if MetadataHandler.__metadata_file not in MetadataHandler.__temp_files:
with open(MetadataHandler.__metadata_file, "w") as file:
file.write(json.dumps(MetadataHandler.__template_file, indent=2))
@DataLogger.logger
def __load_from_json(self):
with open(MetadataHandler.__metadata_file, 'r') as file:
self.__json_data = json.loads(file.read())
if self.__json_data["FileData"] is not None:
self.__current_array = self.__json_data["FileData"]
@DataLogger.logger
def __dump_to_json(self):
with open(MetadataHandler.__metadata_file, 'w') as file:
file.write(json.dumps(self.__json_data, indent=3))
@DataLogger.logger
def __update_metadata(self):
if len(self.__current_array) > 0:
for arrays in self.__current_array:
if (not arrays['filename'] == self.__temp_array['filename'] and
arrays['password'] == self.__temp_array['password']):
self.__current_array.append(self.__temp_array)
else:
if arrays['status'] != self.__temp_array['status']:
self.__current_array.remove(arrays)
self.__current_array.append(self.__temp_array)
else:
self.__current_array.append(self.__temp_array)
self.__json_data["FileData"] = self.__current_array
def save_metadata(self):
self.__load_from_json()
self.__update_metadata()
self.__dump_to_json()
def __repr__(self):
return f"[{self.__temp_filename}, {self.__temp_password}]"