def updating_function(): properties = PropertyManager() database = DatabaseManager() opc = OPCManager(properties.get_property('opc_name')) email_manager = EmailManager(properties.get_property('email'), properties.get_property('password'), properties.get_property('server')) flowmeters = database.get_all_flowmeters() for flowmeter in flowmeters: flowmeter = email_manager.update_flowmeter(flowmeter) opc.update_flowmeter_in_opc(flowmeter) database.update_flowmeter(flowmeter) sleep(float(properties.get_property('interval')))
async def db_manager(): db_conn_url = DatabaseURL(settings.DATABASE_CONNECTION_URL + '_test') database_manager = DatabaseManager(db_conn_url, force_rollback=True) _url = str(db_conn_url).split('/') _url_str = DatabaseURL('/'.join(_url[:-1] + ['template1'])) try: conn = await asyncpg.connect(str(db_conn_url)) print('DB exists') except asyncpg.InvalidCatalogNameError: print('DB doesn\'t exist. Creating new one.') # db_conn_url.components.path = 'template1' conn = await asyncpg.connect(str(_url_str)) await conn.execute(F'create database {db_conn_url.database} ' F'owner "{db_conn_url.username}"') with patch.object( settings, 'DATABASE_CONNECTION_URL', str(db_conn_url), ): alembicArgs = [ '--raiseerr', '-c', 'alembic.ini', 'upgrade', 'head', ] loop = asyncio.get_running_loop() await loop.run_in_executor( executor, lambda: alembic.config.main(argv=alembicArgs)) await database_manager.connect() yield database_manager await database_manager.disconnect() await conn.close() conn = await asyncpg.connect(str(_url_str)) if not os.environ.get('KEEP_TEST_DB'): try: await conn.execute(F'drop database {db_conn_url.database}') print('DB deleted') except asyncpg.exceptions.ObjectInUseError: print('DB likely opened in your IDE. Delete manually') await conn.close()
def user_info(): with DatabaseManager() as db: users = user.get_users(db.conn) return jsonify(users)
def delete_table_data(): with DatabaseManager() as db: book.delete_sample_data(db.conn) return jsonify({'status': 'success'})
def create_sample_data(): with DatabaseManager() as db: book.insert_sample_data(db.conn) return jsonify({'status': 'success'})
def fetch_books_tree(): with DatabaseManager() as db: books_tree = tree.read(db.conn) return jsonify(books_tree)
def __init__(self) -> None: super().__init__() self.__another_window_flag = False self.__database = DatabaseManager()
class Ui_MainWindow(object): def __init__(self) -> None: super().__init__() self.__another_window_flag = False self.__database = DatabaseManager() def setupUi(self, MainWindow): MainWindow.setObjectName("MainWindow") icon = QtGui.QIcon() icon.addPixmap(QtGui.QPixmap("view\\ico\\Klukeart-Cubes-Box-21-Water-Diamond.ico"), QtGui.QIcon.Normal, QtGui.QIcon.Off) MainWindow.setWindowIcon(icon) MainWindow.setToolButtonStyle(QtCore.Qt.ToolButtonIconOnly) MainWindow.setFixedSize(QtCore.QSize(1500, 550)) self.centralwidget = QtWidgets.QWidget(MainWindow) self.centralwidget.setObjectName("centralwidget") self.groupBox = QtWidgets.QGroupBox(self.centralwidget) self.groupBox.setGeometry(QtCore.QRect(20, 10, 1461, 491)) self.groupBox.setObjectName("groupBox") self.tableWidget = QtWidgets.QTableWidget(self.groupBox) self.tableWidget.setGeometry(QtCore.QRect(5, 21, 1451, 461)) self.tableWidget.setMinimumSize(QtCore.QSize(1451, 461)) self.tableWidget.setMaximumSize(QtCore.QSize(1451, 461)) self.tableWidget.setObjectName("tableWidget") self.tableWidget.setColumnCount(13) self.tableWidget.setRowCount(0) item = QtWidgets.QTableWidgetItem() self.tableWidget.setHorizontalHeaderItem(0, item) item = QtWidgets.QTableWidgetItem() self.tableWidget.setHorizontalHeaderItem(1, item) item = QtWidgets.QTableWidgetItem() self.tableWidget.setHorizontalHeaderItem(2, item) item = QtWidgets.QTableWidgetItem() self.tableWidget.setHorizontalHeaderItem(3, item) item = QtWidgets.QTableWidgetItem() self.tableWidget.setHorizontalHeaderItem(4, item) item = QtWidgets.QTableWidgetItem() self.tableWidget.setHorizontalHeaderItem(5, item) item = QtWidgets.QTableWidgetItem() self.tableWidget.setHorizontalHeaderItem(6, item) item = QtWidgets.QTableWidgetItem() self.tableWidget.setHorizontalHeaderItem(7, item) item = QtWidgets.QTableWidgetItem() self.tableWidget.setHorizontalHeaderItem(8, item) item = QtWidgets.QTableWidgetItem() self.tableWidget.setHorizontalHeaderItem(9, item) item = QtWidgets.QTableWidgetItem() self.tableWidget.setHorizontalHeaderItem(10, item) item = QtWidgets.QTableWidgetItem() self.tableWidget.setHorizontalHeaderItem(11, item) item = QtWidgets.QTableWidgetItem() self.tableWidget.setHorizontalHeaderItem(12, item) MainWindow.setCentralWidget(self.centralwidget) self.menubar = QtWidgets.QMenuBar(MainWindow) self.menubar.setGeometry(QtCore.QRect(0, 0, 1512, 26)) self.menubar.setObjectName("menubar") self.menu = QtWidgets.QMenu(self.menubar) self.menu.setObjectName("menu") self.menu_2 = QtWidgets.QMenu(self.menu) self.menu_2.setObjectName("menu_2") self.menu_3 = QtWidgets.QMenu(self.menu) self.menu_3.setObjectName("menu_3") MainWindow.setMenuBar(self.menubar) self.statusbar = QtWidgets.QStatusBar(MainWindow) self.statusbar.setObjectName("statusbar") MainWindow.setStatusBar(self.statusbar) self.properties_connection = QtWidgets.QAction(MainWindow) self.properties_connection.setObjectName("properties_connection") self.properties_connection.triggered.connect(self.__connection_dialog) self.properties_program = QtWidgets.QAction(MainWindow) self.properties_program.setObjectName("properties_program") self.properties_program.triggered.connect(self.__properties_dialog) self.properties_router = QtWidgets.QAction(MainWindow) self.properties_router.setObjectName("properties_program") self.properties_router.triggered.connect(self.__router_dialog) self.add_flow = QtWidgets.QAction(MainWindow) self.add_flow.setObjectName("add_flow") self.remove_flow = QtWidgets.QAction(MainWindow) self.add_flow.triggered.connect(self.__add_flowmeter) self.remove_flow.setObjectName("remove_flow") self.update_flow = QtWidgets.QAction(MainWindow) self.update_flow.setObjectName("update_flow") self.menu_2.addAction(self.properties_connection) self.menu_2.addAction(self.properties_program) self.menu_2.addAction(self.properties_router) self.menu_3.addAction(self.add_flow) self.menu_3.addAction(self.remove_flow) self.menu_3.addAction(self.update_flow) self.menu.addAction(self.menu_2.menuAction()) self.menu.addAction(self.menu_3.menuAction()) self.menubar.addAction(self.menu.menuAction()) self.retranslateUi(MainWindow) QtCore.QMetaObject.connectSlotsByName(MainWindow) def retranslateUi(self, MainWindow): _translate = QtCore.QCoreApplication.translate MainWindow.setWindowTitle(_translate("MainWindow", "Менеджер Данных Mag 8000")) self.groupBox.setTitle(_translate("MainWindow", "База Расходомеров")) item = self.tableWidget.horizontalHeaderItem(0) item.setText(_translate("MainWindow", "ID")) item = self.tableWidget.horizontalHeaderItem(1) item.setText(_translate("MainWindow", "Имя")) item = self.tableWidget.horizontalHeaderItem(2) item.setText(_translate("MainWindow", "Почта")) item = self.tableWidget.horizontalHeaderItem(3) item.setText(_translate("MainWindow", "Телефон")) item = self.tableWidget.horizontalHeaderItem(4) item.setText(_translate("MainWindow", "Текущий расход")) item = self.tableWidget.horizontalHeaderItem(5) item.setText(_translate("MainWindow", "Ед.")) item = self.tableWidget.horizontalHeaderItem(6) item.setText(_translate("MainWindow", "Накопленый 1")) item = self.tableWidget.horizontalHeaderItem(7) item.setText(_translate("MainWindow", "Накопленый 2")) item = self.tableWidget.horizontalHeaderItem(8) item.setText(_translate("MainWindow", "Накопленый 3")) item = self.tableWidget.horizontalHeaderItem(9) item.setText(_translate("MainWindow", "Ед.")) item = self.tableWidget.horizontalHeaderItem(10) item.setText(_translate("MainWindow", "Заряд Батареи")) item = self.tableWidget.horizontalHeaderItem(11) item.setText(_translate("MainWindow", "Обновление")) item = self.tableWidget.horizontalHeaderItem(12) item.setText(_translate("MainWindow", "Ошибки")) self.menu.setTitle(_translate("MainWindow", "Файл")) self.menu_2.setTitle(_translate("MainWindow", "Настройки")) self.menu_3.setTitle(_translate("MainWindow", "Расходомер")) self.properties_connection.setText(_translate("MainWindow", "Почта")) self.properties_program.setText(_translate("MainWindow", "Программа")) self.properties_router.setText(_translate("MainWindow", "Роутер")) self.add_flow.setText(_translate("MainWindow", "Добавить")) self.remove_flow.setText(_translate("MainWindow", "Убрать")) self.update_flow.setText(_translate("MainWindow", "Изменить")) self.__infill_table() def __infill_table(self): row = 0 self.tableWidget.setRowCount(row) for flowmeter in self.__database.get_all_flowmeters(): self.tableWidget.insertRow(row) self.tableWidget.setItem(row, 0, QTableWidgetItem(str(flowmeter.unique_id))) self.tableWidget.setItem(row, 1, QTableWidgetItem(flowmeter.name)) self.tableWidget.setItem(row, 2, QTableWidgetItem(flowmeter.email)) self.tableWidget.setItem(row, 3, QTableWidgetItem(flowmeter.phone_number)) self.tableWidget.setItem(row, 4, QTableWidgetItem(str(flowmeter.current_flow))) self.tableWidget.setItem(row, 5, QTableWidgetItem(flowmeter.current_flow_units)) self.tableWidget.setItem(row, 6, QTableWidgetItem(str(flowmeter.totalizer1))) self.tableWidget.setItem(row, 7, QTableWidgetItem(str(flowmeter.totalizer2))) self.tableWidget.setItem(row, 8, QTableWidgetItem(str(flowmeter.totalizer3))) self.tableWidget.setItem(row, 9, QTableWidgetItem(flowmeter.totalizer_units)) self.tableWidget.setItem(row, 10, QTableWidgetItem(str(flowmeter.battery_capacity))) self.tableWidget.setItem(row, 11, QTableWidgetItem(flowmeter.last_update.strftime('%Y-%m-%d %H:%M:%S'))) self.tableWidget.setItem(row, 12, QTableWidgetItem(flowmeter.alarms)) row += 1 @another_window def __connection_dialog(self): dialog = QtWidgets.QDialog() ui = DialogConnection() ui.setupUi(dialog) dialog.show() dialog.exec_() @another_window def __properties_dialog(self): dialog = QtWidgets.QDialog() ui = DialogProgramSettings() ui.setupUi(dialog) dialog.show() dialog.exec_() @another_window def __router_dialog(self): dialog = QtWidgets.QDialog() ui = DialogRouter() ui.setupUi(dialog) dialog.show() dialog.exec_() @another_window def __add_flowmeter(self): dialog = QtWidgets.QDialog() ui = DialogAddFlowmeter() ui.setupUi(dialog) dialog.show() dialog.exec_()
def __generate_properties(self): database = DatabaseManager() create_matrikon_opc_config(database.get_all_flowmeters())