def ViewAttachment(objHere): # print "View attachment" strThreadId = GetParameter(objHere.REQUEST, 'ThreadId') strMessageId = GetParameter(objHere.REQUEST, 'MessageId') if strMessageId: objMessage = SearchOne(objHere, 'E3Messages', 'id', strMessageId) else: objMessage = SearchOne(objHere, 'E3Messages', 'id', strThreadId) strAttachmentId = GetParameter(objHere.REQUEST, 'Attachment') # print strAttachmentId objAttachment = objMessage.unrestrictedTraverse(strAttachmentId) if 'image' in objAttachment.content_type: return "Can't show images yet" # return objAttachment.__call__(objAttachment) # return objAttachment # print dir(objAttachment) # return objAttachment.content_type # print dir(objHere.REQUEST.response.headers) # objHere.REQUEST.Response.content-encoding = objAttachment.content_type # print "content type:", objAttachment.content_type objHere.REQUEST.response.setHeader('content-type', """%s; name="%s" """ % (objAttachment.content_type, objAttachment.title)) # objHere.REQUEST.response.setHeader('content-type', """%s""" % objAttachment.content_type) objHere.REQUEST.response.setHeader('content-length', len(objAttachment.data)) objHere.REQUEST.response.setHeader('Accept-Ranges', 'bytes') if "image" in objAttachment.content_type: return objAttachment # objHere.REQUEST.response.setHeader('content-transfer-encoding', 'base64') # return base64.encodestring(objAttachment) # return base64.encodestring(objAttachment.data) return objAttachment.data
def AddEmailAddress(self, strEmailAddress): if not strEmailAddress: return (None, "No email address entered") strEmailAddress = strEmailAddress.strip().replace(" ", "").lower() objValidator = StringValidator(strEmailAddress) if not objValidator.isEmail(): return (None, """'%s' is not a valid email address. Please try again or <a href="/ContactDetails">contact the list owner</a>""" % strEmailAddress) objOldEmailAddress = SearchOne(self, "E3EmailAddress", "EmailAddress", strEmailAddress) if objOldEmailAddress: if objOldEmailAddress in self.objectValues(): return (None, "You have already registered this address (%s)" % strEmailAddress) else: objOldMember = objOldEmailAddress.unrestrictedTraverse('..') if objOldMember.ParkingMember(): self.ClaimEmailAddress(objOldEmailAddress, objOldMember) return (objOldEmailAddress, "New email address registered") else: return(None, """This email address belongs to someone else. Please <a href="/ContactDetails">contact the list owner</a>""") else: dodEmailAddress = GetDOD(self, "E3EmailAddress") objNewEmailAddress = dodEmailAddress.NewObject(self) objNewEmailAddress.EmailAddress = strEmailAddress objNewEmailAddress.Confirmed = False objNewEmailAddress.RequestConfirmation() objCatalogue = GetDataFolder(self, 'E3EmailAddress').Catalogue Catalogue(objNewEmailAddress) return (objNewEmailAddress, """New email address registered<br> A confirmation request has been sent to you. Please confirm your email address by following the instructions in the email""")
def ReportOnePostingAddress(objHere, strEmailAddress): objEmailAddress = SearchOne(objHere, 'E3EmailAddress', 'EmailAddress', strEmailAddress) strLine = strEmailAddress if objEmailAddress.Bouncing: strLine += ", bouncing" objMember = objEmailAddress.unrestrictedTraverse('..') if objMember.NoMail: strLine += ", member on nomail" if objMember.MembershipType == 'None': strLine += ", none membership" strDeliveryMode = objEmailAddress.DeliveryMode() strLine += ", " + strDeliveryMode print strLine
def EnsureAddressIsMine(self, strEmailAddress): objExistingEmailAddress = SearchOne(self, 'E3EmailAddress', 'EmailAddress', strEmailAddress) if objExistingEmailAddress: objExistingMember = objExistingEmailAddress.unrestrictedTraverse('..') if objExistingMember.ParkingMember(): objEmailAddress = self.ClaimEmailAddress(objExistingEmailAddress, objExistingMember) return (True, False, objEmailAddress) elif objExistingMember == self: return (True, False, objExistingEmailAddress) else: SetMessage(self, """%s is already in use by someone else. Please <a href="/ContactDetails">contact the list owner</a>""" % strEmailAddress, "") return (False, False, None) else: dodEmailAddress = GetDOD(self, 'E3EmailAddress') objEmailAddress = dodEmailAddress.NewObject(self) objEmailAddress.EmailAddress = strEmailAddress Catalogue(objEmailAddress) return (True, True, objEmailAddress)
def ViewThreadContents(objHere, objRequest): # print "Request: ", objRequest.REQUEST intThreadId = str(GetParameter(objRequest, 'ThreadId')) intMonth = str(GetParameter(objRequest, 'Month')) intYear = str(GetParameter(objRequest, 'Year')) # print "Thread: ", intThreadId # print "Month: ", intMonth # print "Year: ", intYear strAttachment = GetParameter(objRequest, 'Attachment') strMessageId = GetParameter(objRequest, 'MessageId') if strMessageId: intMessageId = int(strMessageId) else: intMessageId = 0 strThreadId = GetParameter(objRequest, 'ThreadId') objThread = SearchOne(objHere, 'E3Messages', 'id', strThreadId) if intMessageId: strMessageId = GetParameter(objRequest, 'MessageId') objMessage = SearchOne(objHere, 'E3Messages', 'id', strMessageId) else: objMessage = objThread if not objThread: return "<p>Message not found. Please contact the list owner</p>" if strAttachment: objAttachment = objMessage.unrestrictedTraverse(strAttachment) return objMessage.unrestrictedTraverse(strAttachment) strSubject = ClearSubjectHeader(objMessage.mailSubject) # strThreads = GetThreads(objThread, intThreadId, intMessageId) strThreads = "" strDate = objMessage.mailDate.strftime(cnShortDateFormat + " %H:%M") objMember = GetCurrentMember(objHere) # if objMessage.Private and not objMember: strSender = GetSenderIdentification(objThread, IsFullMember(objHere)) # else: # strSender = ClearSender(objMessage.mailFrom) strHTML = GetHTML(objMessage) objMember = GetCurrentMember(objHere) strPrivatePublic = "" if objMember: if objMember.id == objMessage.UserId: if objMessage.Private: strPrivatePublic = """<p>For list members only. <a href="%s&Action=SetPublic">Click here to make this a public message</a>. Note: Only make a message public if you have personally written the whole message</p>""" else: strPrivatePublic = """<p>Public message, visible to anyone. <a href="%s&Action=SetPrivate">Click here to make this a private message, visible to list members only</a></p>""" strPrivatePublic = strPrivatePublic % FullURL(objHere) if strHTML: strBody = strHTML else: strBody = InsertBrs(objMessage.mailBody) strAttachments = ListAttachments(objMessage, intThreadId, intMessageId) strAttachments = ToUnicode(strAttachments) strSubject = ToUnicode(strSubject) strSender = ToUnicode(strSender) strBody = ToUnicode(strBody) strThreads = ToUnicode(strThreads) strAttachments = ToUnicode(strAttachments) strResult = u""" <fieldset> <legend>%s by %s</legend> """ % (strDate, strSender) strResult += u"<h2>%s</h2>\n" % strSubject strResult += strPrivatePublic + "\n" strResult += strThreads + "\n" strResult += strAttachments + "\n" strResult += u"""</fieldset> <fieldset> <legend>Message</legend> <p>%s</p> </fieldset> """ % strBody # strResult = u""" # # <fieldset> # <legend>%(Date)s by %(Sender)s</legend> # <h2>%(Subject)s</h2> # %(PrivatePublic)s # %(Threads)s # %(Attachments)s # </fieldset> # <fieldset> # <legend>Message</legend> # <p>%(Body)s</p> # </fieldset>""" % {'Subject': strSubject, # 'Threads': strThreads, # 'Date': strDate, # 'Sender': strSender, # 'Body': strBody, # 'PrivatePublic': strPrivatePublic, # 'Attachments': strAttachments} # strResult = unicode(strResult, 'ascii', 'replace') return strResult