예제 #1
0
    def generateXml(self):
        try:
            root = initial_report()
            property = Property()
            me_particular = ME_Particular()
            me_table = ME_Table()
            property.ship_name = self.ui.shipNameEdit.text()
            property.call_sign = self.ui.callSignEdit.text()
            property.imo_number = self.ui.imoNumberEdit.text()
            property.port_registry = self.ui.portRegistryEdit.text()
            property.company_name = self.ui.companyNameEdit.text()
            property.class_society = self.ui.classSocietyEdit.text()
            property.email = self.ui.emailEdit.text()
            property.telphone = self.ui.telEdit.text()
            property.fax = self.ui.faxEdit.text()
            property.ship_type = self.ui.shipTypeComboBox.currentText()
            property.international_gross_tonnage = self.ui.igtEdit.text()
            property.international_net_tonnage = self.ui.intEdit.text()
            property.loa = self.ui.loaEdit.text()
            property.lbp = self.ui.lbpEdit.text()
            property.breadth_moulded = self.ui.breadthMouldedEdit.text()
            property.depth_moulded = self.ui.depthMouldedEdit.text()
            property.ecdis_maker = self.ui.ecdisMakerEdit.text()
            property.ecdis_model = self.ui.depthMouldedEdit.text()
            property.captain_name = self.ui.captain_name_edit.text()
            property.captain_crew_id = self.ui.captain_crew_id_edit.text()
            property.maintain_paper_chart = self.ui.yesRadioBtn.isChecked()

            me_particular.ME_Table = me_table

            cells=[]
            pattern='[./\s]'
            for i in range(self.ui.meTableWidget.rowCount()):
                vertical_name = self.ui.meTableWidget.verticalHeaderItem(i).text()
                repl_h_name = re.sub(pattern, '_', str(vertical_name))
                for j in range(self.ui.meTableWidget.columnCount()):
                    column_name = self.ui.meTableWidget.horizontalHeaderItem(j).text()
                    repl_c_name = re.sub(pattern, '_', str(column_name))
                    cells.append(cell(repl_c_name, repl_h_name, self.ui.meTableWidget.item(i,j).text()))

            me_table.cell = cells
            me_particular.ME_Maker = self.ui.meMakerEdit.text()
            me_particular.ME_Model = self.ui.meModelEdit.text()

            property.ME_Particular = me_particular
            root.Property = property

            data_dir = Utils.createDataDir()
            fn_path = abs_lambda(os.path.join(data_dir , 'initial.xml'))
            with open(fn_path, 'w') as f:
                f.write('''<?xml version="1.0" encoding="UTF-8"?>\n''')
                root.export(f, 1, namespacedef_='xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"')

            msg_box = QMessageBox(QMessageBox.Information, "Success", "Initial Report config file generated successfully")
            msg_box.exec_()
        except Exception,ex:
            self.logger.error('Generate the initial report config file failed')
            self.logger.error(ex)
            msg_box = QMessageBox(QMessageBox.Warning, "Warning", "Initial Report config file generated failed \n" + str(ex))
            msg_box.exec_()
