소스 검색

звонки по пользователю - аггрегирование евентов

svetlana 3 년 전
부모
커밋
6e3667a1a4
1개의 변경된 파일14개의 추가작업 그리고 7개의 파일을 삭제
  1. 14 7
      app/cel.py

+ 14 - 7
app/cel.py

@@ -134,11 +134,18 @@ class CdrUserEvents(CdrEvents):
     self._user = user
     self._events = []
     self.start = 0
+    self.answered = 0
     self.end = 0
+    self.recordingfile = ''
   def add(self, event):
     if not isinstance(event, CdrEvent):
       event = CdrEvent(event)
     if self._user in (event.src, event.dst, event.cnum):
+      if (self.answer ==0) and (event.disposition == 'ANSWERED'):
+        self.answer = event.calldate + event.duration - event.billsec
+        self.recordingfile = event.recordingfile
+      if (self.recordingfile == ''):
+        self.recordingfile = event.recordingfile
       if len(self._events) == 0:
         self.start = event.calldate
         self.end = event.calldate + td(seconds=event.duration)
@@ -255,7 +262,7 @@ class CdrUserCall(CdrCall):
       self.linkedid = None
   @property
   def file(self):
-    return self.events.first.recordingfile
+    return self.events.recordingfile
   @property
   def src(self):
     return self.events.first.cnum
@@ -276,20 +283,20 @@ class CdrUserCall(CdrCall):
       return None
   @property
   def duration(self):
-    if not self.isAnswered:
+    if not self.events.answer == 0
       return 0
     else:
-     return self.events.first.billsec
+     return self.events.end - self.events.answer
   @property
   def waiting(self):
-    if not self.isAnswered:
-      return self.events.first.duration
+    if not self.event.answer == 0:
+      return self.events.end - self.events.start
     else:
       # TODO: exclude time on ivr
-      return self.events.first.duration - self.duration
+      return self.events.answer - self.events.start
   @property
   def isAnswered(self):
-    return self.disposition == 'ANSWERED';
+    return self.events.answer != 0;
   @property
   def simple(self):
     return {'start': self.start,