def sendMessage( receiver, subject, content, attachments=None, withSMS=None ): """ 쪽지함에 쪽지를 발송 """ #[TODO] To,CC,BCC에 대한 처리 필요 #[TODO] IF not logined !! smsList = [] msgIDXs = [] msgSave = { "Subject": subject, "Content": content, "Sender": Login.getID(), "SenderName": Login.getName() } if "<" in receiver: #ex) Address Parsing :: "정기영" <*****@*****.**>, "김태희" <*****@*****.**> -> ["*****@*****.**", "*****@*****.**"] addrsList = re.findall("\<([._,a-zA-Z0-9:\#\@]+)\>+", receiver) else: addrsList = [n.strip() for n in receiver.split(",")] for recID in addrsList: userData = Archive("User").getValues( "User.UserID == "+ recID, "Name,HandPhone" ) if userData: msgSave["Receiver"] = recID result_IDX = Archive("MsgInBox").New(**msgSave) if result_IDX: msgIDXs.append( result_IDX ) if userData["HandPhone"] and not userData["HandPhone"].replace("-","") in smsList: smsList.append( str(userData["HandPhone"].replace("-","")) ) sentMsg = { "RelateIDX": result_IDX, "Subject": subject, "Content": content, "Receiver": recID, "ReceiverName": userData["Name"], "Sender": Login.getID() } r = Archive("MsgSent").New( **sentMsg ) if attachments: #[TODO] 임시 코드입니다. 멀티센딩에서 업된 파일에 대한 레퍼런스 카운트가 이상적이나 일단 그냥 복제형태로 갑니다. if type(attachments) == unicode: attachments = attachments.encode("utf8") uploadFile = Files.getRootDir() + attachments fileName = os.path.split(attachments)[1] if os.path.exists( uploadFile ): for ridx in msgIDXs: if str(ridx).isdigit(): targetFile = "/data/message/%s.%s" % ( fileName, ridx ) shutil.copy2( uploadFile, Files.getSpartaDir() + targetFile ) msgMod = { "IDX" : ridx, "Attachments" : "%s" % fileName } r = Archive( "MsgInBox" ).New( **msgMod ) os.remove(uploadFile) if withSMS and smsList: SMS.send( sendMsg=u"스팔타쪽지>"+msgSave["Subject"], recvList=smsList ) return len(msgIDXs)
def getSpartaDir(): return Files.getSpartaDir()