def write(self): """Заносим выбранную пользователем дату в переменную data, и записываем дату и название заметки в главное окно""" data = self.calendarWidget.selectedDate() day = data.day() month = data.month() year = data.year() data = datetime(year=year, month=month, day=day) text = self.NoteText.text().strip() # Добавляем эту заметку в базу данных notes try: cur.execute("INSERT INTO notes VALUES(NULL, ?, ?, ?, ?)", ( data.strftime('%Y'), data.strftime('%m'), data.strftime('%d'), text, )).fetchall() con.commit() # Добавляем заметку в главное окно self.mainWindow.listWidget.addItem( data.strftime('%d.%m.%Y') + ' - ' + text + '\n') self.close() except Exception: create_message_window( self, 'Заметка под таким названием уже существует') self.close()
def clear_event(self): """Удаляет выбранный ивент""" try: start, end = get_start_and_end(self.EventView.currentItem().text()) except AttributeError: create_message_window(self, 'Событие не выбрано') return cur.execute('''DELETE FROM events WHERE start_hour = ? and start_minute = ? and end_hour = ? and end_minute = ? and day = ?''', (*start, *end, self.day_n)) con.commit() self.EventView.takeItem(self.EventView.currentRow()) self.event_description.setText('')
def edit_event(self): """Редактирует выбранный ивент""" try: name = self.EventView.currentItem().text().split('-')[1].strip() start, end = get_start_and_end(self.EventView.currentItem().text()) text = self.get_description(start, end) except AttributeError: create_message_window(self, 'Событие не выбрано') return dialog = EventDialog(self, edit=True) dialog.event_name.setText(name) dialog.event_text.setText(text) dialog.event_start.setTime(QTime(*start)) dialog.event_end.setTime(QTime(*end)) dialog.exec()
def create_event(self, start, end, name, event_text): """Создает ивент в EventView""" time = [start.hour, start.minute, end.hour, end.minute] t = [str(i).rjust(2, '0') for i in time] text = 'c {}:{} по {}:{} - {}'.format(*t, name) # проверка что введенный интервал времение не пересекается с временем других ивентов if self.is_normal_events(start, end): try: cur.execute('''INSERT INTO events VALUES(NULL, ?, ?, ?, ?, ?, ?, ?)''', (self.mainwindow.day_n, *time, name, event_text)) con.commit() except Exception as e: print(e) self.mainwindow.EventView.addItem(text) return True else: create_message_window(self, 'Введите другой инервал времни')
def clear_event(self): """При удалении какого либо элемента, мы делаем проверку на то, выбран ли элемент""" if self.listWidget.currentRow() == -1: # Если элемент не выбран: мы выводим окно с надписью: 'Не выбран элемент' create_message_window(self, 'Не выбран элемент') else: # Если же элемент для удаления выбран: text = self.listWidget.currentItem().text() data, name = text[:10], text[13:].strip() day, month, year = list(map(int, data.split('.'))) # Удаляем его из нашей базы данных arr = cur.execute("DELETE FROM notes WHERE (year LIKE ? AND month LIKE ?" " AND day LIKE ? AND name LIKE ?)", (int(year), int(month), int(day), name,)).fetchall() con.commit() # А также из списка заметок self.listWidget.takeItem(self.listWidget.currentRow())
def load_excel_in_week(window, day=None): """Загружает информацию из таблицы excel в таблицу events из БД""" file_name = QFileDialog.getOpenFileName(window, 'Выберите таблицу', '', '(*.xlsx)')[0] try: workbook = xlrd.open_workbook(file_name) except FileNotFoundError: return days = workbook.sheet_names() if day: days = [day] for day in days: try: day_n = get_number_day(day) worksheet = workbook.sheet_by_name(day) data = get_data_from_worksheet(worksheet) cur.execute('''DELETE FROM events WHERE day = ?''', (day_n, )) load_data_in_list_widget(data, day_n) except xlrd.biffh.XLRDError: pass except TypeError as e: print(e) create_message_window(window, 'Ошибка чтения таблицы') create_message_window(window, 'Таблица загружена')
def create_excel(window, days): """Создаем таблицу из наших ивентов""" # выбор названия файла file_name, ok_pressed = QInputDialog.getText( window, "Название файла", "Введите желаемое название файла") # если название файла не введено то ничего не делаем # получаем путь папки куда сохранить файл if not ok_pressed or not file_name: return folder_way = QFileDialog.getExistingDirectory(window) if not folder_way: return # сохраняем сгенерированную таблицу в указанную папку try: workbook = xlsxwriter.Workbook(f'{folder_way}/{file_name}.xlsx') except FileNotFoundError: return for day in days: worksheet = workbook.add_worksheet(day) day_n = get_number_day(day) # вносим данные в таблицу give_info_in_table(worksheet, day_n) create_message_window(window, 'Таблица создана') workbook.close()