Ejemplo n.º 1
0
    def render(self, template):
        template = super(TextPost, self).render(template)

        template = filter_block('Title', self.title, template)
        template = filter_block('More', True, template)
        template = template.replace('{Title}', self.title)
        template = template.replace('{Body}',self.body)
        
        return template
Ejemplo n.º 2
0
 def render_posts(template):
     content = u''
     previousDay = None
     for i, post in enumerate(blog.posts):
         template = filter_block('NewDayDate',
             not sameday(previousDay, post.time), template)
         template = filter_block('SameDayDate',
             sameday(previousDay, post.time), template)
         template = filter_block('Odd', not i % 2, template)
         template = filter_block('Even', i % 2, template)
         content = content + render_single_post(post, template)
     return content
Ejemplo n.º 3
0
    def render(self, template):
        template = super(QuotePost, self).render(template)        

        template = filter_block('Source', self.source, template)
        template = template.replace('{Quote}',self.text)
        template = template.replace('{Source}',self.source)
        template = template.replace('{Length}','long')
        
        return template
Ejemplo n.º 4
0
def render_single_post(post, template):
    types = ['Regular', 'Text', 'Photo', 'Photoset', 'Quote', 'Link', 
        'Conversation', 'Chat', 'Audio', 'Video', 'Answer']
    
    # Filter out the post block to only contain the relevant stuff
    for type in types:
        template = filter_block(type, post_is_type(post, type), template)

    template = post.render(template)

    return template
Ejemplo n.º 5
0
 def render(self, template):
     template = super(VideoPost, self).render(template)
     
     template = filter_block('Caption', self.caption, template)
     
     template = template.replace('{Caption}', self.caption)
     template = template.replace('{Video-500}', self.player_size(500))
     template = template.replace('{Video-400}', self.player_size(400))
     template = template.replace('{Video-250}', self.player_size(250))
     
     return template
Ejemplo n.º 6
0
    def render(self, template):
        template = super(AudioPost, self).render(template)        

        template = filter_block('Caption', self.caption, template)
        template = filter_block('ExternalAudio', self.is_external, template)
        template = template.replace('{Caption}', self.caption)
        template = template.replace('{AudioPlayer}', self.player)
        template = template.replace('{AudioPlayerWhite}',
            self.player_color('FFFFFF'))
        template = template.replace('{AudioPlayerGrey}',
            self.player_color('E4E4E4'))
        template = template.replace('{AudioPlayerBlack}',
            self.player_color('000000'))
        template = template.replace('{PlayCount}', '%s' % self.plays)
        template = template.replace('{FormattedPlayCount}', 
            self.formatted_plays())
        template = template.replace('{ExternalAudioURL}',
            self.audio_file if self.is_external else '')
        
        return template
Ejemplo n.º 7
0
    def render(self, template):
        template = super(LinkPost, self).render(template)        

        template = filter_block('Description', self.description, template)
        
        template = template.replace('{URL}', self.link_url)
        template = template.replace('{Name}', self.text)
        template = template.replace('{Target}', 'target="_blank"')
        template = template.replace('{Description}', self.description)
        
        return template
Ejemplo n.º 8
0
 def render_tags(template):
     content = u''
     for i, line in enumerate(self.conversation):
         linemarkup = filter_block('Label', line['label'], template)
         linemarkup = linemarkup.replace('{Label}', line['label'])
         linemarkup = linemarkup.replace('{Name}', line['name'])
         linemarkup = linemarkup.replace('{Line}', line['phrase'])
         linemarkup = linemarkup.replace('{UserNumber}', '')
         linemarkup = linemarkup.replace('{Alt}',
             'even' if i%2 else 'odd')
         content = content + linemarkup
     return content
Ejemplo n.º 9
0
    def render(self, template):
        template = super(PhotoPost, self).render(template)        
        
        template = filter_block('Caption', self.caption, template)
        template = filter_block('HighRes', self.has_highres(), template)
        
        template = template.replace('{Caption}',self.caption)
        template = template.replace('{LinkOpenTag}', '<a href={LinkURL}>' if 
            self.link else '')
        template = template.replace('{LinkCloseTag}', '</a>' if 
            self.link else '')
        template = template.replace('{LinkURL}',self.link if self.link else '')
        template = template.replace('{PhotoAlt}', striptags(self.caption))
        
        template = template.replace('{PhotoURL-500}', self.photo['500'])
        template = template.replace('{PhotoURL-400}', self.photo['400'])
        template = template.replace('{PhotoURL-250}', self.photo['250'])
        template = template.replace('{PhotoURL-100}', self.photo['100'])
        template = template.replace('{PhotoURL-75sq}', self.photo['75'])
        
        template = template.replace('{PhotoURL-HighRes}', self.photo['1280'])


        return template
