class CActionTypeCol(CCol): def __init__(self, title, fields, defaultWidth, alignment='l'): CCol.__init__(self, title, fields, defaultWidth, alignment) db = QtGui.qApp.db self._cache = CTableRecordCache(db, db.table('Action'), 'actionType_id') def getActionTypeId(self, actionId): if actionId: record = self._cache.get(actionId) if record: return forceRef(record.value(0)) return None def format(self, values): val = values[0] actionTypeId = self.getActionTypeId(forceRef(val)) if actionTypeId: actionType = CActionTypeCache.getById(actionTypeId) if actionType: return QtCore.QVariant(actionType.code + ' | ' + actionType.name) return QtCore.QVariant() def invalidateRecordsCache(self): self._cache.invalidate()
def setTable(self, tableName, recordCacheCapacity=300): db = QtGui.qApp.db ClientPolicy = db.table('ClientPolicy') PolicyKind = db.table('rbPolicyKind') PolicyType = db.table('rbPolicyType') Insurer = db.table('Organisation') cols = [ ClientPolicy['serial'].alias('serial'), ClientPolicy['number'].alias('number'), ClientPolicy['begDate'].alias('begDate'), ClientPolicy['endDate'].alias('endDate'), ClientPolicy['dischargeDate'].alias('dischargeDate'), ClientPolicy['insuranceArea'].alias('insuranceArea'), ClientPolicy['note'].alias('note'), PolicyType['name'].alias('policyType'), PolicyKind['name'].alias('policyKind'), Insurer['fullName'].alias('insurerName'), Insurer['OGRN'].alias('insurerOGRN'), Insurer['OKATO'].alias('insurerOKATO') ] queryTable = ClientPolicy.leftJoin( PolicyKind, PolicyKind['id'].eq(ClientPolicy['policyKind_id'])) queryTable = queryTable.leftJoin( PolicyType, PolicyType['id'].eq(ClientPolicy['policyType_id'])) queryTable = queryTable.leftJoin( Insurer, Insurer['id'].eq(ClientPolicy['insurer_id'])) self._table = queryTable self._recordsCache = CTableRecordCache(db, self._table, cols, recordCacheCapacity)
def setTable(self, tableName): db = QtGui.qApp.db tableClient = db.table('Client') tableDocument = db.table('ClientDocument') tableAddress = db.table('ClientAddress') tableRBDocumentType = db.table('rbDocumentType') tableClientPolicy = db.table('ClientPolicy') tablePolicyType = db.table('rbPolicyType') tableOrganisation = db.table('Organisation') tableClientContact = db.table('ClientContact') loadFields = [] loadFields.append( u'''DISTINCT Client.id, Client.lastName, Client.firstName, Client.patrName, Client.birthDate, Client.sex, ClientDocument.serial, ClientDocument.number, ClientDocument.date, ClientDocument.origin, rbDocumentType.name, IF(ClientAddress.type = 0, ClientAddress.freeInput, _utf8'') AS regAddress, IF(ClientAddress.type = 1, ClientAddress.freeInput, _utf8'') AS logAddress, ClientPolicy.serial AS serialPolicy, ClientPolicy.number AS numberPolicy, rbPolicyType.name AS typePolicy, Organisation.shortName AS nameOrgPolicy, Organisation.id, ClientContact.contact''' ) queryTable = tableClient.leftJoin( tableAddress, tableClient['id'].eq(tableAddress['client_id'])) queryTable = queryTable.leftJoin( tableDocument, tableClient['id'].eq(tableDocument['client_id'])) queryTable = queryTable.leftJoin( tableRBDocumentType, tableDocument['documentType_id'].eq(tableRBDocumentType['id'])) queryTable = queryTable.leftJoin( tableClientPolicy, tableClient['id'].eq(tableClientPolicy['client_id'])) queryTable = queryTable.leftJoin( tablePolicyType, tableClientPolicy['policyType_id'].eq(tablePolicyType['id'])) queryTable = queryTable.leftJoin( tableOrganisation, tableClientPolicy['insurer_id'].eq(tableOrganisation['id'])) queryTable = queryTable.leftJoin( tableClientContact, tableClient['id'].eq(tableClientContact['client_id'])) self._table = queryTable self._recordsCache = CTableRecordCache(db, self._table, loadFields)
def __init__(self, parent=None): CDialogBase.__init__(self, parent) self.btnPrev = QtGui.QPushButton(u'Предыдущее', self) self.btnPrev.setObjectName('btnPrev') self.btnNext = QtGui.QPushButton(u'Следующее', self) self.btnNext.setObjectName('btnNext') self.setupUi(self) self.buttonBox.addButton(self.btnPrev, QtGui.QDialogButtonBox.ActionRole) self.buttonBox.addButton(self.btnNext, QtGui.QDialogButtonBox.ActionRole) db = QtGui.qApp.db self.messageCache = CTableRecordCache(db, db.table('InformerMessage')) self.personCache = CTableRecordCache(db, db.table('vrbPerson')) self.idList = [] self.markList = [] self.currentIndex = None self.setWindowTitleEx(u'Сообщение')
def setTable(self, tableName, recordCacheCapacity=300): db = QtGui.qApp.db tableClient = db.table('Client') tableEvent = db.table('Event') tableOrder = db.table('{0}.N3LabOrderLog'.format(getLoggerDbName())) tableOrderSync = db.table('{0}.N3LabOrderSyncLog'.format( getLoggerDbName())) tableOrderSent = tableOrderSync.alias('OrderSent') tableOrderRecv = tableOrderSync.alias('OrderRecv') tableOrderCurrent = tableOrderSync.alias('OrderCurrent') tableTissueType = db.table('rbTissueType') tableTTJ = db.table('TakenTissueJournal') table = tableOrder table = table.leftJoin( tableOrderSent, tableOrderSent['id'].eqStmt( db.selectMin(tableOrderSync, tableOrderSync['id'], [ tableOrderSync['order_id'].eq(tableOrder['id']), tableOrderSync['status'].eq(OrderSyncStatus.OrderSent) ]))) table = table.leftJoin( tableOrderRecv, tableOrderRecv['id'].eqStmt( db.selectMax(tableOrderSync, tableOrderSync['id'], [ tableOrderSync['order_id'].eq(tableOrder['id']), tableOrderSync['status'].eq(OrderSyncStatus.ResultReceived) ]))) table = table.leftJoin( tableOrderCurrent, tableOrderCurrent['id'].eqStmt( db.selectMax(tableOrderSync, tableOrderSync['id'], tableOrderSync['order_id'].eq(tableOrder['id'])))) table = table.leftJoin(tableEvent, tableEvent['id'].eq(tableOrder['event_id'])) table = table.leftJoin(tableClient, tableClient['id'].eq(tableEvent['client_id'])) table = table.leftJoin( tableTTJ, tableTTJ['id'].eq(tableOrder['takenTissueJournal_id'])) table = table.leftJoin( tableTissueType, tableTissueType['id'].eq(tableTTJ['tissueType_id'])) cols = [ tableOrder['orderMisId'], tableOrder['orderUUID'], tableOrder['datetime'], tableOrder['status'], tableOrder['event_id'], tableOrderCurrent['error'], db.concat_ws(' ', tableClient['lastName'], tableClient['firstName'], tableClient['patrName']).alias('clientName'), tableTTJ['externalId'], tableTissueType['name'].alias('tissueTypeName'), tableOrderCurrent['status'].alias('lastSyncStatus'), tableOrderSent['datetime'].alias('sentDatetime'), tableOrderRecv['datetime'].alias('receivedDatetime') ] self._table = table self._recordsCache = CTableRecordCache(db, self._table, cols, recordCacheCapacity)
def setTable(self, tableName, recordCacheCapacity=300): db = QtGui.qApp.db tableClient = db.table('Client') tableEvent = db.table('Event') tableOrderResponse = db.table('{0}.N3LabOrderResponseLog'.format( getLoggerDbName())) tableOrderResponseSync = db.table( '{0}.N3LabOrderResponseSyncLog'.format(getLoggerDbName())) tableOrderResponseSent = tableOrderResponseSync.alias( 'OrderResponseSent') tableOrderResponseCurrent = tableOrderResponseSync.alias( 'OrderResponseCurrent') table = tableOrderResponse table = table.leftJoin( tableOrderResponseSent, tableOrderResponseSent['id'].eqStmt( db.selectMin(tableOrderResponseSync, tableOrderResponseSync['id'], [ tableOrderResponseSync['orderResponse_id'].eq( tableOrderResponse['id']), tableOrderResponseSync['status'].eq( OrderResponseSyncStatus.ResultSent) ]))) table = table.leftJoin( tableOrderResponseCurrent, tableOrderResponseCurrent['id'].eqStmt( db.selectMax( tableOrderResponseSync, tableOrderResponseSync['id'], tableOrderResponseSync['orderResponse_id'].eq( tableOrderResponse['id'])))) table = table.leftJoin( tableEvent, tableEvent['id'].eq(tableOrderResponse['event_id'])) table = table.leftJoin(tableClient, tableClient['id'].eq(tableEvent['client_id'])) cols = [ tableOrderResponse['orderUUID'], tableOrderResponse['orderResponseUUID'], tableOrderResponse['datetime'], tableOrderResponse['status'], tableOrderResponse['event_id'], tableOrderResponseCurrent['error'], db.concat_ws(' ', tableClient['lastName'], tableClient['firstName'], tableClient['patrName']).alias('clientName'), tableOrderResponseCurrent['status'].alias('lastSyncStatus'), tableOrderResponseSent['datetime'].alias('sentDatetime') ] self._table = table self._recordsCache = CTableRecordCache(db, self._table, cols, recordCacheCapacity)
def setTable(self, tableName): db = QtGui.qApp.db tableRBBlankActions = db.table('rbBlankActions') tableBlankActionsParty = db.table('BlankActions_Party') tableBlankActionsMoving = db.table('BlankActions_Moving') loadFields = [] loadFields.append( u'''DISTINCT BlankActions_Moving.id, BlankActions_Party.serial, BlankActions_Moving.numberFrom, BlankActions_Moving.numberTo, BlankActions_Moving.date, BlankActions_Moving.received, BlankActions_Moving.used, BlankActions_Moving.returnAmount, rbBlankActions.checkingSerial, rbBlankActions.checkingNumber, rbBlankActions.checkingAmount''' ) queryTable = tableBlankActionsMoving.innerJoin( tableBlankActionsParty, tableBlankActionsParty['id'].eq( tableBlankActionsMoving['blankParty_id'])) queryTable = queryTable.innerJoin( tableRBBlankActions, tableBlankActionsParty['doctype_id'].eq(tableRBBlankActions['id'])) self._table = queryTable self._recordsCache = CTableRecordCache(db, self._table, loadFields)
def setTable(self, tableName, recordCacheCapacity=300): db = QtGui.qApp.db tableAP = db.table('ActionProperty') tableAPD = db.table('ActionProperty_Double') tableAPI = db.table('ActionProperty_Integer') tableAPS = db.table('ActionProperty_String') table = tableAP table = table.leftJoin(tableAPD, tableAPD['id'].eq(tableAP['id'])) table = table.leftJoin(tableAPI, tableAPI['id'].eq(tableAP['id'])) table = table.leftJoin(tableAPS, tableAPS['id'].eq(tableAP['id'])) cols = [ db.coalesce(tableAPD['value'], tableAPI['value'], tableAPS['value']).alias('value') ] self._table = table self._recordsCache = CTableRecordCache(db, self._table, cols, recordCacheCapacity)
def __init__(self, title, fields, defaultWidth, alignment='l'): CCol.__init__(self, title, fields, defaultWidth, alignment) db = QtGui.qApp.db self._cache = CTableRecordCache(db, db.table('Action'), 'actionType_id')
class CInformer(CDialogBase, Ui_InformerPage): def __init__(self, parent=None): CDialogBase.__init__(self, parent) self.btnPrev = QtGui.QPushButton(u'Предыдущее', self) self.btnPrev.setObjectName('btnPrev') self.btnNext = QtGui.QPushButton(u'Следующее', self) self.btnNext.setObjectName('btnNext') self.setupUi(self) self.buttonBox.addButton(self.btnPrev, QtGui.QDialogButtonBox.ActionRole) self.buttonBox.addButton(self.btnNext, QtGui.QDialogButtonBox.ActionRole) db = QtGui.qApp.db self.messageCache = CTableRecordCache(db, db.table('InformerMessage')) self.personCache = CTableRecordCache(db, db.table('vrbPerson')) self.idList = [] self.markList = [] self.currentIndex = None self.setWindowTitleEx(u'Сообщение') def setIdList(self, idList): self.idList = idList self.markList = [None] * len(self.idList) self.setCurrentIndex(0) def setCurrentIndex(self, index): notFirst = index > 0 notLast = index < len(self.idList) - 1 self.currentIndex = index self.btnPrev.setEnabled(notFirst) self.btnNext.setEnabled(notLast) message = self.messageCache.get(self.idList[self.currentIndex]) if message: createPersonId = forceRef(message.value('createPerson_id')) person = self.personCache.get(createPersonId) if person: personName = forceString(person.value('name')) else: personName = '' createDateTime = message.value('createDatetime').toDateTime() subject = forceString(message.value('subject')) text = forceString(message.value('text')) else: personName = '' createDateTime = QtCore.QDateTime() subject = '' text = '' self.lblCreatePersonValue.setText(personName) self.lblCreateDatetimeValue.setText( createDateTime.toString(QtCore.Qt.LocaleDate)) self.lblSubjectValue.setText(subject) self.edtText.setHtml(text) self.chkMarkViewed.setChecked( self.markList[self.currentIndex] != False) if notLast: self.btnNext.setFocus(QtCore.Qt.OtherFocusReason) else: self.buttonBox.button(QtGui.QDialogButtonBox.Close).setFocus( QtCore.Qt.OtherFocusReason) def canClose(self): for messageId, mark in zip(self.idList, self.markList): if mark == True: # т.к. бывает True/False/None self.markViewed(messageId) elif mark == False: # т.к. бывает True/False/None self.unmarkViewed(messageId) return True def markViewed(self, messageId): db = QtGui.qApp.db table = db.table('InformerMessage_readMark') if not db.getRecordEx(table, '*', [ table['master_id'].eq(messageId), table['person_id'].eq( QtGui.qApp.userId) ]): record = table.newRecord() record.setValue('master_id', toVariant(messageId)) record.setValue('person_id', toVariant(QtGui.qApp.userId)) db.insertRecord(table, record) def unmarkViewed(self, messageId): db = QtGui.qApp.db table = db.table('InformerMessage_readMark') db.deleteRecord(table, [ table['master_id'].eq(messageId), table['person_id'].eq( QtGui.qApp.userId) ]) @QtCore.pyqtSlot(bool) def on_chkMarkViewed_toggled(self, checked): self.markList[self.currentIndex] = checked @QtCore.pyqtSlot() def on_btnPrev_clicked(self): if self.currentIndex > 0: self.markList[self.currentIndex] = self.chkMarkViewed.isChecked() self.setCurrentIndex(self.currentIndex - 1) @QtCore.pyqtSlot() def on_btnNext_clicked(self): if self.currentIndex < len(self.idList) - 1: self.markList[self.currentIndex] = self.chkMarkViewed.isChecked() self.setCurrentIndex(self.currentIndex + 1) @QtCore.pyqtSlot() def on_buttonBox_rejected(self): self.markList[self.currentIndex] = self.chkMarkViewed.isChecked() self.close()