def selectData(params): result = [] query = selectRawData(params) prevDate = None prevPersonId = None bulk = {} while query.next(): record = query.record() date = forceDate(record.value( 'date')).toPyDate() # because QDate cannot work as key in dict personId = forceRef(record.value('person_id')) if prevDate != date or prevPersonId != personId: if prevDate: for office, begTime, endTime in bulkToRanges(bulk): result.append( (prevDate, prevPersonId, office, begTime, endTime)) bulk = {} prevDate = date prevPersonId = personId paramName = forceString(record.value('paramName')) if paramName.startswith('office'): paramValue = forceString(record.value('office')) else: paramValue = forceTime(record.value('time')) bulk[paramName] = paramValue for office, begTime, endTime in bulkToRanges(bulk): result.append((prevDate, prevPersonId, office, begTime, endTime)) return result
def getTempInvalidInfo(self, context): result = context.getInstance(CTempInvalidInfo, None) result._doctype = context.getInstance(CTempInvalidDocTypeInfo, self.cmbDoctype.value()) result._reason = context.getInstance(CTempInvalidReasonInfo, self.cmbReason.value()) result._extraReason = context.getInstance( CTempInvalidExtraReasonInfo, forceRef(self.cmbExtraReason.value())) result._busyness = forceInt(self.cmbBusyness.value()) result._placeWork = forceString(self.edtPlaceWork.text()) result._number = forceStringEx(self.edtNumber.text()) result._sex = formatSex(self.cmbOtherSex.currentIndex()) result._age = self.edtOtherAge.value() result._duration, result._externalDuration = self.modelPeriods.calcLengths( ) result._begDate = CDateInfo(self.modelPeriods.begDate()) result._endDate = CDateInfo(self.modelPeriods.endDate()) MKB, MKBEx = self.getMKBs() result._MKB = context.getInstance(CMKBInfo, MKB) result._MKBEx = context.getInstance(CMKBInfo, MKBEx) closed = self.modelPeriods.getTempInvalidClosedStatus() result._closed = closed result._periods = self.modelPeriods.getPeriodsInfo(context) if self.prevId: result._prev = context.getInstance(CTempInvalidInfo, self.prevId) else: result._prev = None result._ok = True return result
def checkSelectedToSave(self, externalId, tissueJournalId): db = QtGui.qApp.db tableProbe = db.table('Probe') tableTissueJournal = db.table('TakenTissueJournal') cond = [ tableProbe['takenTissueJournal_id'].ne(tissueJournalId), tableProbe['externalId'].eq(externalId), tableTissueJournal['tissueType_id'].eq(self._tissueTypeId), tableTissueJournal['deleted'].eq(0) ] dateCond = getExternalIdDateCond(self._tissueTypeId, self._datetimeTaken) if dateCond: cond.append(dateCond) queryTable = tableProbe.innerJoin( tableTissueJournal, tableTissueJournal['id'].eq(tableProbe['takenTissueJournal_id'])) record = QtGui.qApp.db.getRecordEx(queryTable, tableProbe['id'].name(), cond) if record and forceRef(record.value('id')): return self.checkInputMessage( u'другой идентификатор.\nТакой уже существует', False, self.edtExternalId) return True
def setRecord(self, record): CItemEditorBaseDialog.setRecord(self, record) setLineEditValue( self.edtCode, record, 'code') setLineEditValue( self.edtName, record, 'name') self.groupId = forceRef(record.value('group_id')) self.modelInItems.loadItems(self.itemId()) self.modelOutItems.loadItems(self.itemId())
def getTimeRangeOffice(self, date, personId): atcAmbulance = 'amb' etcTimeTable = '0' timeRange = ('--:--', '--:--') office = u'' times = [] queue = [] db = QtGui.qApp.db eventTypeId = getEventType(etcTimeTable).eventTypeId eventTable = db.table('Event') cond = [ eventTable['deleted'].eq(0), eventTable['eventType_id'].eq(eventTypeId), eventTable['execDate'].eq(date), eventTable['execPerson_id'].eq(personId) ] event = db.getRecordEx(eventTable, '*', cond) if event: eventId = forceRef(event.value('id')) action = CAction.getAction(eventId, atcAmbulance) begTime = action['begTime'] endTime = action['endTime'] office = action['office'] times = action['times'] queue = action['queue'] if begTime and endTime: timeRange = begTime.toString( 'H:mm') + ' - ' + endTime.toString('H:mm') return timeRange, office, times, queue
def setData(self, index, value, role=QtCore.Qt.EditRole): column = index.column() row = index.row() self.updateRetiredList() if not variantEq(self.data(index, role), value): personColIndex = self.getColIndex('person_id') sceneColIndex = self.getColIndex('scene_id') visitTypeColIndex = self.getColIndex('visitType_id') if column == personColIndex: # врач eventEditor = QtCore.QObject.parent(self) personId = forceRef(value) if not eventEditor.checkClientAttendaceEE(personId): return False if column in [personColIndex, sceneColIndex, visitTypeColIndex]: # врач, место или тип result = CInDocTableModel.setData(self, index, value, role) if result: item = self.items()[row] item.setValue('service_id', toVariant(self.getExactServiceId(item))) self.emitCellChanged( row, self.getColIndex('service_id')) # услуга return result else: return CInDocTableModel.setData(self, index, value, role) else: return True
def getEventInfo(self): if not self._eventInfo: from Events.EventInfo import CEventInfo eventId = forceRef( self._record.value('event_id')) if self._record else None self._eventInfo = self.getInstance(CEventInfo, eventId) return self._eventInfo
def on_actTempInvalidFind_triggered(self): row = self.tblTempInvalid.currentIndex().row() tempInvalidId = self.modelTempInvalid.getTempInvalidId( row) if row >= 0 else None if tempInvalidId: db = QtGui.qApp.db record = db.getRecord('TempInvalid', 'begDate, endDate', tempInvalidId) if record: begDate = forceDate(record.value('begDate')) endDate = forceDate(record.value('endDate')) tableEventType = db.table('EventType') eventTypeIdList = db.getIdList( tableEventType, 'id', tableEventType['code'].inlist(['01'])) tableEvent = db.table('Event') cond = [ tableEvent['execDate'].ge(begDate), tableEvent['execDate'].lt(endDate.addDays(1)), tableEvent['deleted'].eq(0), tableEvent['client_id'].eq(self.clientId), tableEvent['eventType_id'].inlist(eventTypeIdList), ] eventRecord = db.getRecordEx(tableEvent, 'id', cond, 'execDate DESC') if eventRecord: eventId = forceRef(eventRecord.value('id')) QtGui.qApp.findEvent(eventId) self.updateTables()
def loadData(self, clientId): self.items = [] if clientId: db = QtGui.qApp.db table = db.table('TempInvalid') tableDiagnosis = db.table('Diagnosis') cond = [ table['deleted'].eq(0), table['client_id'].eq(clientId), table['type'].eq(self.type_) ] cols = [ table['id'], tableDiagnosis['MKB'], tableDiagnosis['MKBEx'], table['begDate'], table['endDate'], table['closed'] ] queryTable = table.leftJoin( tableDiagnosis, tableDiagnosis['id'].eq(table['diagnosis_id'])) for record in db.getRecordList(queryTable, cols, cond, 'endDate DESC'): MKB = forceString(record.value('MKB')) MKBEx = forceString(record.value('MKBEx')) begDate = forceDate(record.value('begDate')) endDate = forceDate(record.value('endDate')) closed = forceInt(record.value('closed')) item = [ (MKB + '+' + MKBEx) if MKBEx else MKB, # 0 forceString(begDate), # 1 forceString(endDate), # 2 self.closedDict.get(closed, ''), # 3 MKB, # 4 MKBEx, # 5 forceRef(record.value('id')), # 6 None # 7 ] self.items.append(item) self.reset()
def setData(self, index, value, role=QtCore.Qt.EditRole, presetAction=None): # create action from combobox if role == QtCore.Qt.EditRole: actionTypeId = forceRef(value) if self.isMainActionType(actionTypeId): self._analysesGroups.setdefault( self.getMainAction(actionTypeId), []) else: mainActionTypeId = getMainActionTypeAnalyses(actionTypeId) self._analysesGroups[self.getMainAction( mainActionTypeId)].append(self.newAction(actionTypeId)) self._recalcItems() self.emitItemsCountChanged() self.emitDataChanged( self.index(0, 0), self.index(len(self._items) - 1, self.columnCount() - 1)) return True return False
def _initByRecord(self, record): self._datetime = CDateTimeInfo(forceDateTime(record.value('datetime'))) self._idx = forceInt(record.value('idx')) self._jobType = self.getInstance(CJobTypeInfo, forceRef(record.value('jobType_id'))) self._orgStructure = self.getInstance( COrgStructureInfo, forceRef(record.value('orgStructure_id'))) self._status = forceInt(record.value('status')) self._label = forceString(record.value('label')) self._note = forceString(record.value('note')) self._begDateTime = CDateTimeInfo( forceDateTime(record.value('begDateTime'))) self._endDateTime = CDateTimeInfo( forceDateTime(record.value('endDateTime'))) self._eQueueTicket = self.getInstance( CEQTicketInfo, forceDateTime(record.value('eQueueTicket_id')))
def removeRows(self, row, count, parentIndex=QtCore.QModelIndex()): if 0 <= row <= len(self._items) - count: actionTypeId = forceRef( self.getRecordByRow(row).value('actionType_id')) if actionTypeId in self.notDeletedActionTypes: QtGui.QMessageBox.critical( None, u'Ошибка', u'Невозможно удалить обязательные услуги: \'%s\'.' % ', '.join(self.notDeletedActionTypes.values()), QtGui.QMessageBox.Ok) return False if any(self.isLocked(r) for r in xrange(row, row + count)): return False itemsCount = len(self._items) removedRows = sum(map(self._removeRow, xrange(row, row + count))) self.beginRemoveRows(parentIndex, itemsCount - removedRows, itemsCount - 1) self._recalcItems() self.endRemoveRows() return True return False
def setJobTicketId(self, value): jobTicketId, declinedActionTypeIdList = self.extractValues(value) self._jobTicketId = forceRef(jobTicketId) for item in self.items(): item.setJobTicketId((self._jobTicketId, declinedActionTypeIdList)) return True return False
def getJobTypeId(domain, map): result = map.get(domain, None) if not result: jobTypeCode = CActionPropertyDomainJobTicketInfo(domain).jobTypeCode result = forceRef(QtGui.qApp.db.translate('rbJobType', 'code', jobTypeCode, 'id')) map[domain] = result return result
def processEvent(self, eventElement, clientId, date, insurerInfis): eventId = self.getElementValue(eventElement, 'NHISTORY', isRequired=True) # Применимо только в МО tblEvent = self._db.table('Event') eventRecord = self._db.getRecordEx(table=tblEvent, cols=[tblEvent['id'].eq(eventId), tblEvent['client_id'].eq(clientId), tblEvent['deleted'].eq(0)]) if not eventRecord: self.logger().warning(u'Не найден случай лечения NHISTORY=%s для пациента ID_PAC=%s' % (eventId, clientId)) return False tblAccountItem = self._db.table('Account_Item') fields = [tblAccountItem['id'], tblAccountItem['date'], tblAccountItem['action_id'], tblAccountItem['visit_id'], tblAccountItem['event_id'], tblAccountItem['master_id'], tblAccountItem['refuseType_id'], tblAccountItem['number'], tblAccountItem['note']] accountItemList = self._db.getRecordList(tblAccountItem, cols=fields, where=[tblAccountItem['event_id'].eq(eventId)]) self._db.transaction() try: for accountItem in accountItemList: oplata = self.getElementValue(eventElement, 'OPLATA', typeName='n') accountItem.setValue('date', toVariant(date)) accountNote = forceStringEx(accountItem.value('note')) if insurerInfis: accountNote += '$$insurer:%s$$' % insurerInfis sankElement = self.getElement(eventElement, 'SANK') if not sankElement.isNull(): refReason = self.getElementValue(sankElement, 'S_OSN') accountNote += '\nS_COM: %s' % self.getElementValue(sankElement, 'S_COM') else: refReason = '' if oplata != 0 else '53' # mdldml: 53 -- flatCode "Некорректного заполнения полей реестра" accountItem.setValue('note', toVariant(accountNote)) accountId = forceRef(accountItem.value('master_id')) payStatusMask = self.getPayStatusMask(accountId) if oplata != 1 and refReason: refuseTypeId = self.getRefuseTypeId(refReason) accountItem.setValue('refuseType_id', toVariant(refuseTypeId)) accountItem.setValue('number', toVariant(u'Отказ по МЭК')) updateDocsPayStatus(accountItem, payStatusMask, CPayStatus.refusedBits) else: accountItem.setValue('number', toVariant(u'Оплачено')) accountItem.setValue('refuseType_id', toVariant(None)) updateDocsPayStatus(accountItem, payStatusMask, CPayStatus.payedBits) self._db.updateRecord(tblAccountItem, accountItem) self._processedAccountIdSet.add(accountId) self._db.commit() except: self._db.rollback()
def additionalPrint(self, context, templateId): QtGui.qApp.setOverrideCursor(QtGui.QCursor(QtCore.Qt.WaitCursor)) item = self.tblTreeProbe.currentIndex().internalPointer() actionObj = item.action() actionId = actionObj.getId() actionRecord = actionObj.getRecord() eventId = forceRef(actionRecord.value('event_id')) eventInfo = context.getInstance(CEventInfo, eventId) eventActions = eventInfo.actions eventActions._idList = [actionId] eventActions._items = [CCookedActionInfo(context, actionRecord, actionObj)] eventActions._loaded = True action = eventInfo.actions[0] data = { 'event': eventInfo, 'action': action, 'client': eventInfo.client, 'actions': eventActions, 'currentActionIndex': 0, 'tempInvalid': None } QtGui.qApp.restoreOverrideCursor() applyTemplate(self, templateId, data)
def getReportData(self, orgStructureIdList): db = self.db tableOrgStructure = db.table('OrgStructure') orgStructurePath = db.func.getOrgStructurePath(tableOrgStructure['id']) cols = [ tableOrgStructure['id'], tableOrgStructure['name'], db.makeField(tableOrgStructure['isArea'].ne( COrgStructureAreaInfo.No)).alias('isArea'), orgStructurePath.alias('path') ] cond = [tableOrgStructure['id'].inlist(orgStructureIdList)] order = [orgStructurePath.desc(), tableOrgStructure['name']] isArea = {} name = {} count = {} path = {} for rec in db.iterRecordList(tableOrgStructure, cols, cond, order=order): orgStructureId = forceRef(rec.value('id')) path[orgStructureId] = forceString(rec.value('path')) isArea[orgStructureId] = forceBool(rec.value('isArea')) name[orgStructureId] = forceString(rec.value('name')) count[orgStructureId] = getAttachedCount(orgStructureId) idList = sorted( count.keys(), key=lambda orgStructureId: (-path[orgStructureId].count('.'), name[orgStructureId])) return [(isArea[orgStructureId], name[orgStructureId], count[orgStructureId]) for orgStructureId in idList]
def on_btnEditEvent_clicked(self): db = QtGui.qApp.db table = db.table('Job_Ticket') tableAPJT = db.table('ActionProperty_Job_Ticket') tableActionProperty = db.table('ActionProperty') tableAction = db.table('Action') tableEvent = db.table('Event') queryTable = table queryTable = queryTable.leftJoin(tableAPJT, tableAPJT['value'].eq(table['id'])) queryTable = queryTable.leftJoin(tableActionProperty, tableActionProperty['id'].eq(tableAPJT['id'])) queryTable = queryTable.leftJoin(tableAction, tableAction['id'].eq(tableActionProperty['action_id'])) queryTable = queryTable.leftJoin(tableEvent, tableEvent['id'].eq(tableAction['event_id'])) where = [ table['id'].eq(self._id), tableAction['deleted'].eq(0), tableEvent['deleted'].eq(0) ] cols = 'Event.id as eventId' query = db.query(db.selectStmt(queryTable, cols, where)) if query.size(): query.next() record = query.record() eventId = forceRef(record.value('eventId')) editEvent(self, eventId) else: QtGui.QMessageBox().warning(self, u'Внимание!', u'По данной работе не найдено обращения', QtGui.QMessageBox.Ok)
def selectData(params): begDate = forceDate(params.get('begDate', QtCore.QDate())) endDate = forceDate(params.get('endDate', QtCore.QDate())) locationCardType = forceRef(params.get('locationCardTypeId', None)) db = QtGui.qApp.db tableClient = db.table('Client') tableLocalCardType = db.table('rbLocationCardType') tableClientLocationCard = db.table('Client_LocationCard') fields = [ tableClient['lastName'], tableClient['firstName'], tableClient['patrName'], tableClient['birthDate'], tableLocalCardType['name'], tableClient['id'] ] cond = [ tableLocalCardType['id'].eq(locationCardType), tableClientLocationCard['createDatetime'].ge(begDate), tableClientLocationCard['createDatetime'].le(endDate) ] queryTable = tableClient.innerJoin( tableClientLocationCard, [tableClientLocationCard['master_id'].eq(tableClient['id'])]) queryTable = queryTable.innerJoin( tableLocalCardType, tableLocalCardType['id'].eq( tableClientLocationCard['locationCardType_id'])) stmt = db.selectStmt(queryTable, fields, cond) return db.query(stmt)
def currentTreeItemChanged(self, current, previous): abort = False if not current.isValid() or current.row() < 0: abort = True else: item = current.internalPointer() if isinstance(item, CJobTicketTreeActionItem): action = item.action() self.tblProps.model().setAction(action, self.clientId, self.clientSex, self.clientAge) setActionPropertiesColumnVisible(action.getType(), self.tblProps) self.tblProps.resizeRowsToContents() self.tblProps.setEnabled(True) context = forceString(QtGui.qApp.db.translate('ActionType', 'id', action.getType().id, 'context')) additionalCustomizePrintButton(self, self.btnPrint, context) if not self.eventEditor: self.createEventPossibilities(forceRef(action.getRecord().value('event_id'))) self.btnLoadTemplate.setEnabled(True) else: abort = True if abort: self.btnLoadTemplate.setEnabled(False) self.tblProps.setEnabled(False) additionalCustomizePrintButton(self, self.btnPrint, '')
def getContractInfo(self): from Events.EventInfo import CContractInfo contractId = forceRef( self._record.value('contract_id')) if self._record else None if contractId: return self.getInstance(CContractInfo, contractId) return self.getEventInfo().contract
def setData(self, index, value, role=QtCore.Qt.EditRole): column = index.column() row = index.row() if not variantEq(self.data(index, role), value): if column == 1: QtCore.QObject.parent(self).checkReturnBlank( row, column, QtCore.QObject.parent(self).tblBlankActionsMoving, self) result = CInDocTableModel.setData(self, index, value, role) QtCore.QObject.parent(self).checkDoubleNumber( forceInt(value), row, column, QtCore.QObject.parent(self).tblBlankActionsMoving, self) return CInDocTableModel.setData(self, index, value, role) elif column == 2: QtCore.QObject.parent(self).checkReturnBlank( row, column, QtCore.QObject.parent(self).tblBlankActionsMoving, self) result = CInDocTableModel.setData(self, index, value, role) QtCore.QObject.parent(self).checkDoubleNumber( forceInt(value), row, column, QtCore.QObject.parent(self).tblBlankActionsMoving, self) return CInDocTableModel.setData(self, index, value, role) elif column == 3: self._cols[4].orgStructureId = forceRef(value) return CInDocTableModel.setData(self, index, value, role) elif column == 5: QtCore.QObject.parent(self).checkReturnBlank( row, column, QtCore.QObject.parent(self).tblBlankActionsMoving, self) result = CInDocTableModel.setData(self, index, value, role) result = CInDocTableModel.setData(self, index, value, role) if result: QtCore.QObject.parent(self).updateActionsBlankParty() return result elif column == 6: QtCore.QObject.parent(self).checkReturnBlank( row, column, QtCore.QObject.parent(self).tblBlankActionsMoving, self) result = CInDocTableModel.setData(self, index, value, role) result = CInDocTableModel.setData(self, index, value, role) if result: QtCore.QObject.parent(self).updateActionsBlankParty() return result elif column == 8: QtCore.QObject.parent(self).checkReturnBlank( row, column, QtCore.QObject.parent(self).tblBlankActionsMoving, self) result = CInDocTableModel.setData(self, index, value, role) if result: QtCore.QObject.parent(self).updateActionsBlankParty() return result return CInDocTableModel.setData(self, index, value, role) return True
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 _init(self, userId): assert self._userId == userId self.clear() db = QtGui.qApp.db tablePersonJobType = db.table('Person_JobType') tableJobType = db.table('rbJobType') jobTypeIdList = db.getIdList( tablePersonJobType, tablePersonJobType['jobType_id'], tablePersonJobType['master_id'].eq(userId)) result = set([]) for jobTypeId in jobTypeIdList: result |= set( db.getDescendants(tableJobType, 'group_id', jobTypeId)) jobTypeIdList = list(result) cols = [tableJobType['code'].name(), tableJobType['id'].name()] for record in db.iterRecordList( tableJobType, cols, tableJobType['id'].inlist(jobTypeIdList)): jobTypeId = forceRef(record.value('id')) jobTypeCode = forceString(record.value('code')) self._mapJobTypeCodeToId[jobTypeCode] = jobTypeId self._availableJobTypeIdList.append(jobTypeId)
def checkPeriodDataEntered(self, prevPeriodEndDate, row, record): self.tblPeriods.model() model = self.tblPeriods.model() begDateIndex = model.getColIndex('begDate') endDateIndex = model.getColIndex('endDate') resultIndex = model.getColIndex('result_id') begDate = forceDate(record.value('begDate')) endDate = forceDate(record.value('endDate')) resultId = forceRef(record.value('result_id')) result = True if result and (not begDate or begDate.isNull()): result = self.checkValueMessage( u'Не заполнена дата начала периода', False, self.tblPeriods, row, begDateIndex) if result and (prevPeriodEndDate and prevPeriodEndDate.daysTo(begDate) != 1): result = self.checkValueMessage( u'Недопустимая дата начала периода', False, self.tblPeriods, row, begDateIndex) if result and endDate and not endDate.isNull() and ( begDate.daysTo(endDate) < 0): result = self.checkValueMessage( u'Недопустимая дата окончания периода', False, self.tblPeriods, row, endDateIndex) if result and (not resultId): result = self.checkValueMessage(u'Не заполнен результат периода', False, self.tblPeriods, row, resultIndex) return endDate, result
def toStatusTip(self, val, record): cache = CRBModelDataCache.getData(self.tableName, True) text = cache.getStringById(forceRef(val), CRBComboBox.showName) specifiedName = forceString(record.value('specifiedName')) if specifiedName: text = text + ' ' + specifiedName return toVariant(text)
def _checkFilled(self): db = QtGui.qApp.db table = db.table('Probe') tripodNumberList = range(self._tripodCount) placeInTripodList = range(self._tripodCapacity) probeIdList = [] for probeId in self._probeIdList: probeIdList.extend(self.originalProbeTestsIdList(probeId)) cond = [table['status'].notInlist([CSamplePreparationModel.probeIsFinished, CSamplePreparationModel.probeWithoutResult] ), table['id'].notInlist(probeIdList), table['equipment_id'].eq(self._equipmentId), table['tripodNumber'].inlist(tripodNumberList), table['placeInTripod'].inlist(placeInTripodList) ] fields = 'id, externalId, workTest_id, placeInTripod, t ripodNumber, takenTissueJournal_id, status' recordList = db.getRecordList(table, fields, cond) for record in recordList: placeInTripod = forceInt(record.value('placeInTripod')) - 1 tripodNumber = forceInt(record.value('tripodNumber')) - 1 notOverTop = placeInTripod <= self.rowCount() and tripodNumber <= self._tripodCount notUnderBottom = placeInTripod >= 0 and tripodNumber >= 0 if notOverTop and notUnderBottom: if self._mapTripodNumberToItems[tripodNumber][placeInTripod].isEmpty(): self._mapTripodNumberToItems[tripodNumber][placeInTripod] = record probeId = forceRef(record.value('id')) self._mapProbeId2Record[probeId] = record
def getForegroundColor(self, val, record): val = forceRef(val) if not val: return QtCore.QVariant() if val and val not in self.foregroundColorCache: statusRec = QtGui.qApp.db.getRecordEx(stmt=''' SELECT s.begDate, s.endDate FROM ActionType at LEFT JOIN rbService s ON at.nomenclativeService_id = s.id WHERE at.id = %d ''' % val) begDate, endDate = forceDate( statusRec.value('begDate')), forceDate( statusRec.value('endDate')) if begDate and not endDate: status = begDate <= QtCore.QDate().currentDate() elif not begDate and endDate: status = QtCore.QDate().currentDate() <= endDate elif begDate and endDate: status = begDate <= QtCore.QDate().currentDate() <= endDate else: status = True self.foregroundColorCache[val] = status if self.foregroundColorCache[val]: return QtCore.QVariant() else: return QtCore.QVariant(QtGui.QColor(QtCore.Qt.darkRed))
def getOrgIdByCode(self, code): orgId = self._mapOrgCodeToId.get(code, None) if not orgId: orgId = forceRef( self.db.translate('Organisation', 'miacCode', code, 'id')) self._mapOrgCodeToId[code] = orgId return orgId
def setData(self, index, value, role=QtCore.Qt.EditRole): column = index.column() row = index.row() if role == QtCore.Qt.CheckStateRole and column == self.getColIndex( 'checked'): record = self._items[row] actionTypeId = forceRef(record.value('actionType_id')) self.parentWidget.setSelected(actionTypeId, forceInt(value) == QtCore.Qt.Checked, resetMainModel=True) return False result = CRecordListModel.setData(self, index, value, role) col = self.cols()[column] fieldName = col.fieldName() if fieldName == 'finance_id': self.initContract(row) self.updatePricesAndSums(row, row) elif fieldName == 'contract_id': self.updatePricesAndSums(row, row) elif fieldName == 'amount': self.updatePricesAndSums(row, row) if self.isRowDpedBegDatePlusAmount(row): self.updatePlannedEndDate(row) elif fieldName == 'duration': self.updatePlannedEndDate(row) elif fieldName == 'begDate' and not self.isRowPlanEndDateEdited(row): self.updatePlannedEndDate(row) return result