Ejemplo n.º 10
0
    def render(self, template):
        template = super(ConversationPost, self).render(template)        

        template = filter_block('Title', self.title, template)

        template = template.replace('{Title}', self.title)

        @match_block('Lines')
        def render_tags(template):
            content = u''
            for i, line in enumerate(self.conversation):
                linemarkup = filter_block('Label', line['label'], template)
                linemarkup = linemarkup.replace('{Label}', line['label'])
                linemarkup = linemarkup.replace('{Name}', line['name'])
                linemarkup = linemarkup.replace('{Line}', line['phrase'])
                linemarkup = linemarkup.replace('{UserNumber}', '')
                linemarkup = linemarkup.replace('{Alt}',
                    'even' if i%2 else 'odd')
                content = content + linemarkup
            return content
        
        template = render_tags(template)

        return template
Ejemplo n.º 11
0
def render(blog, template):
    '''
    Renders a blog with the given template.
    '''
    
    @match_block('Posts')
    def render_posts(template):
        content = u''
        previousDay = None
        for i, post in enumerate(blog.posts):
            template = filter_block('NewDayDate',
                not sameday(previousDay, post.time), template)
            template = filter_block('SameDayDate',
                sameday(previousDay, post.time), template)
            template = filter_block('Odd', not i % 2, template)
            template = filter_block('Even', i % 2, template)
            content = content + render_single_post(post, template)
        return content

    # Load in all the custom stuff
    (customTags, customBlocks) = load_meta_tags(template)

    # First, render posts.
    template = render_posts(template)


    ignored_blocks = ['SearchPage', 'PostSummary', 'NextPage', \
        'PermalinkPage', 'PostTitle', 'PostSummary', 'PermalinkPagination', \
        'PreviousPost', 'NextPost', 'GroupMembers', 'GroupMember', 'DayPage', \
        'DayPagination', 'PreviousDayPage', 'NextDayPage', 'TagPage', \
        'SearchPage', 'NoSearchResults', 'Following', 'Followed', 'Likes', \
        'PostNotes']
    
    ignored_tags = ['NextPage', 'PostTitle', 'PostSummary', 'PreviousPost', \
        'NextPage', 'Favicon', 'CustomCSS', 'GroupMemberName', \
        'GroupMemberTitle', 'GroupMemberURL', 'GroupMemberPortraitURL-16', \
        'GroupMemberPortraitURL-24', 'GroupMemberPortraitURL-30', \
        'GroupMemberPortraitURL-40', 'GroupMemberPortraitURL-48', \
        'GroupMemberPortraitURL-64', 'GroupMemberPortraitURL-96', \
        'GroupMemberPortraitURL-128', 'PreviousDayPage', 'NextDayPage', 'Tag',\
        'URLSafeTag', 'TagURL', 'TagURLChrono', 'SearchQuery', \
        'URLSaveSearchQuery', 'SearchResultCount', 'FollowedName', \
        'FollowedTitle', 'FollowedURL', 'FollowedPortraitURL-16', \
        'FollowedPortraitURL-20', 'FollowedPortraitURL-30', \
        'FollowedPortraitURL-40', 'FollowedPortraitURL-48', \
        'FollowedPortraitURL-64', 'FollowedPortraitURL-96', \
        'FollowedPortraitURL-128', 'Likes']

    for block in ignored_blocks:
        template = filter_block(block, False, template)
    
    for tag in ignored_tags:
        template = template.replace('{%s}' % tag, '')

    for (block, shouldFilter) in customBlocks:
        template = filter_block(block, shouldFilter, template)

    for (tag, value) in customTags:
        template = template.replace('{%s}' % tag, value)

    template = filter_block('Description', blog.description, template)
    template = filter_block('PreviousPage', True, template)
    template = filter_block('IndexPage', True, template)
    template = filter_block('Pagination', True, template)
    
    template = filter_block('Twitter', blog.twitterUsername, template)
    template = template.replace('{TwitterUsername}',
        blog.twitterUsername if blog.twitterUsername else '')
    
    template = template.replace('{Title}', blog.title)
    template = template.replace('{Description}', blog.description)
    template = template.replace('{MetaDescription}', 
        striptags(blog.description))
    template = template.replace('{RSS}', '%s/rss' % blog.url)
    template = template.replace('{PreviousPage}', '%s/page/2' % blog.url)
    template = template.replace('{CurrentPage}', '1')
    template = template.replace('{TotalPages}', '15')

    template = re.sub('{Likes limit="\d+"}', '', template)
    template = re.sub('{Likes width="\d+"}', '', template)
    template = re.sub('{Likes summarize="\d+"}', '', template)

    return template
