Esempio n. 1
0
    def headerData(self,
                   section: int,
                   orientation: Qt.Orientation,
                   role: int = ...):
        nomeGiorno = ''
        try:
            nomeGiorno = self._mesi[0][0][section].shortDayName(
                self._mesi[0][0][section].dayOfWeek())
        except IndexError:
            nomeGiorno = QDate().shortDayName(7)
        except:
            print(fex())

        weekEnd = [QDate().shortDayName(6), QDate().shortDayName(7)]
        if role == Qt.DisplayRole:
            if orientation == Qt.Horizontal:
                return nomeGiorno

        if role == Qt.ForegroundRole:
            if nomeGiorno in weekEnd:
                return QColor(Qt.red)

        if role == Qt.BackgroundRole:  # necessario   CAMBIARE QAPPLICATION.SETSTYLE("FUSION")
            color = QColor('darkGray')
            brush = QBrush(color)
            return brush
Esempio n. 2
0
    def addLine(self, new=False, nome='Nuova Spesa', euro=0):
        def updateTypes(self, tipo):
            if tipo not in self.listaTipi:
                self.listaTipi.append(tipo)

        try:
            self.tableWidget.blockSignals(True)
            itemNome = QTableWidgetItem(nome)
            updateTypes(self, type(itemNome))
            row = self.tableWidget.rowCount()
            print('table dialog info spese, row: ', row)
            self.tableWidget.insertRow(row)
            self.tableWidget.setItem(row, 0, itemNome)
            line = LineEditNum(row=row, parent=self.tableWidget)
            updateTypes(self, type(line))
            line.setTextFiltered(euro)
            line.TABPRESSEDTYPE.connect(lambda x, y, k: self.returnPressed(type(line), row, QtCore.Qt.Key_Tab))
            # line.returnPressed.connect()
            self.tableWidget.setCellWidget(row, 1, line)
            self.tableWidget.blockSignals(False)
            if new:
                self.tableWidget.setCurrentCell(row, 0)
                # self.bot_removeLine.blockSignals(True)
                self.tableWidget.editItem(self.tableWidget.item(row, 0))
            print('row Count: ', self.tableWidget.rowCount())


        except:
            print(fex())
Esempio n. 3
0
 def leggiDatabase(self, database=None):
     """
     legge il database per restituire gli elenchi delle piattaforme
     (booking, airbb, privati, pulizie)
     per stilizzare il calendario
     :param database:
     :return:
     """
     try:
         db = Manager()
         self.datePrenotazioni, self.datePulizie, self.dateNote = db.platformPulizie(
             database)
         self.dateSpese = db.getDataSpese()
         self.calendario.setDatesIndicators(self.datePrenotazioni,
                                            self.datePulizie,
                                            self.config['colori settati'],
                                            self.dateSpese, self.dateNote)
         #todo selectedDate restituice Qmodelindex invece che data
         # data = self.calendario.selectedDate()
         data = self.calendario.currentDate
         info = self.getInfoFromDate(data)
         self.setInfoFromDate(info)
         self.infoSta = self.initStatDb(db.DataBase)
         self.riempiTabellaStat()
         if database is None:
             self.database = db.DataBase
     except:
         print(fex())
Esempio n. 4
0
    def paintEvent(self, e: QtGui.QPaintEvent) -> None:
        try:

            painter = QtWidgets.QStylePainter(self)
            painter.setPen(QtCore.Qt.white)
            font = QtGui.QFont(
                'Arial',
                17,
            )
            painter.setFont(font)
            option = QtWidgets.QStyleOptionComboBox()
            self.initStyleOption(option)
            painter.drawComplexControl(QtWidgets.QStyle.CC_ComboBox, option)
            textRect = QtWidgets.qApp.style().subControlRect(
                QtWidgets.QStyle.CC_ComboBox, option,
                QtWidgets.QStyle.SC_ComboBoxEditField, self)

            painter.drawItemText(
                textRect.adjusted(-1, 1, -1, 1),
                QtWidgets.qApp.style().visualAlignment(self.layoutDirection(),
                                                       QtCore.Qt.AlignCenter),
                self.palette(), self.isEnabled(),
                self.fontMetrics().elidedText(self.currentText(),
                                              QtCore.Qt.ElideRight,
                                              textRect.width()))
        except:
            print(fex())
