def test_remove_id_from_file(self):
        import datetime
        from objects import Shift
        from os import mkdir, remove, rmdir, path

        shift = Shift(datetime.datetime.strptime('2020-06-29', '%Y-%m-%d'))

        # write file
        mkdir('data')
        with open(shift.file_list()['completed_ids'], 'w') as file:
            file.write('2020-06-20,2020-06-24,2020-06-27,2020-06-29,2020-06-30')
        # read file
        with open(shift.file_list()['completed_ids'], 'r') as file:
            test = file.read()
        # test that id is in file
        self.assertIn('2020-06-29', test)

        # run method
        shift.remove_id_from_file()

        # read file
        with open(shift.file_list()['completed_ids'], 'r') as file:
            test = file.read()
        # test that id is not in file
        self.assertNotIn('2020-06-29', test)

        # remove test file
        remove(shift.file_list()['completed_ids'])
        rmdir('data')
    def test_remove_id_from_file_empty_file(self):
        import datetime
        from objects import Shift
        from os import mkdir, rmdir, path

        shift = Shift(datetime.datetime.strptime('2020-06-29', '%Y-%m-%d'))

        # write file
        mkdir('data')
        with open(shift.file_list()['completed_ids'], 'w') as file:
            file.write('2020-06-29')
        # read file
        with open(shift.file_list()['completed_ids'], 'r') as file:
            test = file.read()
        # test that id is in file
        self.assertIn('2020-06-29', test)

        # run method
        shift.remove_id_from_file()


        # check that file was deleted
        self.assertFalse(path.exists(shift.file_list()['completed_ids']))

        # remove directory
        rmdir('data')
Example #3
0
from menus import Shift_Tracking_Menu
from objects import Shift
from os import path, chdir
from resources.system_names import data_directory, shifts_directory
from utility.utility import now

# make directories to store user data
shifts_path = path.join(data_directory, shifts_directory)
if not path.exists(data_directory):
    from os import mkdir
    mkdir(data_directory)
if not path.exists(shifts_path):
    from os import mkdir
    mkdir(shifts_path)

shift = Shift(now().date())
# check for completed shift
if path.exists(shift.file_list()['info']):
    from menus import Completed_Shift
    menu = Completed_Shift(shift)
    shift = menu.shift
# check if shift has not started
elif not path.exists(shift.file_list()['directory']):
    shift.start()
# load shift
else:
    shift.load_current()

# daily shift tracking menu
Shift_Tracking_Menu(shift)
Example #4
0
class Completed_Shift:
    def __init__(self, shift, test=False):
        from objects import Shift
        if not isinstance(shift, Shift):
            raise TypeError

        self.shift = shift

        if test is False:
            from utility.user_input import enter_to_continue
            self.user_choice()
            if self.user_choice.lower() == 'r':
                from resources.strings import Shift__resume__confirmation
                self.resume_shift(self.shift)
                enter_to_continue(Shift__resume__confirmation)
            elif self.user_choice.lower() == 'o':
                from resources.strings import Shift__overwritten__confirmation
                self.overwrite_shift(self.shift)
                enter_to_continue(Shift__overwritten__confirmation)
            elif self.user_choice.lower() == 'q':
                pass

    def overwrite_shift(self):
        from objects import Shift
        from os import mkdir
        from shutil import rmtree
        from utility.file import write
        from utility.utility import now

        self.shift = Shift(now().date())

        # delete directory that contains all files
        rmtree(self.shift.file_list()['directory'])
        # recreate the directory to store new files
        mkdir(self.shift.file_list()['directory'])
        # set and save start time
        self.shift.set_start_time()
        write(self.shift.start_time, self.shift.file_list()['start_time'])
        # remove id from completed ids file
        self.shift.remove_id_from_file()

        return self

    def resume_shift(self):
        from objects import Shift
        from os import remove
        from utility.file import write
        from utility.utility import now

        self.shift = Shift(now().date())

        # load completed shift data
        self.shift.load_completed()
        # get shift start time
        start_time = self.shift.start_time
        # delete shift info file
        remove(self.shift.file_list()['info'])
        # save start time
        write(start_time, self.shift.file_list()['start_time'])
        # remove id from completed ids file
        self.shift.remove_id_from_file()
        # load current shift data
        self.shift.load_current()

        return self

    def user_choice(self):
        from resources.strings import Shift__completed__menu as prompt
        from utility.user_input import check_match, user_input

        self.user_choice = user_input(self.prompt)
        while not check_match('^[roq]$', self.user_choice):
            self.user_choice = user_input(self.prompt)
        return self