Esempio n. 1
0
    def dialogue_depths(self, site_id, group_id, start_period, end_period):
        p = self.postTable
        s = sa.select([sa.func.count(p.c.topic_id)], group_by=p.c.topic_id)
        s.append_whereclause(p.c.site_id == site_id)
        s.append_whereclause(p.c.group_id == group_id)
        s.append_whereclause(p.c.date >= start_period)
        s.append_whereclause(p.c.date <= end_period)

        session = getSession()
        r = session.execute(s)

        count = r.rowcount
        depths = []
        if count:
            for row in r:
                depths.append(row[0])

        total = sum(depths)
        avgdepth = 0
        mindepth = 0
        maxdepth = 0
        if count:
            avgdepth = float(total) / float(count)
            mindepth = min(depths)
            maxdepth = max(depths)

        return mindepth, maxdepth, avgdepth
Esempio n. 2
0
    def joinleave_counts(self, site_id, group_id, start_period, end_period):
        aet = self.auditEventTable
        start_period = dt_to_user_timezone(self.context, start_period,
                                           self.user)
        end_period = dt_to_user_timezone(self.context, end_period, self.user)

        s = sa.select([
            aet.c.subsystem,
            sa.func.count(aet.c.subsystem),
        ],
                      group_by=aet.c.subsystem)
        joinClauses = ((aet.c.subsystem == JOIN_SUBSYSTEM)
                       & (aet.c.event_code == JOIN))
        leaveClauses = ((aet.c.subsystem == LEAVE_SUBSYSTEM)
                        & (aet.c.event_code == LEAVE))
        s.append_whereclause(joinClauses | leaveClauses)
        s.append_whereclause(aet.c.group_id == group_id)
        s.append_whereclause(aet.c.site_id == site_id)
        s.append_whereclause(aet.c.event_date >= start_period)
        s.append_whereclause(aet.c.event_date <= end_period)

        session = getSession()
        r = session.execute(s)

        retval = {'gs.group.member.join': 0, 'gs.group.member.leave': 0}
        for result in r:
            subsystem, count = result
            assert subsystem in ('gs.group.member.join',
                                 'gs.group.member.leave')

            retval[subsystem] = count
        # {'gs.group.member.join': COUNT, 'gs.group.member.leave': COUNT}
        return retval
Esempio n. 3
0
    def authors(self, site_id, group_id, start_period, end_period):
        t = self.postTable
        s = sa.select([t.c.user_id], distinct=True)
        s.append_whereclause(t.c.site_id == site_id)
        s.append_whereclause(t.c.group_id == group_id)
        s.append_whereclause(t.c.date >= start_period)
        s.append_whereclause(t.c.date <= end_period)

        session = getSession()
        r = session.execute(s)
        retval = r.rowcount
        return retval
Esempio n. 4
0
    def active_topics(self, site_id, group_id, start_period, end_period):
        p = self.postTable
        s = sa.select([p.c.topic_id], distinct=True, group_by=p.c.topic_id)
        s.append_whereclause(p.c.site_id == site_id)
        s.append_whereclause(p.c.group_id == group_id)
        s.append_whereclause(p.c.date >= start_period)
        s.append_whereclause(p.c.date <= end_period)

        session = getSession()
        r = session.execute(s)
        retval = r.rowcount
        return retval
Esempio n. 5
0
    def members_on_digest(self, site_id, group_id):
        t = self.emailSettingTable
        s = t.select()

        #s.append_whereclause(t.c.site_id==site_id)
        s.append_whereclause(t.c.group_id == group_id)
        s.append_whereclause(t.c.setting == 'digest')

        session = getSession()
        r = session.execute(s)
        retval = r.rowcount
        return retval
Esempio n. 6
0
    def posts_by_web(self, site_id, group_id, start_period, end_period):
        t = self.auditEventTable
        s = sa.select([t.c.user_id], distinct=True)
        s.append_whereclause(t.c.site_id == site_id)
        s.append_whereclause(t.c.group_id == group_id)
        s.append_whereclause(t.c.event_date >= start_period)
        s.append_whereclause(t.c.event_date <= end_period)
        s.append_whereclause(t.c.subsystem == u'groupserver.WebPost')

        session = getSession()
        r = session.execute(s)
        retval = r.rowcount
        return retval
Esempio n. 7
0
    def posts(self, site_id, group_id, start_period, end_period):
        t = self.postTable
        s = t.select()

        s.append_whereclause(t.c.site_id == site_id)
        s.append_whereclause(t.c.group_id == group_id)
        s.append_whereclause(t.c.date >= start_period)
        s.append_whereclause(t.c.date <= end_period)

        session = getSession()
        r = session.execute(s)
        retval = r.rowcount

        return retval
Esempio n. 8
0
    def new_topics(self, site_id, group_id, start_period, end_period):
        s = sa.text("""select min_date from
           (select min(date) as min_date from post
                                         where group_id=:group_id and
                                               site_id=:site_id
                                         group by topic_id) as min_topic
         where min_topic.min_date>=:start_period and
               min_topic.min_date<=:end_period""")

        session = getSession()
        r = session.execute(s,
                            params={
                                'site_id': site_id,
                                'group_id': group_id,
                                'start_period': start_period,
                                'end_period': end_period
                            })
        retval = r.rowcount
        return retval
Esempio n. 9
0
    def earliest_member_record(self, site_id, group_id):
        aet = self.auditEventTable

        s = sa.select([
            sa.func.min(aet.c.event_date),
        ])
        joinClauses = ((aet.c.subsystem == JOIN_SUBSYSTEM)
                       & (aet.c.event_code == JOIN))
        leaveClauses = ((aet.c.subsystem == LEAVE_SUBSYSTEM)
                        & (aet.c.event_code == LEAVE))
        s.append_whereclause(joinClauses | leaveClauses)
        s.append_whereclause(aet.c.group_id == group_id)
        s.append_whereclause(aet.c.site_id == site_id)

        session = getSession()
        r = session.execute(s)

        if r.rowcount:
            return r.fetchone()[0]
        return None