def handle(self, *args, **options): if len(args) < 1 or len(args) > 2: raise CommandError('Wrong number of arguments') if options['dest_format'] not in ('json', 'rdf', 'xml'): raise CommandError('Invalid dest format: %s' % options['dest_format']) try: template_file = open(args[0], "rb") template_contents = template_file.read() template_file.close() parsed_template = TemplateParser(template_contents) template_info = parsed_template.get_resource_info() except IOError as e: msg = 'Error opening description file: %s' % os.strerror(e.errno) raise CommandError(msg) if options['dest_format'] == 'rdf': converted_template = rdf.write_rdf_description( template_info, format=options['rdf_format']) elif options['dest_format'] == 'json': converted_template = json.write_json_description(template_info) else: # if options['dest_format'] == 'xml': converted_template = xml.write_xml_description(template_info) if len(args) == 2: with open(args[1], "wb") as output_file: output_file.write(converted_template.encode('utf-8')) else: self.stdout.write(converted_template)
def handle(self, *args, **options): if len(args) < 1 or len(args) > 2: raise CommandError('Wrong number of arguments') if options['dest_format'] not in ('json', 'rdf', 'xml'): raise CommandError('Invalid dest format: %s' % options['dest_format']) try: template_file = open(args[0], "rb") template_contents = template_file.read() template_file.close() parsed_template = TemplateParser(template_contents) template_info = parsed_template.get_resource_info() except IOError as e: msg = 'Error opening description file: %s' % os.strerror(e.errno) raise CommandError(msg) if options['dest_format'] == 'rdf': converted_template = rdf.write_rdf_description(template_info, format=options['rdf_format']) elif options['dest_format'] == 'json': converted_template = json.write_json_description(template_info) else: # if options['dest_format'] == 'xml': converted_template = xml.write_xml_description(template_info) if len(args) == 2: with open(args[1], "wb") as output_file: output_file.write(converted_template.encode('utf-8')) else: self.stdout.write(converted_template)
def _parse_ac_request(request): fileURL = None file_contents = None content_type = get_content_type(request)[0] data = parse_json_request(request) if 'url' not in data: return build_error_response(request, 400, _('Missing widget URL')) fileURL = data.get('url') id_4CaaSt = data.get('4CaaStID') if id_4CaaSt is None: return build_error_response(request, 400, _('Missing 4CaaStID')) if not isinstance(id_4CaaSt, string_types) or id_4CaaSt.strip() == '': return build_error_response(request, 400, _('Invalid 4CaaStID')) try: downloaded_file = download_http_content(fileURL) except: return build_error_response( request, 409, _('Mashable application component could not be downloaded')) downloaded_file = StringIO(downloaded_file) file_contents = WgtFile(downloaded_file) # Create a custom version of the resource template = TemplateParser(file_contents.get_template()) template_info = template.get_resource_info() template_info['name'] += '@' + id_4CaaSt for pref_name, pref_value in six.iteritems(data.get('preferences', {})): for widget_pref_index, widget_pref in enumerate( template_info['preferences']): if widget_pref['name'] == pref_name: template_info['preferences'][widget_pref_index][ 'readonly'] = True template_info['preferences'][widget_pref_index][ 'value'] = pref_value break # Write a new Wgt file new_file = StringIO() zin = zipfile.ZipFile(downloaded_file, 'r') zout = zipfile.ZipFile(new_file, 'w') zout.writestr('config.xml', write_rdf_description(template_info)) for item in zin.infolist(): if item.filename == 'config.xml': continue zout.writestr(item, zin.read(item.filename)) zin.close() zout.close() file_contents = WgtFile(new_file) return id_4CaaSt, file_contents, fileURL
def handle(self, *args, **options): if len(args) < 1 or len(args) > 2: raise CommandError('Wrong number of arguments') if options['dest_format'] not in ('json', 'rdf', 'xml'): raise CommandError('Invalid dest format: %s' % options['dest_format']) template_file = open(args[0], "rb") template_contents = template_file.read() template_file.close() parsed_template = TemplateParser(template_contents) template_info = parsed_template.get_resource_info() if options['dest_format'] == 'rdf': converted_template = rdf.write_rdf_description(template_info, format=options['rdf_format']) elif options['dest_format'] == 'json': converted_template = json.write_json_description(template_info) elif options['dest_format'] == 'xml': converted_template = xml.write_xml_description(template_info) if len(args) == 2: output_file = open(args[1], "wb") output_file.write(converted_template) output_file.close() else: print(converted_template)
def test_rdf_parser_writer_widget(self): rdf_description = write_rdf_description(self.widget_info) template = TemplateParser(rdf_description) processed_info = template.get_resource_info() self.assertEqual(processed_info, self.widget_info)
def _parse_ac_request(request): fileURL = None file_contents = None content_type = get_content_type(request)[0] try: data = json.loads(request.body) except Exception as e: msg = _("malformed json data: %s") % unicode(e) return build_error_response(request, 400, msg) if 'url' not in data: return build_error_response(request, 400, _('Missing widget URL')) fileURL = data.get('url') id_4CaaSt = data.get('4CaaStID') if id_4CaaSt is None: return build_error_response(request, 400, _('Missing 4CaaStID')) if not isinstance(id_4CaaSt, string_types) or id_4CaaSt.strip() == '': return build_error_response(request, 400, _('Invalid 4CaaStID')) try: downloaded_file = download_http_content(fileURL) except: return build_error_response(request, 409, _('Mashable application component could not be downloaded')) downloaded_file = StringIO(downloaded_file) file_contents = WgtFile(downloaded_file) # Create a custom version of the resource template = TemplateParser(file_contents.get_template()) template_info = template.get_resource_info() template_info['name'] += '@' + id_4CaaSt for pref_name, pref_value in six.iteritems(data.get('preferences', {})): for widget_pref_index, widget_pref in enumerate(template_info['preferences']): if widget_pref['name'] == pref_name: template_info['preferences'][widget_pref_index]['readonly'] = True template_info['preferences'][widget_pref_index]['value'] = pref_value break # Write a new Wgt file new_file = StringIO() zin = zipfile.ZipFile(downloaded_file, 'r') zout = zipfile.ZipFile(new_file, 'w') zout.writestr('config.xml', write_rdf_description(template_info)) for item in zin.infolist(): if item.filename == 'config.xml': continue zout.writestr(item, zin.read(item.filename)) zin.close() zout.close() file_contents = WgtFile(new_file) return id_4CaaSt, file_contents, fileURL
def handle(self, *args, **options): if len(args) < 1 or len(args) > 2: raise CommandError("Wrong number of arguments") if options["dest_format"] not in ("json", "rdf"): raise CommandError("Invalid dest format: %s" % options["dest_format"]) template_file = open(args[0], "rb") template_contents = template_file.read() template_file.close() parsed_template = TemplateParser(template_contents) template_info = parsed_template.get_resource_info() if options["dest_format"] == "rdf": converted_template = rdf.write_rdf_description(template_info, format=options["rdf_format"]) elif options["dest_format"] == "json": converted_template = json.write_json_description(template_info) if len(args) == 2: output_file = open(args[1], "wb") output_file.write(converted_template) output_file.close() else: print(converted_template)
template = TemplateParser(file_contents.get_template()) template_info = template.get_resource_info() template_info['name'] += '@' + id_4CaaSt for pref_name, pref_value in data.get('preferences', {}).iteritems(): for widget_pref_index, widget_pref in enumerate(template_info['preferences']): if widget_pref['name'] == pref_name: template_info['preferences'][widget_pref_index]['readonly'] = True template_info['preferences'][widget_pref_index]['value'] = pref_value break # Write a new Wgt file new_file = StringIO() zin = zipfile.ZipFile(downloaded_file, 'r') zout = zipfile.ZipFile(new_file, 'w') zout.writestr('config.xml', write_rdf_description(template_info)) for item in zin.infolist(): if item.filename == 'config.xml': continue zout.writestr(item, zin.read(item.filename)) zin.close() zout.close() file_contents = WgtFile(new_file) return id_4CaaSt, file_contents, fileURL @require_POST def deploy_tenant_ac(request): result = _parse_ac_request(request)