Skip to content

Commit d86ca83

Browse files
committed
basic backup added
added store manager that creates store an backup and the comms objects. strore test adapted to the new version of the program
1 parent 3e99d46 commit d86ca83

File tree

8 files changed

+143
-142
lines changed

8 files changed

+143
-142
lines changed

dls_barcode/data_store/backup.py

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -9,26 +9,26 @@ class Backup:
99
Backup class maintains the short time backaup of records which is kept in the same folder as the store files.
1010
"""
1111

12-
def __init__(self, directory, backup_time):
13-
self.comms = CommsManager(directory, "backup")
14-
self.backup_time = backup_time
15-
self.records = self.comms.load_records_from_file()
12+
def __init__(self, comms_man, backup_time):
13+
self._comms = comms_man
14+
self._backup_time = backup_time.value()
15+
self._records = self._comms.load_records_from_file()
1616
self._truncate_record_list()
1717

1818
def _truncate_record_list(self):
19-
for record in self.records:
19+
for record in self._records:
2020
if self._is_old(record):
21-
self.records.remove(record)
21+
self._records.remove(record)
2222

2323
def backup_records(self, to_back):
24-
self.records.extend(to_back)
24+
self._records.extend(to_back)
2525
self._truncate_record_list()
26-
self.comms.to_csv_file(self.records)
26+
self._comms.to_csv_file(self._records)
2727

2828
def _is_old(self, record):
2929
tm = time.time()
3030
record_time = record.timestamp
3131
delta = tm - record_time
32-
weeks = self.backup_time * 604800 # weeks in seconds
32+
weeks = self._backup_time * 604800 # weeks in seconds
3333
return delta > weeks
3434

dls_barcode/data_store/comms_manager.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ class CommsManager:
1010

1111
def __init__(self, directory, file_name):
1212
self._file_manager = FileManager()
13-
self._directory = directory
13+
self._directory = directory.value()
1414
self._file_name = file_name
1515

1616
def load_records_from_file(self):
@@ -45,9 +45,11 @@ def to_csv_file(self, records):
4545
record_lines = [rec.to_csv_string() + "\n" for rec in records]
4646
self._file_manager.write_lines(csv_file, record_lines)
4747

48-
def make_img_dir(self, img_dir):
48+
def make_img_dir(self):
49+
img_dir = os.path.join(self._directory, "img_dir")
4950
if not self._file_manager.is_dir(img_dir):
5051
self._file_manager.make_dir(img_dir)
52+
return img_dir
5153

5254
def remove_img_file(self, record):
5355
if self._file_manager.is_file(record.image_path):

dls_barcode/data_store/store.py

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
11
import uuid
22
import os
33

4-
from dls_barcode.data_store.backup import Backup
5-
from dls_barcode.data_store.comms_manager import CommsManager
64
from .record import Record
75

86

@@ -13,15 +11,13 @@ class Store:
1311
"""
1412
MIN_STORE_CAPACITY = 2
1513

16-
def __init__(self, directory, store_capacity, backup_time):
14+
def __init__(self, comms_manager, backup, store_capacity):
1715
""" Initializes a new instance of Store.
1816
"""
1917
self._store_capacity = store_capacity
20-
self._backup = Backup(directory, backup_time)
21-
self._comms_manager = CommsManager(directory, "store")
22-
self._img_dir = os.path.join(directory, "img_dir")
23-
self._comms_manager.make_img_dir(self._img_dir)
24-
18+
self._backup = backup
19+
self._comms_manager = comms_manager
20+
self._img_dir = self._comms_manager.make_img_dir()
2521
self.records = self._comms_manager.load_records_from_file()
2622
self._truncate_record_list()
2723
self._sort_records()
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
from dls_barcode.data_store import Store
2+
from dls_barcode.data_store.backup import Backup
3+
from dls_barcode.data_store.comms_manager import CommsManager
4+
5+
6+
class StoreManager:
7+
8+
def __init__(self, directory, store_capacity, backup_time):
9+
self._store_capacity = store_capacity
10+
self._directory = directory
11+
self._backup_time = backup_time
12+
13+
def create_store(self):
14+
comms_manager = self._create_store_comms_manager()
15+
backup_comms_manager = self._create_backup_comms_manager()
16+
backup = self._create_backup(backup_comms_manager)
17+
return Store(comms_manager, backup, self._store_capacity)
18+
19+
def _create_store_comms_manager(self):
20+
return CommsManager(self._directory, "store")
21+
22+
def _create_backup(self, backup_comms_manager):
23+
return Backup(backup_comms_manager, self._backup_time)
24+
25+
def _create_backup_comms_manager(self):
26+
return CommsManager(self._directory, "backup")
27+
28+
29+
30+
31+

dls_barcode/gui/record_table.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
from PyQt5.QtWidgets import QGroupBox, QVBoxLayout, QHBoxLayout, QTableWidget, QMessageBox
66

77
from dls_barcode.data_store import Store
8+
from dls_barcode.data_store.store_manager import StoreManager
89
from dls_util.file import FileManager
910

1011
# todo: allow delete key to be used for deletion
@@ -22,7 +23,7 @@ def __init__(self, barcode_table, image_frame, options):
2223
super(ScanRecordTable, self).__init__()
2324

2425
# Read the store from file
25-
self._store = Store(options.store_directory.value(), options.store_capacity, 3)#options.backup_time
26+
self._store = StoreManager(options.store_directory, options.store_capacity, options.backup_time).create_store()
2627
self._options = options
2728

2829
self._barcodeTable = barcode_table

tests/system_tests/test_unipuck_scan.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
from dls_barcode.config.barcode_config import BarcodeConfig
44
from dls_barcode.data_store import Store
5+
from dls_barcode.data_store.store_manager import StoreManager
56
from dls_barcode.scan import GeometryScanner
67
from dls_util.image import Image
78
from dls_util.file import FileManager
@@ -15,11 +16,11 @@
1516
OPTIONS = BarcodeConfig(CONFIG_FILE, FILE_MANAGER)
1617

1718
# Clear store before creating a new one
18-
store_dir = OPTIONS.store_directory.value()
19+
store_dir = OPTIONS.store_directory
1920
if os.path.isdir(store_dir):
2021
shutil.rmtree(store_dir)
2122

22-
STORE = Store(store_dir, OPTIONS.store_capacity, FILE_MANAGER)
23+
STORE = StoreManager(store_dir, OPTIONS.store_capacity, OPTIONS.backup_time).create_store()
2324

2425

2526
def test_generator():

tests/system_tests/test_unipuck_scan_locator.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55

66
from dls_barcode.config.barcode_config import BarcodeConfig
77
from dls_barcode.data_store import Store
8+
from dls_barcode.data_store.store_manager import StoreManager
89
from dls_barcode.geometry.unipuck import Unipuck
910
from dls_barcode.scan import GeometryScanner
1011
from dls_util import Color
@@ -22,11 +23,11 @@
2223
OPTIONS = BarcodeConfig(CONFIG_FILE, FILE_MANAGER)
2324

2425
# Clear store before creating a new one
25-
store_dir = OPTIONS.store_directory.value()
26+
store_dir = OPTIONS.store_directory
2627
if os.path.isdir(store_dir):
2728
shutil.rmtree(store_dir)
2829

29-
STORE = Store(store_dir, OPTIONS.store_capacity, FILE_MANAGER)
30+
STORE = StoreManager(store_dir, OPTIONS.store_capacity, OPTIONS.backup_time).create_store()
3031

3132
def test_generator():
3233
TEST_CASES = generate_test_cases()

0 commit comments

Comments
 (0)