def get_company_name_by_pid(idx): positions = data_manager.imports_from_file("position/positions.txt") c_id = -1 for position in positions: if position[0] == idx: c_id = position[3] break companies = data_manager.imports_from_file("company/companies.txt") for company in companies: if company[0] == c_id: return company[1]
def read_position(table, idx): options = ["ID", "Description", "Seats", "Company"] mydict = common.read_element(table, idx, options) mydict["Company"] = get_company_data( data_manager.imports_from_file("company/companies.txt"), mydict["Company"], "name") return mydict
def get_student_applications(idx, mydict): applications = data_manager.imports_from_file( "application/applications.txt") options = ["Application ID", "Status", "Position"] title = "" app_count = 0 for i, item in enumerate(applications): if item[2] == idx: app_count += 1 for n in range(len(item)): if n < 3: title = f"{app_count}_{options[n]}" else: continue if n == 2: mydict.update({title: get_position_by_id(item[-1])}) mydict.update({ f"{app_count}_Company": get_company_name_by_pid(item[-1]) }) else: mydict.update({title: item[n]}) return mydict
def choose(): myfile = "position/positions.txt" option = ui.get_inputs("\nPlease enter a number: ") table = data_manager.imports_from_file(myfile) if option == "1": ui.clear() data_manager.export_to_file(myfile, create_position(table)) elif option == "2": ui.clear() idx = ui.get_inputs("Enter the position ID: ") if common.check_valid_id(table, idx) == False: ui.clear() ui.print_error(f"Invalid position ID! ('{idx}')") else: ui.print_result( get_applied_students(read_position(table, idx), idx), "Position details") elif option == "3": ui.clear() result = common.read_elements(table) if len(result) == 0: ui.clear() ui.print_error("There are no positions in this list!") else: show_table(format_seats(result)) elif option == "4": ui.clear() idx = ui.get_inputs("Enter position ID: ") if common.check_valid_id(table, idx) == False: ui.clear() ui.print_error(f"Invalid position ID! ('{idx}')") else: data_manager.export_to_file( myfile, update_position( table, idx, "description", ui.get_inputs( "Enter the new value of the description.\n"))) elif option == "5": ui.clear() idx = ui.get_inputs("Enter position ID: ") if common.check_valid_id(table, idx) == False: ui.clear() ui.print_error(f"Invalid position ID! ('{idx}')") return True if common.check_data_in_app(idx, "position") == True: ui.clear() ui.print_error("You cannot delete this position!") else: data_manager.export_to_file(myfile, common.delete_element(table, idx)) elif option == "0": ui.clear() return False else: raise KeyError(f"There is no such option. ({option})") return True
def create_position(table): options = [ "Enter a description: ", "Enter the number of seats: ", "Enter the company name: " ] table.append(common.create_element(table, options)) table[-1][-1] = get_company_data( data_manager.imports_from_file("company/companies.txt"), table[-1][-1], "id") return table
def get_position_applies(idx): applications = data_manager.imports_from_file( "application/applications.txt") count = 0 for item in applications: if item[-1] == idx: if item[1] == "applied": count += 1 return count
def get_applied_students(mydict, idx): applications = data_manager.imports_from_file( "application/applications.txt") for item in applications: if item[-1] == idx: if item[1] == "applied": if "Students" not in mydict: mydict.update({"Students": [get_student_name(item[2])]}) else: mydict["Students"].append(get_student_name(item[2])) return mydict
def check_data_in_app(idx, data): applications = data_manager.imports_from_file( "application/applications.txt") if data == "student": index = -2 elif data == "position": index = -1 for item in applications: if item[index] == idx: return True return False
def get_student_name(idx): students = data_manager.imports_from_file("student/students.txt") for student in students: if student[0] == idx: return student[1]
def test_imports_from_file(self): actual = data_manager.imports_from_file(self.test_filename) self.assertListEqual(actual, self.test_list)
def choose(): myfile = "student/students.txt" option = ui.get_inputs("\nPlease enter a number: ") table = data_manager.imports_from_file(myfile) if option == "1": ui.clear() data_manager.export_to_file(myfile, create_student(table)) elif option == "2": ui.clear() idx = ui.get_inputs("Enter the student ID: ") if common.check_valid_id(table, idx) == False: ui.clear() ui.print_error(f"Invalid student ID! ('{idx}')") else: result = get_student_applications(idx, read_student(table, idx)) ui.print_result(result, "Student details") elif option == "3": ui.clear() result = read_students(table) if len(result) == 0: ui.clear() ui.print_error("There are no students in this list!") else: show_table(result) elif option == "4": ui.clear() attributes = ["name", "age", "status"] idx = ui.get_inputs("Enter student ID: ") if common.check_valid_id(table, idx) == False: ui.clear() ui.print_error(f"Invalid student ID! ('{idx}')") return True update = ui.get_inputs("Which attribute do you want to change?\n") update = update.lower() if update not in attributes: ui.clear() ui.print_error(f"You cannot change this attribute! ('{update}')") else: data_manager.export_to_file( myfile, update_student( table, idx, update, ui.get_inputs(f"Enter the new value of the {update}.\n"))) elif option == "5": ui.clear() idx = ui.get_inputs("Enter student ID: ") if common.check_valid_id(table, idx) == False: ui.clear() ui.print_error(f"Invalid student ID! ('{idx}')") else: data_manager.export_to_file( myfile, update_student(table, idx, "status", get_new_status(table, idx))) elif option == "6": ui.clear() idx = ui.get_inputs("Enter student ID: ") if common.check_valid_id(table, idx) == False: ui.clear() ui.print_error(f"Invalid student ID! ('{idx}')") return True if common.check_data_in_app(idx, "student") == True: ui.clear() ui.print_error("You cannot delete this student!") else: data_manager.export_to_file(myfile, common.delete_element(table, idx)) elif option == "0": ui.clear() return False else: raise KeyError(f"There is no such option. ({option})") return True
def get_position_by_id(idx): positions = data_manager.imports_from_file("position/positions.txt") for position in positions: if position[0] == idx: return position[1]
def choose(): myfile = "application/applications.txt" option = ui.get_inputs("\nPlease enter a number: ") table = data_manager.imports_from_file(myfile) if option == "1": ui.clear() pos_name = ui.get_inputs("Enter a position name to apply: ") positions = data_manager.imports_from_file("position/positions.txt") student_id = ui.get_inputs("Enter a student id to apply: ") students = data_manager.imports_from_file("student/students.txt") opt = ui.get_inputs("Enter the status(applied/not applied): ") if common.check_valid_id(positions, pos_name) == False or common.check_valid_id( students, student_id) == False: ui.clear() ui.print_error("Non existing position or student!") else: if opt != "applied" and opt != "not applied": ui.clear() ui.print_error("Thats not an option") else: data_manager.export_to_file( myfile, create_applicaion(table, opt, pos_name, student_id, positions)) elif option == "2": ##Update Applications ui.clear() idx = ui.get_inputs("Enter application ID: ") if common.check_valid_id(table, idx) == False: ui.clear() ui.print_error(f"Invalid application ID! ('{idx}')") return True else: if common.check_if_applied(table, idx) == True: ui.clear() ui.print_error("You cant modify not applied status") else: for row in table: if row[0] == idx: row[1] = "not applied" data_manager.export_to_file(myfile, table) elif option == "3": ui.clear() idx = ui.get_inputs("Enter application ID: ") if common.check_valid_id(table, idx) == False: ui.clear() ui.print_error(f"Invalid application ID! ('{idx}')") else: data_manager.export_to_file(myfile, common.delete_element(table, idx)) elif option == "4": ui.clear() result = common.read_elements(table) if len(result) == 0: ui.clear() ui.print_error("There are no application in this list!") else: show_table(result) elif option == "0": ui.clear() return False else: raise KeyError(f"There is no such option. ({option})") return True