def __init__(self, view, model): self.__view = view self.model = model self.validator = Validator() self.serialization = Serialization() self.bar_chart = Bar_chart() self.db = DB("company.db")
def __init__(self, view, model): self.__view = view self.model = model self.validator = Validator() self.serialization = Serialization() self.bar_chart = Bar_chart() self.db = DB("company.db") self.input_compositor = InputCompositor() self.input_compositor.add(InputSales(self.validator, self.__view)) self.input_compositor.add(InputSalary(self.validator, self.__view)) self.input_compositor.add(InputGender(self.validator, self.__view)) self.input_compositor.add(InputEmployeeId(self.validator, self.__view)) self.input_compositor.add(InputBMI(self.validator, self.__view)) self.input_compositor.add(InputBirthday(self.validator, self.__view)) self.input_compositor.add(InputAge(self.validator, self.__view))
class Controller(AbstractController): """ docstring for Controller""" def __init__(self, view, model): self.__view = view self.model = model self.validator = Validator() self.serialization = Serialization() self.bar_chart = Bar_chart() self.db = DB("company.db") self.input_compositor = InputCompositor() self.input_compositor.add(InputSales(self.validator, self.__view)) self.input_compositor.add(InputSalary(self.validator, self.__view)) self.input_compositor.add(InputGender(self.validator, self.__view)) self.input_compositor.add(InputEmployeeId(self.validator, self.__view)) self.input_compositor.add(InputBMI(self.validator, self.__view)) self.input_compositor.add(InputBirthday(self.validator, self.__view)) self.input_compositor.add(InputAge(self.validator, self.__view)) def print_all_data(self): try: if self.model.employees.__len__() == 0: raise ValueError for employee in self.model.employees: self.__view.show(employee) except ValueError: self.__view.show('not data') def new_employee(self): input_data = dict(self.input_employee_id()) input_data.update(self.input_birthday()) input_data.update(self.input_gender()) input_data.update(self.input_age()) input_data.update(self.input_sales()) input_data.update(self.input_BMI()) input_data.update(self.input_salary()) self.model.add_the_employee(input_data) self.__view.show(input_data) self.__view.show('success') def load_file(self, path): try: f = open(path, "r") lines = [line.rstrip('\n') for line in f] for the_line in lines: if self.validator.is_load_data(the_line): array = the_line.split(',') d = self.convert_dict("EMPID", array[0]) d.update(self.convert_dict("Gender", array[1])) d.update(self.convert_dict("Age", array[2])) d.update(self.convert_dict("Sales", array[3])) d.update(self.convert_dict("BMI", array[4])) d.update(self.convert_dict("Salary", array[5])) d.update(self.convert_dict("Birthday", array[6])) the_employee = self.model.add_the_employee(d) else: self.__view.show("invalid data detected") f.close() self.__view.show("success") except IOError: self.__view.show('error : wrong path') def save_file(self, path): try: if (self.model.employees.__len__() == 0): raise ValueError f = open(path, "w+") for employee in self.model.employees: f.write(employee.__str__()) f.write('\n') # f.truncate() f.close() self.__view.show('ok') except IOError: self.__view.show('error : wrong path') except ValueError: self.__view.show('not data') def convert_dict(self, key, string): d = dict({key: string}) return d def serialise_objects(self, path): try: if os.path.exists(path) == False: raise IOError if self.model.employees.__len__() != 0: path += '/data.pickle' sf = self.serialization.open(path, "wb") # for employee in self.model.employees: self.serialization.dump(sf, self.model.employees) sf.close() self.__view.show("ok") else: raise ValueError except IOError: self.__view.show('error : wrong path') except ValueError: self.__view.show('data error') def pickle_load(self, path): try: #sf = self.serialization.open(path, "rb") with self.serialization.open(path, "rb") as f: object_list = self.serialization.load(f) if object_list == False: raise ValueError valided_object_list = [] for e in object_list: for ee in self.model.employees: if ee.id == e.id: self.__view.show('unique constraint failed') valided_object_list.append(e) new = set(object_list) - set(valided_object_list) self.model.employees += list(new) for e in new: self.__view.show(e) f.close() except IOError: self.__view.show('error : wrong path') except ValueError: self.__view.show('data error') except AttributeError: self.__view.show('error : wrong path') def display_bar(self): try: if (self.model.get_all_salaries().__len__() != 0): try: os.remove('bar_chart.svg') except OSError: pass self.bar_chart.title = 'Salary by Age' # self.bar_chart.delete('Salary') self.bar_chart.add('Salary', self.model.get_all_salaries()) age_list = [] for age in self.model.get_all_age(): age_list.append(str(age) + '-year-old') age_list.sort() self.bar_chart.x_labels = map(str, age_list) # self.bar_chart.render_to_png('/tmp/chart.png') self.bar_chart.render_to_file('bar_chart.svg') self.bar_chart.show_in_chrome('bar_chart.svg') else: raise ValueError except ValueError: self.__view.show('data error') def db_save(self): try: if (self.model.employees.__len__() == 0): raise Exception('no data to save') llist = [] for employee in self.model.employees: string = employee.__str__() array = string.split(',') llist.append(tuple(array)) self.__view.show(self.db.insert_employee_data(llist)) self.__view.show('ok') # self.__view.show(llist) except Exception as e: self.__view.show(e) # except ValueError: # self.__view.show('error') def db_load(self): try: l = self.db.fetch_all_employees() if (bool(l) == False): raise ValueError if l.__len__() == 0: raise ValueError for employee in l: d = self.convert_dict("EMPID", employee[0]) d.update(self.convert_dict("Gender", employee[1])) d.update(self.convert_dict("Age", employee[2])) d.update(self.convert_dict("Sales", employee[3])) d.update(self.convert_dict("BMI", employee[4])) d.update(self.convert_dict("Salary", employee[5])) d.update(self.convert_dict("Birthday", employee[6])) the_employee = self.model.add_the_employee(d) self.__view.show(the_employee) except ValueError: self.__view.show('no data') def input_employee_id(self): input_object = self.input_compositor.get_input_object( 'InputEmployeeId') return input_object.input("Please input employee ID : ", "EMPID", self.validator.is_valid_employee_id) def input_gender(self): input_object = self.input_compositor.get_input_object('InputGender') return input_object.input("Please input gender M/F : ", "Gender", self.validator.is_valid_gender) def input_age(self): input_object = self.input_compositor.get_input_object('InputAge') return input_object.input("Please input two digit age : ", "Age", self.validator.is_valid_age) def input_sales(self): input_object = self.input_compositor.get_input_object('InputSales') return input_object.input("Please input three digit sales : ", "Sales", self.validator.is_valid_sales) def input_BMI(self): input_object = self.input_compositor.get_input_object('InputBMI') return input_object.input("Please select the BMI number:", "BMI", self.validator.is_valid_BMI) def input_salary(self): input_object = self.input_compositor.get_input_object('InputSalary') return input_object.input("Please input the 2or3 digit salary : ", "Salary", self.validator.is_valid_salary) def input_birthday(self): input_object = self.input_compositor.get_input_object('InputBirthday') return input_object.input( "Please input the birthday day-month-year : ", "Birthday", self.validator.is_valid_birthday)
class Controller(AbstractController): """ docstring for Controller""" def __init__(self, view, model): self.__view = view self.model = model self.validator = Validator() self.serialization = Serialization() self.bar_chart = Bar_chart() self.db = DB("company.db") def print_all_data(self): try: if self.model.employees.__len__() == 0: raise ValueError for employee in self.model.employees: self.__view.show(employee) except ValueError: self.__view.show('not data') def new_employee(self): input_data = dict(self.input_employee_id()) input_data.update(self.input_birthday()) input_data.update(self.input_gender()) input_data.update(self.input_age()) input_data.update(self.input_sales()) input_data.update(self.input_BMI()) input_data.update(self.input_salary()) self.model.add_the_employee(input_data) self.__view.show(input_data) self.__view.show('success') def load_file(self, path): try: f = open(path, "r") lines = [line.rstrip('\n') for line in f] # print(lines) for the_line in lines: if self.validator.is_load_data(the_line): array = the_line.split(',') d = self.convert_dict("EMPID", array[0]) d.update(self.convert_dict("Gender", array[1])) d.update(self.convert_dict("Age", array[2])) d.update(self.convert_dict("Sales", array[3])) d.update(self.convert_dict("BMI", array[4])) d.update(self.convert_dict("Salary", array[5])) d.update(self.convert_dict("Birthday", array[6])) the_employee = self.model.add_the_employee(d) else: self.__view.show("invalid data detected") f.close() self.__view.show("success") except IOError: self.__view.show('error : wrong path') def save_file(self, path): try: if (self.model.employees.__len__() == 0): raise ValueError f = open(path, "w+") for employee in self.model.employees: f.write(employee.__str__()) f.write('\n') # f.truncate() f.close() self.__view.show('ok') except IOError: self.__view.show('error : wrong path') except ValueError: self.__view.show('not data') def convert_dict(self, key, string): d = dict({key: string}) return d def serialise_objects(self, path): try: if self.model.employees.__len__() != 0: path += '/data.pickle' sf = self.serialization.open(path, "wb") for employee in self.model.employees: self.serialization.dump(sf, employee) sf.close() sf = self.serialization.open(path, "rb") print(self.serialization.load(sf)) print(self.serialization.load(sf)) print(self.serialization.load(sf)) print(self.serialization.load(sf)) self.serialization.close(sf) self.__view.show("ok") else: raise ValueError except IOError: self.__view.show('error : wrong path') except ValueError: self.__view.show('data error') def display_bar(self): try: if (self.model.get_all_salaries().__len__() != 0): try: os.remove('bar_chart.svg') except OSError: pass self.bar_chart.title = 'Salary by Age' self.bar_chart.add('Salary', self.model.get_all_salaries()) self.bar_chart.x_labels = map(int, self.model.get_all_age()) # self.bar_chart.render_to_png('/tmp/chart.png') self.bar_chart.render_to_file('bar_chart.svg') self.bar_chart.show_in_chrome('bar_chart.svg') else: raise ValueError except ValueError: self.__view.show('data error') def db_save(self): try: if (self.model.employees.__len__() == 0): raise Exception('no data to save') llist = [] for employee in self.model.employees: string = employee.__str__() array = string.split(',') llist.append(tuple(array)) self.__view.show(self.db.insert_employee_data(llist)) self.__view.show('ok') # self.__view.show(llist) except Exception as e: self.__view.show(e) # except ValueError: # self.__view.show('error') def db_load(self): try: l = self.db.fetch_all_employees() if l.__len__() == 0: raise ValueError for employee in l: d = self.convert_dict("EMPID", employee[0]) d.update(self.convert_dict("Gender", employee[1])) d.update(self.convert_dict("Age", employee[2])) d.update(self.convert_dict("Sales", employee[3])) d.update(self.convert_dict("BMI", employee[4])) d.update(self.convert_dict("Salary", employee[5])) d.update(self.convert_dict("Birthday", employee[6])) the_employee = self.model.add_the_employee(d) self.__view.show(the_employee) except ValueError: self.__view.show('no data') def input_employee_id(self): while True: try: input_data = self.__view.input("Please input employee ID : ") if self.validator.is_valid_employee_id(input_data): break else: self.__view.show("That was no valid id. Try again...") except ValueError: self.__view.show( "Oops! That was no valid number. Try again...") return {"EMPID": input_data} def input_gender(self): while True: try: input_data = self.__view.input("Please input gender M/F : ") if self.validator.is_valid_gender(input_data): break else: self.__view.show("That was no valid input. Try again...") except ValueError: self.__view.show( "Oops! That was no valid number. Try again...") return {"Gender": input_data} def input_age(self): while True: try: input_data = self.__view.input("Please input two digit age : ") if self.validator.is_valid_age(input_data): break else: self.__view.show("That was no valid input. Try again...") except ValueError: self.__view.show( "Oops! That was no valid number. Try again...") return {"Age": input_data} def input_sales(self): while True: try: input_data = self.__view.input( "Please input three digit sales : ") if self.validator.is_valid_sales(input_data): break else: self.__view.show("That was no valid input. Try again...") except ValueError: self.__view.show( "Oops! That was no valid number. Try again...") return {"Sales": input_data} def input_BMI(self): options = ['Normal', 'Overweight', 'Obesity', 'Underweight'] for (i, item) in enumerate(options): self.__view.show(i + 1, item) while True: try: input_data = int( self.__view.input("Please select the BMI number:")) if input_data >= 1 and input_data <= 4: input_data = options[input_data - 1] if self.validator.is_valid_BMI(input_data): break else: self.__view.show("That was no valid input. Try again...") except ValueError: self.__view.show( "Oops! That was no valid number. Try again...") return {"BMI": input_data} def input_salary(self): while True: try: input_data = self.__view.input( "Please input the 2or3 digit salary : ") if self.validator.is_valid_salary(input_data): break else: self.__view.show("That was no valid input. Try again...") except ValueError: self.__view.show( "Oops! That was no valid number. Try again...") return {"Salary": input_data} def input_birthday(self): prompt = "Please input the birthday day-month-year : " while True: try: input_data = self.__view.input(prompt) if self.validator.is_valid_birthday(input_data): break else: self.__view.show("That was no valid input. Try again...") except ValueError: self.__view.show( "Oops! That was no valid number. Try again...") return {"Birthday": input_data}