Пример #1
0
def loadSites(filename):
    '''Create a new dictionary of sites by passing
    in a file name to the section properties file.'''

    sem = Semaphore(semname)
    sem.put()

    parser = PropertyDataParser(filename)

    sem.remove()

    sites = SiteDict()

    for i in range(0, len(parser.getPropertyAsList('site'))):
        attrs = parser.getPropertyAttrsAsList('site')[i]

        site = Site()
        site.domain = parser.getPropertyAsList('site')[i]

        site.id = int(attrs['id'])
        site.contactEmail = attrs['contactEmail']
        site.webmasterUsername = attrs['webmasterUsername']
        site.webmasterFirst = attrs['webmasterFirst']
        site.webmasterLast = attrs['webmasterLast']
        site.dateCreated = attrs['dateCreated']
        site.activated = (attrs['activated'] in TRUE)
        site.activationCode = attrs['activationCode']
        site.inviteCode = attrs['inviteCode']
        site.status = attrs['status']
        site.rootWWWDir = attrs['rootWWWDir']
        site.rootAdminDir = attrs['rootAdminDir']

        sites[site.domain] = site

    return sites
Пример #2
0
def loadInfoPages(filename):
    '''Create an InfoPages object by passing
    in a file name to the style properties file.'''

    sem = Semaphore(semname)
    sem.put()

    parser = PropertyDataParser(filename)

    sem.remove()

    pages = InfoPages()

    for propList in parser:
        prop = propList[0]

        ip = InfoPage()

        ip.name = prop.name
        ip.content = prop.content

        ip.order = int(prop.attrs['order'])
        ip.isVisible = (prop.attrs['visible'] in TRUE)
        ip.title = str(prop.attrs['title'])
        ip.subtitle = str(prop.attrs['subtitle'])
        if ('menuName' in prop.attrs):
            ip.menuName = str(prop.attrs['menuName'])
        if ('filename' in prop.attrs):
            ip.filename = str(prop.attrs['filename'])

        pages.add(ip)

    return pages
Пример #3
0
def loadNewsItemList(pageName, fileDir=APPLICATION.dataDirectory):
    '''Load a NewsItem list.  Return None if the file did not exist.'''

    #raise Exception('DEPRECATED')

    if (pageName not in NEWSITEMLIST_DICT):

        fileName = fileDir + pageName + '-data.xml'
        sem = Semaphore(fileDir + pageName + '_')
        sem.put()
        newsItems = None
        if (fileExists(fileName)):
            try:
                #log('loadNewsItemList: loading data for ' + pageName)
                f = file(fileName)
                data = f.read()
                f.close()

                #log('loadNewsItemList: parsing data for ' + pageName)
                newsItems = NewsItemList("data/rss2_properties.xml",
                                         APPLICATION.attachURL)
                newsItems.parse(data)
                #log('loadNewsItemList: sorting data for ' + pageName)
                newsItems.sort()
                #log('loadNewsItemList: done handling data for ' + pageName)

            except Exception, e:
                sem.remove()
                raise str('Unexpected exception attempting to load: ' +
                          fileName + ' ' + str(e))
        sem.remove()

        NEWSITEMLIST_DICT[pageName] = newsItems
Пример #4
0
def writeNewsItemList(pageName, niList):

    #raise Exception('DEPRECATED')

    fileName = APPLICATION.dataDirectory + \
        pageName + '-data.xml'
    sem = Semaphore(APPLICATION.newsFileLocation + pageName + '_')
    sem.put()

    try:
        nwslst = itemListToNewsItemListXML(niList)

        #Parse the XML to make sure it works ok
        newsItemParser = xml.parsers.expat.ParserCreate()
        newsItemParser.Parse(nwslst)

        #Write the new news item to the appropriate file
        f = file(fileName, 'w')
        f.write(nwslst)
        f.flush()
        f.close()
    except:
        sem.remove()
        raise
    sem.remove()
