def archive_portlet(context, request): blog = find_interface(context, IBlog) counts = {} # {(year, month): count} for entry in blog.values(): if not IBlogEntry.providedBy(entry): continue if not has_permission('view', entry, request): continue year = entry.created.year month = entry.created.month counts[(year, month)] = counts.get((year, month), 0) + 1 counts = counts.items() counts.sort() counts.reverse() return { 'archive': [ MonthlyActivity( year, month, count, request.resource_url(blog, query={ 'year': year, 'month': month })) for ((year, month), count) in counts ] }
def count(node): from repoze.bfg.traversal import model_path if IWikiPage.providedBy(node): stats['wiki_pages'] += 1 elif IBlogEntry.providedBy(node): stats['blog_entries'] += 1 elif IComment.providedBy(node): stats['comments'] += 1 elif ICommunityFile.providedBy(node): stats['files'] += 1 elif ICalendarEvent.providedBy(node): stats['calendar_events'] += 1 created = getattr(node, 'created', None) if created is not None and now - created < THIRTY_DAYS: creator = getattr(node, 'creator', None) if creator is not None: if creator not in active_users: active_users[creator] = 1 else: active_users[creator] += 1 if hasattr(node, '__getitem__') and hasattr(node, 'values'): for child in node.values(): count(child) if hasattr(node, '_p_deactivate'): node._p_deactivate()
def count(node): from pyramid.traversal import resource_path if IWikiPage.providedBy(node): stats['wiki_pages'] += 1 elif IBlogEntry.providedBy(node): stats['blog_entries'] += 1 elif IComment.providedBy(node): stats['comments'] += 1 elif ICommunityFile.providedBy(node): stats['files'] += 1 elif ICalendarEvent.providedBy(node): stats['calendar_events'] += 1 created = getattr(node, 'created', None) if created is not None and now - created < THIRTY_DAYS: creator = getattr(node, 'creator', None) if creator is not None: if creator not in active_users: active_users[creator] = 1 else: active_users[creator] += 1 if hasattr(node, '__getitem__') and hasattr(node, 'values'): for child in node.values(): count(child) if hasattr(node, '_p_deactivate'): node._p_deactivate()
def visit(self, context): if ICommunity.providedBy(context): self.community = context self.row = { 'community': context.title, 'id': context.__name__, 'is_private': is_private(context), 'members': len(context.member_names), 'moderators': len(context.moderator_names), 'last_activity': context.content_modified, 'create_date': context.created, 'wiki_pages': 0, 'blog_entries': 0, 'blog_comments': 0, 'files': 0, 'calendar_events': 0, 'community_tags': set(), 'hits_this_month': 'Unknown', 'percent_engaged': 'Unknown' } elif self.community is None: return else: last_activity = getattr(context, 'content_modified', None) if (last_activity is not None and last_activity > self.row['last_activity']): self.row['last_activity'] = last_activity if IWikiPage.providedBy(context): self.row['wiki_pages'] += 1 elif IBlogEntry.providedBy(context): self.row['blog_entries'] += 1 elif IComment.providedBy(context): self.row['blog_comments'] += 1 elif ICommunityFile.providedBy(context): self.row['files'] += 1 elif ICalendarEvent.providedBy(context): self.row['calendar_events'] += 1 tags = find_tags(context) docid = getattr(context, 'docid', None) if docid is not None: for tag in tags.getTags([docid,]): self.row['community_tags'].add(tag)
def archive_portlet(context, request): blog = find_interface(context, IBlog) counts = {} # {(year, month): count} for entry in blog.values(): if not IBlogEntry.providedBy(entry): continue if not has_permission('view', entry, request): continue year = entry.created.year month = entry.created.month counts[(year, month)] = counts.get((year, month), 0) + 1 counts = counts.items() counts.sort() counts.reverse() return {'archive': [MonthlyActivity(year, month, count, request.resource_url(blog, query={'year': year, 'month': month})) for ((year, month), count) in counts]}
def __call__(self, api): counts = {} # {(year, month): count} for entry in self.context.values(): if not IBlogEntry.providedBy(entry): continue if not has_permission('view', entry, self.request): continue year = entry.created.year month = entry.created.month counts[(year, month)] = counts.get((year, month), 0) + 1 counts = counts.items() counts.sort() counts.reverse() activity_list = [MonthlyActivity(year, month, count) for ((year, month), count) in counts] blog_url = model_url(self.context, self.request) return render_template( 'templates/blog_sidebar.pt', api=api, activity_list=activity_list, blog_url=blog_url, )
def __init__(self, context, profile, request): super(BlogEntryAlert, self).__init__(context, profile, request) assert IBlogEntry.providedBy(context)