예제 #1
0
    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)
예제 #2
0
 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]
예제 #4
0
    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)
예제 #5
0
    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
예제 #6
0
 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]
예제 #7
0
    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")))
예제 #8
0
    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()
예제 #9
0
    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)
예제 #10
0
def human_date(date: str) -> str:
    if not date:
        return ""

    return QDate.fromString(date, "yyyyMMdd").toString(Qt.RFC2822Date)
예제 #11
0
    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)
예제 #12
0
 def setFilterDate(self, minDate, maxDate):
     self.minDate = QDate.fromString(minDate, QtCore.Qt.ISODate)
     self.maxDate = QDate.fromString(maxDate, QtCore.Qt.ISODate)
     self.invalidateFilter()
예제 #13
0
 def __init__(self, parent=None):
     super().__init__(parent)
     self.minDate = QDate.fromString('2019-01-01', QtCore.Qt.ISODate)
     self.maxDate = QDate(datetime.now())