Esempio n. 5
0
    def displayImporti(self, t=None):
        if t is not None:
            print('testo passato: ', t)
        try:
            rows = int(self.label_numeroLetti.text())
            self.tableWidget__importi.setRowCount(rows)
            stagione, platform = self.getPlatStag()
            self.config['stagione preferita'] = stagione
            flagNuvoImporto = False
            for i in range(rows):
                itemNumero = QtWidgets.QTableWidgetItem()
                itemImporto = QtWidgets.QTableWidgetItem()
                itemNumero.setText(str(i + 1))
                try:
                    importo = self.config['stagione'][stagione]['importi'][
                        platform][i]
                    itemImporto.setText(str(importo))
                except IndexError:
                    flagNuvoImporto = True

                self.tableWidget__importi.setItem(i, 0, itemNumero)
                self.tableWidget__importi.setItem(i, 1, itemImporto)
                if flagNuvoImporto:
                    self.setNuovoImporto()
            self.setProvvigione()
            self.setColor()
            self.displayTasseAttive()
        except KeyError:
            print('KeyErr in displayImporti')
        except:
            print(fex())
Esempio n. 6
0
 def addPlatform(self):
     try:
         platAddPlat = ''
         dia = SimpleLine(icon=self.optIcon)
         if dia.exec_():
             platAddPlat = dia.newPlat
             print('nuova platform: ', platAddPlat)
         else:
             return
         if platAddPlat != '' and platAddPlat not in self.config[
                 'platforms'].keys():
             importi = [0 for x in range(self.config['numero letti'])]
             for sta in self.config['stagione']:
                 self.config['stagione'][sta]['importi'][
                     platAddPlat] = importi
             self.config['provvigioni'][platAddPlat] = 0.0
             self.config['tasse attive'][
                 platAddPlat] = self.radio_attivaTassa.isChecked()
             self.saveConfig(config_file.fileConf, self.config)
             self.chooseColor(platAddPlat)
             self.setComboPlat()
             self.combo_platform.setCurrentIndex(
                 self.combo_platform.findText(platAddPlat))
         else:
             print('sono fuori')
     except:
         print(fex())
Esempio n. 7
0
 def keyPressEvent(self, a0: QtGui.QKeyEvent) -> None:
     try:
         # print('key ',type(a0.key()))
         # self.keyPressed.emit(a0.key())
         self.on_key(a0.key())
     except:
         print(fex())
     return super(MySimpleLineEdit, self).keyPressEvent(a0)
Esempio n. 8
0
 def setUpConnections(self):
     self.bot_next.clicked.connect(self.mapper.toNext)
     self.bot_prev.clicked.connect(self.mapper.toPrevious)
     try:
         self.combo.currentIndexChanged.connect(
             lambda x: self.mapper.setCurrentIndex(x))
         pass
     except:
         print(fex())
Esempio n. 9
0
 def gotoLine(self, row):
     print('go to line in row: ', row)
     try:
         line = self.tableWidget.cellWidget(row, 1)
         line.setFocus()
         line.selectAll()
         # if self.bot_removeLine.signalsBlocked():
         #     self.bot_removeLine.blockSignals(False)
     except:
         print(fex())
     pass
Esempio n. 10
0
 def do_something(self):
     print("do_something")
     flag = self.filtraNum(self.text())
     if not flag:
         self.clear()
     self.TABPRESSED.emit(flag)
     try:
         self.TABPRESSEDTYPE.emit(type(self), self.row, QtCore.Qt.Key_Tab)
     except:
         print(fex())
     return flag
