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
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
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
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
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
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
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
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
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
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
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
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