def itemClicked(self, index): task: Task = self.model.itemFromIndex(index).data() self.selected_task = task checked = self.model.itemFromIndex(index).checkState() if not checked: self.dialog = dialog.Display_dialog() self.dialog.setupUi(self.dialog, task.topic) self.dialog.show() self.start_date = QDate.fromString( task.start_at.strftime("%d/%m/%Y"), 'dd/MM/yyyy') self.end_date = QDate.fromString(task.end_at.strftime("%d/%m/%Y"), 'dd/MM/yyyy') self.start_time = QTime.fromString( task.start_at.strftime("%H:%M:%S"), 'hh:mm:ss') self.end_time = QTime.fromString(task.end_at.strftime("%H:%M:%S"), 'hh:mm:ss') self.topic = task.topic self.location = task.location self.desc = task.description self.dialog.title.setText(self.topic) self.dialog.location.setText(self.location) self.dialog.from_dateEdit.setDate(self.start_date) self.dialog.to_dateEdit.setDate(self.end_date) self.dialog.textEdit_desc.setText(self.desc) self.dialog.timeEdit.setTime(self.start_time) self.dialog.to_timeEdit.setTime(self.end_time) self.dialog.edit_btn.clicked.connect(self.edit_dialog) else: details = task.get_detail() details['status'] = True self.system.update_task(task.id, details)
def from_string(self, text, original_value): if isinstance(original_value, QColor): match = self.color_exp.match(text) return QColor(min(int(match.captured(1)), 255), min(int(match.captured(2)), 255), min(int(match.captured(3)), 255), min(int(match.captured(4)), 255)) if isinstance(original_value, QDate): value = QDate.fromString(text, Qt.ISODate) return value if value.isValid() else None if isinstance(original_value, QDateTime): value = QDateTime.fromString(text, Qt.ISODate) return value if value.isValid() else None if isinstance(original_value, QTime): value = QTime.fromString(text, Qt.ISODate) return value if value.isValid() else None if isinstance(original_value, QPoint): match = self.point_exp.match(text) return QPoint(int(match.captured(1)), int(match.captured(2))) if isinstance(original_value, QRect): match = self.rect_exp.match(text) return QRect(int(match.captured(1)), int(match.captured(2)), int(match.captured(3)), int(match.captured(4))) if isinstance(original_value, QSize): match = self.size_exp.match(text) return QSize(int(match.captured(1)), int(match.captured(2))) if isinstance(original_value, list): return text.split(',') return type(original_value)(text)
def convert_simple_dats_filter_to_query_format(a_filter): """ Convert a human readable filter to a machine friendly one. Example of input filter: ['Departs', 'Earth', 'On', '01-05-2020'] """ # TODO: Warning! if-else labyrinth following... Not efficient but not needed at this stage. action = a_filter[0] planet = a_filter[1] # No importa, the calling function knows if the spc is departing/arriving to/from Earth/Mars. operator = a_filter[2] date = a_filter[3] # Convert action to query format (e.g. the table column's name). if action == 'Departs': action = 'DepDates' elif action == 'Arrives': action = 'ArrivDates' # Convert planet to query format. pass # Convert operator to query format. if operator == 'On': operator = '==' elif operator == 'Before': operator = '<=' elif operator == 'After': operator = '>=' # Convert date to query format. date = QDate.toJulianDay(QDate.fromString(date, 'dd-MM-yyyy')) return [action, planet, operator, date]
def set_db_entry_button_script(self): db_name_fixed = self.avail_db_combo.currentText() + ".db" self.db = DatabaseInteraction(db_name_fixed) extr = Extractor(self.db.name) # Create datetime objects of the first and last strings of date self.datetime_first = datetime.strptime(extr.select_first_row()[ 0][0], "%Y-%m-%dT%H:%M:%S.%fZ") self.datetime_last = datetime.strptime(extr.select_last_row()[ 0][0], "%Y-%m-%dT%H:%M:%S.%fZ") self.first_row = QDate.fromString(str(self.datetime_first.date()), "yyyy-MM-dd") self.last_row = QDate.fromString(str(self.datetime_last.date()), "yyyy-MM-dd") self.calendar.setMinimumDate(self.first_row) self.calendar.setMaximumDate(self.last_row) self.first_row = QDate.fromString(str(self.datetime_first.date()), "yyyy-MM-dd") self.last_row = QDate.fromString(str(self.datetime_last.date()), "yyyy-MM-dd") self.calendar.setMinimumDate(self.first_row) self.calendar.setMaximumDate(self.last_row)
def __init__(self): super(MainDatime, self).__init__() self.raiz = Ui_Elementos() self.raiz.setupUi(self) # extraer variable str *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* variablefecha = self.raiz.datimeg1.date().toString("dd/MM/yyyy") # fecha variablehora = self.raiz.datimeg1.time().toString("hh:mm AP") # hora print('variablefecha:',variablefecha,' variablehora:',variablehora) # establecer fecha y hora *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* self.raiz.datimeg1.setDate(QDate.fromString( "08/12/2020", "dd/MM/yyyy" )) # fecha self.raiz.datimeg1.setTime(QTime.fromString( "10:31 AM", "hh:mm AP" )) # hora # establecer fecha/hora minima *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* 'self.raiz.datimeg1.setMinimumDate(QDate.fromString("08/11/2020", "dd/MM/yyyy" ))' 'self.raiz.datimeg1.setMinimumTime(QTime.fromString("06:00 PM", "hh:mm AP"))' # establecr fecha/hora maxima *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* 'self.raiz.datimeg1.setMaximumDate(QDate.fromString("20/12/2020", "dd/MM/yyyy" ))' 'self.raiz.datimeg1.setMaximumTime(QTime.fromString("10:30 PM", "hh:mm AP"))' # establecr fecha/maxima maxima (fecha/hora actual) *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* 'self.raiz.datimeg1.setMaximumDate(QDate.currentDate())' 'self.raiz.datimeg1.setMaximumTime(QTime.currentTime())' # establecer rango de ... *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* # hora ''' hora_minima = QTime.fromString("12:00 PM", "hh:mm AP") hora_maxima = QTime.fromString("12:50 PM", "hh:mm AP") self.raiz.datimeg1.setTimeRange(hora_minima, hora_maxima) ''' # fecha ''' fecha_minima = QDate.fromString("05/11/2020", "dd/MM/yyyy" ) fecha_maxima = QDate.fromString("15/12/2020", "dd/MM/yyyy" ) self.raiz.datimeg1.setDateRange(fecha_minima, fecha_maxima) ''' # evento de cambio de... *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* self.raiz.datimeg1.dateChanged.connect(lambda date: print(date.toString("dd/MM/yyyy"))) # fecha self.raiz.datimeg1.timeChanged.connect(lambda time: print(time.toString("hh:mm AP"))) # hora self.raiz.datimeg1.dateTimeChanged.connect(lambda datetime: print(datetime.toString("dd/MM/yyyy hh:mm AP"))) # fecha-hora # obtener valor de... *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* self.raiz.btng1.clicked.connect(lambda : print(self.raiz.datimeg1.date().toString("dd/MM/yyyy"))) # fecha self.raiz.btng2.clicked.connect(lambda : print(self.raiz.datimeg1.time().toString("hh:mm AP"))) # hora self.raiz.btng3.clicked.connect(lambda : print(self.raiz.datimeg1.dateTime().toString("dd/MM/yyyy hh:mm AP"))) # fecha-hora
def data(self, index, role): row, col = index.row(), index.column() if role == QtCore.Qt.DisplayRole: if col == 0: return QDate.fromString(self.alltransactiondata[row][1], QtCore.Qt.ISODate) elif col == 1: return self.alltransactiondata[row][2] elif col == 2: return self.alltransactiondata[row][3] elif col == 3: return self.alltransactiondata[row][4] elif col == 4: return self.alltransactiondata[row][5]
def __init__(self): super(MainDate, self).__init__() self.raiz = Ui_Elementos() self.raiz.setupUi(self) # extraer variable str *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* variablefecha = self.raiz.datee1.date().toString("dd/MM/yyyy") print('variablefecha', variablefecha) # establecer fecha minima *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* 'self.raiz.datee1.setMinimumDate(QDate.fromString("08/11/2020", "dd/MM/yyyy"))' # establecr fecha maxima *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* 'self.raiz.datee1.setMaximumDate(QDate.fromString("20/12/2020", "dd/MM/yyyy"))' # establecr fecha maxima (fecha actual) *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* 'self.raiz.datee1.setMaximumDate(QDate.currentDate())' # establecer rango de fecha *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* ''' fecha_minima = QDate.fromString("05/11/2020", "dd/MM/yyyy" ) fecha_maxima = QDate.fromString("15/12/2020", "dd/MM/yyyy" ) self.raiz.datee1.setDateRange(fecha_minima, fecha_maxima) ''' # establecer fecha *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* self.raiz.datee1.setDate(QDate.fromString("06/12/2020", "dd/MM/yyyy")) # obtener fecha por evento *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* self.raiz.datee1.dateChanged.connect( lambda date: print("fecha", date.toString("dd/MM/yyyy"))) self.raiz.datee1.dateChanged.connect(lambda date: print( "año:", date.toString("yyyy"), "mes:", date.toString("MM"))) # obtener fecha por boton *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* self.raiz.btne1.clicked.connect( lambda: print(self.raiz.datee1.date().toString("dd/MM/yyyy")))
def posiciona_item_lote(self, dados): self.formFrame_item_lote.setVisible(True) item_lote = dados self.label_item_lote_descricao.setText( item_lote['codigo_mercadoria'] + ' - ' + item_lote['descricao'] ) self.label_item_lote_fabricante.setText(item_lote['marca']) ### datas data = str(item_lote['data_cadastro']).split('T')[0] data = data if data != 'None' else None if data is None: self.dateEdit_entrada.setDisabled(True) else: self.dateEdit_entrada.setDisabled(False) self.dateEdit_entrada.setDate( QDate.fromString( data, 'yyyy-MM-dd') ) data = str(item_lote['data_abertura']).split('T')[0] data = data if data != 'None' else None if data is None: self.dateEdit_abertura.setDisabled(True) else: self.dateEdit_abertura.setDisabled(False) self.dateEdit_abertura.setDate( QDate.fromString( data, 'yyyy-MM-dd') ) data = str(item_lote['data_validade']).split('T')[0] data = data if data != 'None' else None if data is None: self.dateEdit_validade.setDisabled(True) else: self.dateEdit_validade.setDisabled(False) self.dateEdit_validade.setDate( QDate.fromString( data, 'yyyy-MM-dd') ) self.label_item_lote_lote_id.setText(str(item_lote['id_lote'])) self.label_item_lote_id.setText(str(item_lote['id_item_lote'])) quantidade_remanufatura = item_lote['quantidade_remanufaturas'] quantidade_remanufatura = '0' if quantidade_remanufatura is None else str(quantidade_remanufatura) self.label_item_lote_quantidade_remanufaturas.setText(quantidade_remanufatura) aberto = item_lote['aberto'] self.label_item_lote_aberto.setText( 'Sim' if aberto else 'Não' ) self.label_icone_item_lote.setPixmap( QPixmap.fromImage(self.open_box if aberto else self.closed_box) ) vazio = True if int(item_lote['quantidade_item']) == 0 else False self.label_item_lote_vazio.setText('Sim' if vazio else 'Não') if vazio: self.label_icone_item_lote.setPixmap( QPixmap.fromImage(self.vazio)) self.pushButton_esvaziar.setDisabled(True) else: self.pushButton_esvaziar.setVisible(True) self.pushButton_esvaziar.setDisabled(False) self.ativar_botoes()
def __init__(self): super(MainCalewd, self).__init__() self.raiz = Ui_Elementos() self.raiz.setupUi(self) # METODOS /*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/ # extraer variable str *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* variablefecha = self.raiz.cald1.selectedDate().toString("dd/MM/yyyy") print('variablefecha', variablefecha) # establecer fecha *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* self.raiz.cald1.setSelectedDate( QDate.fromString("08/11/2020", "dd/MM/yyyy")) # establecer fecha minima *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* 'self.raiz.cald1.setMinimumDate(QDate.fromString("08/11/2020", "dd/MM/yyyy" ))' # establecer fecha maxima *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* 'self.raiz.cald1.setMaximumDate(QDate.fromString("20/12/2020", "dd/MM/yyyy" ))' # establecer fecha maxima (con la fecha actual) *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* 'self.raiz.cald1.setMaximumDate(QDate.currentDate())' # establecer un rango de fecha *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* ''' fecha_minima = QDate.fromString("05/11/2020", "dd/MM/yyyy" ) fecha_maxima = QDate.fromString("15/12/2020", "dd/MM/yyyy" ) self.raiz.cald1.setDateRange(fecha_minima, fecha_maxima) ''' # establece pagina basado en (AÑO,MES) *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* 'self.raiz.cald1.setCurrentPage(2020, 5)' # siguiente/pasado mes *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* self.raiz.btnd1.clicked.connect( lambda: self.raiz.cald1.showNextMonth()) self.raiz.btnd2.clicked.connect( lambda: self.raiz.cald1.showPreviousMonth()) # siguiente/pasado año *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* self.raiz.btnd3.clicked.connect(lambda: self.raiz.cald1.showNextYear()) self.raiz.btnd4.clicked.connect( lambda: self.raiz.cald1.showPreviousYear()) # seleccion de fecha *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* self.raiz.cald1.clicked.connect( lambda date: print(date.toString("dd/MM/yyyy"))) self.raiz.cald1.selectionChanged.connect( lambda: print("solo selecciona una vez el dia")) # OBJETOS DEL CALENDARIO /*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/ # boton mes previo *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* self.btnCalPrev = self.raiz.cald1.findChild(QToolButton, "qt_calendar_prevmonth") self.btnCalPrev.clicked.connect(lambda: print('cal btn mesPrev')) # boton mes siguiente *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* self.btnCalNext = self.raiz.cald1.findChild(QToolButton, "qt_calendar_nextmonth") self.btnCalNext.clicked.connect(lambda aa: print('cal btn mesNext')) # boton seleccion mes *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* self.btnCalMes = self.raiz.cald1.findChild(QToolButton, "qt_calendar_monthbutton") self.btnCalMes.triggered.connect( lambda elemento: print('cal btn Mes', elemento.text())) # spinbox seleccion año *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* self.spinCalYear = self.raiz.cald1.findChild(QSpinBox, "qt_calendar_yearedit") self.spinCalYear.valueChanged.connect( lambda year: print('cal spin Año', year)) # bloquear envento scroll en calendario *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* self.scrollcalen = self.raiz.cald1.findChild( QTableView, "qt_calendar_calendarview") self.scrollcalen.viewport().installEventFilter(self)
def human_date(date: str) -> str: if not date: return "" return QDate.fromString(date, "yyyyMMdd").toString(Qt.RFC2822Date)
def popular_interface(self, dados): # Preenche identificação pedido = dados[0] self.lineEdit_documento.setText(pedido['documento']) self.lineEdit_nome_pessoa.setText(pedido['pessoa']) pedido = Pedido( pedido_id=pedido['id_pedido'] , pessoa_id=pedido['id_pessoa'] , tipo_pedido=pedido['tipo_pedido'] , data_entrega=pedido['data_entrega'] , situacao=pedido['situacao'] , data_cadastro=pedido['data_cadastro'] , observacao=pedido['observacao'] ) self.label_situacao.setText( pedido.situacao if pedido.situacao is not None else '' ) self.label_tipo_pedido.setText(pedido.tipo_pedido) self.tipo_pedido = pedido.tipo_pedido self.configura_tipo() self.textEdit_observacao.setText(pedido.observacao) self.dateEdit_cadastro.setDate( QDate.fromString( pedido.data_cadastro , 'yyyy-MM-ddTHH:mm:ss') ) if pedido.situacao == 'CADASTRADO'\ or pedido.situacao == 'ESTORNADO': self.pushButton_excluir.setText('Cancelar Pedido') self.pushButton_excluir.setIcon(self.icone_cancelar) elif pedido.situacao == 'ENCERRADO': self.pushButton_excluir.setText('Estornar Pedido') self.pushButton_excluir.setIcon(self.icone_estornar) if pedido.data_entrega is not None: self.dateEdit_entrega.setDate( QDate.fromString( pedido.data_entrega , 'yyyy-MM-ddTHH:mm:ss') ) else: self.dateEdit_entrega.clear() # ID é o ultimo a alterar para evitar race condition com self.define_permite_editar self.lineEdit_id.setText(str(pedido.pedido_id)) # Montar ItemPedido for item in dados[1]: if item['tipo'] == 'MERCADORIA': item_pedido = ItemPedido( item_pedido_id=item['id_item_pedido'] , tipo=item['tipo'] , quantidade=item['quantidade'] , valor_unitario=item['valor_unitario'] , mercadoria_id=item['id_mercadoria'] , unidade_medida_id=item['id_unidade_medida'] , unidade_medida=item['unidade_medida'] , mercadoria=item['descricao'] , descricao=item['descricao'] ) item_pedido.alerta = self.verifica_disponibilidade( item_pedido.tipo, item_pedido.mercadoria_id, item_pedido.quantidade) elif item['tipo'] == 'REMANUFATURA': item_pedido = ItemPedido( item_pedido_id=item['id_remanufatura'] , tipo=item['tipo'] , quantidade=item['quantidade'] , valor_unitario=item['valor_unitario'] , casco_id=item['casco_id'] , insumo_id=item['insumo_id'] , nova_remanufatura=None #item['nova_remanufatura'] , descricao='Casco: ' + item['casco'] + ' Insumo: ' + item['insumo'] ) item_pedido.alerta = self.verifica_disponibilidade( item_pedido.tipo, item_pedido.insumo_id, item_pedido.quantidade) else: logging.debug('[CadastroPedido] Não foi possível identificar o tipo do item do pedido') logging.debug('[CadastroPedido] Abortando...') return pedido.itens.append(item_pedido) # Preenche tabela self.pedido = pedido self.preencher_tabela() self.calcula_totais_pedido() self.pushButton_movimentar.setDisabled( self.label_situacao.text() != 'CADASTRADO' and self.label_situacao.text() != 'ESTORNADO' ) # Posiciona o primeiro item da tabela no stack self.tableWidget_items.selectRow(0) self.posicionar_item(None) self.visualizar(True)
def setFilterDate(self, minDate, maxDate): self.minDate = QDate.fromString(minDate, QtCore.Qt.ISODate) self.maxDate = QDate.fromString(maxDate, QtCore.Qt.ISODate) self.invalidateFilter()
def __init__(self, parent=None): super().__init__(parent) self.minDate = QDate.fromString('2019-01-01', QtCore.Qt.ISODate) self.maxDate = QDate(datetime.now())