UI_report_prisma.py 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. import datetime
  2. import os
  3. from PyQt6 import QtCore, QtWidgets
  4. from interfaces.clientui import Ui_MainWindow
  5. from interfaces.drctryChoice import Ui_drctryChoice
  6. from interfaces.takeFiles import Ui_takeFiles
  7. from make_report_prisma import make_report_prisma, preparing_data
  8. from exceptions import DateError
  9. from file_reader.db_file_reader import DbFileReader
  10. class UIReportPrisma32(QtWidgets.QMainWindow, Ui_MainWindow):
  11. def __init__(self):
  12. super().__init__()
  13. self.widget = QtWidgets.QWidget()
  14. """Описание работы UI приложения, связь кнопок с методами, выставление даты."""
  15. self.setupUi(self)
  16. self.runPassport.pressed.connect(self.report_on_click)
  17. self.openDirectory.pressed.connect(self.open_report_directory)
  18. self.openFileDirectory.pressed.connect(self.open_file_directory)
  19. self.dateEdit_2.setDate(QtCore.QDate(int(str(datetime.datetime.today()).split(' ')[0].split('-')[0]),
  20. int(str(datetime.datetime.today()).split(' ')[0].split('-')[1]),
  21. int(str(datetime.datetime.today()).split(' ')[0].split('-')[2])))
  22. self.dateEdit_2.setDisplayFormat("dd.MM.yyyy")
  23. self.dateEdit.setDate(QtCore.QDate(int(str(datetime.datetime.today()).split(' ')[0].split('-')[0]), 1, 1))
  24. self.dateEdit.setDisplayFormat("dd.MM.yyyy")
  25. def open_file_directory(self):
  26. """Описание работы всплывающей формы проводника с выбором папки с файлами ПРИЗМА.
  27. Производится запись в 2 файла -> 2 кластера, чтобы данные о папке сохранялись в отрыве от работы программы"""
  28. ui_file_drctry = Ui_takeFiles()
  29. ui_file_drctry.setupUi(self.widget)
  30. """Чтение пути папки с файлами ПРИЗМА"""
  31. try:
  32. with open('path_prisma_1cl_files.txt', 'r') as f:
  33. ui_file_drctry.lineEdit.setText(f.read())
  34. except FileNotFoundError:
  35. ui_file_drctry.lineEdit.setText("")
  36. try:
  37. with open('path_prisma_2cl_files.txt', 'r') as f2:
  38. ui_file_drctry.lineEdit_2.setText(f2.read())
  39. except FileNotFoundError:
  40. ui_file_drctry.lineEdit_2.setText("")
  41. """Запись в файл пути папки с файлами ПРИЗМА"""
  42. ui_file_drctry.pushButton.clicked.connect(
  43. lambda: Ui_takeFiles.get_file_directory(ui_file_drctry, 'path_prisma_1cl_files'))
  44. ui_file_drctry.pushButton_2.clicked.connect(
  45. lambda: Ui_takeFiles.get_file_directory(ui_file_drctry, 'path_prisma_2cl_files'))
  46. self.widget.show()
  47. def open_report_directory(self):
  48. """Описание работы всплывающей формы проводника с выбором папки сохранения справки о работе установки,
  49. картинок, файлов и т.д."""
  50. ui_report_drctry = Ui_drctryChoice()
  51. ui_report_drctry.setupUi(self.widget)
  52. ui_report_drctry.pushButton.clicked.connect(lambda: Ui_drctryChoice.get_report_directory(ui_report_drctry))
  53. try:
  54. with open('path_prisma_report.txt', 'r') as f:
  55. ui_report_drctry.lineEdit.setText(f.read())
  56. except FileNotFoundError:
  57. ui_report_drctry.lineEdit.setText("")
  58. self.widget.show()
  59. def report_on_click(self):
  60. """Метод, описывающий получение паспорта с помощью данных UI"""
  61. start_date = self.dateEdit.date().toPyDate()
  62. end_date = self.dateEdit_2.date().toPyDate()
  63. try:
  64. if start_date > end_date:
  65. raise DateError(start_date, end_date)
  66. with open('path_prisma_report.txt', 'r') as f:
  67. report_path = f.read()
  68. picture_path = report_path + '/Pics' + f'/{start_date.year}'
  69. with open('path_prisma_1cl_files.txt', 'r') as f:
  70. path_to_files_1 = f.read()
  71. with open('path_prisma_2cl_files.txt', 'r') as f:
  72. path_to_files_2 = f.read()
  73. if ~os.path.exists(picture_path):
  74. try:
  75. os.mkdir(picture_path)
  76. except OSError:
  77. print(f"Создать директорию {picture_path} не удалось")
  78. else:
  79. print(f"Успешно создана директория {picture_path}")
  80. # concat_n_df_1, concat_n_df_2 = DbFileReader.db_preparing_data(start_date=start_date,
  81. # end_date=end_date,
  82. # path_to_db="mongodb://localhost:27017/")
  83. concat_n_df_1, concat_n_df_2 = preparing_data(start_date=start_date,
  84. end_date=end_date,
  85. path_to_files_1=path_to_files_1,
  86. path_to_files_2=path_to_files_2)
  87. make_report_prisma(start_date=start_date, end_date=end_date, report_path=report_path,
  88. picture_path=picture_path, concat_n_df_1=concat_n_df_1, concat_n_df_2=concat_n_df_2)
  89. except PermissionError:
  90. print("Закройте предыдущую версию файла!")
  91. except DateError:
  92. DateError(start_date, end_date).ui_output_error()
  93. # запуск основного окна
  94. app = QtWidgets.QApplication([])
  95. window = UIReportPrisma32()
  96. window.show()
  97. app.exec()