def checkEventData(self, eventData): """Проверяет наличие требуемых полей в импортируемых данных, а также соответствий в БД, куда производится импорт. Для устранения дублирующихся вызовов идентификаторы записей в справочниках БД также заносятся в поля экземпляра обращения. @param eventData: экземпляр обращения """ eventId = eventData.ExternalId eventTypeCode = eventData.EventTypeCode if not eventTypeCode: self.err2log(CErrorLevel.error, 'Event type code not specified', 'Event', eventId) return -1 eventTypeId = self.getEventTypeIdByCode(eventTypeCode) if not eventTypeId: self.err2log( CErrorLevel.error, 'Event type with code %s was not found in target database' % eventTypeCode, 'Event', eventId) return -2 eventData.eventTypeId = eventTypeId for actionData in eventData.Action: actionTypeCode = actionData.ActionTypeCode if not actionTypeCode: self.err2log(CErrorLevel.error, 'Action type code not specified', 'Event', eventId) return -3 try: action = CAction.createByTypeCode(actionTypeCode) except AssertionError: self.err2log( CErrorLevel.error, 'Action type with code %s was not found in target database' % actionData.actionTypeCode, 'Event', eventId) return -4 actionData.instance = action for ap in actionData.ActionProperty: apType = ap.ActionPropertyType if not apType: self.err2log( CErrorLevel.error, u'Action property type not specified in action with action type code "%s"' % actionTypeCode, 'Event', eventId) return -5 try: action[apType] = ap.ActionPropertyValue except KeyError: self.err2log( CErrorLevel.error, u'Action property with type "%s" not found in description of ActionType with code "%s"' % (ap.ActionPropertyType, actionTypeCode), 'Event', eventId) return -6 return 0
def saveDataNumbers(self, day): if self.personId: db = QtGui.qApp.db eventTable = db.table('Event') db.transaction() try: dayInfo = self.tableItems event = getEvent(constants.etcTimeTable, self.date, self.personId) eventId = db.insertOrUpdate(eventTable, event) if self.actionTypeCode == constants.atcAmbulance: if not self.action: self.action = CAction.createByTypeCode( constants.atcAmbulance) timeRange = dayInfo[CTimeTableModel.ciAmbTimeRange] if timeRange: self.action['begTime'], self.action[ 'endTime'] = timeRange else: del self.action['begTime'] del self.action['endTime'] self.action['office'] = dayInfo[ CTimeTableModel.ciAmbOffice] self.action['plan'] = dayInfo[CTimeTableModel.ciAmbPlan] timeRange1 = dayInfo[CTimeTableModel.ciAmbTimeRange1] if timeRange1: self.action['begTime1'], self.action[ 'endTime1'] = timeRange1 else: del self.action['begTime1'] del self.action['endTime1'] self.action['office1'] = dayInfo[ CTimeTableModel.ciAmbOffice1] self.action['plan1'] = dayInfo[CTimeTableModel.ciAmbPlan1] timeRange2 = dayInfo[CTimeTableModel.ciAmbTimeRange2] if timeRange2: self.action['begTime2'], self.action[ 'endTime2'] = timeRange2 else: del self.action['begTime2'] del self.action['endTime2'] self.action['office2'] = dayInfo[ CTimeTableModel.ciAmbOffice2] self.action['plan2'] = dayInfo[CTimeTableModel.ciAmbPlan2] self.action['fact'] = dayInfo[CTimeTableModel.ciAmbFact] self.action['time'] = dayInfo[CTimeTableModel.ciAmbTime] self.action.save(eventId) if self.actionTypeCode == constants.atcHome: if not self.action: self.action = CAction.createByTypeCode( constants.atcHome) timeRange = dayInfo[CTimeTableModel.ciHomeTimeRange] if timeRange: self.action['begTime'], self.action[ 'endTime'] = timeRange else: del self.action['begTime'] del self.action['endTime'] self.action['plan'] = dayInfo[CTimeTableModel.ciHomePlan] timeRange1 = dayInfo[CTimeTableModel.ciHomeTimeRange1] if timeRange1: self.action['begTime1'], self.action[ 'endTime1'] = timeRange1 else: del self.action['begTime1'] del self.action['endTime1'] self.action['plan1'] = dayInfo[CTimeTableModel.ciHomePlan1] timeRange2 = dayInfo[CTimeTableModel.ciHomeTimeRange2] if timeRange2: self.action['begTime2'], self.action[ 'endTime2'] = timeRange2 else: del self.action['begTime2'] del self.action['endTime2'] self.action['plan2'] = dayInfo[CTimeTableModel.ciHomePlan2] self.action['fact'] = dayInfo[CTimeTableModel.ciHomeFact] self.action['time'] = dayInfo[CTimeTableModel.ciHomeTime] self.action.save(eventId) db.commit() except: db.rollback() QtGui.qApp.logCurrentException() raise