configurationengine/source/scripts/conesub_info.py
changeset 4 0951727b8815
parent 3 e7e0ae78773e
--- a/configurationengine/source/scripts/conesub_info.py	Tue Aug 10 14:29:28 2010 +0300
+++ b/configurationengine/source/scripts/conesub_info.py	Wed Sep 08 12:20:56 2010 +0300
@@ -63,6 +63,14 @@
         os.path.join(ROOT_PATH, 'info_content_report_template.html'),
         'content_report.html',
         'Create a report of the content files in the configuration.'),
+    'ctr_csv': report_util.ReportShortcut(
+        os.path.join(ROOT_PATH, 'info_ctr_report_template.csv'),
+        'ctr_report.csv',
+        'Create a report of CTR configurations (CSV format).'),
+    'ctr': report_util.ReportShortcut(
+        os.path.join(ROOT_PATH, 'info_ctr_report_template.html'),
+        'ctr_report.html',
+        'Create a report of CTR configurations.'),
 }
 
 def main():
@@ -224,7 +232,8 @@
             data_providers = {'impl_data'   : ImplDataProvider(configs[0], options.impl_filter),
                               'api_data'    : ApiDataProvider(configs[0]),
                               'content_data': ContentDataProvider(configs[0]),
-                              'value_data'  : ValueDataProvider(configs, view)}
+                              'value_data'  : ValueDataProvider(configs, view),
+                              'ctr_data'    : CtrDataProvider(configs)}
             report_util.generate_report(template, report, {'data': ReportDataProxy(data_providers)}, [ROOT_PATH])
         else:
             # Printing configuration info
@@ -368,6 +377,43 @@
             data.append(entry)
         return data
 
+class CtrDataProvider(ReportDataProviderBase):
+    def __init__(self, configs):
+        self._configs = configs
+    
+    def generate_data(self):
+        lines = []
+        for config in self._configs:
+            lines.extend(self._get_config_data(config))
+        return lines
+    
+    def _get_config_data(self, config):
+        ctrs = []
+        config_name = config.get_name()
+        ctrs_in_meta_index = config.meta.find_by_attribute('name','based_on_ctr')
+        ctrs = config.meta[ctrs_in_meta_index].attrs['value'].split(',')
+        lines = []
+        ppbit = language = country = uda = ''
+        for c in config.list_configurations():
+            m = re.search(r'/ppbit/ppbit_(.*)/', c)
+            if m: ppbit = m.group(1)
+            m = re.search(r'/language/(.*)/', c)
+            if m: language = m.group(1)
+            m = re.search(r'/country/(.*)/', c)
+            if m: country = m.group(1)
+            m = re.search(r'/uda/(.*)/', c)
+            if m: uda = m.group(1)
+        for ctr in ctrs:
+            data = {'ctr_code':     ctr,
+                    'config_name':  config_name,
+                    'ppbit':        ppbit,
+                    'language':     language,
+                    'country':      country,
+                    'uda':          uda
+                    }
+            lines.append(data)
+        return lines
+        
 
 class ValueDataProvider(ReportDataProviderBase):