Esempio n. 11
0
    def dialogOpt(self):
        try:
            dialog = DialogOption(self)
            if dialog.exec_():
                conf = dialog.config

            self.config = conf
            self.loadConfig()
            self.leggiDatabase()
            # todo copiare la variabile self.config
        except UnboundLocalError:
            pass
        except:
            print(fex())
Esempio n. 12
0
 def setActiveTuple(self, flags: tuple = ()):
     """ it uses self.tuplaFlags or a passed tuple for setting the icons"""
     if len(flags) < 3:
         flags = self.tuplaFlags
     for indice, flag in enumerate(flags):
         print('flag: ', flag)
         label = self.labels[indice]
         icona = self.icons[indice]
         if flag:
             self.setIcona(label, icona)
         else:
             try:
                 self.setIcona(label, icona, remove=True)
             except:
                 print(fex())
Esempio n. 13
0
 def dialogDisponibili(self, l):
     d = DialogInfo('Note', showBool=True)
     try:
         d.setWindowModality(QtCore.Qt.WindowModal)
         d.guiText.textBrowser_dialog_info.setReadOnly(True)
     except:
         print(fex())
     data = ''
     if len(l) > 0:
         for g in l:
             data += g.addDays(1).toString("dd/MM/yyyy") + '\n'
     else:
         data = 'Nessuna data disponibile'
     d.guiText.textBrowser_dialog_info.setText(data)
     d.exec_()
Esempio n. 14
0
 def setActive(self):
     """ it uses self.tuplaFlags or a passed tuple for setting the icons"""
     flags = self.dictFlags
     for key in flags.keys():
         label = self.labelsDict[key]
         # label = self.labels[indice]
         icona = self.iconsDict[key]
         # icona = self.icons[indice]
         if flags[key]:
             self.setIcona(label, icona)
             # print('flag setted: ', key, True)
         else:
             try:
                 # self.setIcona(label, icona, remove=True)
                 label.clear()
             except:
                 print(fex())
Esempio n. 15
0
    def gestisciNote(self, info):
        try:
            # data = self.calendario.selectedDate()
            data = self.calendario.currentDate
            a, m, g = self.amg(data)
            nota = self.database[a][m][g]['checkIn']['note']
            dialog = DialogInfo(info, testo=nota, showBool=True)

            dialog.guiText.textBrowser_dialog_info.setText(nota)
            if dialog.exec_():
                nuovoTesto = dialog.guiText.textBrowser_dialog_info.toPlainText(
                )
                if nuovoTesto != nota:
                    self.database[a][m][g]['checkIn']['spese'] = nuovoTesto
                    dbm.salvaDatabase(self.database)

        except:
            print(fex())
Esempio n. 16
0
    def gestisciSpese(self, datat):
        try:
            # dialog = DialogInfo('Spese',table=True)
            a, m, g = self.amg(datat)
            spesetot = deepc(self.spese)
            spese = spesetot[a][m].get(datat, {})
            dialog = DialogSpese(spese)
            dialog.setWindowIcon(QtGui.QIcon('./Icons/iconaSpese.png'))

            dialog.SPESEPRONTE.connect(lambda x: print('spese pronte', x))
            # dialog.setModal(True)
            if dialog.exec_():
                spese = dialog.ottieniSpese()
                if len(spese) != 0:
                    self.spese[a][m][datat] = spese
                    self.bot_spese.setState(True)
                    tot = self.totaleSpeseG(datat)
                    print('totale spese giornaliere: ', tot)
                    self.calendario.dateSpese.append(datat)
                    self.calendario.datesIndicatorsChanged.emit()
                else:
                    if datat in self.spese[a][m].keys():
                        del self.spese[a][m][datat]
                    if datat in self.calendario.dateSpese:
                        self.calendario.dateSpese.remove(datat)
                        self.calendario.datesIndicatorsChanged.emit()

                    self.bot_spese.setState(False)
                    tot = 0

            self.calendario.datesIndicatorsChanged.emit()
            self.calendario.updateIconsAndBooked()
            totSpeseMensili = 0
            try:
                for giornoData in self.spese[a][m].keys():
                    for spesaperitem in self.spese[a][m][giornoData].values():
                        totSpeseMensili += spesaperitem
                finale = float(totSpeseMensili)
            except TypeError:
                print(' TYPEERR *****************', self.spese[a][m].values())
            dbm.salvaDatabase(self.spese, tipodatabase='spese')
            return finale
        except:
            print(fex())
