def getPiwikSites(self): [url, token] = get_piwik_settings() piwik = PiwikAPI(url, token) sites = piwik.getAllSites() choices = [] for site in sites: site_id = int(site["idsite"]) choices.append((site_id, '%d - %s' % (site_id, site["name"]))) return tuple(choices)
def piwik_processor(request): current_site = Site.objects.get_current() piwik_site = PiwikSite.objects.filter(site=current_site.id) if (len(piwik_site) == 0): return {} id_piwik = piwik_site[0].id_site try: javascript = PIWIK_CACHE[id_piwik] except KeyError: piwik = PiwikAPI(settings.PIWIK_URL, settings.PIWIK_TOKEN) javascript = saxutils.unescape(piwik.getJavascriptTag(id_piwik)) PIWIK_CACHE[id_piwik] = javascript return {'piwik_tag' : javascript}
def pagesMonthly(date): data = [] piwik = PiwikAPI("http://stats.firefly-it.de/", "anonymous") tutorials = piwik.call( 'Actions.getPageUrls', params = { 'idSite': 5, 'period': 'month', 'date': date, 'expanded': 1 } ) for tutorial in tutorials: if tutorial['label'] == 'tutorial': subtable = tutorial['idsubdatatable'] pages = piwik.call( 'Actions.getPageUrls', params = { 'idSite': 5, 'period': 'month', 'date': date, 'idSubtable': subtable, 'expanded': 1 } ) for page in pages: if page['label'] != '/index': for subtable in page['subtable']: if subtable['label'] == '/links': endpagevisits = subtable['nb_visits'] data.append({'label': page['label'], 'visits': page['nb_visits'], 'endpagevisits': endpagevisits }) if data: return data else: abort(404)
class testPiwikAPI(unittest.TestCase): def setUp(self): conn = Mock('httplib.HTTPConnection') mock('httplib.HTTPConnection', mock_obj=conn) conn.mock_returns = conn self.conn = conn self.piwik = PiwikAPI('http://exemple.org/', '123') def setResponse(self, status, headers, body): mock_response = Mock('httplib.httpresponse') mock_response.status = int(status.split()[0]) mock_response.reason = status.split(None, 1)[1] mock_response.read.mock_returns = body mock_response.getheader.mock_returns_func = headers.get mock_response.msg.headers = [ '%s: %s' % (name, value) for name, value in headers.items()] self.conn.getresponse.mock_returns = mock_response def testGetAllSites(self): self.setResponse("200 OK", {}, "[[1]]") self.assertEquals([[1]], self.piwik.getSiteFromId(2))
def setUp(self): conn = Mock('httplib.HTTPConnection') mock('httplib.HTTPConnection', mock_obj=conn) conn.mock_returns = conn self.conn = conn self.piwik = PiwikAPI('http://exemple.org/', '123')