summaryrefslogtreecommitdiffstats
path: root/src/lib/Server/Reports/utils.py
diff options
context:
space:
mode:
authorNarayan Desai <desai@mcs.anl.gov>2011-05-10 11:24:28 -0500
committerNarayan Desai <desai@mcs.anl.gov>2011-05-10 11:24:28 -0500
commit0e75875e9bd9900a6a3c7ab118c448e48829eaef (patch)
tree391204747f48598c4e978d3724afbd5b8aa1d12c /src/lib/Server/Reports/utils.py
parentf2d218ccd2de93ef639347933ba127ef081b4401 (diff)
parent91634f9a3b888eee3cd5f9a777fcb075fc666c9a (diff)
downloadbcfg2-0e75875e9bd9900a6a3c7ab118c448e48829eaef.tar.gz
bcfg2-0e75875e9bd9900a6a3c7ab118c448e48829eaef.tar.bz2
bcfg2-0e75875e9bd9900a6a3c7ab118c448e48829eaef.zip
Merge branch 'master' of git.mcs.anl.gov:bcfg2
Diffstat (limited to 'src/lib/Server/Reports/utils.py')
-rwxr-xr-xsrc/lib/Server/Reports/utils.py22
1 files changed, 15 insertions, 7 deletions
diff --git a/src/lib/Server/Reports/utils.py b/src/lib/Server/Reports/utils.py
index b74f09e74..e0b6ead59 100755
--- a/src/lib/Server/Reports/utils.py
+++ b/src/lib/Server/Reports/utils.py
@@ -1,11 +1,11 @@
"""Helper functions for reports"""
-from Bcfg2.Server.Reports.reports.models import TYPE_CHOICES
from django.conf.urls.defaults import *
import re
"""List of filters provided by filteredUrls"""
filter_list = ('server', 'state')
+
class BatchFetch(object):
"""Fetch Django objects in smaller batches to save memory"""
@@ -21,6 +21,10 @@ class BatchFetch(object):
return self
def next(self):
+ """Provide compatibility with python < 3.0"""
+ return self.__next__()
+
+ def __next__(self):
"""Return the next object from our array and fetch from the
database when needed"""
if self.block_count + self.count - self.step == self.max:
@@ -34,11 +38,12 @@ class BatchFetch(object):
self.count += 1
return self.data[self.count - 1]
+
def generateUrls(fn):
"""
Parse url tuples and send to functions.
- Decorator for url generators. Handles url tuple parsing
+ Decorator for url generators. Handles url tuple parsing
before the actual function is called.
"""
def url_gen(*urls):
@@ -51,13 +56,14 @@ def generateUrls(fn):
return results
return url_gen
+
@generateUrls
def paginatedUrls(pattern, view, kwargs=None, name=None):
"""
Takes a group of url tuples and adds paginated urls.
- Extends a url tuple to include paginated urls. Currently doesn't handle url() compiled
- patterns.
+ Extends a url tuple to include paginated urls.
+ Currently doesn't handle url() compiled patterns.
"""
results = [(pattern, view, kwargs, name)]
@@ -67,13 +73,15 @@ def paginatedUrls(pattern, view, kwargs=None, name=None):
tail = mtail.group(1)
pattern = pattern[:len(pattern) - len(tail)]
results += [(pattern + "/(?P<page_number>\d+)" + tail, view, kwargs)]
- results += [(pattern + "/(?P<page_number>\d+)\|(?P<page_limit>\d+)" + tail, view, kwargs)]
+ results += [(pattern + "/(?P<page_number>\d+)\|(?P<page_limit>\d+)" +
+ tail, view, kwargs)]
if not kwargs:
kwargs = dict()
kwargs['page_limit'] = 0
results += [(pattern + "/?\|(?P<page_limit>all)" + tail, view, kwargs)]
return results
+
@generateUrls
def filteredUrls(pattern, view, kwargs=None, name=None):
"""
@@ -93,7 +101,8 @@ def filteredUrls(pattern, view, kwargs=None, name=None):
'/server/(?P<server>[\w\-\.]+)/(?P<state>[A-Za-z]+)'):
results += [(pattern + filter + tail, view, kwargs)]
return results
-
+
+
@generateUrls
def timeviewUrls(pattern, view, kwargs=None, name=None):
"""
@@ -113,4 +122,3 @@ def timeviewUrls(pattern, view, kwargs=None, name=None):
'/(?P<year>\d{4})-(?P<month>\d{2})-(?P<day>\d{2})'):
results += [(pattern + filter + tail, view, kwargs)]
return results
-