corrected dependencies to non included files.

git-svn-id: http://svn.berlios.de/svnroot/repos/sems/trunk@6 8eb893ce-cfd4-0310-b710-fb5ebe64c474
sayer/1.4-spce2.6
Raphael Coeffic 21 years ago
parent 37abd5379e
commit f84c0141a5

@ -1,83 +0,0 @@
Index: log.py
===================================================================
--- log.py (.../branches/inter_plugin_com/apps/ivr/py/log.py) (revision 22559)
+++ log.py (.../trunk/apps/ivr/py/log.py) (revision 21770)
@@ -1,52 +1,35 @@
import ivr
-import sys,logging
+import sys
-from com.iptel.log.Logger import *
-
# These are the same as in log.h
L_ERR = 0
L_WARN = 1
L_INFO = 2
L_DBG = 3
-def fromPyLogLevel(py_level):
+def log(level, msg, args):
- level = 0
- if py_level >= logging.ERROR:
- level = L_ERR
- elif py_level >= logging.WARN:
- level = L_WARN
- elif py_level >= logging.INFO:
- level = L_INFO
+ if args != None:
+ tmp_msg = msg % args
else:
- level = L_DBG
+ tmp_msg = msg
+
+ ivr.log(level,"Ivr-Python: " + tmp_msg + "\n")
- return level
-
-def toPyLogLevel(level):
+def error(msg, args=None):
+ log(L_ERR, msg, args)
- py_level = 0
- if level >= L_DBG:
- py_level = logging.DEBUG
- elif level >= L_INFO:
- py_level = logging.INFO
- elif level >= L_WARN:
- py_level = logging.WARN
- else:
- py_level = logging.ERROR
+def warn(msg, args=None):
+ log(L_WARN, msg, args)
- return py_level
+def info(msg, args=None):
+ log(L_INFO, msg, args)
+
+def debug(msg, args=None):
+ log(L_DBG, msg, args)
-class SemsLogHandler(logging.Handler):
-
- def emit(self, record):
-
- msg = self.format(record)
- ivr.log(fromPyLogLevel(record.levelno),msg + '\n')
-
-
def stacktrace(tb):
if tb: last_file = stacktrace(tb.tb_next)
@@ -72,9 +55,5 @@
# init code
-if not hasattr(Logger,"logger"):
- initLogger("sems",toPyLogLevel(ivr.SEMS_LOG_LEVEL))
- getLogger().addLogHandler(SemsLogHandler())
-
sys.excepthook = log_excepthook
debug("Python-Ivr logging started")

@ -1,7 +1,5 @@
import ivr
import sys,logging
from com.iptel.log.Logger import *
import sys
# These are the same as in log.h
L_ERR = 0
@ -9,42 +7,27 @@ L_WARN = 1
L_INFO = 2
L_DBG = 3
def fromPyLogLevel(py_level):
def log(level, msg, args):
level = 0
if py_level >= logging.ERROR:
level = L_ERR
elif py_level >= logging.WARN:
level = L_WARN
elif py_level >= logging.INFO:
level = L_INFO
if args != None:
tmp_msg = msg % args
else:
level = L_DBG
return level
tmp_msg = msg
ivr.log(level,"Ivr-Python: " + tmp_msg + "\n")
def toPyLogLevel(level):
py_level = 0
if level >= L_DBG:
py_level = logging.DEBUG
elif level >= L_INFO:
py_level = logging.INFO
elif level >= L_WARN:
py_level = logging.WARN
else:
py_level = logging.ERROR
return py_level
def error(msg, args=None):
log(L_ERR, msg, args)
def warn(msg, args=None):
log(L_WARN, msg, args)
class SemsLogHandler(logging.Handler):
def emit(self, record):
msg = self.format(record)
ivr.log(fromPyLogLevel(record.levelno),msg + '\n')
def info(msg, args=None):
log(L_INFO, msg, args)
def debug(msg, args=None):
log(L_DBG, msg, args)
def stacktrace(tb):
@ -72,9 +55,5 @@ def log_excepthook(exception, value, tb):
# init code
if not hasattr(Logger,"logger"):
initLogger("sems",toPyLogLevel(ivr.SEMS_LOG_LEVEL))
getLogger().addLogHandler(SemsLogHandler())
sys.excepthook = log_excepthook
debug("Python-Ivr logging started")

