<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" /><style type="text/css"><!--
#msg dl { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt;  }
#msg dl a { font-weight: bold}
#msg dl a:link    { color:#fc3; }
#msg dl a:active  { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre { overflow: auto; background: #ffc; border: 1px #fc0 solid; padding: 6px; }
#msg ul, pre { overflow: auto; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff  {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<title>[1546] CalendarServer/trunk/twistedcaldav/admin</title>
</head>
<body>

<div id="msg">
<dl>
<dt>Revision</dt> <dd><a href="http://trac.macosforge.org/projects/calendarserver/changeset/1546">1546</a></dd>
<dt>Author</dt> <dd>cdaboo@apple.com</dd>
<dt>Date</dt> <dd>2007-05-22 07:54:38 -0700 (Tue, 22 May 2007)</dd>
</dl>

<h3>Log Message</h3>
<pre>Make sure users/groups/resources/locations/stats commands run properly and generate output. Tweak some output formatting for stats.</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#CalendarServertrunktwistedcaldavadminformatterspy">CalendarServer/trunk/twistedcaldav/admin/formatters.py</a></li>
<li><a href="#CalendarServertrunktwistedcaldavadminstatspy">CalendarServer/trunk/twistedcaldav/admin/stats.py</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="CalendarServertrunktwistedcaldavadminformatterspy"></a>
<div class="modfile"><h4>Modified: CalendarServer/trunk/twistedcaldav/admin/formatters.py (1545 => 1546)</h4>
<pre class="diff"><span>
<span class="info">--- CalendarServer/trunk/twistedcaldav/admin/formatters.py        2007-05-21 22:14:21 UTC (rev 1545)
+++ CalendarServer/trunk/twistedcaldav/admin/formatters.py        2007-05-22 14:54:38 UTC (rev 1546)
</span><span class="lines">@@ -133,19 +133,22 @@
</span><span class="cx"> 
</span><span class="cx">         self.writeTable(report, fields, headings)
</span><span class="cx"> 
</span><del>-    report_user = report_group = report_resource = report_principals
</del><ins>+    report_users = report_groups = report_resources = report_locations = report_principals
</ins><span class="cx"> 
</span><span class="cx">     def report_stats(self, report):
</span><del>-        fields = ('accountCount', 'groupCount', 'calendarCount', 'eventCount', 
</del><ins>+        fields = ('accountCount', 'groupCount', 'resourceCount', 'locationCount',
+                  'calendarCount', 'eventCount', 
</ins><span class="cx">                   'todoCount', 'diskUsage')
</span><span class="cx"> 
</span><span class="cx">         headings = {
</span><del>-            'accountCount': '# Accounts',
-            'groupCount': '# Groups',
</del><ins>+            'accountCount':  '# Accounts ',
+            'groupCount':    '# Groups   ',
+            'resourceCount': '# Resources',
+            'locationCount': '# Locations',
</ins><span class="cx">             'calendarCount': '# Calendars',
</span><del>-            'eventCount': '# Events',
-            'todoCount': '# Todos',
-            'diskUsage': 'Disk Usage',
</del><ins>+            'eventCount':    '# Events   ',
+            'todoCount':     '# Todos    ',
+            'diskUsage':     'Disk Usage ',
</ins><span class="cx">             }
</span><span class="cx"> 
</span><span class="cx">         self.writeReport(report, 'Statistics', fields, headings)
</span><span class="lines">@@ -199,7 +202,7 @@
</span><span class="cx">         self.writeDict(self.options['fieldnames'],
</span><span class="cx">                        report['records'])
</span><span class="cx">         
</span><del>-    report_user = report_group = report_resource = report_principals
</del><ins>+    report_users = report_groups = report_resources = report_locations = report_principals
</ins><span class="cx"> 
</span><span class="cx">     def report_stats(self, report):
</span><span class="cx">         if 'fieldnames' not in self.options:
</span><span class="lines">@@ -224,7 +227,7 @@
</span><span class="cx"> 
</span><span class="cx">         plistlib.writePlist(plist, self.dest)
</span><span class="cx"> 
</span><del>-    report_user = report_group = report_resource = report_principals
</del><ins>+    report_users = report_groups = report_resources = report_locations = report_principals
</ins><span class="cx"> 
</span><span class="cx">     def report_stats(self, report):
</span><span class="cx">         plist = plistlib.Dict()
</span></span></pre></div>
<a id="CalendarServertrunktwistedcaldavadminstatspy"></a>
<div class="modfile"><h4>Modified: CalendarServer/trunk/twistedcaldav/admin/stats.py (1545 => 1546)</h4>
<pre class="diff"><span>
<span class="info">--- CalendarServer/trunk/twistedcaldav/admin/stats.py        2007-05-21 22:14:21 UTC (rev 1545)
+++ CalendarServer/trunk/twistedcaldav/admin/stats.py        2007-05-22 14:54:38 UTC (rev 1546)
</span><span class="lines">@@ -43,6 +43,7 @@
</span><span class="cx">             self.getAccountCount,
</span><span class="cx">             self.getGroupCount,
</span><span class="cx">             self.getResourceCount,
</span><ins>+            self.getLocationCount,
</ins><span class="cx">             self.getDiskUsage]
</span><span class="cx"> 
</span><span class="cx">     def getDiskUsage(self):
</span><span class="lines">@@ -53,20 +54,26 @@
</span><span class="cx">         return (&quot;accountCount&quot;, 
</span><span class="cx">                 len(util.getPrincipalList(
</span><span class="cx">                     self.principalCollection,
</span><del>-                    'user')))
</del><ins>+                    'users')))
</ins><span class="cx"> 
</span><span class="cx">     def getGroupCount(self):
</span><span class="cx">         return (&quot;groupCount&quot;, 
</span><span class="cx">                 len(util.getPrincipalList(
</span><span class="cx">                     self.principalCollection,
</span><del>-                    'group')))
</del><ins>+                    'groups')))
</ins><span class="cx"> 
</span><span class="cx">     def getResourceCount(self):
</span><span class="cx">         return (&quot;resourceCount&quot;, 
</span><span class="cx">                 len(util.getPrincipalList(
</span><span class="cx">                     self.principalCollection,
</span><del>-                    'resource')))
</del><ins>+                    'resources')))
</ins><span class="cx"> 
</span><ins>+    def getLocationCount(self):
+        return (&quot;locationCount&quot;, 
+                len(util.getPrincipalList(
+                    self.principalCollection,
+                    'locations')))
+
</ins><span class="cx">     def run(self):
</span><span class="cx">         assert self.root.exists()
</span><span class="cx">         stats = []
</span></span></pre>
</div>
</div>

</body>
</html>