예제 #1
0
파일: blog.py 프로젝트: araymund/karl
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
        ]
    }
예제 #2
0
파일: stats.py 프로젝트: cguardia/karl
        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()
예제 #3
0
        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()
예제 #4
0
    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)
예제 #5
0
파일: blog.py 프로젝트: disko/karl
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]}
예제 #6
0
파일: blog.py 프로젝트: boothead/karl
 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,
         )
예제 #7
0
파일: adapters.py 프로젝트: Falmarri/karl
 def __init__(self, context, profile, request):
     super(BlogEntryAlert, self).__init__(context, profile, request)
     assert IBlogEntry.providedBy(context)
예제 #8
0
 def __init__(self, context, profile, request):
     super(BlogEntryAlert, self).__init__(context, profile, request)
     assert IBlogEntry.providedBy(context)