Example #1
0
def RemoveProfessionalName(objHere):
    objMembers = GetDataFolder(objHere, 'E3Member')
    for objBatch in objMembers.objectValues('Folder'):
        for objMember in objBatch.objectValues('E3Member'):
            if "FullName" in objMember.objectIds():
                if not objMember.Name:
                    objMember.Name = objMember.FullName
Example #2
0
def PostFixCheck(objHere):
    strResult = """<fieldset>
    <legend>Post-fix check</legend>"""

    strResult += "<ol>\n"
    objMembers = GetDataFolder(objHere, 'E3Member')
    for objBatch in objMembers.objectValues('Folder'):
        for objMember in objBatch.objectValues('E3Member'):
            if "ListMemberships" in objMember.objectIds():
                if "ECL" in objMember.ListMemberships.objectIds():
                    strOldDeliveryMode = objMember.ListMemberships.ECL.myDeliveryMode
                    strOldDeliveryAddress = objMember.ListMemberships.ECL.EmailAddress
                    strDeliveryFrequency = objMember.EmailFrequency_ECL
                    strDigestMode = objMember.EmailDigestMode
                    strDeliveryAddress = objMember.EmailDeliveryAddress

                    if strOldDeliveryMode == "NoMail" and strDeliveryFrequency == "Direct" and objMember.NoMail:
                        pass
                    elif strOldDeliveryMode == "Direct" and strDeliveryFrequency == "Direct" and strDigestMode == "StructuredDigest":
                        pass
                    elif strOldDeliveryMode in ["MIMEDigest", "TextDigest", "StructuredDigest", "TopicsList"] and strDeliveryFrequency == "Daily" and strDigestMode == strOldDeliveryMode:
                        pass
                    else:
                        strResult += "<li>%s, from %s to %s - %s</li>" % (objMember.id, strOldDeliveryMode, strDeliveryFrequency, strDigestMode)

    strResult += "</ol>\n"
    strResult += "</fieldset>"
    return strResult
Example #3
0
def ConvertNameToUstring(objHere):
    objMembers = GetDataFolder(objHere, 'E3Member')
    for objBatch in objMembers.objectValues('Folder'):
        for objMember in objBatch.objectValues('E3Member'):
            strName = ToUnicode(objMember.Name)
            objMember.manage_delProperties(("Name", ))
            objMember.manage_addProperty("Name", strName, "ustring")
Example #4
0
def ChangeEmailSettings(objHere):
    # Old setting:
    #   (member).ListMemberships.ECL.myDeliveryMode
    #   (member).ListMemberships.ECL.EmailAddress

    # New settings:
    #   (member).EmailDigestMode
    #   (member).EmailFrequency-ECL
    #   (member).EmailDeliveryAddress

    # Unchanged:
    #   (member).NoMail
    #   (member).ContactEmailAddress

    # Might happen later:
    #   (member).EmailFrequency-ECL-Adverts, etc

    objMembers = GetDataFolder(objHere, 'E3Member')
    for objBatch in objMembers.objectValues('Folder'):
        for objMember in objBatch.objectValues('E3Member'):
            if not objMember.hasProperty("EmailDigestMode"):
                strDeliveryMode = objMember.ListMemberships.ECL.GetDeliveryMode()
                strEmailAddress = objMember.ListMemberships.ECL.EmailAddress
                objMember.manage_addProperty("EmailDeliveryAddress", strEmailAddress, "ustring")
                if "Digest" in strDeliveryMode:
                    strFrequency = "Daily"
                    strDigestMode = strDeliveryMode
                else:
                    strFrequency = "Direct"
                    strDigestMode = "StructuredDigest"
                objMember.manage_addProperty("EmailDigestMode", strDigestMode, "string")
                objMember.manage_addProperty("EmailFrequency_ECL", strFrequency, "string")