Esempio n. 17
0
    def data(self, index: QModelIndex, role: int = ...):

        try:
            row = index.row()
            col = index.column()

            if role == Qt.DisplayRole:
                # print(row,'|',col)
                dato = self._date[row][col]
                return dato.day()
            elif role == Qt.TextAlignmentRole:
                # return QtCore.Qt.AlignHCenter | QtCore.Qt.AlignBottom
                return Qt.AlignHCenter | Qt.AlignVCenter
            elif role == Qt.BackgroundRole:
                # if col % 2 != 0:
                #     return QColor(Qt.darkRed)
                pass
        except:
            print(fex())
Esempio n. 18
0
    def setImporti(self, i=None):
        try:
            if i is not None:
                # row = i.row()
                row = i
                stagione, platform = self.getPlatStag()
                try:
                    importo = int(
                        self.tableWidget__importi.item(row, 1).text())
                except ValueError:
                    importo = self.config['stagione'][stagione]['importi'][
                        platform][row]
                    item = self.tableWidget__importi.item(row, 1)
                    item.setText(str(importo))
                self.config['stagione'][stagione]['importi'][platform][
                    row] = importo

        except:
            print(fex())
Esempio n. 19
0
 def calcTax(self):
     """
     prende il numero di ospiti, la data "dal" e la data "al"
     dalle spinbox
     la tassa è di 2 euro al mese per un massimo di 3 giorni,
     dal quarto è gratis per il mese corrente
     compara i mesi per ricominciare il conto dei giorni
     da pagare
     :return:
     """
     try:
         dal = self.dateEdit_dal.date()
         mese_dal = dal.month()
         al = self.dateEdit_al.date()
         mese_al = al.month()
         permanenza = dal.daysTo(al)
         ospiti = self.spinBox_ospiti.value()
         topay = 3
         fee = self.tassa
         oggi = self.dateEdit_dal.date()
         listaDate = []
         flag = oggi != al
         while flag:
             mese = oggi.month()
             # print('mese: ', mese)
             if mese != mese_dal:
                 topay = 3
                 mese_dal = mese
             if oggi not in listaDate and topay > 0:
                 listaDate.append(oggi)
             topay -= 1
             oggi = oggi.addDays(1)
             flag = oggi != al
         if permanenza != len(listaDate):
             pass
             # print("qualcosa non va nel conteggio delle tasse")
         tot = len(listaDate) * ospiti * fee
         if tot == 0:
             tot = fee
         # print("tassa da pagare: ", tot)
         return tot
     except:
         print(fex())
Esempio n. 20
0
    def addSpese(self):
        try:
            data = self.calendario.currentDate
            a, m, g = self.amg(data)
            finale = self.gestisciSpese(data)
            spese = self.database[a][m][g]['checkIn']['spese']
            if spese != finale:
                copia = deepc(self.database[a][m][g]['checkIn'])
                copia['spese'] = finale
                for giorno in self.database[a][m].keys():
                    note = self.database[a][m][giorno]['checkIn']['note']
                    copia['note'] = note
                    self.database[a][m][giorno]['checkIn'] = deepc(copia)
                    # self.database[a][m][giorno]['checkIn']['spese'] = finale

                dbm.salvaDatabase(self.database)
                # self.updateInfoStat()

        except:
            print(fex())