Ejemplo n.º 12
0
    def render(self, template):
        def singplural(singular, plural, c):
            if c == 1: return singular
            else: return plural
        
        ignored_blocks = ['More']

        ignored_tags = ['PostNotes', 'ReblogParentName', 'ReblogParentTitle',\
            'ReblogParentURL', 'ReblogParentPortraitURL-16',\
            'ReblogParentPortraitURL-24', 'ReblogParentPortraitURL-30',\
            'ReblogParentPortraitURL-40', 'ReblogParentPortraitURL-48',\
            'ReblogParentPortraitURL-64', 'ReblogParentPortraitURL-96',\
            'ReblogParentPortraitURL-128', 'ReblogRootName',\
            'ReblogRootTitle', 'ReblogRootURL', 'ReblogRootPortraitURL-16',\
            'ReblogRootPortraitURL-24', 'ReblogRootPortraitURL-30',\
            'ReblogRootPortraitURL-40', 'ReblogRootPortraitURL-48',\
            'ReblogRootPortraitURL-64', 'ReblogRootPortraitURL-96',\
            'ReblogRootPortraitURL-128', 'PostAuthorName', 'PostAuthorTitle',\
            'PostAuthorURL', 'PostAuthorPortraitURL-16',\
            'PostAuthorPortraitURL-24', 'PostAuthorPortraitURL-30',\
            'PostAuthorPortraitURL-40', 'PostAuthorPortraitURL-48',\
            'PostAuthorPortraitURL-64', 'PostAuthorPortraitURL-96',\
            'PostAuthorPortraitURL-128'
        ]
        
        template = filter_block('HasTags', len(self.tags) > 0, template)
        template = filter_block('NoteCount', len(self.notes) > 0, template)
        
        for block in ignored_blocks:
            template = filter_block(block, False, template)
        
        for tag in ignored_tags:
            template = template.replace('{%s}' % tag, '')
        
                
        template = template.replace('{Permalink}', self.url)
        template = template.replace('{PostID}', '%s' % self.id)
        template = template.replace('{TimeAgo}', relative_time(self.time,
            datetime.utcnow()))
        template = template.replace('{DayOfMonth}', '%d' % self.time.day)
        template = template.replace('{DayOfMonthWithZero}',
            '%02d' % self.time.day)
        template = template.replace('{DayOfWeek}', self.time.strftime('%A'))
        template = template.replace('{ShortDayOfWeek}', 
            self.time.strftime('%a'))
            
        template = template.replace('{DayOfWeekNumber}', 
            '%s' % self.time.isoweekday())
        
        # http://mail.python.org/pipermail/python-list/2005-July/333218.html
        template = template.replace('{DayOfMonthSuffix}', 
            "th" if 4 <= self.time.day <= 20 or 24 <= self.time.day <= 30 \
            else ["st", "nd", "rd"][self.time.day % 10 - 1])
            
        
        template = template.replace('{DayOfYear}', 
            self.time.strftime('%j').lstrip('0'))
        template = template.replace('{WeekOfYear}', 
            '%s' % (int(self.time.strftime('%U')) + 1))
        
        template = template.replace('{Month}', self.time.strftime('%B'))
        template = template.replace('{ShortMonth}', self.time.strftime('%b'))
        template = template.replace('{MonthNumber}', 
            self.time.strftime('%m').lstrip('0'))
        template = template.replace('{MonthNumberWithZero}', 
            self.time.strftime('%m'))
        template = template.replace('{Year}', self.time.strftime('%Y'))
        template = template.replace('{ShortYear}', self.time.strftime('%y'))
        template = template.replace('{AmPm}', self.time.strftime('%p').lower())
        template = template.replace('{CapitalAmPm}', self.time.strftime('%p'))
        template = template.replace('{12Hour}', 
            self.time.strftime('%I').lstrip('0'))
        template = template.replace('{24Hour}', 
            self.time.strftime('%J').lstrip('0'))
        template = template.replace('{12HourWithZero}', 
            self.time.strftime('%I'))
        template = template.replace('{24HourWithZero}', 
            self.time.strftime('%J'))
        template = template.replace('{Minutes}', self.time.strftime('%M'))
        template = template.replace('{Seconds}', self.time.strftime('%S'))
        template = template.replace('{Beats}', '')
        template = template.replace('{Timestamp}', 
            '%s' % mktime(self.time.timetuple()))
        template = template.replace('{NoteCount}', '%d' % len(self.notes))
        template = template.replace('{NoteCountWithLabel}', '%d %s' %
            (len(self.notes), singplural('note', 'notes', len(self.notes))))
        template = template.replace('{TagsAsClasses}', self.tagsAsClasses)
        
        @match_block('Tags')
        def render_tags(template):
            content = u''
            for tag in self.tags:
                tagmarkup = template.replace('{Tag}', tag)
                tagmarkup = tagmarkup.replace('{URLSafeTag}', urlsafe(tag))
                tagmarkup = tagmarkup.replace('{TagURL}',
                    '/tagged/%s' % urlsafe(tag))
                tagmarkup = tagmarkup.replace('{TagURLChrono}',
                    '/tagged/%s/chrono' % urlsafe(tag))
                content = content + tagmarkup
            return content
        
        template = render_tags(template)
        
        return template