Example #5
0
def SaveStats(objContext, dictStats):
    print "Saving stats"

    # Update all existing stats
    objStats = GetDataFolder(objContext, "E3ListStat")
    for objStat in objStats.objectValues("E3ListStat"):
        dtmDate = objStat.GetDateOfCount()
        if dictStats.has_key(dtmDate):
            for strItem in ("JoinedYesterday", "PaymentYesterday", "ExpiredYesterday", "AdvertPostedYesterday", "NonAdvertPostedYesterday"):
                if not objStat.hasProperty(strItem):
                    objStat.manage_addProperty(strItem, dictStats[dtmDate][strItem], 'int')
            del(dicStats[dtmDate])
        for strItem in cnStatsList:
            if not objStat.hasProperty(strItem):
                objStat.manage_addProperty(strItem, 0, "int")

    dodListStat = GetDOD(objContext, "E3ListStat")

    for dtmDate in dictStats.keys():
        objStat = dodListStat.NewObject()
        objStat.SetDateOfCount(dtmDate)
        for strItem in ("JoinedYesterday", "PaymentYesterday", "ExpiredYesterday", "AdvertPostedYesterday", "NonAdvertPostedYesterday"):
            if dictStats[dtmDate].has_key(strItem):
                objStat.manage_addProperty(strItem, dictStats[dtmDate][strItem], 'int')
        for strItem in cnStatsList:
            if not objStat.hasProperty(strItem):
                objStat.manage_addProperty(strItem, 0, "int")
Example #6
0
def u32to33AddProfileProperties(objHere, blnSkip = False):
    if blnSkip:
        print "Skipping: AddProfileProperties"
        return

    objMembers = GetDataFolder(objHere, 'E3Member')
    for objBatch in objMembers.objectValues('Folder'):
        for objMember in objBatch.objectValues('E3Member'):
            AddProperties(objMember,
                (('FullName', '', 'ustring'),
                ('TagLine', '', 'ustring'),
                ('Biography', '', 'utext'),
                ('Testimonials', '', 'utext'),
                ('Country', '', 'ustring'),
                ('Location', '', 'ustring'),
                ('Postcode', '', 'ustring'),
                ('CommercialComments', '', 'utext'),
                ('CommunityComments', '', 'utext'),
                ('ContactEmailAddress', '', 'ustring'),
                ('PhoneNumber', '', 'ustring'),
                ('Languages', '', 'utext'),
                ('WebsiteAddress', '', 'ustring'),
                ('HostOfChapter', '', 'ustring'),
                ('ShowFullName', 'Hide', 'string'),
                ('ShowCountry', 'Hide', 'string'),
                ('ShowLocation', 'Hide', 'string'),
                ('ShowPostcode', 'Hide', 'string'),
                ('ShowEmailAddress', 'Hide', 'string'),
                ('ShowPhoneNumber', 'Hide', 'string'),
                ('ShowBiography', 'Hide', 'string'),
                ('ShowCommunityComments', 'Hide', 'string')))
Example #7
0
def ParkingAccounts(objHere):
    objMembers = GetDataFolder(objHere, 'E3Member')
    for objBatch in objMembers.objectValues('Folder'):
        for objMember in objBatch.objectValues('E3Member'):
            if objMember.GetNextExpiryFromMailman() < cnFirstDate:
                if objMember.Name <> 'Unknown':
                    print objMember.Name
Example #8
0
def ExtractEmailAddresses(objHere):
    """Processes all messages"""
#    objUnknownMember = SearchOne(objHere, 'E3Member', 'Username', 'Unknown')
#    if not objUnknownMember:
#        objDataObjectDefinition = GetDataFolder(objHere, 'DataObjectDefinitions').E3Member
#        objUnknownMember = objDataObjectDefinition.NewObject()
#        objUnknownMember.Username = '******'
    objArchive = GetDataFolder(objHere, 'E3Messages')
    objEmailAddresses = GetDataFolder(objHere, 'E3EmailAddress')
    objMembers = GetDataFolder(objHere, 'E3Member')

    dictAllEmailAddresses = GetAllEmailAddresses(objMembers, objEmailAddresses.Catalogue)
    dodMember = GetDOD(objHere, 'E3Member')
    dodEmailAddress = GetDOD(objHere, 'E3EmailAddress')
    intDone = 0
    for objYear in objArchive.objectValues():
        for objMonth in objYear.objectValues():
            for objThread in objMonth.objectValues():
                dictAllEmailAddresses = ExtractOneAddress(objThread, dictAllEmailAddresses, dodMember, dodEmailAddress)
                intDone = intDone + 1
#                if intDone > 100:
#                    return "done"
                for objMessage in objThread.objectValues('Folder'):
                    intDone = intDone + 1
                    dictAllEmailAddresses = ExtractOneAddress(objMessage, dictAllEmailAddresses, dodMember, dodEmailAddress)
    return "%s done" % intDone
