Exemple #1
0
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
Exemple #2
0
    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""")
Exemple #3
0
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
Exemple #4
0
    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)
Exemple #5
0
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