def _activities_statuses(self):
        if not self.show_microblog:
            raise StopIteration()
        container = PLONEINTRANET.microblog
        # show_microblog yet no container can happen on microblog uninstall
        if not container:
            raise StopIteration()

        # filter on users OR context, not both
        if self.users:
            # support ploneintranet.network integration
            activities = container.user_values(self.users,
                                               limit=self.count,
                                               tag=self.tag)
        elif self.microblog_context:
            # support collective.local integration
            activities = container.context_values(self.microblog_context,
                                                  limit=self.count,
                                                  tag=self.tag)
        else:
            # default implementation
            activities = container.values(limit=self.count, tag=self.tag)

        # For a reply IStatusActivity we render the parent post and then
        # all the replies are inside that. So, here we filter out reply who's
        # parent post we already rendered.
        seen_thread_ids = []
        for activity in activities:
            if (activity.thread_id and activity.thread_id in seen_thread_ids) \
                    or activity.id in seen_thread_ids:
                continue

            if IStatusActivityReply.providedBy(activity):
                seen_thread_ids.append(activity.thread_id)
            else:
                seen_thread_ids.append(activity.id)

            yield activity
예제 #2
0
    def filter_statusupdates(self, statusupdates):
        ''' This method filters the microblog StatusUpdates

        The idea is:
         - if a StatusUpdate is a comment return the parent StatusUpdate
         - do not return duplicate statusupdates
        '''
        seen_thread_ids = set()
        good_statusupdates = []
        container = piapi.microblog.get_microblog()

        for su in statusupdates:
            if su.thread_id and su.thread_id in seen_thread_ids:
                continue
            elif su.id in seen_thread_ids:
                continue

            if IStatusActivityReply.providedBy(su):
                su = container.get(su.thread_id)

            seen_thread_ids.add(su.id)
            good_statusupdates.append(su)

        return good_statusupdates
예제 #3
0
    def filter_statusupdates(self, statusupdates):
        ''' This method filters the microblog StatusUpdates

        The idea is:
         - if a StatusUpdate is a comment return the parent StatusUpdate
         - do not return duplicate statusupdates
        '''
        seen_thread_ids = set()
        good_statusupdates = []
        container = piapi.microblog.get_microblog()

        for su in statusupdates:
            if su.thread_id and su.thread_id in seen_thread_ids:
                continue
            elif su.id in seen_thread_ids:
                continue

            if IStatusActivityReply.providedBy(su):
                su = container.get(su.thread_id)

            seen_thread_ids.add(su.id)
            good_statusupdates.append(su)

        return good_statusupdates
예제 #4
0
 def replies(self):
     from ploneintranet import api as piapi
     container = piapi.microblog.get_microblog()
     for reply in container.thread_values(self.id):
         if IStatusActivityReply.providedBy(reply):
             yield reply
예제 #5
0
 def replies(self):
     from ploneintranet import api as piapi
     container = piapi.microblog.get_microblog()
     for reply in container.thread_values(self.id):
         if IStatusActivityReply.providedBy(reply):
             yield reply
예제 #6
0
 def replies(self):
     container = PLONEINTRANET.microblog
     for reply in container.thread_values(self.id):
         if IStatusActivityReply.providedBy(reply):
             yield reply