Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(473)

Side by Side Diff: components/policy/tools/template_writers/writers/adml_writer.py

Issue 2481183002: Generate ADMX template for Chrome OS policies (Closed)
Patch Set: Couple of fixes after testing Created 3 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 #!/usr/bin/env python 1 #!/usr/bin/env python
2 # Copyright (c) 2012 The Chromium Authors. All rights reserved. 2 # Copyright (c) 2012 The Chromium Authors. All rights reserved.
3 # Use of this source code is governed by a BSD-style license that can be 3 # Use of this source code is governed by a BSD-style license that can be
4 # found in the LICENSE file. 4 # found in the LICENSE file.
5 5
6 from xml.dom import minidom 6 from xml.dom import minidom
7 from writers import xml_formatted_writer 7 from writers import xml_formatted_writer
8 import re 8 import re
9 9
10 10
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after
93 textbox_elem = self.AddElement(presentation_elem, 'textBox', 93 textbox_elem = self.AddElement(presentation_elem, 'textBox',
94 {'refId': policy_name}) 94 {'refId': policy_name})
95 label_elem = self.AddElement(textbox_elem, 'label') 95 label_elem = self.AddElement(textbox_elem, 'label')
96 label_elem.appendChild(self._doc.createTextNode(policy_label)) 96 label_elem.appendChild(self._doc.createTextNode(policy_label))
97 elif policy_type == 'int': 97 elif policy_type == 'int':
98 textbox_elem = self.AddElement(presentation_elem, 'decimalTextBox', 98 textbox_elem = self.AddElement(presentation_elem, 'decimalTextBox',
99 {'refId': policy_name}) 99 {'refId': policy_name})
100 textbox_elem.appendChild(self._doc.createTextNode(policy_label + ':')) 100 textbox_elem.appendChild(self._doc.createTextNode(policy_label + ':'))
101 elif policy_type in ('int-enum', 'string-enum'): 101 elif policy_type in ('int-enum', 'string-enum'):
102 for item in policy['items']: 102 for item in policy['items']:
103 self._AddString(item['name'], item['caption']) 103 self._AddString(policy_name + "_" + item['name'], item['caption'])
104 dropdownlist_elem = self.AddElement(presentation_elem, 'dropdownList', 104 dropdownlist_elem = self.AddElement(presentation_elem, 'dropdownList',
105 {'refId': policy_name}) 105 {'refId': policy_name})
106 dropdownlist_elem.appendChild(self._doc.createTextNode(policy_label)) 106 dropdownlist_elem.appendChild(self._doc.createTextNode(policy_label))
107 elif policy_type in ('list', 'string-enum-list'): 107 elif policy_type in ('list', 'string-enum-list'):
108 self._AddString(policy_name + 'Desc', policy_caption) 108 self._AddString(policy_name + 'Desc', policy_caption)
109 listbox_elem = self.AddElement(presentation_elem, 'listBox', 109 listbox_elem = self.AddElement(presentation_elem, 'listBox',
110 {'refId': policy_name + 'Desc'}) 110 {'refId': policy_name + 'Desc'})
111 listbox_elem.appendChild(self._doc.createTextNode(policy_label)) 111 listbox_elem.appendChild(self._doc.createTextNode(policy_label))
112 elif policy_type == 'group': 112 elif policy_type == 'group':
113 pass 113 pass
(...skipping 18 matching lines...) Expand all
132 # Add ADML "string" elements to the string-table that are required by a 132 # Add ADML "string" elements to the string-table that are required by a
133 # Policy-Group. 133 # Policy-Group.
134 self._AddString(group['name'] + '_group', group['caption']) 134 self._AddString(group['name'] + '_group', group['caption'])
135 135
136 def _AddBaseStrings(self): 136 def _AddBaseStrings(self):
137 ''' Adds ADML "string" elements to the string-table that are referenced by 137 ''' Adds ADML "string" elements to the string-table that are referenced by
138 the ADMX file but not related to any specific Policy-Group or Policy. 138 the ADMX file but not related to any specific Policy-Group or Policy.
139 ''' 139 '''
140 self._AddString(self.config['win_supported_os'], 140 self._AddString(self.config['win_supported_os'],
141 self.messages['win_supported_winxpsp2']['text']) 141 self.messages['win_supported_winxpsp2']['text'])
142 categories = self.config['win_mandatory_category_path'] + \ 142 categories = self.winconfig['mandatory_category_path'] + \
143 self.config['win_recommended_category_path'] 143 self.winconfig['recommended_category_path']
144 strings = self.config['win_category_path_strings'] 144 strings = self.winconfig['category_path_strings']
145 for category in categories: 145 for category in categories:
146 if (category in strings): 146 if (category in strings):
147 # Replace {...} by localized messages. 147 # Replace {...} by localized messages.
148 string = re.sub(r"\{(\w+)\}", \ 148 string = re.sub(r"\{(\w+)\}", \
149 lambda m: self.messages[m.group(1)]['text'], \ 149 lambda m: self.messages[m.group(1)]['text'], \
150 strings[category]) 150 strings[category])
151 self._AddString(category, string) 151 self._AddString(category, string)
152 152
153 def BeginTemplate(self): 153 def BeginTemplate(self):
154 dom_impl = minidom.getDOMImplementation('') 154 dom_impl = minidom.getDOMImplementation('')
(...skipping 11 matching lines...) Expand all
166 resources_elem = self.AddElement(policy_definitions_resources_elem, 166 resources_elem = self.AddElement(policy_definitions_resources_elem,
167 'resources') 167 'resources')
168 self._string_table_elem = self.AddElement(resources_elem, 'stringTable') 168 self._string_table_elem = self.AddElement(resources_elem, 'stringTable')
169 self._AddBaseStrings() 169 self._AddBaseStrings()
170 self._presentation_table_elem = self.AddElement(resources_elem, 170 self._presentation_table_elem = self.AddElement(resources_elem,
171 'presentationTable') 171 'presentationTable')
172 172
173 def Init(self): 173 def Init(self):
174 # Map of all strings seen. 174 # Map of all strings seen.
175 self.strings_seen = {} 175 self.strings_seen = {}
176 # Shortcut to platform-specific ADMX/ADM specific configuration.
177 assert len(self.platforms) == 1
178 self.winconfig = self.config['win_config'][self.platforms[0]]
176 179
177 def GetTemplateText(self): 180 def GetTemplateText(self):
178 # Using "toprettyxml()" confuses the Windows Group Policy Editor 181 # Using "toprettyxml()" confuses the Windows Group Policy Editor
179 # (gpedit.msc) because it interprets whitespace characters in text between 182 # (gpedit.msc) because it interprets whitespace characters in text between
180 # the "string" tags. This prevents gpedit.msc from displaying the category 183 # the "string" tags. This prevents gpedit.msc from displaying the category
181 # names correctly. 184 # names correctly.
182 # TODO(markusheintz): Find a better formatting that works with gpedit. 185 # TODO(markusheintz): Find a better formatting that works with gpedit.
183 return self._doc.toxml() 186 return self._doc.toxml()
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698