Merge with origin:dev
This commit is contained in:
		
							
								
								
									
										98
									
								
								plugins/display/istats_diff.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										98
									
								
								plugins/display/istats_diff.py
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,98 @@ | ||||
| # -*- coding: utf-8 -*- | ||||
| # | ||||
| # Copyright Grégory Soutadé 2015 | ||||
|  | ||||
| # This file is part of iwla | ||||
|  | ||||
| # iwla is free software: you can redistribute it and/or modify | ||||
| # it under the terms of the GNU General Public License as published by | ||||
| # the Free Software Foundation, either version 3 of the License, or | ||||
| # (at your option) any later version. | ||||
| # | ||||
| # iwla is distributed in the hope that it will be useful, | ||||
| # but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
| # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | ||||
| # GNU General Public License for more details. | ||||
| # | ||||
| # You should have received a copy of the GNU General Public License | ||||
| # along with iwla.  If not, see <http://www.gnu.org/licenses/>. | ||||
| # | ||||
|  | ||||
| from iwla import IWLA | ||||
| from iplugin import IPlugin | ||||
| from display import * | ||||
| import logging | ||||
|  | ||||
| """ | ||||
| Display hook itnerface | ||||
|  | ||||
| Enlight new and updated statistics | ||||
|  | ||||
| Plugin requirements : | ||||
|     None | ||||
|  | ||||
| Conf values needed : | ||||
|     None | ||||
|  | ||||
| Output files : | ||||
|     None | ||||
|  | ||||
| Statistics creation : | ||||
|     None | ||||
|  | ||||
| Statistics update : | ||||
|     None | ||||
|  | ||||
| Statistics deletion : | ||||
|     None | ||||
| """ | ||||
|  | ||||
| class IWLADisplayStatsDiff(IPlugin): | ||||
|     def __init__(self, iwla): | ||||
|         super(IWLADisplayStatsDiff, self).__init__(iwla) | ||||
|         self.API_VERSION = 1 | ||||
|         self.month_stats_key = None | ||||
|         # Set >= if month_stats[self.month_stats_key] is a list or a tuple | ||||
|         self.stats_index = -1 | ||||
|         self.filename = None | ||||
|         self.block_name = None | ||||
|         self.logger = logging.getLogger(__name__) | ||||
|  | ||||
|     def load(self): | ||||
|         if not self.month_stats_key or not self.filename or\ | ||||
|                 not self.block_name: | ||||
|             self.logger('Bad parametrization') | ||||
|             return False | ||||
|         month_stats = self.iwla.getMonthStats() | ||||
|         self.cur_stats = {k:v for (k,v) in month_stats.get(self.month_stats_key, {}).items()} | ||||
|         return True | ||||
|  | ||||
|     def hook(self): | ||||
|         display = self.iwla.getDisplay() | ||||
|         month_stats = self.iwla.getMonthStats() | ||||
|  | ||||
|         path = self.iwla.getCurDisplayPath(self.filename) | ||||
|         page = display.getPage(path) | ||||
|         if not page: return | ||||
|         title = self.iwla._(self.block_name) | ||||
|         block = page.getBlock(title) | ||||
|         if not block: | ||||
|             self.logger.error('Block %s not found' % (title)) | ||||
|             return | ||||
|  | ||||
|         stats_diff = {} | ||||
|         for (k, v) in month_stats[self.month_stats_key].items(): | ||||
|             new_value = self.cur_stats.get(k, 0) | ||||
|             if new_value: | ||||
|                 if self.stats_index != -1: | ||||
|                     if new_value[self.stats_index] != v[self.stats_index]: | ||||
|                         stats_diff[k] = 'iwla_update' | ||||
|                 else: | ||||
|                     if new_value != v: | ||||
|                         stats_diff[k] = 'iwla_update' | ||||
|             else: | ||||
|                 stats_diff[k] = 'iwla_new' | ||||
|  | ||||
|         for (idx, row) in enumerate(block.rows): | ||||
|             if row[0] in stats_diff.keys(): | ||||
|                 block.setCellCSSClass(idx, 0, stats_diff[row[0]]) | ||||
| @@ -190,14 +190,14 @@ class IWLADisplayReferers(IPlugin): | ||||
|  | ||||
|         # All key phrases in a file | ||||
|         if self.create_all_key_phrases: | ||||
|             title = createCurTitle(self.iwla, u'Key Phrases') | ||||
|             title = createCurTitle(self.iwla, u'All Key Phrases') | ||||
|  | ||||
|             filename = 'key_phrases.html' | ||||
|             path = self.iwla.getCurDisplayPath(filename) | ||||
|  | ||||
|             total_search = [0]*2 | ||||
|             page = display.createPage(title, path, self.iwla.getConfValue('css_path', [])) | ||||
|             table = display.createBlock(DisplayHTMLBlockTable, self.iwla._(u'Top key phrases'), [self.iwla._(u'Key phrase'), self.iwla._(u'Search')]) | ||||
|             table = display.createBlock(DisplayHTMLBlockTable, self.iwla._(u'Key phrases'), [self.iwla._(u'Key phrase'), self.iwla._(u'Search')]) | ||||
|             table.setColsCSSClass(['', 'iwla_search']) | ||||
|             new_list = self.max_key_phrases and top_key_phrases[:self.max_key_phrases] or top_key_phrases | ||||
|             for phrase in new_list: | ||||
|   | ||||
| @@ -19,7 +19,7 @@ | ||||
| # | ||||
|  | ||||
| from iwla import IWLA | ||||
| from iplugin import IPlugin | ||||
| from istats_diff import IWLADisplayStatsDiff | ||||
| from display import * | ||||
|  | ||||
| """ | ||||
| @@ -46,39 +46,16 @@ Statistics deletion : | ||||
|     None | ||||
| """ | ||||
|  | ||||
| class IWLADisplayReferersDiff(IPlugin): | ||||
| class IWLADisplayReferersDiff(IWLADisplayStatsDiff): | ||||
|     def __init__(self, iwla): | ||||
|         super(IWLADisplayReferersDiff, self).__init__(iwla) | ||||
|         self.API_VERSION = 1 | ||||
|         self.requires = ['IWLADisplayReferers'] | ||||
|         self.month_stats_key = 'key_phrases' | ||||
|         self.filename = 'key_phrases.html' | ||||
|         self.block_name = u'Key phrases' | ||||
|  | ||||
|     def load(self): | ||||
|         if not self.iwla.getConfValue('create_all_key_phrases_page', True): | ||||
|             return False | ||||
|         month_stats = self.iwla.getMonthStats() | ||||
|         self.cur_key_phrases = {k:v for (k,v) in month_stats.get('key_phrases', {})} | ||||
|         return True | ||||
|  | ||||
|     def hook(self): | ||||
|         display = self.iwla.getDisplay() | ||||
|         month_stats = self.iwla.getMonthStats() | ||||
|  | ||||
|         filename = 'key_phrases.html' | ||||
|         path = self.iwla.getCurDisplayPath(filename) | ||||
|         page = display.getPage(path) | ||||
|         if not page: return | ||||
|         title = self.iwla._(u'All key phrases') | ||||
|         referers_block = page.getBlock(title) | ||||
|  | ||||
|         kp_diff = {} | ||||
|         for (k, v) in month_stats['key_phrases'].items(): | ||||
|             new_value = self.cur_key_phrases.get(k, 0) | ||||
|             if new_value: | ||||
|                 if new_value != v: | ||||
|                     kp_diff[k] = 'iwla_update' | ||||
|             else: | ||||
|                 kp_diff[k] = 'iwla_new' | ||||
|  | ||||
|         for (idx, row) in enumerate(referers_block.rows): | ||||
|             if row[0] in kp_diff.keys(): | ||||
|                 referers_block.setCellCSSClass(idx, 0, kp_diff[row[0]]) | ||||
|         return super(IWLADisplayReferersDiff, self).load() | ||||
|   | ||||
		Reference in New Issue
	
	Block a user