Example #1
0
class Shift(QtGui.QWidget):
    """НОМЕР БАЗЫ"""
    base = 1

    """Первоначальное заполнение данными"""
    today = datetime.now().strftime("%Y-%m-%d")
    time = datetime.now().strftime("%H:%M:%S")
    now = datetime.now().strftime("%Y-%m-%d %H:%M:%S")

    def __init__(self, parent):
        QtGui.QWidget.__init__(self, parent)
        self.parent = parent
        self.setupData()
        self.setupUi()
        # События по таймеру
        self.timer = QtCore.QTimer()
        #~ time =
        #~ self.timer.singleShot(1, self.renew)
        QtCore.QObject.connect(self.timer, QtCore.SIGNAL("timeout()"), self.renew)
        self.timer.start(300000)

    def renew(self):
        if not self.manual:
            print self.toShot.total_seconds()
            self.time = datetime.now().strftime("%H:%M:%S")
            self.renewData()
            self.renewUi()
            #~ self.timer.singleShot(self.toShot.total_seconds(), self, QtCore.SLOT("renew()"))

## DATA ##

    def setupData(self):
        """выдернуть время крайней смены и из сравнения с текущим временем, рассчитать какая смена и сколько пропущено смен"""
        self.cashier = 1
        self.renewData()
        self.cashierlist = self.getCashierList() #Список кассиров

    def renewData(self):
        self.meals = self.getTime()
        self.shift = self.currentShift(self.today,self.meals)
        self.addShift() #Порядковый номер смены


    def getTime(self):
        """
        0 - завтрак
        1 - обед
        2 - ужин
        """
        breakfast = "15:06:00"
        lunch = "15:07:00"
        dinner = "19:00:00"
        if self.time < breakfast:
            #~ self.toShot = datetime.strptime("%s %s" % (self.today, breakfast), "%Y-%m-%d %H:%M:%S") - datetime.now()
            return 0
        elif self.time < lunch:
            #~ self.toShot = datetime.strptime("%s %s" % (self.today, lunch), "%Y-%m-%d %H:%M:%S") - datetime.now()
            return 1
        else:
            #~ self.toShot = datetime.strptime("%s %s" % (self.today, dinner), "%Y-%m-%d %H:%M:%S") - datetime.now()
            return 2

    def currentShift(self,day,meals):
        """текущая смена, разница между первой сменой и текущей"""
        db = localDb_Class()
        first_shift = db.get_first_shift()
        db.close_db()
        daydiff = abs(datetime.strptime(day,"%Y-%m-%d") - datetime.strptime(first_shift['actual_date'].encode(),"%Y-%m-%d"))
        shiftdiff = daydiff.days*3 + (meals - first_shift['period'])
        return shiftdiff+1

    def addShift(self):
        """Выбираем из базы по номеру смены, если пусто, то записываем"""
        db = localDb_Class()
        if not db.select_val_by_col('shift','shift',"%s" % self.shift)['rows']:
            db.insert_val('shift',(self.shift,self.today,self.meals,self.cashier))
        db.close_db()
        f = open("temp.data","w")
        f.write("%s" % self.shift)
        f.close()


    def getCashierList(self):
        """Список кассиров"""
        db = localDb_Class()
        return db.select_all_val('cashier')['rows']
        db.close_db()

    def getCashierId(self,cName):
        """Номер кассира по имени"""
        db = localDb_Class()
        cashierId = db.select_val_by_col('cashier','name',"\'%s\'" % cName)['rows'][0]['id']
        db.close_db()
        return cashierId

    def setShift(self,date,meals,cashier=1):
        """Устанавливаем смену"""
        self.today = date
        self.meals = meals
        self.cashier = cashier
        self.mnual = True
        self.shift = self.currentShift(date,meals)
        self.addShift()


## GUI ##

    def setupUi(self):
        self.ui = Ui_Shift()
        self.ui.setupUi(self)
        self.setCashiers()

        self.connect(self.ui.shiftSetupButton, QtCore.SIGNAL("clicked()"),QtCore.SLOT("on_click_shiftSetupButton()"))

        dockWidget = QtGui.QDockWidget(self.parent)
        dockWidget.setWidget(self)
        dockWidget.setFeatures(0x00)
        self.parent.addDockWidget(QtCore.Qt.RightDockWidgetArea, dockWidget)

    def renewUi(self):
        self.ui.dateEdit.setDate(QtCore.QDate.fromString(self.today,"yyyy-MM-dd"))
        self.ui.comboBoxTime.setCurrentIndex(self.getTime())
        self.ui.labelShift.setText(u"Смена № " + "%s" % self.shift)

    def on_click_shiftSetupButton(self):
        """При изменении смены записывает используемую смену"""
        cashier = self.getCashierId(self.ui.comboBoxCashier.currentText())
        date = self.ui.dateEdit.date().toString('yyyy-MM-dd')
        meals = self.ui.comboBoxTime.currentIndex()
        self.setShift(date,meals,cashier)
        self.ui.labelShift.setText(u"Смена № " + "%s" % self.shift)

    def setCashiers(self):
        """Заполняет список продавцов"""
        for cashier in self.cashierlist:
            self.ui.comboBoxCashier.addItem(cashier[1])