Пример #5
0
def loadSectionList(filename):
    '''Create a new dictionary of news sections by passing
    in a file name to the section properties file.'''

    sem = Semaphore(semname)
    sem.put()

    parser = PropertyDataParser(filename)

    sem.remove()

    sectionList = SectionList()

    for i in range(0, len(parser.getPropertyAsList('section'))):
        attrs = parser.getPropertyAttrsAsList('section')[i]

        section = Section()
        section.name = parser.getPropertyAsList('section')[i]
        section.longname = attrs['longname']

        if ('isHomepage' in attrs):
            section.isHomepage = (attrs['isHomepage'] in TRUE)
        if ('columns' in attrs):
            section.columns = int(attrs['columns'])
        if ('order' in attrs):
            section.order = int(attrs['order'])
        if ('isActive' in attrs):
            section.isActive = (attrs['isActive'] in TRUE)
        if ('isVisible' in attrs):
            section.isVisible = (attrs['isVisible'] in TRUE)

        sectionList.add(section)

    return sectionList
Пример #6
0
def loadStyles(filename):
    '''Create a new dictionary of news styles by passing
    in a file name to the style properties file.'''

    sem = Semaphore(semname)
    sem.put()

    parser = PropertyDataParser(filename)

    sem.remove()

    styles = dict()

    for i in range(0, len(parser.getPropertyAsList('style'))):
        attrs = parser.getPropertyAttrsAsList('style')[i]

        style = Style()
        style.name = parser.getPropertyAsList('style')[i]

        style.id = int(attrs['id'])
        style.prettyName = attrs['prettyName']
        style.menuType = attrs['menuType']

        styles[style.name] = style

    return styles
Пример #7
0
    def write(self, filename):

        sem = Semaphore(usersemname)
        sem.put()
        data = self.build()
        f = file(filename, 'w')
        f.write(data)
        f.flush()
        f.close()
        sem.remove()
Пример #8
0
def loadUserRules(filename):
    urCollection = None
    sem = Semaphore(ursemname)
    sem.put()
    userRulesProperties = PropertyDataParser(filename)
    sem.remove()
    if (userRulesProperties.hasProperty('rule')):
        rules = userRulesProperties.getPropertyAsList('rule')
        urCollection = UserRuleCollection(rules)
    return urCollection
Пример #9
0
def writeUserRules(urCollection, filename):
    '''Write the rules out to a properties file.'''
    pfb = PropertyFileBuilder()

    for rule in urCollection.rules:
        pfb.add('rule', rule)

    sem = Semaphore(ursemname)
    sem.put()
    pfb.write(filename)
    sem.remove()
Пример #10
0
def writeSites(filename, sites):
    '''Write the sites properties file.'''

    pfb = PropertyFileBuilder()

    for site in sites:
        pfb.add('site', sites[site].domain, sites[site].getAttrDict())

    sem = Semaphore(semname)
    sem.put()
    pfb.write(filename)
    sem.remove()
Пример #11
0
def writeNewsPageProperties(pages, filename):
    '''Write the news pages out to a properties file.'''
    pfb = PropertyFileBuilder()

    for page in pages:
        pfb.add('page', pages[page].name, pages[page].getAttrDict())

    sem = Semaphore(semname)
    sem.put()

    pfb.write(filename)

    sem.remove()
Пример #12
0
 def __init__(self, filename):
     """Initialze the class with a file name relative to the path of the root script."""
     sem = Semaphore(usersemname)
     sem.put()
     try:
         self.users = None
         f = file(filename)
         data = f.read()
         f.close()
         self.parse(data)
     except IOError:
         sem.remove()
         raise "IOError attempting to access:", filename
     sem.remove()
Пример #13
0
def writeStyles(filename, styles):
    '''Write the styles properties file.'''

    pfb = PropertyFileBuilder()

    for style in styles:
        pfb.add('style', styles[style].name, styles[style].getAttrDict())

    sem = Semaphore(semname)
    sem.put()

    pfb.write(filename)

    sem.remove()
Пример #14
0
def writeNewsletterData(filename, recipients):
    '''Write the sections properties file.'''

    pfb = PropertyFileBuilder()

    for recipient in recipients:
        pfb.add('recipient', recipient.name, \
            recipient.getAttrDict())

    sem = Semaphore(semname)
    sem.put()

    pfb.write(filename)

    sem.remove()
Пример #15
0
def writeInfoPages(filename, infoPages):
    '''Write the info pages properties file.'''

    pfb = PropertyFileBuilder()
    pfb.setCData(True)

    for item in infoPages:
        pfb.add(item.name, item.content, item.getAttrDict())

    sem = Semaphore(semname)
    sem.put()

    pfb.write(filename)

    sem.remove()
