예제 #1
0
    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
예제 #2
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