예제 #2
0
    def generateXml(self):
        root = request_report()
        property = Property()
        root.Property = property

        #general data
        property.ship_name = self.ui.ship_name_edit.text()
        property.call_sign = self.ui.call_sign_edit.text()
        property.voyage_number = self.ui.voyage_number_edit.text()
        property.date = self.ui.date_edit.text()
        #voyage data departure
        voyage_det = voyage_detail()
        depart = departure()
        arr = arrival()
        depart.departure_date = self.ui.depart_date_edit.text()
        depart.departure_time = self.ui.departure_time_edit.text()
        depart.country = self.ui.departure_country_combo.currentText()
        depart.port = self.ui.departure_port_combo.currentText()
        depart.unlo_code = self.ui.departure_unlo_edit.text()
        depart.terminal = self.ui.departure_terminal_edit.text()
        #voyage data arrival
        arr.arrival_date = self.ui.arrival_date_edit.text()
        arr.arrival_time = self.ui.arrival_time_edit.text()
        arr.country = self.ui.arrival_country_combo.currentText()
        arr.port = self.ui.arrival_port_combo.currentText()
        arr.unlo_code = self.ui.arrival_unlo_edit.text()
        arr.terminal = self.ui.arrival_terminal_edit.text()

        voyage_det.departure=depart
        voyage_det.arrival = arr
        property.voyage_detail = voyage_det

        #add via place
        via_places=[]
        vias = via()
        list_item_count = self.ui.via_listWidget.count()
        for index in range(list_item_count):
            via_places.append(self.ui.via_listWidget.item(index).text())

        vias.place_name = via_places
        property.via = vias

        property.use_dw_route = self.ui.use_dw_route_yes_radio.isChecked()
        property.prefered_route_type = self.ui.prefer_route_type_combo.currentText()
        property.maximum_draft = self.ui.maximum_draft_edit.text()
        property.load_condition = self.ui.load_condition_edit.text()
        property.speed_setting = self.ui.speed_setting_edit.text()
        property.etd = self.ui.etd_edit.text()

        data_dir = Utils.createDataDir()
        fn_path = abs_lambda(os.path.join(data_dir , 'request.xml'))
        with open(fn_path, 'w') as f:
            f.write('''<?xml version="1.0" encoding="UTF-8"?>\n''')
            root.export(f, 1, namespacedef_='xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"')

        msg_box = QMessageBox(QMessageBox.Information, "Success", "Revert Route config file generated successfully")
        msg_box.exec_()
예제 #3
0
    def generateXml(self):
        root = quarterly_report()
        property = Property()
        root.Property = property

        data_dir = Utils.createDataDir()
        fn_path = abs_lambda(os.path.join(data_dir , 'request.xml'))
        with open(fn_path, 'w') as f:
            f.write('''<?xml version="1.0" encoding="UTF-8"?>\n''')
            root.export(f, 1, namespacedef_='xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"')

        msg_box = QMessageBox(QMessageBox.Information, "Success", "Revert Route config file generated successfully")
        msg_box.exec_()