Example #9
0
def ListUnconfirmedMembers(objHere):
    lstAddresses = []
    lstMembershipTypes = []
    objMembers = GetDataFolder(objHere, 'E3Member')
    for objBatch in objMembers.objectValues('Folder'):
        for objMember in objBatch.objectValues('E3Member'):
            if not objMember.MembershipType in lstMembershipTypes:
                lstMembershipTypes.append(objMember.MembershipType)

            if objMember.MembershipType == "Full" and not objMember.HasConfirmedEmailAddress:
                lstAddresses.append(objMember)

    strAddresses = ""
    for objMember in lstAddresses:
        strAddresses += '<li>%s (%s)</li>\n' % (objMember.EmailDeliveryAddress, objMember.id)

    strMembershipTypes = ""
    for strMembershipType in lstMembershipTypes:
        strMembershipTypes += "<li>%s</li>\n" % strMembershipType

    strResult = """
<h2>Membership types</h2>
<ol>
%s
</ol>
<h2>Members without confirmed email addresses</h2>
<ol>
%s
</ol>

""" % (strMembershipTypes, strAddresses)

    return strResult
Example #10
0
def RemindToConfirm(objHere):
    objMembers = GetDataFolder(objHere, 'E3Member')
    for objBatch in objMembers.objectValues('Folder'):
        for objMember in objBatch.objectValues('E3Member'):
            if objMember.VisitCount < 2:
                objMember.RemindToConfirm()
    return "Done"
Example #11
0
def GetMemberForId(objHere, strMemberId):
    objMembers = GetDataFolder(objHere, 'E3Member')
    strBatchId = strMemberId[8:11]
    try:
        return objMembers.unrestrictedTraverse('Batch%s/%s' % (strBatchId, strMemberId))
    except:
        return None
Example #12
0
def ImportHelpFile(objHere):
    objHelpFolder = GetDataFolder(objHere, "E3Help")
    for strId in objHelpFolder.objectIds("E3Help"):
        objHelpFolder.manage_delObjects(strId)
    ReadHelp(objHere)
    ReindexOne(objHere, "E3Help")
    BuildRules(objHere)
Example #13
0
def ChangeMonthCount(objHere, intYear, intMonth, intIncrease = 1, blnPublicCount = False):
    objE3Messages = GetDataFolder(objHere, 'E3Messages')
    if blnPublicCount:
        lstMessageCount = objE3Messages.PublicMessageCount
    else:
        lstMessageCount = objE3Messages.MessageCount
    blnFound = False
    lstResult = []
    for strYearLine in lstMessageCount:
        if not blnFound and strYearLine[:4] == str(intYear):
            blnFound = True
            lstCounts = strYearLine.split()
            lstCounts[intMonth] = str(int(lstCounts[intMonth]) + intIncrease)
            strYearLine = " ".join(lstCounts)
        lstResult.append(strYearLine)
    if not blnFound:
        lstCounts = []
        for intI in range(0, 13):
            lstCounts.append("0")
        lstCounts[intMonth] = str(intIncrease)
        lstCounts[0] = str(intYear)
        lstResult.append(" ".join(lstCounts))
    if blnPublicCount:
        objE3Messages.PublicMessageCount = lstResult
    else:
        objE3Messages.MessageCount = lstResult
Example #14
0
def AddPropertyToOfferings(objHere, strPropertyName, varDefault, strType):
    objMembers = GetDataFolder(objHere, 'E3Member')
    for objBatch in objMembers.objectValues('Folder'):
        for objMember in objBatch.objectValues('E3Member'):
            for objOffering in objMember.Offerings.objectValues("E3Offering"):
                if not strPropertyName in objOffering.propertyIds():
                    objOffering.manage_addProperty(strPropertyName, varDefault, strType)
Example #15
0
def UsernameExists(objHere, strUsername):
    objMembers = GetDataFolder(objHere, "E3Member")
    for objBatch in objMembers.objectValues('Folder'):
        for objMember in objBatch.objectValues('E3Member'):
            if objMember.Username.lower() == strUsername.lower():
                return True
    return False
Example #16
0
def ChangeFromMembersOnly(objHere):
    objMembers = GetDataFolder(objHere, 'E3Member')
    for objBatch in objMembers.objectValues('Folder'):
        for objMember in objBatch.objectValues('E3Member'):
            for strField in ('ShowCountry', 'ShowLocation', 'ShowPostcode', 'ShowEmailAddress', 'ShowPhoneNumber', 'ShowBiography', 'ShowFullName', 'ShowCommunityComments'):
                strValue = objMember.getProperty(strField)
                if strValue == "MembersOnly":
                    objMember.setProperty(strField, "Members")