Пример #16
0
    def __writePage__(self, filename, pageData):
        #Write the page to a file

        try:
            sem = Semaphore(semname)
            sem.put()

            ff = file(filename, 'w')
            ff.write(str(pageData))
            ff.flush()
            ff.close()

            sem.remove()
        except IOError:
            raise "IOError attempting to write:", filename
Пример #17
0
def writeApplication(filename, application):
    '''Write the sections properties file.'''

    pfb = PropertyFileBuilder()
    pfb.setCData(True)

    propDict = application.getPropDict()

    for prop in propDict:
        pfb.add(prop, propDict[prop])

    sem = Semaphore(semname)
    sem.put()

    pfb.write(filename)

    sem.remove()
Пример #18
0
def writeSections(filename, sections):
    '''Write the sections properties file.'''

    pfb = PropertyFileBuilder()

    # TODO-L: Remove next line when refactored to use only loadSectionList
    sectionList = buildSectionList(sections)

    for section in sectionList:
        pfb.add('section', section.name, section.getAttrDict())

    sem = Semaphore(semname)
    sem.put()

    pfb.write(filename)

    sem.remove()
Пример #19
0
def loadNewsletterData(filename):
    '''Create a new dictionary of news sections by passing
    in a file name to the section properties file.'''

    sem = Semaphore(semname)
    sem.put()

    parser = PropertyDataParser(filename)

    sem.remove()

    recipients = list()

    if (parser.hasProperty('recipient')):
        for i in range(0, len(parser.getPropertyAsList('recipient'))):
            attrs = parser.getPropertyAttrsAsList('recipient')[i]

            nr = NewsletterRecipient()
            nr.name = attrs['name']
            nr.email = attrs['email']

            recipients += [nr]

    return recipients
Пример #20
0
def loadApplication(filename):
    '''Create a new dictionary of news sections by passing
    in a file name to the section properties file.'''

    sem = Semaphore(semname)
    sem.put()

    parser = PropertyDataParser(filename)

    sem.remove()

    application = Application()

    application.siteTitle = parser.getSafeProperty('siteTitle', '')
    application.siteSubTitle = parser.getSafeProperty('siteSubTitle', '')
    application.metaDescription = parser.getSafeProperty('metaDescription', '')
    application.metaKeywords = parser.getSafeProperty('metaKeywords', '')
    application.category = parser.getSafeProperty('category', '')

    application.cookieName = parser.getSafeProperty('cookieName', '')
    application.rootURL = parser.getSafeProperty('rootURL', '')
    application.siteID = parser.getSafeProperty('siteID', '')
    application.ID = parser.getSafeProperty('ID', '')
    application.dataDirectory = parser.getSafeProperty('dataDirectory', '')
    application.includesDirectory = parser.getSafeProperty(
        'includesDirectory', '')
    application.rssDirectory = parser.getSafeProperty('rssDirectory', '')
    application.rssFullURL = parser.getSafeProperty('rssFullURL', '')
    application.newsFileLocation = parser.getSafeProperty(
        'newsFileLocation', '')
    application.exceptionHeader = parser.getSafeProperty('exceptionHeader', '')
    application.exceptionFooter = parser.getSafeProperty('exceptionFooter', '')
    application.headerFile = parser.getSafeProperty('headerFile', '')
    application.footerFile = parser.getSafeProperty('footerFile', '')

    application.redirectOnFailedLogin = parser.getSafeProperty(
        'redirectOnFailedLogin', '')
    application.startPage = parser.getSafeProperty('startPage', '')
    application.homePage = parser.getSafeProperty('homePage', '')

    application.templateDir = parser.getSafeProperty('templateDir', '')
    application.indexTemplate = parser.getSafeProperty('indexTemplate', '')

    application.domainName = parser.getSafeProperty('domainName', '')
    application.adminCssFile = parser.getSafeProperty('adminCssFile', '')
    application.attachDirectory = parser.getSafeProperty('attachDirectory', '')
    application.attachURL = parser.getSafeProperty('attachURL', '')
    application.userDirectory = parser.getSafeProperty('userDirectory', '')
    application.userURL = parser.getSafeProperty('userURL', '')
    application.active = (parser.getSafeProperty('active', True) in TRUE)
    application.premium = (parser.getSafeProperty('premium', False) in TRUE)
    application.showAds = (parser.getSafeProperty('showAds', True) in TRUE)
    application.storageLocked = (parser.getSafeProperty(
        'storageLocked', False) in TRUE)
    application.siteType = parser.getSafeProperty('siteType', SITE_TYPE_BASIC)
    application.newsletter = (parser.getSafeProperty('newsletter', True)
                              in TRUE)

    application.styleURL = parser.getSafeProperty('styleURL', '')
    application.printStyleURL = parser.getSafeProperty('printStyleURL',
                                                       application.styleURL)
    application.styleDir = parser.getSafeProperty('styleDir', '')
    application.styleName = parser.getSafeProperty('styleName', '')
    application.customStyle = (parser.getSafeProperty('customStyle', False)
                               in TRUE)

    application.subTitleDate = (parser.getSafeProperty('subTitleDate', False)
                                in TRUE)
    application.articleDate = (parser.getSafeProperty('articleDate', True)
                               in TRUE)
    application.moreText = parser.getSafeProperty('moreText', '[more]')
    application.imageSize = int(parser.getSafeProperty('imageSize', 60))
    application.advancedLinks = (parser.getSafeProperty(
        'advancedLinks', False) in TRUE)

    application.adminURL = parser.getSafeProperty('adminURL', '')
    application.contactEmail = parser.getSafeProperty('contactEmail', '')

    application.autoResizeImages = (parser.getSafeProperty(
        'autoResizeImages', True) in TRUE)
    application.maxImageSize = int(
        parser.getSafeProperty('maxImageSize', 250000))
    application.absoluteRootPath = parser.getSafeProperty(
        'absoluteRootPath', '/home/yakjivec/www/')
    application.allowRTEToggleSrc = (parser.getSafeProperty(
        'allowRTEToggleSrc', False) in TRUE)

    application.db = parser.getSafeProperty('db', '')
    application.dbUser = parser.getSafeProperty('dbUser', '')
    application.dbPassword = parser.getSafeProperty('dbPassword', '')

    return application
