Author: cabraham
Date: 2007-12-17 16:19:19 -0500 (Mon, 17 Dec 2007)
New Revision: 11937

Added:
   opencore/trunk/opencore/stats/configure.zcml
   opencore/trunk/opencore/stats/stats.pt
   opencore/trunk/opencore/stats/stats.py
Modified:
   opencore/trunk/opencore/configuration/configure.zcml
Log:
merged stats branch -r9357:9406 to trunk

Modified: opencore/trunk/opencore/configuration/configure.zcml
===================================================================
--- opencore/trunk/opencore/configuration/configure.zcml        2007-12-17 
20:52:55 UTC (rev 11936)
+++ opencore/trunk/opencore/configuration/configure.zcml        2007-12-17 
21:19:19 UTC (rev 11937)
@@ -19,5 +19,6 @@
   <include package="opencore.redirect" />
   <include package="opencore.utility" />
   <include package="topp.featurelets" />
+  <include package="opencore.stats" />
 </configure>
  

Copied: opencore/trunk/opencore/stats/configure.zcml (from rev 9406, 
opencore/branches/stats/opencore/stats/configure.zcml)
===================================================================
--- opencore/trunk/opencore/stats/configure.zcml                                
(rev 0)
+++ opencore/trunk/opencore/stats/configure.zcml        2007-12-17 21:19:19 UTC 
(rev 11937)
@@ -0,0 +1,14 @@
+<configure xmlns="http://namespaces.zope.org/zope";
+    xmlns:browser="http://namespaces.zope.org/browser";
+    xmlns:five="http://namespaces.zope.org/five";>
+
+  <browser:page
+    for="Products.CMFPlone.interfaces.IPloneSiteRoot"
+    class=".stats.StatsView"
+    permission="cmf.ManagePortal"
+    name="stats"
+    template="stats.pt"
+    />
+
+
+</configure>

Copied: opencore/trunk/opencore/stats/stats.pt (from rev 9406, 
opencore/branches/stats/opencore/stats/stats.pt)
===================================================================
--- opencore/trunk/opencore/stats/stats.pt                              (rev 0)
+++ opencore/trunk/opencore/stats/stats.pt      2007-12-17 21:19:19 UTC (rev 
11937)
@@ -0,0 +1,33 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd";>
+<html xmlns="http://www.w3.org/1999/xhtml";>
+  <head profile="http://gmpg.org/xfn/11";>
+    <link rel="stylesheet" href="/++resource++css/themes/openplans.css" 
type="text/css" media="all" />
+    <link rel="stylesheet" href="/++resource++css/opencore.css" 
type="text/css" media="all" />
+    <title>Portal Stats</title>
+  </head>  
+  <body>
+    <h1>Portal Stats</h1>
+    <table border="1" cellspacing="0">
+      <tr>
+        <td></td>
+        <td>total</td>
+       <td>active</td>
+      </tr>
+      <tr>
+        <td>projects</td>
+       <td tal:content="python: len(view.get_projects())" />
+       <td tal:content="python: len(view.get_active_projects())" />
+      </tr>
+      <tr>
+        <td>members</td>
+       <td tal:content="python: len(view.get_members())" />
+       <td tal:content="python: len(view.get_active_members())" />
+      </tr>
+      <tr>
+        <td>mailing lists</td>
+       <td tal:content="python: len(view.get_mailing_lists())" />
+       <td tal:content="python: len(view.get_active_mailing_lists())" />
+      </tr>
+    </table>
+  </body>
+</html>
\ No newline at end of file

Copied: opencore/trunk/opencore/stats/stats.py (from rev 9406, 
opencore/branches/stats/opencore/stats/stats.py)
===================================================================
--- opencore/trunk/opencore/stats/stats.py                              (rev 0)
+++ opencore/trunk/opencore/stats/stats.py      2007-12-17 21:19:19 UTC (rev 
11937)
@@ -0,0 +1,72 @@
+from Products.CMFPlone.interfaces import IPloneSiteRoot
+from Products.Five import BrowserView
+from Products.Five.browser.pagetemplatefile import ZopeTwoPageTemplateFile
+from Products.CMFCore.utils import getToolByName
+import DateTime
+from Products.listen.interfaces import ISearchableArchive
+from zope.component import queryUtility
+
+
+class StatsView(BrowserView):
+
+    def __init__(self, context, request):
+        self.context = context
+        self.request = request
+        self.catalog = getToolByName(self.context, 'portal_catalog')
+        self.membrane_tool = getToolByName(self.context, 'membrane_tool')
+        self.expiry_date = DateTime.now()-30
+
+    def get_projects(self):
+        query = dict(portal_type='OpenProject')
+        brains = self.catalog(**query)
+        return brains
+
+    def get_active_projects(self):    
+        # "active" is defined as having been modified in the last 30 days
+        projects = self.get_projects()
+        filtered_projects = [project for project in projects if 
project.modified > self.expiry_date]
+        return filtered_projects
+
+    def get_members(self):
+        query = dict()
+        brains = self.membrane_tool(**query)
+        return brains
+
+    def get_active_members(self):    
+        # "active" is defined as having logged in the last 30 days
+        members = self.get_members()
+        filtered_members = []
+        for mem in members:
+            mem_obj = mem.getObject()
+            if mem_obj.getLast_login_time() > self.expiry_date:
+                filtered_members.append(mem)
+        return filtered_members
+
+    def get_mailing_lists(self):
+        query = dict(portal_type='Open Mailing List')
+        brains = self.catalog(**query)
+        return brains
+
+    def get_active_mailing_lists(self):    
+        # "active" is defined as having a message in the last 30 days
+        lists = self.get_mailing_lists()
+        filtered_lists = []
+        for lst in lists:
+            mail_catalog = queryUtility(ISearchableArchive, context=lst)
+            latest_date = 0
+            if mail_catalog:
+                query = dict(sort_on='date',
+                             sort_order='descending')
+                brains = mail_catalog(**query)
+                latest_date = brains[0].date
+            if lst.modified > latest_date:
+                latest_date = lst.modified
+            if latest_date > self.expiry_date:
+                filtered_lists.append(lst)
+        
+        return filtered_lists
+
+    
+
+
+        



--
Archive: 
http://www.openplans.org/projects/opencore/lists/openplans-svn/archive/2007/12/1197926360202
To unsubscribe send an email with subject unsubscribe to [EMAIL PROTECTED]  
Please contact [EMAIL PROTECTED] for questions.

Reply via email to