Example #17
0
def HasDuplicateBookings(objHere):
    objMembers = GetDataFolder(objHere, 'E3Member')
    for objBatch in objMembers.objectValues('Folder'):
        for objMember in objBatch.objectValues('E3Member'):
            if len(objMember.Events.objectValues("E3Conf08Booking")) > 1:
                print "Duplicates for: ", objMember.id
                return True
    return False
Example #18
0
def GenerateTestData3p1(objContext):

    # Set 'Private' property to True/False at random
    objArchive = GetDataFolder(objContext, 'E3Messages')
    for objYear in objArchive.objectValues('Folder'):
        for objMonth in objYear.objectValues('Folder'):
            for objMessage in objMonth.objectValues('Folder'):
                objMessage.Private = random.choice((True, False))
Example #19
0
def CountBookReviews(objHere):
    objBooks = GetDataFolder(objHere, 'MCIBook')
    intResult = 0
    for objBatch in objBooks.objectValues():
        for objBook in objBatch.objectValues('MCIBook'):
            if objBook.Review:
                intResult = intResult + 1
    return intResult
Example #20
0
def HasFutureMasterclasses(objHere):
    objMasterclasses = GetDataFolder(objHere, 'MCIMasterclass')
    dtmNow = datetime.datetime.today()
    for objMasterclass in objMasterclasses.objectValues('MCIMasterclass'):
        if not objMasterclass.Cancelled:
            dtmClassDate = datetime.datetime(year = objMasterclass.ClassDate.year(), month = objMasterclass.ClassDate.month(), day = objMasterclass.ClassDate.day())
            if dtmClassDate >= dtmNow:
                return True
    return False
Example #21
0
def SearchHelp(objHere, strSearchText):
    objHelpFolder = GetDataFolder(objHere, 'E3Help')
    lstResult = []
    for objHelp in objHelpFolder.objectValues('E3Help'):
        if not objHelp.Type == 'Rules' and \
            (strSearchText in " ".join(objHelp.Lines).lower() or
            strSearchText in objHelp.title):
            lstResult.append((objHelp.title, """<li><a href="/Help/ShowOne?Id=%s">%s</a></li>\n""" % (objHelp.HelpId, objHelp.title)))
    return PresentWebTree(lstResult)
Example #22
0
def CountMembers(objHere):
    intResult = 0
    objMembers = GetDataFolder(objHere, 'E3Member')
    for objBatch in objMembers.objectValues('Folder'):
        for objMember in objBatch.objectValues('E3Member'):
            if objMember.Live() and not objMember.ParkingMember():
                intResult = intResult + 1
    objData = GetDataFolder(objHere, 'E3Data')
    objData.MembersCount = intResult
Example #23
0
def ExtensiveMembersSearch(objHere, strSearchFor):
    lstResult = []
    strSearchFor = strSearchFor.lower()
    objMembers = GetDataFolder(objHere, 'E3Member')
    for objBatch in objMembers.objectValues('Folder'):
        for objMember in objBatch.objectValues('E3Member'):
            if objMember.ContainsString(strSearchFor):
                lstResult.append(objMember)
    return lstResult
Example #24
0
def CountBooksForCategories(objHere):
    print "Counting books for categories"
    objCategories = GetDataFolder(objHere, 'MCIBookCategory')
    for objCategory in objCategories.objectValues('MCIBookCategory'):
        objCategory.BooksInCategory = CountBooksForOneCategory(objCategory)
        print objCategory.CategoryName, objCategory.BooksInCategory
        for objSubCategory in objCategory.objectValues('MCIBookCategory'):
            objSubCategory.BooksInCategory = CountBooksForOneCategory(objSubCategory)
            print objSubCategory.CategoryName, objSubCategory.BooksInCategory
Example #25
0
def FindPrivateMessages(objHere):
    strResult = "<ul>"
    objArchive = GetDataFolder(objHere, 'E3Messages')
    for objYear in objArchive.objectValues('Folder'):
        for objMonth in objYear.objectValues('Folder'):
            for objMessage in objMonth.objectValues('Folder'):
                if not ValidPrefix(objMessage.mailSubject):
                    strResult += """<a href="/Archive/ViewThread?ThreadId=%s"><li>%s</li></a>\n""" % (objMessage.id, objMessage.mailSubject)
    strResult += "</ul>"