Esempio n. 21
0
 def colDict(lista=[]):
     """deve ritornare un dizionario"""
     listaCopiata = lista.copy()
     listaTemp = []
     diz = {}
     while len(listaCopiata):
         try:
             listaTroncata = listaCopiata[:7]
             for x in listaTroncata:
                 ind = listaCopiata.index(x)
                 if x not in listaTemp:
                     estratto = listaCopiata.pop(ind)
                     chiave = estratto % 7
                     if chiave == 0:
                         chiave = 7
                     if chiave not in diz.keys():
                         diz[chiave] = []
                     listaTemp.append(estratto)
                     diz[chiave].append(estratto)
         except:
             print(fex())
     return diz
Esempio n. 22
0
 def modificaESalva(self):
     try:
         info = self.compilaInfo()
         dal = self.dateEdit_dal.date()
         al = self.dateEdit_al.date()
         manager = Manager(info)
         listaDisponibili = manager.checkAval(
             dal,
             al,
             nomePassato=self.lineEdit_nome.text(),
             cognomePassato=self.lineEdit_cognome.text())
         giorniPermanenza = dal.daysTo(al)
         if len(listaDisponibili) == giorniPermanenza:
             print('modifica ok')
             print('prima cancello')
             self.cancellaprenot(wrnMode=True)
             print('poi salvo...')
             self.salvaInfo(modo=False)
         else:
             self.dialogDisponibili(listaDisponibili)
     except:
         print(fex())
Esempio n. 23
0
 def addNote(self):
     try:
         # dialog = DialogInfo('Spese',table=True)
         # data = self.calendario.selectedDate()
         data = self.calendario.currentDate
         a, m, g = self.amg(data)
         database = self.getDatabase(a)
         # text = self.database[a][m][g]['checkIn']['note']
         text = database[a][m][g]['checkIn']['note']
         dialog = DialogInfo(testo=text, showBool=True)
         icona = QtGui.QIcon('./Icons/iconaNote.ico')
         dialog.setWindowIcon(icona)
         # tempDict = deepc(self.database[a][m][g]['checkIn'])
         tempDict = deepc(database[a][m][g]['checkIn'])
         dialog.guiText.textBrowser_dialog_info.setText(text)
         if dialog.exec_():
             nuovoTesto = dialog.guiText.textBrowser_dialog_info.toPlainText(
             )
             if nuovoTesto != text:
                 tempDict['note'] = nuovoTesto
                 # self.database[a][m][g]['checkIn'] = tempDict
                 database[a][m][g]['checkIn'] = tempDict
                 dbm.salvaDatabase(database)
                 self.database = deepc(database)
                 self.bot_note.setState(True)
                 if nuovoTesto == '':
                     self.bot_note.setState(False)
                     if self.calendario.currentDate in self.calendario.dateNote:
                         self.calendario.dateNote.remove(
                             self.calendario.currentDate)
                 else:
                     if self.calendario.currentDate not in self.calendario.dateNote:
                         self.calendario.dateNote.append(
                             self.calendario.currentDate)
                 self.calendario.updateIconsAndBooked()
                 # info = self.getInfo(a,m,g)
                 # self.setInfoTemp(info)
     except:
         print(fex())
Esempio n. 24
0
    def chooseColor(self, platCol=None):
        try:
            if platCol is None:
                platCol = self.combo_platform.currentText()

            coloriPresenti = [
                presente for presente in self.config['platforms'].values()
            ]
            print('colori presenti: ', coloriPresenti)
            col = QtWidgets.QColorDialog.getColor()
            print('colore scelto: ', col.name())
            if col.isValid():
                if col.name() not in coloriPresenti:
                    self.bot_scegliColore.setStyleSheet(
                        "QPushButton { background-color: %s }" % col.name())
                    self.config['platforms'][platCol] = col.name()
                    self.config['colori settati'][platCol] = col.name()
                else:
                    msg = QtWidgets.QMessageBox()
                    msg.setText('Il colore selezionato è già stato attribuito')
                    msg.setIcon(QtWidgets.QMessageBox.Warning)
                    msg.setWindowTitle("Attenzione!")
                    msg.setStandardButtons(QtWidgets.QMessageBox.Ok)
                    msg.exec_()
                    return self.chooseColor(platCol)
            # if colorForm.accepted():
            # print(colorForm.platColors)
            # self.config['platforms'] = colorForm.platColors
            # colorForm.currentColorChanged.connect(self.stampa)
            # self.setColor()
            # colorForm.close()
            # else:
            #     print('not accepted', colorForm.accepted())

        except:
            print(fex())
