mirror of
https://github.com/CopterExpress/clever-show.git
synced 2026-06-07 04:29:33 +00:00
Merge branch 'renaming_reorganization' of https://github.com/CopterExpress/clever-show into renaming_reorganization
This commit is contained in:
@@ -17,17 +17,17 @@ config_version = float(default='1.0')
|
||||
[[[DEFAULT]]]
|
||||
copter_id = preset_param(default=list(True, 100))
|
||||
git_version = preset_param(default=list(True, 75))
|
||||
config_version = preset_param(default=list(True, 140))
|
||||
animation_id = preset_param(default=list(True, 100))
|
||||
config_version = preset_param(default=list(True, 105))
|
||||
animation_info = preset_param(default=list(True, 100))
|
||||
battery = preset_param(default=list(True, 100))
|
||||
fcu_status = preset_param(default=list(True, 100))
|
||||
calibration_status = preset_param(default=list(True, 65))
|
||||
mode = preset_param(default=list(True, 100))
|
||||
selfcheck = preset_param(default=list(True, 65))
|
||||
current_position = preset_param(default=list(True, 250))
|
||||
start_position = preset_param(default=list(True, 150))
|
||||
last_task = preset_param(default=list(True, 250))
|
||||
time_delta = preset_param(default=list(True, 100))
|
||||
start_position = preset_param(default=list(True, 240))
|
||||
last_task = preset_param(default=list(True, 275))
|
||||
time_delta = preset_param(default=list(True, 70))
|
||||
[[[__many__]]]
|
||||
__many__ = preset_param
|
||||
|
||||
|
||||
@@ -226,8 +226,8 @@ class CopterTableWidget(QTableView):
|
||||
@pyqtSlot(QtCore.QPoint)
|
||||
def open_menu(self, point):
|
||||
menu = QMenu(self)
|
||||
index = self.indexAt(point)
|
||||
item = self.model.get_row_data(index)
|
||||
id = self.indexAt(point).siblingAtColumn(0).data()
|
||||
item = self.model.get_row_by_attr('copter_id', id)
|
||||
|
||||
edit_config = QAction("Edit config")
|
||||
edit_config.triggered.connect(partial(self.edit_copter_config, item))
|
||||
|
||||
@@ -81,16 +81,19 @@ class ModelChecks:
|
||||
def check_ver(item):
|
||||
if not ModelChecks.check_git:
|
||||
return True
|
||||
|
||||
|
||||
version = get_git_version()
|
||||
if version is not None:
|
||||
return version == item
|
||||
return True
|
||||
|
||||
|
||||
@ModelChecks.column_check("animation_id")
|
||||
@ModelChecks.column_check("animation_info")
|
||||
def check_anim(item):
|
||||
return str(item) != 'No animation'
|
||||
if item:
|
||||
return str(item[1]) == 'OK'
|
||||
else:
|
||||
return False
|
||||
|
||||
|
||||
@ModelChecks.column_check("battery")
|
||||
@@ -142,6 +145,10 @@ def check_time_delta(item):
|
||||
@ModelChecks.column_check("start_position", pass_context=True)
|
||||
def check_start_pos(item, context):
|
||||
|
||||
if len(item) == 6:
|
||||
if not item[4] in ["takeoff", "fly"]:
|
||||
return False
|
||||
|
||||
if ModelChecks.start_pos_delta_max == 0:
|
||||
return True
|
||||
|
||||
@@ -150,6 +157,7 @@ def check_start_pos(item, context):
|
||||
|
||||
delta = get_distance(get_position(context.current_position),
|
||||
get_position(context.start_position))
|
||||
|
||||
if math.isnan(delta):
|
||||
return False
|
||||
|
||||
@@ -157,7 +165,7 @@ def check_start_pos(item, context):
|
||||
|
||||
|
||||
def get_position(position):
|
||||
if position != 'NO_POS' and position[0] != 'nan': # float('nan')?
|
||||
if not isinstance(position, str) and position[0] != float('nan'):
|
||||
return position[:3]
|
||||
return [float('nan')] * 3
|
||||
|
||||
@@ -276,6 +284,17 @@ def place_id(value):
|
||||
msgbox.exec_()
|
||||
return None
|
||||
|
||||
@ModelFormatter.view_formatter("animation_info")
|
||||
def view_animation_info(value):
|
||||
try:
|
||||
id, state = value
|
||||
except ValueError:
|
||||
return ""
|
||||
else:
|
||||
if state == 'OK':
|
||||
return id
|
||||
else:
|
||||
return state
|
||||
|
||||
@ModelFormatter.place_formatter("battery")
|
||||
def place_battery(value):
|
||||
@@ -307,15 +326,18 @@ def view_selfcheck(value):
|
||||
def view_current_position(value):
|
||||
if isinstance(value, list):
|
||||
x, y, z, yaw, frame = value
|
||||
return f"{x: .2f} {y: .2f} {z: .2f} {int(yaw): d} {frame}"
|
||||
return f"{x: .2f} {y: .2f} {z: .2f} {yaw: .0f} {frame}"
|
||||
return value
|
||||
|
||||
|
||||
@ModelFormatter.view_formatter("start_position")
|
||||
def view_start_position(value):
|
||||
if isinstance(value, list):
|
||||
x, y, z = value
|
||||
return f"{x: .2f} {y: .2f} {z: .2f}"
|
||||
x, y, z, yaw, action, delay = value
|
||||
if action in ['fly', 'takeoff']:
|
||||
return f"{x: .2f} {y: .2f} {z: .2f} {yaw: .0f} {action} {delay: .1f}"
|
||||
else:
|
||||
return f"{action}"
|
||||
return value
|
||||
|
||||
|
||||
@@ -340,14 +362,14 @@ class CopterDataModel(QtCore.QAbstractTableModel):
|
||||
columns_dict = {'copter_id': 'copter ID',
|
||||
'git_version': 'version',
|
||||
'config_version': 'configuration',
|
||||
'animation_id': ' animation ID ',
|
||||
'animation_info': 'animation ID',
|
||||
'battery': ' battery ',
|
||||
'fcu_status': 'FCU status',
|
||||
'calibration_status': 'sensors',
|
||||
'mode': ' mode ',
|
||||
'selfcheck': ' checks ',
|
||||
'current_position': 'current x y z yaw frame_id',
|
||||
'start_position': ' start x y z ',
|
||||
'start_position': 'start x y z yaw action delay',
|
||||
'last_task': 'last task',
|
||||
'time_delta': 'dt',
|
||||
}
|
||||
|
||||
@@ -13,7 +13,7 @@ from PyQt5 import QtCore, QtGui, QtWidgets
|
||||
class Ui_MainWindow(object):
|
||||
def setupUi(self, MainWindow):
|
||||
MainWindow.setObjectName("MainWindow")
|
||||
MainWindow.resize(1360, 816)
|
||||
MainWindow.resize(1360, 869)
|
||||
self.centralwidget = QtWidgets.QWidget(MainWindow)
|
||||
self.centralwidget.setEnabled(True)
|
||||
self.centralwidget.setObjectName("centralwidget")
|
||||
@@ -44,30 +44,22 @@ class Ui_MainWindow(object):
|
||||
self.verticalLayout.setSizeConstraint(QtWidgets.QLayout.SetMaximumSize)
|
||||
self.verticalLayout.setObjectName("verticalLayout")
|
||||
self.formLayout = QtWidgets.QFormLayout()
|
||||
self.formLayout.setLabelAlignment(QtCore.Qt.AlignHCenter|QtCore.Qt.AlignTop)
|
||||
self.formLayout.setLabelAlignment(QtCore.Qt.AlignLeading|QtCore.Qt.AlignLeft|QtCore.Qt.AlignTop)
|
||||
self.formLayout.setFormAlignment(QtCore.Qt.AlignHCenter|QtCore.Qt.AlignTop)
|
||||
self.formLayout.setObjectName("formLayout")
|
||||
self.start_text = QtWidgets.QLabel(self.centralwidget)
|
||||
self.start_text.setLayoutDirection(QtCore.Qt.RightToLeft)
|
||||
self.start_text.setAlignment(QtCore.Qt.AlignCenter)
|
||||
self.start_text.setAlignment(QtCore.Qt.AlignLeading|QtCore.Qt.AlignLeft|QtCore.Qt.AlignVCenter)
|
||||
self.start_text.setObjectName("start_text")
|
||||
self.formLayout.setWidget(0, QtWidgets.QFormLayout.LabelRole, self.start_text)
|
||||
self.start_delay_spin = QtWidgets.QSpinBox(self.centralwidget)
|
||||
self.start_delay_spin.setObjectName("start_delay_spin")
|
||||
self.formLayout.setWidget(0, QtWidgets.QFormLayout.FieldRole, self.start_delay_spin)
|
||||
self.music_text = QtWidgets.QLabel(self.centralwidget)
|
||||
self.music_text.setLayoutDirection(QtCore.Qt.RightToLeft)
|
||||
self.music_text.setObjectName("music_text")
|
||||
self.formLayout.setWidget(1, QtWidgets.QFormLayout.LabelRole, self.music_text)
|
||||
self.music_delay_spin = QtWidgets.QDoubleSpinBox(self.centralwidget)
|
||||
self.music_delay_spin.setDecimals(1)
|
||||
self.music_delay_spin.setMaximum(1000.0)
|
||||
self.music_delay_spin.setObjectName("music_delay_spin")
|
||||
self.formLayout.setWidget(1, QtWidgets.QFormLayout.FieldRole, self.music_delay_spin)
|
||||
self.music_play_text = QtWidgets.QLabel(self.centralwidget)
|
||||
self.music_play_text.setLayoutDirection(QtCore.Qt.RightToLeft)
|
||||
self.music_play_text.setObjectName("music_play_text")
|
||||
self.formLayout.setWidget(2, QtWidgets.QFormLayout.LabelRole, self.music_play_text)
|
||||
self.music_checkbox = QtWidgets.QCheckBox(self.centralwidget)
|
||||
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Fixed)
|
||||
sizePolicy.setHorizontalStretch(0)
|
||||
@@ -82,6 +74,14 @@ class Ui_MainWindow(object):
|
||||
self.music_checkbox.setChecked(False)
|
||||
self.music_checkbox.setObjectName("music_checkbox")
|
||||
self.formLayout.setWidget(2, QtWidgets.QFormLayout.FieldRole, self.music_checkbox)
|
||||
self.music_text = QtWidgets.QLabel(self.centralwidget)
|
||||
self.music_text.setLayoutDirection(QtCore.Qt.RightToLeft)
|
||||
self.music_text.setObjectName("music_text")
|
||||
self.formLayout.setWidget(1, QtWidgets.QFormLayout.LabelRole, self.music_text)
|
||||
self.music_play_text = QtWidgets.QLabel(self.centralwidget)
|
||||
self.music_play_text.setLayoutDirection(QtCore.Qt.RightToLeft)
|
||||
self.music_play_text.setObjectName("music_play_text")
|
||||
self.formLayout.setWidget(2, QtWidgets.QFormLayout.LabelRole, self.music_play_text)
|
||||
self.verticalLayout.addLayout(self.formLayout)
|
||||
self.line = QtWidgets.QFrame(self.centralwidget)
|
||||
self.line.setFrameShape(QtWidgets.QFrame.HLine)
|
||||
@@ -212,7 +212,7 @@ class Ui_MainWindow(object):
|
||||
self.gridLayout.addLayout(self.horizontalLayout, 0, 0, 1, 1)
|
||||
MainWindow.setCentralWidget(self.centralwidget)
|
||||
self.menubar = QtWidgets.QMenuBar(MainWindow)
|
||||
self.menubar.setGeometry(QtCore.QRect(0, 0, 1360, 25))
|
||||
self.menubar.setGeometry(QtCore.QRect(0, 0, 1360, 22))
|
||||
self.menubar.setObjectName("menubar")
|
||||
self.menuOptions = QtWidgets.QMenu(self.menubar)
|
||||
self.menuOptions.setObjectName("menuOptions")
|
||||
@@ -301,6 +301,8 @@ class Ui_MainWindow(object):
|
||||
self.action_configure_columns.setObjectName("action_configure_columns")
|
||||
self.actionSomething = QtWidgets.QAction(MainWindow)
|
||||
self.actionSomething.setObjectName("actionSomething")
|
||||
self.action_send_animation = QtWidgets.QAction(MainWindow)
|
||||
self.action_send_animation.setObjectName("action_send_animation")
|
||||
self.menuMusic_2.addAction(self.action_select_music_file)
|
||||
self.menuMusic_2.addAction(self.action_play_music)
|
||||
self.menuMusic_2.addAction(self.action_stop_music)
|
||||
@@ -319,10 +321,12 @@ class Ui_MainWindow(object):
|
||||
self.menuTable.addSeparator()
|
||||
self.menuTable.addAction(self.action_configure_columns)
|
||||
self.menuSend.addAction(self.action_send_animations)
|
||||
self.menuSend.addAction(self.action_send_calibrations)
|
||||
self.menuSend.addSeparator()
|
||||
self.menuSend.addAction(self.action_send_aruco_map)
|
||||
self.menuSend.addAction(self.action_send_animation)
|
||||
self.menuSend.addAction(self.action_send_configurations)
|
||||
self.menuSend.addAction(self.action_send_launch_file)
|
||||
self.menuSend.addAction(self.action_send_aruco_map)
|
||||
self.menuSend.addAction(self.action_send_calibrations)
|
||||
self.menuSend.addAction(self.action_send_fcu_parameters)
|
||||
self.menuSend.addSeparator()
|
||||
self.menuSend.addAction(self.action_send_any_file)
|
||||
@@ -357,8 +361,8 @@ class Ui_MainWindow(object):
|
||||
MainWindow.setWindowTitle(_translate("MainWindow", "Clever Drone Show"))
|
||||
self.start_text.setText(_translate("MainWindow", " Start after"))
|
||||
self.start_delay_spin.setSuffix(_translate("MainWindow", " s"))
|
||||
self.music_text.setText(_translate("MainWindow", " Music after"))
|
||||
self.music_delay_spin.setSuffix(_translate("MainWindow", " s"))
|
||||
self.music_text.setText(_translate("MainWindow", " Music after"))
|
||||
self.music_play_text.setText(_translate("MainWindow", " Play music"))
|
||||
self.check_button.setText(_translate("MainWindow", "Preflight check"))
|
||||
self.start_button.setText(_translate("MainWindow", "Start animation"))
|
||||
@@ -389,7 +393,7 @@ class Ui_MainWindow(object):
|
||||
self.action_send_aruco_map.setText(_translate("MainWindow", "Aruco map"))
|
||||
self.action_update_client_repo.setText(_translate("MainWindow", "Update clever-show git"))
|
||||
self.actionSend_launch_file_for_clever.setText(_translate("MainWindow", "Send launch file for clever"))
|
||||
self.action_send_launch_file.setText(_translate("MainWindow", "Launch files"))
|
||||
self.action_send_launch_file.setText(_translate("MainWindow", "Launch files folder"))
|
||||
self.action_restart_clever.setText(_translate("MainWindow", "clever"))
|
||||
self.action_restart_clever_show.setText(_translate("MainWindow", "clever-show"))
|
||||
self.action_select_all_rows.setText(_translate("MainWindow", "Select all drones"))
|
||||
@@ -410,7 +414,7 @@ class Ui_MainWindow(object):
|
||||
self.action_send_calibrations.setText(_translate("MainWindow", "Camera calibrations"))
|
||||
self.action_reboot_all.setText(_translate("MainWindow", "Reboot"))
|
||||
self.action_restart_chrony.setText(_translate("MainWindow", "chrony"))
|
||||
self.action_send_fcu_parameters.setText(_translate("MainWindow", "FCU parameters"))
|
||||
self.action_send_fcu_parameters.setText(_translate("MainWindow", "FCU parameters file"))
|
||||
self.action_toggle_select.setText(_translate("MainWindow", "Toggle select"))
|
||||
self.action_toggle_select.setShortcut(_translate("MainWindow", "Ctrl+A"))
|
||||
self.action_select_all.setText(_translate("MainWindow", "Select all"))
|
||||
@@ -424,3 +428,4 @@ class Ui_MainWindow(object):
|
||||
self.action_restart_server.setText(_translate("MainWindow", "Restart server"))
|
||||
self.action_configure_columns.setText(_translate("MainWindow", "Configure columns"))
|
||||
self.actionSomething.setText(_translate("MainWindow", "something"))
|
||||
self.action_send_animation.setText(_translate("MainWindow", "Animation"))
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>1360</width>
|
||||
<height>816</height>
|
||||
<height>869</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="windowTitle">
|
||||
@@ -71,7 +71,7 @@
|
||||
<item>
|
||||
<layout class="QFormLayout" name="formLayout">
|
||||
<property name="labelAlignment">
|
||||
<set>Qt::AlignHCenter|Qt::AlignTop</set>
|
||||
<set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop</set>
|
||||
</property>
|
||||
<property name="formAlignment">
|
||||
<set>Qt::AlignHCenter|Qt::AlignTop</set>
|
||||
@@ -85,7 +85,7 @@
|
||||
<string> Start after</string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignCenter</set>
|
||||
<set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
@@ -96,16 +96,6 @@
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="0">
|
||||
<widget class="QLabel" name="music_text">
|
||||
<property name="layoutDirection">
|
||||
<enum>Qt::RightToLeft</enum>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string> Music after</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="1">
|
||||
<widget class="QDoubleSpinBox" name="music_delay_spin">
|
||||
<property name="suffix">
|
||||
@@ -119,16 +109,6 @@
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="0">
|
||||
<widget class="QLabel" name="music_play_text">
|
||||
<property name="layoutDirection">
|
||||
<enum>Qt::RightToLeft</enum>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string> Play music</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="1">
|
||||
<widget class="QCheckBox" name="music_checkbox">
|
||||
<property name="sizePolicy">
|
||||
@@ -157,6 +137,26 @@
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="0">
|
||||
<widget class="QLabel" name="music_text">
|
||||
<property name="layoutDirection">
|
||||
<enum>Qt::RightToLeft</enum>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string> Music after</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="0">
|
||||
<widget class="QLabel" name="music_play_text">
|
||||
<property name="layoutDirection">
|
||||
<enum>Qt::RightToLeft</enum>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string> Play music</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item>
|
||||
@@ -426,7 +426,7 @@
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>1360</width>
|
||||
<height>25</height>
|
||||
<height>22</height>
|
||||
</rect>
|
||||
</property>
|
||||
<widget class="QMenu" name="menuOptions">
|
||||
@@ -470,10 +470,12 @@
|
||||
<string>Send</string>
|
||||
</property>
|
||||
<addaction name="action_send_animations"/>
|
||||
<addaction name="action_send_calibrations"/>
|
||||
<addaction name="separator"/>
|
||||
<addaction name="action_send_aruco_map"/>
|
||||
<addaction name="action_send_animation"/>
|
||||
<addaction name="action_send_configurations"/>
|
||||
<addaction name="action_send_launch_file"/>
|
||||
<addaction name="action_send_aruco_map"/>
|
||||
<addaction name="action_send_calibrations"/>
|
||||
<addaction name="action_send_fcu_parameters"/>
|
||||
<addaction name="separator"/>
|
||||
<addaction name="action_send_any_file"/>
|
||||
@@ -538,7 +540,7 @@
|
||||
</action>
|
||||
<action name="action_send_launch_file">
|
||||
<property name="text">
|
||||
<string>Launch files</string>
|
||||
<string>Launch files folder</string>
|
||||
</property>
|
||||
</action>
|
||||
<action name="action_restart_clever">
|
||||
@@ -639,7 +641,7 @@
|
||||
</action>
|
||||
<action name="action_send_fcu_parameters">
|
||||
<property name="text">
|
||||
<string>FCU parameters</string>
|
||||
<string>FCU parameters file</string>
|
||||
</property>
|
||||
</action>
|
||||
<action name="action_toggle_select">
|
||||
@@ -707,6 +709,11 @@
|
||||
<string>something</string>
|
||||
</property>
|
||||
</action>
|
||||
<action name="action_send_animation">
|
||||
<property name="text">
|
||||
<string>Animation</string>
|
||||
</property>
|
||||
</action>
|
||||
</widget>
|
||||
<tabstops>
|
||||
<tabstop>start_delay_spin</tabstop>
|
||||
|
||||
@@ -112,10 +112,6 @@ class MainWindow(QtWidgets.QMainWindow):
|
||||
|
||||
self.init_model()
|
||||
|
||||
# self.statusBar = QStatusBar()
|
||||
# self.setStatusBar(self.statusBar)
|
||||
# self.statusBar.showMessage("Hey", 2000)
|
||||
|
||||
self.register_callbacks()
|
||||
self.player = QtMultimedia.QMediaPlayer()
|
||||
|
||||
@@ -161,6 +157,7 @@ class MainWindow(QtWidgets.QMainWindow):
|
||||
|
||||
self.ui.action_send_animations.triggered.connect(self.send_animations)
|
||||
self.ui.action_send_calibrations.triggered.connect(self.send_calibrations)
|
||||
self.ui.action_send_animation.triggered.connect(self.send_animation)
|
||||
self.ui.action_send_configurations.triggered.connect(self.send_config)
|
||||
self.ui.action_send_aruco_map.triggered.connect(self.send_aruco)
|
||||
self.ui.action_send_launch_file.triggered.connect(self.send_launch)
|
||||
@@ -171,7 +168,7 @@ class MainWindow(QtWidgets.QMainWindow):
|
||||
self.ui.action_retrive_any_file.triggered.connect(b_partial(self.request_any_file, client_path=None))
|
||||
|
||||
self.ui.action_restart_clever.triggered.connect(
|
||||
b_partial(self.send_to_selected, "service_restart", command_kwargs={"name": "clever"}))
|
||||
b_partial(self.send_to_selected, "service_restart", command_kwargs={"name": "clover"}))
|
||||
self.ui.action_restart_clever_show.triggered.connect(self.restart_clever_show)
|
||||
self.ui.action_restart_chrony.triggered.connect(self.restart_chrony)
|
||||
self.ui.action_reboot_all.triggered.connect(b_partial(self.send_to_selected, "reboot_all"))
|
||||
@@ -291,7 +288,7 @@ class MainWindow(QtWidgets.QMainWindow):
|
||||
try:
|
||||
col = self.model.columns.index(key)
|
||||
except ValueError:
|
||||
logging.error(f"No column {key} present!")
|
||||
logging.debug(f"No column {key} present!")
|
||||
else:
|
||||
row_data = self.model.get_row_by_attr("client", client)
|
||||
row_num = self.model.get_row_index(row_data)
|
||||
@@ -481,6 +478,10 @@ class MainWindow(QtWidgets.QMainWindow):
|
||||
self.send_directory_files("Select directory with animations", ('.csv', '.txt'), match_id=True,
|
||||
client_path="", client_filename="animation.csv")
|
||||
|
||||
@pyqtSlot()
|
||||
def send_animation(self):
|
||||
self.send_files("Select animation file", "Animation files (*.csv)", onefile=True, client_filename="animation.csv")
|
||||
|
||||
@pyqtSlot()
|
||||
def send_calibrations(self):
|
||||
self.send_directory_files("Select directory with calibrations", ('.yaml', ), match_id=True,
|
||||
@@ -646,7 +647,7 @@ if __name__ == "__main__":
|
||||
msgbox_handler.setLevel(logging.CRITICAL)
|
||||
|
||||
logging.basicConfig(
|
||||
level=logging.DEBUG,
|
||||
level=logging.INFO,
|
||||
format="%(asctime)s [%(name)-7.7s] [%(threadName)-19.19s] [%(levelname)-7.7s] %(message)s",
|
||||
handlers=[
|
||||
logging.FileHandler("server_logs/{}.log".format(now)),
|
||||
|
||||
Reference in New Issue
Block a user