Example #26
0
def UpgradeTo3p8p4(objHere):
    print "Upgrading to 3.8.4"
    print "New EmailFrequency_ECL_Advert property"
    objMembers = GetDataFolder(objHere, 'E3Member')
    for objBatch in objMembers.objectValues('Folder'):
        for objMember in objBatch.objectValues('E3Member'):
            if not "EmailFrequency_ECL_Advert" in objMember.propertyIds():
                objMember.manage_addProperty("EmailFrequency_ECL_Advert", "SameAsMain", "string")
    CreateNewListMembers(objHere)
Example #27
0
def ECLMasterclassesSideBar(objHere):
    objMasterclasses = GetDataFolder(objHere, 'MCIMasterclass')
    dtmNow = datetime.datetime.today()
    lstComing = []
    lstPast = []
    for objMasterclass in objMasterclasses.objectValues('MCIMasterclass'):
        if not objMasterclass.Cancelled:
            dtmClassDate = datetime.datetime(year = objMasterclass.ClassDate.year(), month = objMasterclass.ClassDate.month(), day = objMasterclass.ClassDate.day())
            if dtmClassDate >= dtmNow:
                lstComing.append(objMasterclass)
            else:
                lstPast.append(objMasterclass)
    if lstComing:
        lstComing.sort(RecentMasterclasses)
        strComing = ""
        for objComing in lstComing:
            strComing = strComing + ListOneComingMasterclass(objComing)
        strComing = """<ul>
                        %s
                        </ul>""" % strComing
    else:
        strComing = """<p>By <a href = "http://www.MentorCoaches.com">Mentor Coaches International</a></p>"""
    intRecordings = 0
    strRecordings = ""
    intNotes = 0
    strNotes = ""
    lstPast.sort(RecentMasterclasses)
    for objPast in lstPast:
        if objPast.ClassRecording:
            if intRecordings < 3:
                strRecordings = strRecordings + ListOneRecording(objPast)
            intRecordings = intRecordings + 1
        if objPast.Notes:
            if intNotes < 3:
                strNotes = strNotes + ListOneNotes(objPast)
            intNotes = intNotes + 1
    strResult = """
				<h1>Masterclasses</h1>
                %(Coming)s
                <h2>Recordings</h2>
                <ul>
                %(Recordings)s
                </ul>
                <p><a href="http://%(Root)s/Masterclasses/Past" target="_blank">More ...</a></p>
                <h2>Notes</h2>
                <ul>
                %(Notes)s
                </ul>
                <p><a href="http://%(Root)s/Masterclasses/Past" target="_blank">More ...</a></p>
                """ % {'Coming': strComing,
                    'RecordingsCount': intRecordings,
                    'Recordings': strRecordings,
                    'NotesCount': intNotes,
                    'Notes': strNotes,
                    'Root': cnMCIRoot}
    return strResult
Example #28
0
def FindIncorrectPaymentFlags(objHere):
    strResult = ""
    objMembers = GetDataFolder(objHere, 'E3Member')
    for objBatch in objMembers.objectValues('Folder'):
        for objMember in objBatch.objectValues('E3Member'):
            if objMember.Historic.objectValues('E3Payment') and not objMember.HasPayments:
                strResult += """<p>%s</p>\n""" % objMember
            if objMember.HasPayments and not objMember.Historic.objectValues('E3Payment'):
                strResult += """<p>%s</p>\n""" % objMember
    return strResult
Example #29
0
def AddNewProperties3p5p4(objHere):
    objMembers = GetDataFolder(objHere, 'E3Member')
    for objBatch in objMembers.objectValues('Folder'):
        for objMember in objBatch.objectValues('E3Member'):
            AddProperties(objMember,
                (
                    ('NoCommercialEmails', False, 'boolean'),
                    ('DuplicateMembership', False, 'boolean'),
                    ('DoLaterDone', [], 'lines')
                ))
Example #30
0
def NewsletterList(objHere):
    dictNewsletters = {}
    objNewsletters = GetDataFolder(objHere, 'MCINewsletter')
    for objNewsletter in objNewsletters.objectValues('MCINewsletter'):
        dictNewsletters[objNewsletter.IssueNumber] = FormatOneNewsletter(objNewsletter)
    strResult = ""
    lstIssues = dictNewsletters.keys()
    lstIssues.sort()
    for intIssue in lstIssues:
        strResult = strResult + dictNewsletters[intIssue]
    return """<span class="PageTitle2">&quot;The Mentor Coach&quot; - Newsletter Archive</span><br>""" + strResult