示例#1
0
文件: user_info.py 项目: RaD/qtclient
    def voucher_prolongate(self, index):
        """ Метод для пролонгации ваучера. Отображает диалог с
        календарём, позволяя продлить действие ваучера до двух недель
        от текущего дня."""
        from dlg_calendar import DlgCalendar
        title = self.tr('Voucher Prolongation')
        # получаем информацию о ваучере
        model = index.model()
        voucher = model.get_voucher_info(index)
        voucher_id = voucher.get('id')
        if not voucher_id:
            raise Exception('Bad voucher id')

        # определяем обработчик диалога
        def callback(selected_date):
            self.selected_date = selected_date

        # отображаем диалог с календарём
        params = {
            'date_range': (date.today(), date.today() + timedelta(days=14)),
            'title': title,
            'desc': self.tr('Choose the prolongation date:')
        }
        self.dialog = DlgCalendar(self, **params)
        self.dialog.setModal(True)
        self.dialog.setCallback(callback)
        if QDialog.Accepted == self.dialog.exec_():
            # выполняем пролонгацию на сервере
            params = {
                'voucher_id': voucher_id,
                'prolongate_date': self.selected_date
            }
            if not self.http.request('/manager/voucher_prolongate/', params):
                QMessageBox.critical(
                    self, title,
                    self.tr('Unable to prolongate: %1').arg(
                        self.http.error_msg))
                return
            # проверяем результат
            default_response = None
            response = self.http.parse(default_response)
            if response and 'saved_id' in response:
                QMessageBox.information(
                    self, title,
                    self.tr('Voucher has been prolongated sucessfully.'))
                # приводим отображаемую модель к нужному виду
                if 'end_date' in voucher:
                    voucher['end_date'] = self.selected_date
                    voucher['cancel_datetime'] = None
                    model.update(index)
            else:
                QMessageBox.critical(
                    self, title, self.tr('Could not prolongate this voucher!'))
示例#2
0
    def show_calendar(self, widget):
        """ Метод для отображения диалога с календарём. """

        # определяем обработчик результатов диалога
        def handle(selected_date):
            widget.setDate(selected_date)

        params = {'title': self.tr('Choose a date')}
        self.dialog = DlgCalendar(self, **params)
        self.dialog.setModal(True)
        self.dialog.setCallback(handle)
        self.dialog.exec_()