예제 #4
0
    def generateXml(self):
        root = revert_report()
        property = Property()

        #general data
        property.ship_name = self.ui.ship_name_edit.text()
        property.call_sign = self.ui.call_sign_edit.text()
        property.voyage_number = self.ui.voyage_number_edit.text()
        property.captain_name = self.ui.captain_name_edit.text()
        property.date = self.ui.date_edit.text()
        #voyage data departure
        voyage_det = voyage_detail()
        depart = departure()
        arr = arrival()
        depart.departure_date = self.ui.depart_date_edit.text()
        depart.departure_time = self.ui.departure_time_edit.text()
        depart.country = self.ui.departure_country_combo.currentText()
        depart.port = self.ui.departure_port_combo.currentText()
        depart.unlo_code = self.ui.departure_unlo_edit.text()
        depart.terminal = self.ui.departure_terminal_edit.text()
        #voyage data arrival
        arr.arrival_date = self.ui.arrival_date_edit.text()
        arr.arrival_time = self.ui.arrival_time_edit.text()
        arr.country = self.ui.arrival_country_combo.currentText()
        arr.port = self.ui.arrival_port_combo.currentText()
        arr.unlo_code = self.ui.arrival_unlo_edit.text()
        arr.terminal = self.ui.arrival_terminal_edit.text()

        voyage_det.departure=depart
        voyage_det.arrival = arr
        property.voyage_detail = voyage_det

        #paper tab
        property.use_critial_point = self.ui.critial_yes_radio.isChecked()
        property.use_dw_route = self.ui.use_dw_route_yes_radio.isChecked()
        property.route_number = self.ui.received_route_number.text()
        property.modify_route = self.ui.modify_route_radio_yes.isChecked()
        property.modify_reason = self.ui.reason_modify_route_combo.currentText()

        #critial point
        points=[]
        row_count = self.ui.critial_point_table_widget.rowCount()
        for i in range(row_count):
            point_item = point()
            try:
                lat = self.ui.critial_point_table_widget.item(i,0).text()
                long = self.ui.critial_point_table_widget.item(i,1).text()
                point_item.latitude = str(self.convertPoint(lat))
                point_item.longtitude = str(self.convertPoint(long))

                include_flag = self.ui.critial_point_table_widget.item(i,2).text()
                if include_flag == 'Yes':
                    points.append(point_item)
            except AttributeError:
                pass

        cp = critial_point()
        cp.point = points
        property.critial_point = cp

        #add via place
        via_places=[]
        vias = via()
        list_item_count = self.ui.via_listWidget.count()
        for index in range(list_item_count):
            via_places.append(self.ui.via_listWidget.item(index).text())

        vias.place_name = via_places
        property.via = vias

        property.route_number = self.ui.received_route_number.text()
        property.route_type = self.ui.route_type_combo.currentText()
        property.modify_route = self.ui.modify_route_radio_yes.isChecked()
        property.modify_reason = self.ui.reason_modify_route_combo.currentText()

        #paper chart
        chart = paper_chart()
        chart_items=[]
        for i in range(self.ui.paper_chart_table_widget.rowCount()):
            for j in range(self.ui.paper_chart_table_widget.columnCount()):
                try:
                    chart_items.append(self.ui.paper_chart_table_widget.item(i,j).text())
                except:
                    pass
        property.paper_chart = chart

        voyage_dat = voyage_data()
        voyage_dat.maximum_draft = self.ui.maximum_draft_edit.text()
        voyage_dat.minimum_ukc = self.ui.minimum_ukc_edit.text()
        voyage_dat.load_condition = self.ui.load_condition_combo.currentText()
        voyage_dat.displacement = self.ui.displacement_edit.text()
        voyage_dat.cargo_carried = self.ui.cargo_carried.text()
        voyage_dat.average_me_rmp = self.ui.average_me_rmp_edit.text()
        voyage_dat.total_distance = self.ui.total_distance_edit.text()
        voyage_dat.total_streaming_time = self.ui.total_streaming_time_edit.text()
        voyage_dat.average_speed = self.ui.average_speed_edit.text()
        voyage_dat.me_revolution_distance = self.ui.distance_me_revolution_edit.text()
        voyage_dat.log_distance = self.ui.log_distance_edit.text()
        voyage_dat.average_slip = self.ui.average_slip_edit.text()
        property.voyage_data = voyage_dat

        tbc = total_bunker_consumption()
        abc = average_bunker_consumption_per_nm()
        vpe = voyage_performance_efficiency()
        consume_list = [tbc, abc, vpe]
        for i in range(len(consume_list)):
            for j in range(self.ui.bunker_consume_table.columnCount()):
                column_name = self.ui.bunker_consume_table.horizontalHeaderItem(j).text().toLower()
                if hasattr(consume_list[i], str(column_name)):
                    try:
                        setattr(consume_list[i], str(column_name), self.ui.bunker_consume_table.item(i,j).text())
                    except AttributeError:
                        setattr(consume_list[i], str(column_name), '')

        property.total_bunker_consumption = tbc
        property.average_bunker_consumption_per_nm = abc
        property.voyage_performance_efficiency = vpe

        property.overall_weather_condition = self.ui.overall_condition_combo.currentText()
        property.attach_ecdis_route_file = os.path.basename(str(self.ui.attach_ecdis_route_file_edit.text()))
        property.attach_wp_plan = os.path.basename(str(self.ui.attach_wp_plan_edit.text()))
        property.remark = self.ui.remark_edit.toPlainText()

        root.Property = property
        data_dir = Utils.createDataDir()
        fn_path = abs_lambda(os.path.join(data_dir , 'revert.xml'))
        with open(fn_path, 'w') as f:
            f.write('''<?xml version="1.0" encoding="UTF-8"?>\n''')
            root.export(f, 1, namespacedef_='xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"')

        msg_box = QMessageBox(QMessageBox.Information, "Success", "Revert Route config file generated successfully")
        msg_box.exec_()