Esempio n. 25
0
 def flags(self, index: QModelIndex):
     try:
         if index.isValid():
             return Qt.ItemFlags() | Qt.ItemIsEnabled
     except:
         print(fex())
Esempio n. 26
0
from subprocess import check_call
import os
from traceback import format_exc as fex

database = '..\database.pkl'
spese = '..\speseDb.pkl'
lista = [database, spese]
try:
    os.system('del "..\speseDb.pkl"')
    os.system('del "..\database.pkl"')
except:
    print(fex())

print('databases deleted')
# for d in lista:
#     check_call(['del', d],shell=True)
Esempio n. 27
0
 def riempi_campi_prenotazioni(self):
     """ prende le info da inserire nei campi
         della prenotazione a partire dalle info
         nel box nella pagina
         del calendario"""
     # todo aggiungere segnale alle mylineEdit perché si sblocchi il tasto salva o modifica
     try:
         info = deepc(self.infoTemp)
         print('infoTemp in riempi_campi_prenotazioni', self.infoTemp)
         if (info['nome'] and info['cognome'] and info['telefono']) == '':
             self.modificaOsalva()
         else:
             self.modificaOsalva(modifica=True)
         self.lineEdit_nome.setText(info['nome'])
         self.lineEdit_cognome.setText(info['cognome'])
         self.lineEdit_telefono.setText(info['telefono'])
         self.lineEdit_email.setText(info['email'])
         self.spinBox_ospiti.setValue(int(info['numero ospiti']))
         self.spinBox_bambini.setValue(int(info['bambini']))
         platform = info['platform']
         if platform != '':
             indiceCombo = self.combo_platformPrenotazioni.findText(
                 platform)
         else:
             indiceCombo = 0
         self.combo_platformPrenotazioni.setCurrentIndex(indiceCombo)
         print('indice Combo: ', indiceCombo)
         print('platform: ', platform)
         # try:
         #
         # except:
         #     print(fex())
         self.plainTextEdit_note.clear()
         try:
             infoNote = self.getInfoFromDate(info['data arrivo'])
         except AttributeError:
             infoNote = info
         self.plainTextEdit_note.insertPlainText(infoNote['note'])
         self.radio_colazione.setChecked(info['colazione'] == 'Si')
         # self.importAdj(self.spinBox_bambini.value() + self.spinBox_ospiti.value())
         stagione = info['stagione']
         indiceComboStagione = self.combo_stagionePrenotazioni.findText(
             stagione)
         if indiceComboStagione == -1:
             indiceComboStagione = self.combo_stagionePrenotazioni.findText(
                 self.config['stagione preferita'])
         self.combo_stagionePrenotazioni.setCurrentIndex(
             indiceComboStagione)
         self.importAdj()
         dataArrivo = info['data arrivo']
         dataPartenza = info['data partenza']
         if (dataArrivo or dataPartenza) is not None:
             self.dateEdit_dal.blockSignals(True)
             self.dateEdit_al.blockSignals(True)
             self.dateEdit_dal.setDate(dataArrivo)
             self.dateEdit_al.setMinimumDate(dataArrivo.addDays(1))
             self.dateEdit_al.setDate(dataPartenza)
             self.dateEdit_dal.blockSignals(False)
             self.dateEdit_al.blockSignals(False)
             self.lineEdit_numeroGiorni.setText(info['totale notti'])
         else:
             # print("else: setDateEdit_dal")
             self.setDateEdit_dal()
             # self.dateEdit_al.setDate(dataPartenza)
     except:
         print(fex())