def __init__(self):
        ui_module.UI.__init__(self)

        self.radio_initialized = False
        self.project_radios = {}
        self._load_prerequisite()
        UIDGenerator.GUID()
        database_manager.DB()
        self._connect_ui()
        self.load_project_radios()
        self.update_file_validation_status()
 def upload_files(self):
     _file_path = self.tab_upload_browse_file_field.text()
     if os.path.isfile(_file_path) and os.path.exists(_file_path):
         database_manager.DB().add_to_db(
             _file_path,
             self.get_selected_project_radio().name,
             self.tab_upload_validation_status.text())
         curr_file_name = os.path.basename(_file_path)
         utility.copy_files_to_server(
             _file_path,
             os.path.join(
                 config.projects[self.get_selected_project_radio().name.
                                 lower()]["folder_path"], curr_file_name))
         self.run_file_validation(reset=True)
         self.create_message_window(
             "File has been uploaded for review, Please check the dashboard tab for updates.",
             "Upload Info")
     else:
         self.create_message_window("Please select files for upload",
                                    "Error")
 def reload_files(self):
     UIDGenerator.GUID().reload_guid_file()
     database_manager.DB().reload_database()
     self.update_current_tab()
 def download_files(self, _guid):
     print("Download requested for : ", _guid)
     print("---> {}".format(database_manager.DB().db_data[str(_guid)]))
 def validation_status(self, status, _guid):
     _data = database_manager.DB().db_data[str(_guid)]
     _data["status"] = status
     _data["reviewer_name"] = utility.get_windows_display_name()
     database_manager.DB().write_to_disk()
     self.update_current_tab()
    def populate_table_information(self, tab_name):
        eval("self.tab_{}_table.clear()".format(tab_name))
        eval("self.tab_{}_table.setRowCount(0)".format(tab_name))
        eval("self.tab_{}_table.setColumnCount(0)".format(tab_name))

        _radio_setting = self.get_selected_project_radio().name.lower()
        _reduction_counter = 0
        _reduction_radio_counter = 0

        for _index, v in enumerate(database_manager.DB().db_data.values()):
            if tab_name != "dashboard":
                if _radio_setting != v["project_type"].lower():
                    _reduction_radio_counter += 1
                    continue
                else:
                    if tab_name != "submissions":
                        if v["status"] == "Rejected" or v[
                                "status"] == "Approved":
                            _reduction_radio_counter += 1
                            continue
                    _index = _index - _reduction_radio_counter

            if tab_name == "submissions":
                if v["status"] != "Approved":
                    _reduction_counter += 1
                    continue
                else:
                    _index = _index - _reduction_counter
                    _reduction_counter = 0
            eval("self.tab_{}_table.insertRow(int(_index))".format(tab_name))
            create_columns = True
            if eval("self.tab_{0}_table.columnCount() >= len(config.{0}_columns)"
                    .format(tab_name)):
                create_columns = False
            for _iter, column_name in enumerate(
                    eval("config.{}_columns".format(tab_name))):
                if create_columns:
                    eval("self.tab_{}_table.insertColumn(_iter)".format(
                        tab_name))
                _item = QtWidgets.QTableWidgetItem(str(v[column_name]))
                _item.setTextAlignment(
                    QtCore.Qt.AlignHCenter)  # change the alignment
                eval(
                    "self.tab_{}_table.setItem(int(_index), int(_iter), _item)"
                    .format(tab_name))

            if tab_name == "reviewer":
                download_files_button = ui_module.AdvancedButton(
                    "Download", v["guid"])
                approve_button = ui_module.AdvancedButton(
                    "Approved", v["guid"])
                reject_button = ui_module.AdvancedButton("Rejected", v["guid"])
                approve_button.clicked.connect(
                    partial(self.validation_status, approve_button.status,
                            approve_button.guid))
                reject_button.clicked.connect(
                    partial(self.validation_status, reject_button.status,
                            reject_button.guid))
                download_files_button.clicked.connect(
                    partial(self.download_files, download_files_button.guid))

                for _i, but in enumerate(
                    [download_files_button, approve_button, reject_button],
                        start=len(eval("config.{}_columns".format(tab_name)))):
                    if create_columns:
                        eval("self.tab_{}_table.insertColumn(_i)".format(
                            tab_name))
                    eval(
                        "self.tab_{}_table.setCellWidget(int(_index), _i, but)"
                        .format(tab_name))

            if tab_name == "submissions":
                submit_button = ui_module.AdvancedButton("Submit", v["guid"])
                submit_button.clicked.connect(
                    partial(self.submit_files, submit_button.guid))
                if create_columns:
                    eval(
                        "self.tab_{0}_table.insertColumn(len(config.{0}_columns))"
                        .format(tab_name))
                eval(
                    "self.tab_{0}_table.setCellWidget(int(_index), len(config.{0}_columns), submit_button)"
                    .format(tab_name))
        eval(
            "self.tab_{0}_table.setHorizontalHeaderLabels(config.{0}_header_labels)"
            .format(tab_name))
        eval("self.tab_{}_table.resizeColumnsToContents()".format(tab_name))