Пример #21
0
def loadNewsPageProperties(filename):
    '''Create a new dictionary of news pages by passing in a file name to the page properties file.'''

    sem = Semaphore(semname)
    sem.put()

    parser = PropertyDataParser(filename)

    sem.remove()

    pages = NewsPageDict()

    for i in range(0, len(parser.getPropertyAsList('page'))):
        attrs = parser.getPropertyAttrsAsList('page')[i]

        name = parser.getPropertyAsList('page')[i]
        title = attrs['title']
        headlineType = attrs['headlineType']
        pageType = attrs['pageType']
        # TODO-L: refactor 'newspage' to be 'section'
        newspage = attrs['newspage']
        column = attrs['column']
        displayNum = attrs['displayNum']
        rank = attrs['rank']
        isVisible = 'True'
        if ('isVisible' in attrs):
            isVisible = attrs['isVisible']
        pageOwner = None
        if ('pageOwner' in attrs):
            pageOwner = attrs['pageOwner']
        isBlog = 'False'
        if ('isBlog' in attrs):
            isBlog = attrs['isBlog']
        expires = 'Never'
        if ('expires' in attrs):
            if (attrs['expires'] == 'Never'):
                expires = 'Never'
            else:
                expires = int(attrs['expires'])

        # TODO-L: Changes this to a zero-arg constructor
        newsPage = NewsPage(name, title, headlineType, pageType, newspage,
                            column, displayNum, rank, isVisible, pageOwner,
                            isBlog, expires)

        if ('id' in attrs):
            newsPage.id = int(attrs['id'])
        if ('active' in attrs):
            newsPage.active = (attrs['active'] in TRUE)
        if ('feedback' in attrs):
            newsPage.feedback = (attrs['feedback'] in TRUE)
        if ('rating' in attrs):
            newsPage.rating = attrs['rating']
        if ('attachments' in attrs):
            newsPage.attachments = (attrs['attachments'] in TRUE)
        if ('subTitle' in attrs):
            newsPage.subTitle = attrs['subTitle']
        if ('sortType' in attrs):
            newsPage.sortType = attrs['sortType']
            if (newsPage.sortType == 'date'):
                newsPage.sortType = 'date: newest first'
        if ('promptComments' in attrs):
            newsPage.promptComments = attrs['promptComments']
        if ('allowComments' in attrs):
            newsPage.allowComments = (attrs['allowComments'] in TRUE)

        pages[parser.getPropertyAsList('page')[i]] = newsPage

    return pages