Binary file not shown.

@ -31,7 +31,7 @@ compile:
/usr/bin/python${PYTHON_VERSION} /usr/lib/python${PYTHON_VERSION}/compileall.py -q ${LIBDIR}
install: all
install -d ${BASEDIR}/${LIB_INSTALLDIR}
install -d ${BASEDIR}/${LIB_INSTALLDIR}
install -m ${LIB_PERMISSIONS} -o ${OWNER} -g ${GROUP} ${LIBDIR}/*.pyc ${BASEDIR}/${LIB_INSTALLDIR}
uninstall:

@ -0,0 +1,50 @@
import re
class InvalidMailboxURL(Exception):
value = ""
def __init__(self,value):
self.value = value
Exception.__init__(value)
def __str__(self):
return repr(self.value)
class MailboxURL:
url = ""
user = ""
passwd = ""
host = ""
port = 0
path = ""
def __init__(self,url):
self.url = url
self._parse()
def _parse(self):
m = re.match('imap://(.+):(.+)@(.+):([0-9]+)/(.+)',self.url)
if m is None:
raise InvalidMailboxURL('regex did not match')
self.user = m.group(1)
self.passwd = m.group(2)
self.host = m.group(3)
self.port = int(m.group(4))
self.path = m.group(5)
def __str__(self):
return ("url:\t%s\n" % self.url) + \
("user:\t%s\n" % self.user) + \
("passwd:\t%s\n" % self.passwd) + \
("host:\t%s\n" % self.host) + \
("port:\t%i\n" % self.port) + \
("path:\t%s\n" % self.path)

@ -0,0 +1,235 @@
import os,base64,time
from imaplib import IMAP4
from MailboxURL import *
READ_BUFSIZE = 4096
def IMAPCALL(call_res):
(t,d) = call_res
if t != 'OK':
raise IMAP4.error(d[0])
return (t,d)
class IMAP4_MsgBODY:
uid = ''
parts = []
ct = ''
def __init__(self,imap,uid):
self.uid = ''
self.parts = []
self.ct = ''
(t,d) = imap.uid('FETCH',uid,'(BODY)')
if d[0] is None:
raise IMAP4.error('No message with UID "%s" has been found' % uid)
self._parse_body_desc(d[0])
def part_ct(self,part):
return '%s/%s' % (self.parts[part][0],self.parts[part][1])
def fetch2file(self,imap,part,filename=None):
(t,d) = imap.uid('fetch',self.uid,'(BODY.PEEK[%i])' % (part+1))
if (t != "OK") or (len(d[0]) != 2):
raise IMAP4.error("could not retrieve part %s/%i" \
% (self.uid, part+1))
msg = d[0][1]
msg = base64.decodestring(msg)
if filename is None:
out_file = os.tmpfile()
else:
out_file = open(filename,'w+')
out_file.write(msg)
out_file.seek(0)
if filename is None:
return out_file
else:
out_file.close()
return None
def _parse_body_desc(self,desc):
(_dummy,s) = self._parenthesis2seq(desc)[1]
self.uid = s[1]
if type(s[3][0]) is not str:
# Multipart message
for i in s[3]:
if type(i) is str:
self.ct = i
break
self.parts.append(i)
else:
self.parts.append(s[3])
self.ct = s[3][0]
def _parenthesis2seq(self,s,ibeg=0):
seq = []
i = elmt_beg = ibeg
while i < len(s):
if s[i] == '(':
(i,tmp_seq) = self._parenthesis2seq(s,i+1)
elmt_beg = i
seq.append(tmp_seq)
elif s[i] == ')':
if elmt_beg < i:
seq.append(s[elmt_beg:i])
return (i+1,seq)
elif s[i] == ' ':
if elmt_beg < i:
if s[elmt_beg] == '"':
seq.append(s[elmt_beg+1:i-1])
else:
seq.append(s[elmt_beg:i])
i = i+1
elmt_beg = i
else:
i = i+1
return (i,seq)
class IMAP4_Mailbox:
url = None
imap = None
def __init__(self,url):
self.url = None
self.url = MailboxURL(url)
def __del__(self):
if self.imap != None:
self.imap.logout()
self.imap = None
def createBox(self):
self._login()
debug("Creating account: " + \
repr(IMAPCALL(self.imap.create(self.url.path))))
def deleteBox(self):
self._login()
debug("Deleting account: " + \
repr(IMAPCALL(self.imap.delete(self.url.path))))
def uploadMsg(self,msg):
self._login()
IMAPCALL(self.imap.append(self.url.path,None,time.gmtime(),msg))
def deleteMsg(self,uid):
self._login()
IMAPCALL(self.imap.select(self.url.path))
IMAPCALL(self.imap.uid('STORE',uid,'+flags', '(\\Deleted)'))
IMAPCALL(self.imap.expunge())
IMAPCALL(self.imap.close())
def saveMsg(self,uid):
self._login()
IMAPCALL(self.imap.select(self.url.path))
IMAPCALL(self.imap.uid('STORE',uid,'+flags','(\\seen)'))
IMAPCALL(self.imap.close())
def getWavMsgList(self,search_criterion):
self._login()
IMAPCALL(self.imap.select(self.url.path))
(t,d) = self.imap.uid('SEARCH',search_criterion)
IMAPCALL((t,d))
msg_list = []
for i in d[0].split():
body = IMAP4_MsgBODY(self.imap,i)
for p in range(len(body.parts)):
if body.part_ct(p) == 'AUDIO/X-WAV':
msg_list.append(body.uid)
IMAPCALL(self.imap.close())
return msg_list
def downloadWAV(self,msg_uid):
self._login()
IMAPCALL(self.imap.select(self.url.path))
body = IMAP4_MsgBODY(self.imap,msg_uid)
fp = None
for p in range(len(body.parts)):
if body.part_ct(p) == 'AUDIO/X-WAV':
fp = body.fetch2file(self.imap,p)
break
IMAPCALL(self.imap.close())
return fp
def downloadWAVs(self,search_criterion,file_prefix):
self._login()
IMAPCALL(self.imap.select(self.url.path))
(t,d) = self.imap.uid('SEARCH',search_criterion)
IMAPCALL((t,d))
msg_list = []
for i in d[0].split():
body = IMAP4_MsgBODY(self.imap,i)
for p in range(len(body.parts)):
if body.part_ct(p) == 'AUDIO/X-WAV':
filename = file_prefix + '-' + body.uid + '.wav'
msg_list.append(filename)
body.fetch2file(self.imap,p,filename)
IMAPCALL(self.imap.close())
return msg_list
def _login(self):
if self.imap != None:
return
self.imap = IMAP4(self.url.host,self.url.port)
try:
IMAPCALL(self.imap.login(self.url.user,self.url.passwd))
except:
self.imap = None
raise

@ -3,8 +3,7 @@ import base64,time
from log import *
from ivr import *
from com.iptel.log.Logger import *
from com.iptel.imap.imap4ext import *
from imap_mailbox.imap4ext import *
class IvrDialog(IvrDialogBase):

@ -3,8 +3,7 @@ import os,weakref
from log import *
from ivr import *
from com.iptel.log.Logger import *
from com.iptel.imap.imap4ext import *
from imap_mailbox.imap4ext import *
class List(list):

Loading…
Cancel
Save